There’s something to be said for cigarettes. Most of it, of course, is bad. Cigarettes smell awful. The stench lingers and invades long after the cigarette is gone. Cigarettes, of course, also kill people. Lung cancer from a lifetime of smoking (mostly cigarettes, but also pipes) killed my father. It’s kind of amazing that fire from a cigarette left smoldering as he fell asleep didn’t kill him, the way it has so many others.
The anti-smoking messaging I got in school as a kid was effective. But so was a lifetime of popular culture. For as much as smoking disgusts me, I can’t change the fact that it looks cool. Vapes could never.
More importantly, though, cigarettes have a way of forming a connection between strangers. Lighter or matches not working? That’s a solvable problem. Out of cigarettes? Someone will give you one of theirs. There’s no judgement, no expectation of repayment. It’s just a prosocial thing you do. Someday, you might depend on someone else doing the same. I think that’s beautiful, even though the smoking part is gross.
On the whole, society is better off with fewer people smoking. But that doesn’t mean we haven’t lost a little something along the way. Cigars can fuck right off, though.
What have I been writing when I haven’t been writing here?
Duck Alignment Academy
Every project has politics — Politics in open source is inescapable. As soon as two or more people interact, politics becomes a consideration.
How to triage security reports — There’s slop coming, but also a lot of medium-to-high quality reports. Maintainers are going to have to know how to triage security reports.
What have I been writing when I haven’t been writing here?
Duck Alignment Academy
Handling a PR disaster for your project — Bad PR doesn’t have to kill your project. Recent events suggest that maybe there really is no such thing as bad publicity.
The best way to setup a kanban board — The best way to setup a kanban board is whatever way works best for you. If you’re not sure what that is, I have considerations for you.
I received a free copy of the audiobook through a randomized giveaway on StoryGraph. I did not receive any compensation for this review.
Twins have a connection that the rest of us can’t understand. So when your twin dies unexpectedly, what happens? For Cady, it’s a spiral.
Every grief is different, but Cady’s is very different. Unlike most of the psychological thrillers I’ve read, Marisa Walz’s protagonist isn’t running from “the bad guys.” Instead, she’s running from her grief and alienating everyone along the way. Her relationship falls apart, her once-thriving business crumbles, all in pursuit of something that she seems to get but the reader does not understand.
I’ll be honest: I did not like Cady and I spent most of the book being uncomfortable. Only at the end did it make sense. The ending didn’t make Cady any more likeable, but it made a sort of sense of her actions.
Did I like the book despite the discomfort? I think I did. I certainly found it thought-provoking. Had I DNFed it, I wouldn’t get the payoff.
Marisa Walz does a masterful job of building the suspense and discomfort through a slow drip of reveals. Told as a one-sided conversation that Cady has with her late sister, the reader can never quite know how much to believe the narrator. It’s a brilliant work, if you can handle the building sense of discomfort. You never know what Cady will do next, but you know it will be a bad idea.
Despite the forecast of severe weather, it wasn’t really on my mind today. Charles had his first college visit, so the focus of the day was the University of Chicago. I saw some deep convection as we drove down I-65, so I opened RadarScope. I noticed a tornado warning to our southwest, so I figured “what the hell?”
I took the US 231 exit and drove through White County. As we approached Round Grove, I could see a lowering, so we turned west on White County Road West 1100 South (location). Unfortunately, it fell apart almost immediately.
Lowering on the tornado-warned storm over Benton County as seen from near Round Grove. Taken approximately 2154Z. View is to the west-southwest.
When the rain shaft reached us, I continued back down US 231 through Montmorenci. The storms west of Greater Lafayette looked marginally interesting, so I continued south on Jackson Highway to SR 26. After a brief pause at the Purdue Airport, we decided to go home. I made a quick bio break, grabbed my camera, and set off again solo.
By that point, the storm in southwestern Tippecanoe County was looking interesting, so I headed southeast on US 52. The storm showed broad rotation on radar, but had no warnings at the time. I stopped at the Marathon station on Dale Drive.
View of the storm from southeast of Lafayette. Taken approximately 2300Z. View is to the southwest.
I was almost directly under the rotation, which seemed like a suboptimal location, so I dropped south and then headed east on Tippecanoe County Road East 550 South. I turned north on CR South 1075 East and stopped at the railroad crossing just south of SR 38. At some point during the drive, Indianapolis issued a severe thunderstorm warning for this storm. Although the storm looked decent on radar, it was not particularly impressive visually.
I continued to head northeast and the appearance improved quickly. On Clinton County Road West 550 North, I stopped along with a few other storm enthusiasts.
Photos of a lowering on the storm approaching Rossville as seen from CR West 550 North. Taken approximately 2320Z. View is to the north.
I watched for about five minutes. As the storm continued to move, I decided to continue following it east. By the time I reached Rossville, the storm seemed like it was falling apart for good. Since I was almost out of daylight, I decided to call it a night.
For an unplanned chase, I’m pretty happy with how it turned out. Except I wish I had paid attention to the ISO setting on my camera and not used 3200.
What does it mean to be welcoming? — The whole point of adding community members is to change the community in some beneficial way. Being welcoming takes active, ongoing effort.
Trust in open source communities — Open source communities run on trust. But what does “trust” mean, how do you measure it, and what do you do with it?
I received a free copy of the audiobook through a randomized giveaway on StoryGraph. I did not receive any compensation for this review.
What happens when you mix a traumatic past with sudden fame? For music superstar Alora (and her intern-turned-manager Eva), the answer is both “you get everything you always wanted” and “you lose what you had.”
Delphine Seddon’s debut novel draws on her decades of experience in the music industry. Darkening Song is the story of a young record label intern who boldly becomes the manager of a 16 year old musician with superstar potential. The narration follows two threads: Eva describes the history of finding Alora, getting her signed to a contract, producing an album, and going on tour. Alora’s story is primarily told from an inpatient rehab center, where ends up after the weight and trauma of her meteoric rise become too much to bear.
Because you know early on that Alora is in rehab, the plot unfolds more as a “how did we get there?” instead of “where are we going?” The two threads are somewhat disjoint at first and converge as you approach the end. Instead of being confusing, Seddon uses the back-and-forth to build excitement, resulting in a book that’s hard to put down.
The characters live lives that are completely foreign to me, but they seem like authentically real people. They have flaws, some of which they grow out of, some of are made worse by success. The realness of characters is what keeps Darkening Song from being a “lol look at how messed up famous people are” story.
Overall, I enjoyed the plot, although the ending felt a little too out-there for me. But the style is good and the audiobook narrators were terrific. I gave it 4.25/5 stars on my totally-consistent-and-reasoned review scale.
Darkening Song is available later this month from Macmillan.
GitHub Discussions versus Discourse — The GitHub Discussions versus Discourse comparison isn’t about which is better — both are good. But which is better for your specific project?
Use your labels — A label that you don’t use complicates the experience. A label that you’re not consistent in using will lead to unreliable analysis data.
Open conversations are worthwhile — There are valid reasons to hesitate about having “public” conversations, and it’s a hard skill to build, but the effort is worthwhile.