Let me tell you about my solar panels

Just in time for the shortest day of the year (in the northern hemisphere), my solar panels are live!

First off, solar panels make financial sense right now. I would see solar panels on people’s houses and wonder how much more people are spending just to lower their “carbon footprint” (a term made up by fossil fuel marketing to push individual responsibility for a shared problem). But it turns out panels are cheap. The technology has gotten way better:

graph showing the plunging cost of solar energy

There are also a bunch of incentives. As I am writing this, at the end of 2021, there is a 26% federal solar tax credit. That means that if you pay taxes, you can knock 1/4 off the cost. It used to be 30%, but that expired in 2019. In 2023, the credit goes to 22%. In 2024, the credit goes to 0%. So don’t wait too long.

When I say that they make financial sense, the payback period is roughly 8-12 years. Assuming no inflation or utility price increases, my system will pay for itself in about 10 years. There will be both inflation and utility price increases, so my break-even will be sooner (about 7 years if prices go up 5%/year). My system is also warrantied for 25 years at 85% production, and it almost certainly will last much longer than that. Over 25 years, I will save tens of thousands of dollars in electrical costs, and avoid putting about 18,000 lbs CO2 into the atmosphere.

Quick aside: if a gallon of gasoline weighs 6.3 lbs, how much CO2 do you think it will put in the atmosphere when burned?

20 lbs! Isn’t science fun?

If I decide to sell my house before I’ve recouped all my expenses, I will probably still come out ahead. In 2015, Lawrence Berkley Laboratory found that solar panels added $4/watt to a home’s value, although with the falling cost of solar I don’t imagine that number is still accurate. More recently, in 2019 Zillow found that houses with solar panels sell for 4.1% more on average. On the flip side, I recently asked an appraiser about it and she said that there are so few houses with solar panels sold that it makes it hard for her to justify raising her estimate.


Back to incentives, I want to call out a program that is available in Washtenaw County, run by the City of Ann Arbor called Solarize. They have a list of solar installers, vetted through the Michigan Saves nonprofit green bank, who have agreed to a flat group buy discount program. The idea is that a neighborhood puts together a group buy with one of their installers, and gets a 5% discount if 3 homes purchase, 10% for 7 homes, and 15% for 10 homes. If you live in Washtenaw County, Michigan and want solar panels, definitely check the Solarize page for any current group buys or hop on one of their Power Hour Zooms.

You can read another take on Solarize over at Damn Arbor.

Aside from the fact that this makes renewable energy cheaper, it does something that is arguably more important right now: it normalizes solar panels. If you see one solar panel in a neighborhood, that’s probably just a crazy tree-hugger with more money than sense. But when you see a bunch of homes with solar panels you start wondering “do solar panels make sense now?”

There was an episode of the Hidden Brain podcast that talked about a similar program in Germany:

So one thing that the German government did that was so clever is they started targeting neighborhoods and incentivizing homeowners to just install, within certain neighborhoods, solar panels on their homes. And this shifted the social norms within those communities and created kind of a social pressure on the neighborhoods to realize that this was actually normal in their community now, and then they voluntarily went and adopted solar panels. And the most remarkable part about this process is that it spilled over from community to community and neighborhood to neighborhood and wound up becoming the dominant social norm throughout Germany, that everyone was sort of expected to have these solar panels on their homes.

Damon Centola on Hidden Brain – The Snowball Effect

My friend Lauren and I organized the group for our neighborhood, which involved getting a lot of quotes and meeting with a lot of solar installers. Some were more expensive than others, some pushed batteries more than others, but none were particularly bad. We ran into some challenges but, in the end, our Solarize group resulted in 16 new solar arrays representing 114 kW of power!

Solarize is great, and I hope that other municipalities adopt similar programs.

The Panels

The panels themselves are pretty boring. They are hardy and designed to withstand some pretty powerful weather. The most exciting thing (apart from the sense of smug self-satisfaction that causes people to write overly-long blog posts) is when the snow slides off in a mini avalanche on my deck. No real maintenance required, although you won’t want to replace your roof any time soon.

The install took 3 days due to weather, the slope of my roof, and the size of my system. Once the install was done, the county came out a week later to inspect it. Finally, DTE did their inspection and turned it on two weeks after the county inspection. The install started on October 29 and I got an email from my system to let me know it was live on November 25.

The system maxes out at about 9 kW. If you’re into the details, I have 27 340W Q.PEAK DUO BLK-G6 panels attached to Enphase IQ7+ Microinverters and an Enphase combiner. I can get all sorts of neat graphs in the app, and I’ll do a follow-up post once I get everything working in Home Assistant.

graph showing hourly solar production
The bar graph is a sunny late-autumn day where I produced 27.7 kWh, the line graph is showing the previous, less sunny day.
graphic showing how much power each solar panel produced, with dark spots where the panels were covered in snow
Here’s the system on a recent snowy day. The neat thing about microinverters is that you can see which panels are covered in snow.

How I Get Billed

I get my grid electricity from DTE Energy, which defaults to about 50% coal. If you also get your power from them, consider enrolling in DTE’s MIGreenPower program, which (pre-solar) cost me $20/mo to ensure that my electricity was coming from renewables. I was skeptical of the program—companies are more than happy to monetize guilt—but a friend who is an environmental professional assures me that it actually does force them to use more renewables.

So how do the solar panels affect my DTE bill? Well, first off, we get both electricity and natural gas from DTE and the natural gas usage is not going to change in the near future (although I would very much like to electrify all the things and get rid of my natural gas furnace, water heater, stove, oven, and dryer).

For the electric portion, my house uses any solar power first before going to the grid. After that, any excess goes to the grid (as an aside: residential solar is extra effective on high demand days because it goes directly to my neighbor’s homes for their use and doesn’t suffer ~6.5% transmission loss). DTE will credit me for my excess at roughly half the cost it sells the electricity. Those credits then cover the cost of my nighttime and cloudy day usage. They also can be banked for a year so that my August production can offset my January bill.

This is a pretty recent change. A couple years ago you could get net metering, meaning that you paid for the number of kWh you got from the grid in a month, minus the kWh you produced. If you produced as much as you used, you wouldn’t pay for any electric generation. Under the new system, you need to produce about twice your grid consumption to break even.

On the one hand, DTE needs to pay for the shared infrastructure somehow. I still very much would like the grid to be maintained so I can keep getting power at night and on cloudy days. On the other hand, if you have a natural monopoly where you need everyone to chip in to maintain a basic utility, that’s a good case for the people owning it and maintaining it with taxes.

Under the new system, it can make more sense to hoard your clean energy during high demand by filling a battery or wasting the energy running a crypto miner, instead of reducing demand for fossil fuel generated power.


I did not get a battery. Based on the math above—that I can sell power for roughly half the cost I can buy it—the break-even on the batteries was roughly 10 years. Batteries have a limited number of charge cycles, the lifespan is about 8-12 years. So it did not make financial sense for me to buy a battery that would pay for itself roughly when it died.

Did you know that when the grid electricity goes out, so does the solar? That surprised me, and a lot of people I’ve talked to about this, and kind of feels a little unfair. When too many air conditioners take down the grid, you’d think the solar house would be sitting cool. But you can’t have the solar panels pushing electricity into “dead” wires or you put the technicians at risk. So the rule is that solar panels have to shut down when the grid loses power.

Unless you have a battery. If you have a battery, you can disconnect from the grid but keep using your battery to power your home.

So if batteries are roughly break-even where I live, then the real advantage to them is that you can continue to power your home when the grid goes down. I am fortunate in that I don’t lose power very often so right now a home battery doesn’t make sense. I also know that there is a lot of focus on improving battery technology, so I would not be surprised if the math changes significantly in the next 5 years. Also, if DTE changes their rate structure for the worse, batteries may become more viable.

As an aside, I love the idea of utility-sized gravity batteries like Project ARES and Gravicitry. It feels very steampunk to store electricity in a bunch of train cars or a hoisted weight.

So… Should You Get Solar?


The finances change a lot depending on where you live. Also, for roof-mounted solar you will want to see how much sunlight your roof gets. You can use Sun Number or Google’s Project Sunroof to estimate:

Example map from Google's Sunroof

If your roof isn’t great for solar due to shade or geometry, ground-mounted solar may be an option.

There are also a bunch of other things you can do instead of adding solar panels. Reducing your energy usage by insulating you house or using lower-power power things (LED bulbs pay for themselves in a year!) will reduce your carbon output.

Also check with your power company to see if they have a program like MIGreenPower, where you can request clean electricity. Yes, it’s all fungible, but they really do buy more power from clean sources when you sign up for it.

Ultimately the climate crisis is being caused by systemic problems. We have made car ownership mandatory for most of America. Michigan’s Department of Transportation measures its success by how many miles it can get people to drive. We can’t even let the free market try to solve the problem until we price the cost of carbon into everything. We can’t solve systemic problems with individual actions, but at least we can do what we can to try to stave off the worst famines, droughts, wildfires, refugee crises, and wet bulb deaths of the climate crisis.

A thing about my sabbatical and sleep

I am back to work, after three months of paid sabbatical. I should probably write more about it at some point, but until then here’s something I noticed early on.

I have a thing where I wake up overnight and ruminate, often about work. I worry about something from the day before or the next day. My brain keeps me up thinking instead of sleeping like it is supposed to.

So what do you think happened when I went on sabbatical and literally didn’t have to worry about work for three months? Did I sleep through the night? Or did I wake up and worry about work?


I still woke up sometimes, but without work to worry about I was just… up. For a long time I have blamed the waking-up-thing on work, since that’s what I would think about. But it turns out that the work worry came after the waking up part.

That was really interesting, because it turns out the effect was the cause, and the cause was the effect. I was worrying about work because I was up, not up because I was worrying about work.

I have found that, for me, the best way to handle waking up is to make sure I get enough exercise. Sadly, doing 30 minutes of cardio 2 or 3 times a week seems to be the key to sleeping through the night. My brain lets me know when I’ve been slacking off by waking me up, even if there’s absolutely no work to worry about. Just a pandemic, kids, house, pets…


We had to say goodbye to Scooter on Friday. He was 13. It was a rough week.

We euthanized Yoshi in our home on Monday. That day Scooter started limping. It wasn’t anything new. He was part Shar-Pei and would get Shar-Pei fever from time to time. It would clear up in 24-36 hours and he would go back to normal.

Tuesday night we were concerned. Wednesday we took him to the vet, then the emergency vet. We tried heroics but, like most heroics, was more about trying our hardest than getting the outcome we wanted.

It seemed like it was neurological, like something broke when he saw Yoshi die. The dogs had been together almost every day for 12 years, so maybe Scooter couldn’t bear to be without his brother.

The dogs weren’t brothers, although people would ask. Scooter looked exactly like Yoshi in his adoption photo, and completely different in person. They were both Shar-Pei mixes but where Yoshi had bright ears, fluffy fur, and a Shar-Pei’s curly tail, Scooter had Shar-Pei’s covered ears, short coat, and a Pit’s long straight tail. Where Yoshi was aloof, Scooter was bursting with love; even by dog’s standards.

Scooter got his name from the rescue, and we couldn’t think of anything we liked better when he came home. Luckily he didn’t have a habit of scooting, and I only made the connection a few months after we got him. The rescue insisted on seeing pictures of the tall privacy fence in our backyard at the time. We found out why when he leapt the 3 foot gate to greet us in the front yard.

He was vocal, and we learned that he wasn’t growling but making playful noises. And he loved to play. He would chase and wrestle and zoom even in his senior years. Anything to get attention from the people he loved.

Losing one dog is a gut punch. Losing two in the same week has shocked our sense of home. It’s so much quieter in the house, despite having two kids under 10. We can enter the house without running a gauntlet of wagging tails. The robot vacuum is finally making progress in its war on fur. There’s no one to let out before bed, and I don’t need to lock the back door because it was never unlocked.

Scooter, you have left a hole in our family and we will always miss you.


Our best guess is that Yoshi was part Shar-Pei and part Lab. He got his stubborness and curly tail from his Shar-Pei side and his shedding from his Lab side. He loved to curl up with his humans. It was an honor to wake up with him balled up in the crook of your legs or his head resting on your shin.

Yoshi came to our home on July 23, 2008. He was about 1 year old. At the time we had Buddy, an older full Shar-Pei. Having learned the health problems that come with a pure Shar-Pei we decided to adopt a mixed breed.

We were told that Yoshi was left chained up outside before being surrendered to the humane society where we got him. When we got him to our second story apartment, he froze when he saw the stairs. We had to carry a scared, unfamiliar, 55 lb dog up the stairs for the first few days we had him. He got the hang of it eventually.

We had a couch that backed up to a sliding glass door. Yoshi would perch himself on the back of the couch like a cat, or even stand on it to get a better view of what was going on outside. We joked that he must be part mountain goat.

He was always a bit leery of everything. He always had a wrinkled brow so he always looked worried, but if you watched his ears you could tell if he was excited or concerned. We kept his crate for him long after we stopped shutting the door. He always needed a safe place to be. After the crate he would always find corners and closets where he could relax while still keeping an eye on things.

Yoshi would love to roll in the sun, any time of year. If the sun was shining Yoshi would love to wiggle his back in the grass, fallen leaves, or snow.

When he would shed we made a game of gently pulling small tufts of fur that were sticking out, and marvelling at how much they bloomed into giant puffs. It’s dumb, but I think that’s part of being a family.

When he went deaf, we didn’t even notice at first. He was stubborn so not listening was par for the course. Once he stopped barking at the doorbell we knew his hearing was actually going, and I selfishly wished it had happened when we had napping babies.

Goodbye Yoshi.


This is a legitimate email from a Legitimate Financial Institution that I was expecting, but I don’t know what I could change it to make it look more like a phishing scam.

We’ve spent the last 20 years teaching people not to open email attachments but I guess Raytheon’s Cybersecurity company didn’t hear about that?

I did open the attachment in an isolated browser after reading the source. Inside was a button that takes you to their secure messaging site’s onboarding flow. There’s 90K of data POSTed in hidden fields, so I suspect the constraints that led to this were:

  • Our security platform generates 90K of data to authenticate that the source of this request is legitimate.
  • That’s too much to add as query string parameters on a GET request, but it works for a POST.
  • Support for forms in email clients is poor, so we need to put the form into an HTML attachment.

Each step solves the previous problem, but at no point did anyone with the power to fix things step in and stop it. They didn’t say “90K is too much, find another way to authenticate the source of the request, preferably less than 2K.” If I had to guess, the people who had the information about how bad the implementation is were completely removed from the people setting the requirements.

All of that exists, too! If you follow the mobile instructions and forward the email to that unknown email address, it generates a very reasonably sized link, that takes you to an HTML page hosted by them, where you can POST 90k of hidden data and read your secure message.

Despite how awful this system is, I’m still glad that Legitimate Financial Institution is using some secure messaging service to collect my loan documents (I’m getting a loan to buy solar panels) and not asking for them to be faxed or emailed plain text.

Firefox Tip – Use the ^ Search Operator

This list of 11 secret Firefox tips is fantastic! Number 2 will change your life! OK, that’s overselling it a lot. Many of those I already knew, but the second tip really is great:

Search for a needle in a tabstack

Tab hoarders, we see you. Heck, we are you. Don’t ever let anyone shame you for having dozens (and dozens3) of open tabs, implying you don’t have it together and can’t find the right one. Instead, dazzle them with this trick. Add a % sign to your URL search bar to search specifically through all your open tabs, including tabs in different windows. Then you can click over to the already open tab instead of creating a duplicate, not that anyone has ever done that.

Bonus tip: If you love that tab search trick, try searching through your Bookmarks with * or your History with ^.

I’ve (somewhat) cut down on my tab hoarding thanks to One Tab and Pinboard, but my Firefox history is massive. Being able to search my history with ^ is a game-changer for me. I’m actively trying to build up my muscle memory for using that search operator.

Get Your Blog Posts on Mastodon

Here’s a full list of steps to get your blog posts on Mastodon:

  1. Install and activate the ActivityPub plugin for WordPress

That’s it! Thank you for following along.

OK, I’d actually like to say a bit more. When I first installed the plugin, I was trying to figure out how to connect it to my Mastodon account. If you’re using WordPress, it’s straight-forward to get your blog posts on Twitter, Facebook, Tumblr, and LinkedIn thanks to Jetpack (I work for Automattic who makes Jetpack, but I don’t work on Jetpack). Jetpack works by connecting to those sites’ APIs with your account, and then posting to your account. I assumed that the ActivityPub plugin would work similarly.

But Mastodon isn’t like any of those other sites. Since anyone can run a Mastodon server, and Mastodon speaks the ActivityPub protocol, the plugin turns your blog into a server in the ActivityPub network (the “Fediverse”). You don’t need another account, your WordPress account is your account.

So how do you actually see your blog posts on Mastodon?

That part actually tripped me up. You have to go to /wp-admin/profile.php to see your Mastodon ID. I don’t know where I read that, but it wasn’t obvious to me. At the bottom it tells me that my ID is @georgehotelling@g13g.blog so I searched for that on my Mastodon server and was able to follow my blog. The format seems to be [username]@[hostname] but you should check your profile page just to be sure.


There are a few things I’d like to see from this plugin in the future:

  1. Remote Follow. I’d love to be able to create a remote-follow page for my blog, similar to how Mastodon has a remote follow page. The Social Icons block in Gutenberg already has a Mastodon logo, but it would be nice to be able to link to a page that lets you subscribe, like on Mastodon.
  2. Customizable Feeds. Another thing I’d like to see is the ability to create and name feeds for posts that match a WP_Query. First off I could have a shorter ID like @blog@g13g.blog or something. I could also use it with Custom Post Types to have short links (like Waxy or Kottke) on one feed, maybe photos on anther feed for Pixelfed.
  3. Replies as Comments. If someone replies to my post anywhere on the Fediverse, I want the option to include that in the comments section.

Oh, and about Mastodon…

I have said it elsewhere but I love my Mastodon instance. It reminds me of BBSs back in the day, or maybe the local Livejournal group. It’s cozy with a lot of familiar faces. 90% of the content on the instance is marked “followers only” for privacy, so if you’re interested be sure to follow people you see mentioned.

Mastodon, like blogs and RSS, is also one of the last places on the web where you don’t have an algorithm choosing what you see. No one is optimizing tho software for engagement metrics. That alone is pretty valuable to me.

Open Source Ambilight LEDs on a Raspberry Pi for $100

I made this for about $100 with a Raspberry Pi and no soldering:

Fluid Sim Hue Test on YouTube

I’ve always thought that Philips Ambilight TVs were cool. They do what you see in that video: shine the edge colors past the TV. But it was always a “nice to have,” so when I was buying my TV I prioritized other features. Later, Philips launched the Hue Play HDMI Sync Box, which would let you create an Ambilight effect with Hue light strips. Again, cool, but not $300-and-tied-to-a-proprietary-system cool.

BTW, the generic name for “Ambilight” is “bias lighting,” so I’m going to start writing that instead. Aside from looking cool, I’ve had some eye strain issues with my TV and heard that bias lighting could help with that. After using it for about a week I can say that yes, it does!

I’ve also known that LED light strips are really cool to work with, but it’s been years since I soldered anything so it was all pretty intimidating. Also intimidating: flashing microcontrollers like the ESP32. I’ve always felt more comfortable with a Raspberry Pi because it’s a Unix system; I know this. When I found out that I could build a bias lighting system for about $100 with a Raspberry Pi and no soldering, I jumped on it. It started with this video guide from DrZzs:

The magic behind it is Hyperion, an open source system for doing bias lighting based on an HDMI input source. I had no idea something like that existed, and now it’s glued to the back of my TV. As a bonus, there are a bunch of fun effects so you can use it as an ambient RGB light when your TV is off. I can also control it with Home Assistant!

Here’s what I wound up buying:


DrZzs recommends these 150 LED/5m strips but I bought these 300 LED/5m version. In retrospect, the 150 LEDs would probably have been better because they are lower power and we don’t need very high resolution for this. I have a 55″ TV and used 212 LEDs from the strip.

Power Supply

Someone on reddit suggested a 20W power supply to go along with the higher power usage for a 300 LED/5m strip. I prefer the 10W power supply that DrZzs linked to for two reasons:

  1. The 20W supply requires you to wire your own power cord in
  2. The 10W supply comes with a barrel connector that makes plugging everything in easy

Remember, I’m threading the needle between “excited for bias lighting” and “too complicated to bother with,” so convenience matters.

I was worried that the 10W supply wouldn’t be enough for the 300 LED strip, and technically it isn’t. The conservative estimate for amperage is 0.06A/LED, so 300 LEDs could need as much as 18A. Also I followed DrZzs tip around 15:30 to power the Raspberry Pi from the same power supply, which recommends 2.5A. However, the more realistic calculation for LEDs is 0.02A/LED and 350mA for the Pi, so my final power estimate is about 4.5A. Plenty of power from a 10A supply.

HDMI Capture

The HDMI Capture Loop that DrZzs linked to in his description is sold out on Amazon so I went with a solution I found in the reddit comments. DrZzs’s recommendation is a capture loop – it sits inline with the HDMI between the source and TV, and sends a capture to the Pi via USB.

I got this 4K HDMI splitter and this 1080p USB capture card. It means more HDMI cables behind my TV, but also helps with my cable management because my TV’s inputs are separate from the TV. So the HDMI splitter sits in my media console while the Pi is on the back of the TV.


These little wires are actually a huge part of what makes this project accessible to me. When I’ve seen LED projects before, you’ve had to solder wires to a ESP32 and then to the tiny contact strips. What I like about this project is that I grab a female-to-female wire, plug it in to a GPIO pin on the Pi, and plug it on to the male connector of the LED strip. Done. Connected.

These corner connectors are great for making the LED strips sit flat. When I was roughing the LEDs in, I just made loops at the corners to get a bend, but these make it look much better. It took me a few tries to figure out that the corners and strips go under the pins, but I got there eventually. Also the pins weren’t perfectly aligned with the copper bits on the LED strip, at least until I nudged them into place.


I did run in to some problems, or at least went off script from the tutorial video. First, instead of using Raspbian and manually installing Hyperion like in the video, I used a Pi image put out by Hyperion called Hyperbian. Download the image, flash it to an SD card, set up the WLAN and it’s good to go.

Second, the LED strips on the Pi just did not work right when I connected the data pin to GPIO 18. I think DrZzs glosses over the importance of having the Pi and the LED light strip share a common ground. The lights were fuzzy and not powering all the way until I grounded the LEDs to the Pi. Just like I have a wire going from the GPIO 18 pin on the Pi to the data pin on the LEDs, I added another wire going from the ground pin on the LED strip to a ground pin on the Pi. Suddenly everything lit up perfectly.

The last gotcha was that there was quite a bit of lag between the TV screen and the LEDs. If you don’t notice latency, don’t go looking for it. You will be cursed with the knowledge that it’s there. I’m not going to mention it to my family so they don’t notice it. I did make good progress on reducing the latency though, and I’ll outline how in a future post.

This was a fun project and I’m much more comfortable with LED strips now. I’m looking for other places in my house to install them. It’s also been fun to see which scenes have been really enhanced by the lights. I’ll end with one of my favorite examples so far, from Mary Poppins:

My First Time on the Other Side of the Screen

I messed up rules, I forgot what I said, and didn’t add any of the flavor descriptions I had planned. But, people had fun so that’s OK. After three years of playing Dungeons & Dragons, I survived my first session as a Dungeon Master.

Once a year my employer gathers all our distributed workforce for a week of in-person work. My coworker Payton organized some groups to play in the downtime we have some evenings. He wrote the scenario, provided pre-gen characters, dice, pencils, everything! Payton also asked people if they wanted to play, DM, or “play but could DM if needed.” I chose option 3.

The game was a one-shot scenario based on Stranger Things called “Unusual Things” for a group of level 2 characters. His description:

Nothing much happens in the mountaintop town of Hawkurns, where the populace mines magical crystals and their kids to get into all kinds of mischief. Recently, however, people have been disappearing, and no one knows why. Rumors of unusual things are everywhere. Can you help solve the mystery before something worse assails this small town?

My players solved the puzzles, found the big bad guy and defeated him! Some of the townsfolk even survived!

Aside from Payton’s organizing, two things helped me a lot for my first time on the other side of the DM screen.

/r/DMAcademy has a lot of good discussions and tips. It also presents a wide array of experiences so I felt like I could handle the weird things my players did. The players still threw me for a loop, but the important thing was that I was fooled into thinking I could handle it.

The other big help was my friend Chris Salzman’s podcast Roll for Topic, where he and Andy Rau roll a d20 to decide what to talk about with their guest GM. (Skip episode 20 if you’ve never listened before, it’s an off-format episode.) Chris runs the 5th Edition game at my coworking space as well as a Blades in the Dark game I’m in with Andy on Roll20. I also recommend listening to your own DM’s podcast if they have one, just to find out how much you messed up their plans.

Chris’ sign-off for the podcast is “Remember, if your players are having fun you’re a great GM” which is the best advice I got.

(The photo at the top is from a different game I was in with maps and miniatures. I forgot to take any pictures of our game, and my hand-drawn maps with beer caps for enemies was much less photogenic)

Brent Simmons on why he’s not adding algorithmic timelines to NetNewsWire, his RSS reader:

These kinds of algorithms optimize for engagement, and the quickest path to engagement is via the drugs outrage and anger — which require, and generate, bigger and bigger hits.

This is what Twitter and Facebook are about — but it’s not right for NetNewsWire. The app puts you in control. You choose the sites and blogs you want to read, and the app reliably shows you their articles sorted by time. That’s it.

Update: Brent also wrote a follow-up highlighting these tweets:

JavaScript is not available.

1. and 2. mean it’s not the algorithm’s fault. There’s no way to write an engagement algoritm that doesn’t select for outrage and anger. But 3. means anything that incorporates such an algorithm actually makes us worse people.