Is sending Factorio to your competitors' engineers a cost-effective means of sabotage?

Twitter

In light of the above tweet, and Ned Beauman's How ‘Factorio’ seduced Silicon Valley — and me (permalink), I wanted to approximate the magnitude of damage you could inflict with a Mass Steam Gifting Event of Factorio.

My mate Huw recently made this funky library called dist, a lightweight alternative to Squiggle designed to be used with a batteries-included notebook environment such as Observable, where Squiggle is a minimalist programming language for probabilistic estimation.

Let's put dist, and my HTML-embeddable notebook environment @celine/celine through their paces:


☙❧

First, we'll import dist and make it available globally. It's got a bunch of useful distribution creation functions mirroring those in Squiggle.

dist = Module {beta: ƒ(…), betaMeanSampleSize: ƒ(…), betaMeanStdev: ƒ(…), dist: ƒ(…), exponential: ƒ(…), gamma: ƒ(…), lognormal: ƒ(…), lognormalInterval: ƒ(…), mixture: ƒ(…), normal: ƒ(…), normalInterval: ƒ(…), to: ƒ(…), truncate: ƒ(t, r, o), truncateLeft: ƒ(t, r), truncateRight: ƒ(t, r), uniform: ƒ(…), Symbol(Symbol.toStringTag): "Module"}

Let's take a look at the engineering compensation levels of some random company on Levels.fyi. I dunno, uhhh, Anduril. Compensation distributions are typically lognormal, so plugging in $228kUSD as a 5th percentile and $406kUSD as a 95th percentile seems fine.

$309k$174k$529k$227k$397k
comp = Array(1000) [268017.3416101782, 330952.02545425156, 316320.6647651982, 291688.9959429591, 314863.43104100844, 290255.31007776037, 294986.0463233468, 273576.46758537646, 251794.89760406004, 305756.18726444134, 238730.647580412, 330991.3611434579, 293371.80995791464, 259629.65989459615, 409242.12439200137, 253789.60292805804, 238222.04673730754, 253464.37783752743, 334736.3241693505, 383549.30597665627, …]

Let's normalize to a per-minute rate to make it easier to compare with the next distribution.

compPerMinute = Array(1000) [2.3265394236994634, 2.872847443179267, 2.7458391038645678, 2.5320225342270755, 2.7331895055643094, 2.519577344425003, 2.5606427632234965, 2.374795725567504, 2.1857195972574655, 2.654133570003831, 2.072314649135521, 2.8731888988147385, 2.5466302947735646, 2.253729686585036, 3.552448996458345, 2.2030347476393928, 2.06789971126135, 2.200211613172981, 2.905697258414501, 3.329421058825141, …]

Let's say for a given gifting of Factorio to an engineer 20% already own it, 60% play nothing, but 20% lose 1hr to 5hr of productive work to playing Factorio instead.

310582184
lostWorkMinsPerWeek = Array(1000) [110.82746769849886, 0, 0, 0, 0, 0, 0, 0, 0, 377.4094042547839, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …]

So the lost value per week across the engineering workforce is:

$0.1k$0.0k$1.3k$0.5k
lostValuePerWeek = Array(1000) [257.84447282933644, 0, 0, 0, 0, 0, 0, 0, 0, 1001.6949694677687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …]

So an average of about

$85USD
is lost per week.


Given that Factorio (bundled with its far more potent expansion, Space Age) costs $70USD all up:

Steam

it would take about

0.8 weeks
to break even.