# Posts

• ## Why Don't I Have Ads?

Why doesn’t this blog have ads? Well, the answer’s simple: at my current view count, it isn’t worth it. And I don’t mean that it’s not worth the time to set it up. I mean that if someone offered to do it for free, I would still turn them down.

Let’s do a very rough Fermi estimation of how much revenue I could get. Google Analytics says I get about 5000 sessions per month. According to this blog, the clickthrough rate of display ads is 0.05%, but is 8.8x higher for native ads. I don’t want to do native ads, but let’s get an upper bound by assuming I did use native ads, and they have 10x clickthrough, so 0.5%. Average cost per click is $0.58. In total, the optimistic estimate is: $5000 \times 0.5\% \times \0.58 = \14.50$ Sure, that’s some money. However, ads also come at a cost to readership. Based on analysis by Gwern, running ads drops views by about 10%, and a drop of that size has been replicated independently across several organizations. So really, the question is, would I rather earn at most$14.50 a month (likely much less), or would I rather have 500 more readers? Seems pretty clearly in favor of the readers side to me.

* * *

If finance has taught me anything, it’s that you can always take the inverse of a bet. If I value readers more than money, why don’t I pay money to run ads to direct people to my site?

At first, I thought it was dumb and stupid, but when I thought about it more I realized I didn’t have a good argument for why it was dumb, and I needed to take it seriously. I have free unclaimed AdWords credit, which Google offers to new accounts. Ads would increase viewership. They wouldn’t even affect the reader experience, because the ads would be on other people’s sites, not my own.

I think the main problem is that ads don’t really work for a personal blog. If your blog has a specific focus, you can advertise towards that specific form of content. My blog deliberately has no focus besides the things I want to write about, and I have no interest in changing that. There’s no clear search queries I’d want to sponsor. If someone searches my name, they find this site with ease (the benefits of having a novel last name), so it’s not like I need to pay for better placement. As for a banner ad, I don’t even know what image I would use. It’s like asking me to come up with a picture that summarizes my entire life.

There also could be follow-on effects, where someone views my blog differently if they clicked a sponsored link to get there. For example, I lost all trust in mattress recommendation websites after learning how online mattress advertising works. Most importantly, you can pay for views, but the rate isn’t great. At the previously mentioned price of $0.58 per click, a budget of$14.50/month only leads to 25 clicks per month. Much worse than the 500 views sacrificed if I did it the other way around! In retrospect, given how ads work, the price per click has to be based on the revenue of the products people advertise, and if I don’t sell anything, I’m priced out by everyone who does.

Given that I’ve never ever seen an ad for a personal blog, it probably doesn’t make sense to do so. Still, fun exercise to think through.

• ## Sometimes It's Worth Trying to Change the World

Once, a friend asked me what I expected to happen in the next 10 years. When I made my best guess, he observed that it sounded like I was narrating the work of other people, rather than placing myself in the narrative.

I’d say this is one of the main mental blocks I’ve been working on.

Normally, I mentally bucket everything into two categories: things I can change, and things I can’t. If I can’t change something, it’s not worth thinking about, so I push it out of my mind. Then I just focus on the things that are under my control and do the best I can.

And I mean, this isn’t an awful strategy. It works fantastically for video games. You can’t change how video games work. Everyone gets the same source code, and although there might be exploits within that code, you can’t change the code itself. The systems of the game are God, and what happens happens. If you have disagreements with a game’s systems, you’re better off finding another game instead of trying to change them.

In the real world, the systems are not God. They could be fair or cruel, well-reasoned or nonsensical, but they aren’t static. We made those systems, and we can change them too. Sometimes I forget that and overoptimize according to rules that shouldn’t exist.

I think some people don’t have this issue. They have some base level of arrogance that if the world doesn’t work the way they think it should, then they’ll spend their time trying to change the world until it aligns with their expectations.

Here is an example: suppose there’s a person that only cares about squirrels. They think they’re super neat, and want more! They want squirrels everywhere.

Most people do not care about squirrels. The world is not set up to reward squirrel enthusiasm. And this hypothetical person could accept that the world just doesn’t work the way they want it to, and go on their merry way, and honestly, their life will probably be just fine. Alternatively, they could write essays and give speeches and cold-email environmentalists explaining why squirrels are excellent. This will probably piss off a bunch of people who don’t want to listen to the crazy squirrel advocate give Yet Another Squirrel Stump Speech, but it’ll drum up support too. Maybe their dreams of a squirrel-filled world will come true. Maybe they won’t. But no one can say they didn’t try to make the world care more about squirrels.

Yes, okay, this is a silly example. However, to me the broad strokes describe pretty much every successful political movement. At its core, politics is a contest over how the world should work.

Basically, if the status quo sucks, you don’t have to just complain about it with your friends. I mean, you should totally still complain about it. Complaining is fun, and if you have friends that push back on your BS, you’ll learn if your complaints are justified. But after you’re done with that, you can (and should) take agency to fix it. Like, actually fix it. Don’t stop after you come up with the first reason things can’t be better. Or the second, or third.

My guess is that most people reading this have more power than they realize. Not every battle is worth fighting, but that doesn’t mean you should ignore the battles you could be fighting.

• ## A New Online Dominion Client Approaches

Online Dominion is getting yet another online implementation!

It’s by Temple Gates Games, and they’re aiming to release it for Android, iOS, and PC. It’s unclear what will happen to the existing Shuffle IT implementation, but my guess is that they will coexist. Based on the press articles, the aim of this version is to provide the casual-friendly features that Shuffle IT promised but never delivered on, like a mobile app, and better single player experiences. Somehow, this is the first time Dominion’s IP has been given to a developer with a proven track record of mobile app development, so I’m looking forward to seeing what they do.

The part that caught my eye is that they’ll have a “neural network based AI”. Now this could mean a lot of things, and the press articles predictably don’t clarify thigns very well. Luckily, some devs are in the Dominion Discord and they answered questions others and I had about how the AI works.

Their broad approach is inspired by AlphaZero. There’s a value network and policy network. The neural net is a Transformer-based architecture, that takes in just the current game state. They’ve tried providing previous buys and didn’t see much improvement. They then do self-play rollouts with Monte Carlo Tree Search to update the model. They’ve said that with their current computation budget, the rollouts tend to reach a few turns ahead. The model only trains against itself, no attempts at seeding with human gameplay, and for now they’ve been training with a limited number of Dominion expansions. Over time, they’ve been introducing new expansions, restarting training from scratch whenever they add a new one. You can think of this as slowly increasing the difficulty of the game, as the developers get better at tuning their AI.

Overall, this makes a lot of sense to me. I’ve long believed that a strong Dominion AI is doable, but nontrivial to get right. Despite landing perfectly in the intersection of my interests, I’ve never tried starting a side project for Dominion AI because the difficulty seemed like it would require too much time investment. (The other main reason is that step 0 of any Dominion AI effort is to implement an efficient Dominion rules engine, and I really didn’t want to debug that.)

There have been a few attempts at Dominion AI. Ian Davis found some success with RL, but only played a version of the game with Province/Duchy/Estate/Gold/Silver/Copper. There was a Stanford class project that also used reinforcement learning on the Base set, successfully beating some of the bots in Dominiate. In my mind, the one that got furthest along is Provincial from 2014, which was a genetic algorithm searching over different buy strategies, along with hardcoded play rules.

There are a few reasons I believe the Temple Gates bot could do better than these projects.

• Since it is part of a bigger Dominion app, the project will be around for longer. Dominion AIs are doable, but hard enough that you should expect it’ll take at least a few months to figure out, probably more in practice. Most of the side projects don’t sustain themselves for that long.

• As far as I know, the Temple Gates implementation is the first one that doesn’t use hardcoded play rules. Instead, it allows the agent to choose what to do at every choice point. This is really important at high-level Dominion. It’s important enough that I wrote an article about it. One of the main reasons Dominion simulators fell out of favor was that their hardcoded card-playing heuristics stopped matching up with high level play, and this placed hard limitations on how realistic the simulations could be. Every AI attempt since then has ignored play order and had the same problem. This new approach seems like the first one that operates at a lower level of granularity, and therefore makes it the first method with the potential to match expert humans. (Doing so is a different matter entirely!)

• In general, they are doing things that make sense for game AIs. Like, seriously, why has no one tried AlphaZero-style methods to Dominion before? Pure RL without any search is going to take forever to learn anything, whereas pure search doesn’t interact well with the randomness within Dominion. Something in between like AlphaZero seems good.

• They have some game AI expertise already. The keldon Race for the Galaxy AI is supposed to be quite good (I’ve never gotten into RftG strategy), and keldon is helping out on this project too. So I think they already have an appreciation for some common pitfalls in game AI development. For example, laypeople like to propose tons of game heuristics that game AIs should use, but I think anyone who’s worked with game AI knows that a lot of reasonable-sounding heuristics don’t actually help for inexplicable reasons.

So, color me interested. The main dangers I see is that although Dominion doesn’t have the bluffing mechanics of poker, it does have the heavy randomness that could make it hard to get low variance estimates of win rate, creating very noisy updates during the learning process. Additionally, although they could potentially learn the engine play that dominates high-level gameplay, it seems like it could be tricky for the bot to successfully explore those options. I think it is doable, if the bot learns to play obvious engines (like Village-Wharf), and then slowly learns the less obvious engines. But it also seems likely for the bot to get stuck in the local optima of money strategies, since they’re easy to discover. They’ve mentioned the bot is already quite good at Big Money + a few action card strategies, which is a good sign given that it learned from scratch, but that’s not much above the bar of existing Dominion bots, and I believe the AlphaZero-style methods should be able to outperform that baseline. We’ll see how it does.

Beta signups are open now, so if you like Dominion, go check it out!