Other writing: January 2024

What have I been writing when I haven’t been writing here?

Stuff I wrote

Duck Alignment Academy


Other writing: December 2023

What have I been writing when I haven’t been writing here?

Stuff I wrote

Duck Alignment Academy

Replacing the flash spring on a Canon EOS T1i

On Christmas morning, I put my Canon EOS T1i DSLR camera on the tripod to take a family picture. But it didn’t work: “Err05”. The built-in flash didn’t open, so the camera refused to…camera. It had done that at Thanksgiving, too, so I’d used manual settings and some additional lighting to make it work. This time, changing the ISO from automatic was enough to convince the camera to take a picture, but I didn’t want to keep fighting it. Search results suggested that it could be dirt in the flash housing. Makes sense: I took the camera to the beach this summer and we all know that sand is coarse and rough and irritating, and it gets everywhere.

I found a great YouTube video that went through the process of removing the housing and cleaning the flash. Just from loosening the screw a bit, the flash popped up when it was supposed to. But I figured “since I’m here, I might as well keep going and make sure I have everything cleaned out.” That was my mistake.

When it came time to reassemble everything, I couldn’t figure out how the spring fit. The guy in the video just said to put it back and his fingers blocked my view. I couldn’t find anything else, except for a few forum posts that were impossible for me to decipher. I spent what felt like an hour trying different things and growing increasingly frustrated. But at one point I turned the camera just right and I figured it out.

Replacing the spring

Close up of the flash housing on a camera with a circle drawn around the slit at the base of it.
The circle shows the slit where the short end of the spring goes.

It turns out there’s a slit on the interior part of the housing where you can slide the short end of the spring. It will hold there firmly after you bend the long part back to install the screw.

Close up of a hand pulling on the long end of the camera flash spring.
Pulling back the long end of the spring to get the screw in place.
Close up of the reassembled spring with the flash closed
The screw and spring replaced

One the screw is back in (note that the head is smaller than the coil of the spring), you can hook the long end under the tab on the forward part of the housing.

I hope this helps anyone who stumbles across this post in a fit of desperation. The YouTube video is very helpful otherwise, so I won’t repeat the rest. I’ve only tried these instructions on one model of camera, because that’s the only one I have, but it should be the same for similar models.

Indiana COVID-19 final update

Oh hey, it’s been almost two years since my last update. Chalk it up to a busy life and a national lack of interest that resulted in less to talk about. The data I used to create my Indiana COVID-19 dashboard is no longer updated, so the dashboard is also no longer updated. I’ll leave it up for historical reference.

By the end of the third year of the pandemic, we’ve still not managed to keep people from dying of COVID-19 in Indiana. July 2023 was consistently at or near zero, but the daily deaths have been rising since. We’ve had, on average, about four per day in the last 2–3 months. But the state no longer feels the need to track that data.

Graph of daily COVID-19 deaths in Indiana on a logarithmic scale
Daily COVID-19 deaths in Indiana on a logarithmic scale

Still, our death toll has been far lower than in years past.

Line graph of daily COVID-19 deaths in Indiana compared year-to-year.
Daily COVID-19 deaths in Indiana compared year-to-year.

The same can’t be said for hospitalizations. When the state stopped taking a daily census on May 24 of this year, we had consistently been higher in 2023 than at the same time in 2022.

Line graph of daily COVID-19 hospital census in Indiana compared year-to-year.
Daily COVID-19 hospital census in Indiana compared year-to-year.

But I guess COVID is over now. Or at least we’re pretending like it is. Just this morning, my wife and one of our kids tested positive. It’s the 1,375th day of March 2020.

Other writing: November 2023

What have I been writing when I haven’t been writing here?

Stuff I wrote

Duck Alignment Academy

Technically We Write

Thoughts on the Functional Source License

Earlier this month, Sentry announced a new software license called the “Functional Source License.” The announcement has a tagline “Freedom without Free-riding”. It purports to address some of the issues with the Business Source License.

An improvement?

It does, in fact, address some issues with the Business Source License. The Business Source License is less of a license and more of a homework problem for a combinatorics class. It has many options that materially change the terms, so being told that software is under the Business Source License doesn’t tell you much. The Functional Source License has one choice: does the license change to the Apache Software License or the MIT license?

While the Functional Source License does reduce complexity, it still suffers from the same problem: it’s not open source. That’s not a problem in itself; it’s a problem because it tries to co-opt the well-known “open source” label without actually being open source. Ultimately, these are attempts to use a license to address a business model problem. As we all should know by now, open source is not a business model.

The “right” approach

I’ve seen some people ask “then what’s the right approach?” The answer depends on what it is you want to do.

If you’re trying to achieve ubiquity, make the source fully closed and give it away to people who aren’t going to pay you money anyway. Or go with a “freemium” or “open core” model.

If you want your users to see the code so that they can trust it, then just make it source-available. This doesn’t make a lot of sense in a software-as-a-service context (which is what the Functional Source License is geared toward) because the user has no way of knowing that the code they’re inspecting is that the code you’re running.

If you want to get community contributions, use an open source license. Otherwise, you’re the free rider. A copyleft license won’t prevent competitors from building a product on your software, but it does prevent them from keeping their changes to themselves.

Other writing: October 2023

What have I been writing when I haven’t been writing here?

Stuff I wrote


Duck Alignment Academy

Technically We Write

Other writing: September 2023

What have I been writing when I haven’t been writing here?

Stuff I wrote

Duck Alignment Academy

  • One approach to AI contributions — All communities will need an AI contribution policy at some point, and the Apache Software Foundation’s example is a good one to follow.
  • What are you optimizing? — If you start optimizing for a process and then discover you’re optimizing for the wrong thing, you’ve wasted time.
  • For companies, community should be “us” not “them” — Referring to the community as “them” as if there’s no overlap encourages treating company & community interests as separate, harming long-term sustainability.
  • New logo! — Almost two years after I meant to get around to it, Duck Alignment Academy has a logo.
  • Preparing for Hacktoberfest contributors — If your project is participating In Hacktoberfest, you’ll want to make sure you’re ready for an influx of new contributors.


On “non-code contributors”

I was dismayed when I read Justin Dorfman’s “Why I’m proud to be a non-code open source contributor and you should be too” this morning. It’s mostly a great article. Dorfman makes valid points about the value of contributing to open source projects beyond code. Open source needs — and should encourage — these kinds of contributions.

Which brings me to my issue with the article. Dorfman anonymously quotes a well-respected open source leader:

If you find yourself about to use the phrase “non-code contributors” you should stop and use entirely different language.

He calls that a “horrible idea” and suggests that it discourages the kinds of contributions we need. But this take is disengenuous at best. I happen to know the post he’s referring to and it continues:

Defining people by what they are not is not a valid pathway to inclusion. Want to attract designers? Say so. Want to attract technical writers or community managers? Say so.

Far from suggesting that people should be quiet about non-code contributions, the post is calling on project leaders to stop othering those contributors and explicitly value them. The author is saying that lumping everything that’s not code as “not code” diminishes it. It’s just a shame that the article misrepresents a post when it could just agree with what was actually written instead.

Hurricane Lee forecast game

Update: we have a winner!

It took longer than I’d have liked to publish the results of this contest. I was traveling out of the country. But I’d like to congratulate KP on winning the Lee forecast contest.

One thing that I realized after the fact: my changes below made it so only whole numbers could be used for latitude and longitude. I’ve fixed that for next time!

Original post

The prodigal game returns! A technical glitch ruined the Dorian contest in 2019, so we haven’t seen a Funnel Fiasco tropical forecast game since Hurricane Matthew in 2016. But I’m pleased to announce that we’re up and running for Hurricane Lee. You can submit your landfall forecast by 2100 UTC on Wednesday 13 September.

In keeping with tradition, we’re still using the same crappy Perl script I wrote in 2005. Despite the fact that I’ve been putting off a total rewrite for over a decade, I did make a few improvements recently:

  • Numerical fields now require numeric input. If you were hoping to submit “butts” as your wind speed, I’m sorry to disappoint you.
  • Coordinates are constrained to reasonable ranges. I refuse to give in to Kevin’s whining about west being negative numbers. (I believe my exact words to him were “take it up with the Prime Meridian.”) But I was feeling magnanimous so I’ve constrained the latitude to 0–90 degrees north and the longitude to 180 degrees west to 10 degrees east.
  • Similarly, wind speed is now constrained to realistic values. You can’t submit a wind speed less than zero or above 200 miles per hour.
  • Furtherly similar, the time segments can’t be negative or overflow.

So go ahead and submit your forecast by 2100 UTC on Wednesday so you can join in the grand tradition.