Part Three: Welcome to OUR Mastodon!

Are blogs dying off? The trend of setting up faux blogs to rig search results and/or soak in ad revenue suggests so. The rise of newer mediums, like video and social media, has also created powerful and more addictive alternatives that drain the life from blogging. However, it’s hard to keep a straight face during the eulogy when Substack and Medium are standing right there.

Over here at FtB HQ we’ve been hedging our bets, for instance with the YouTube channel we fired up a year ago. That wasn’t enough for me, so a few months ago I committed to the rather unoriginal idea of spinning up a Mastodon instance. After much tinkering with the innards and taking the thing for a few joyrides, I think it’s ready to go live. Hence, this post! [Read more…]

Russia Has Invaded Ukraine

I had grand plans for yesterday. Then I spotted Twitter reacting to Zelensky’s last-minute plea for peace (here’s a snap translation). I spotted the rumours Russia would start bombing Ukraine at 4AM. I saw the Twitter reaction when Putin declared war on Ukraine, in the middle of a UN Security Council meeting no less. I saw the reaction as Russia launched an invasion on at least three fronts, rolling out tanks and bombing airports all around the country, an hour after the rumoured start time. The goal: regime change and mass executions. Like most of us, I didn’t see the warnings that an invasion was going to happen.

During a recorded speech at the State Duma on Dec. 2021, Vladimir Zhirinovsky, the ultranationalist leader of Russia’s Liberal Democratic Party, discussed Putin’s sham proposal to NATO. Zhirinovsky told fellow parliamentarians: “I liked one phrase from what the President said yesterday… he said that we won’t allow our proposal to result only in futile discussions… They either fulfill it, or we’re moving forward with another option… Let it be February 22, 2022 at 4 a.m.” Zhirinovsky added: “The year 2022 is the year of the tiger. It’s a breakthrough, a jump by the Russian tiger…This won’t be a peaceful year, but a year when Russia will become great again and everyone will have to shut up and respect our country.”

I woke to anti-war protests in Russia, and Russian celebrities condemning war, despite heavy pushback. Poland has opened their borders for Ukrainian refuges. Russian troops are trying to capture the Chernobyl nuclear plant have captured the Chernobyl nuclear plant, for dog knows what reason. “Mobile cremation units” now occupy a small part of my brain.

And Ben Shapiro found a way to blame transgender people for it all.

My grand plans for yesterday were scrapped, and replaced with a mad scramble today. I don’t have time to type up my usual thousand-word analysis of it all, so I’ll just leave you with this.

Stay strong, Ukraine.

Fundraiser Update: Only Minor Explosions So Far

It doesn’t always show, but there’s a lot of prep work for these fundraisers. I’ve got a half dozen illustrations to create, a scene to render, and a video file to edit, most of which has to be finished before Saturday. I’m also finding Steam games are finicky; Crypt of the Necrodancer disables my secondary monitors if I try to run it fullscreen, and only properly recognized my controller once. It still works with a controller, mind you, but the digital pad is disabled. Monster Prom fails to load at all! I’m guessing it does something funky when initializing OpenGL, but without proper debugging symbols I can’t say much. I have both a plan and a backup plan for Monster Prom, so it should still be a go.

Last I heard, we were up to $1,629.34 in donations towards FtB. That’s a few days old, but my general impression is that we’re not pulling in as much as we did last month. There’s no shame in that, times are tough and this fundraiser is a marathon. If you’d like to boost those numbers, your two choices are FtB’s PayPal or Skepticon’s Paypal. The GoFundMe is still down, and at this point I doubt it’ll come back up.

Now if you’ll excuse me, I’ve got a hard drive to reinstall.

Fundraiser Update: Cancelled Panel + New Target

Let’s get the bad news out of the way: that panel I was hosting about fake religions is cancelled. Things didn’t gel together as I hoped, and rather than present a half-baked idea it’s smarter to cancel the thing and save it for next time. I’ve deleted the original blog post to prevent confusion, but you can still view what I had planned via this archive.

Which brings us to the worse news: I’m running Princess Kaizo Land! The numbers will be a bit dated when this post goes up, but as of this typing the GoFundMe is at $80,231, an increase of $581, and we’ve had $1,694 donated via other means. That’s well beyond the $1,200 goal I set, so far beyond that I’m blown away by the amount.

But, uh, I’ve just committed to playing a Kaizo game. Yes, my choice is on the easy end of the scale, but I’m no shovda. I don’t have anywhere near the same skillz, so this is going to be an exercise in frustration. Yes, that can be fun to watch, but it ain’t fun to play.

So lemmie offer you a deal: clearly everyone wants to see me squirm a bit, but there’s more than one way to pull that off. I proposed playing a randomizer as my first target, but I said I’d play it at the “Way Cool” setting. That swaps stages and exits, consistently randomizes enemies, switches around Bowser’s castle entrances, and does some other minor scrambling. There are tougher settings, though; “Mondo” will also scramble sublevels and warps, shuffle enemy placement, tweak boss locations and difficulties, change power-ups, and randomly add ice and water physics to stages. This sits at a nice point between a full-on Kaizo game and the boring vanilla version, while still being an advancement over “Way Cool”‘s settings.

Not good enough? I’ve got one more thing to add. As you’ve probably noticed, I’m not big on comment sections. I think they can be problematic, and I don’t need the online feedback. My Twitch chat settings are almost as locked down as my blog comments. So how about I run Twitch chat much more openly than I usually do: I’ll hold comments for moderation, but that’s about it. I’ll also be checking the chat after each level, at minimum, which should keep things interactive.

Time for numbers: we’ve raised about $2,275 over seven days, pro-rating that another four days brings the total to $3,576, and adding 15% to compensate for a rush of last-minute donations brings the total to about $4,112. Add that to $79,650, and you get $83,762 as the new target for Friday the 25th before midnight. Time to fire some cash at the GoFundMe, or check the fundraising page for other ways you can contribute. Thank you so much for the contributions you’ve made so far, they’ve helped quite a bit with the legal bills!

Now would you please mind saving me from playing a Kaizo game? Pleeeeeeaase??

Fundraiser Update: Target Met! Long Live the Target

I know, it doesn’t look like it. Visit the legal GoFundMe, and you’ll see the current total is $79,760. And yet I said earlier that

As I type this, the legal GoFundMe sits at $79,650. Increase that above to $79,950, and I’ll switch from playing Super Mario World to Super Mario World Randomizer at the “Way Cool” difficulty on the 26th.

Some basic math reveals $79,760 is below $79,950, apparently well short of the goal. The missing piece is the very next sentence:

If you insist on donating only to FtB, instead of everyone impacted by Richard Carrier’s lawsuit, I’ll still count your donation towards that $79,950.

And PZ informs me that the PayPal link has raised a whopping $436.98 in one day! That math easily brings the combined total above $79,950, so it’s official. I’m playing Super Mario World Randomizer, thanks to your generosity!

But it’s going to be a pretty boring fundraiser if we hit all our goals in 24 hours. Thankfully, as I hinted at last time, I have quite a bit in reserve. Ever heard of a “Kaizo” game? Wikipedia has.

Kaizo Mario World, also known as Asshole Mario, is a series of three ROM hacks of the Super Nintendo Entertainment System video game Super Mario World, created by T. Takemoto. The term “Kaizo Mario World” is a shortened form of Jisaku no Kaizō Mario (Super Mario World) o Yūjin ni Play Saseru. The series was created by Takemoto for his friend R. Kiba.

Kaizo Mario World features extremely difficult level designs on the Super Mario World engine. The series is notable for deliberately breaking all normal rules of “accepted” level design, and introduced many staples of later Kaizo hacks, such as placing hidden blocks where the player is likely to jump, extremely fast autoscrollers, dying after the goal post and various other traps. This cruelty and the resulting frustration, as well as the skill level required, is both the purpose of the hacks and the appeal of any Let’s Play videos made of them.

The original hack was so popular that “Kaizo” became a generic term to mean any game mod that includes new levels and significantly amps up the difficulty of the original. As the name implies, Princess Kaizo Land is a kaizo game starring Princess Peach that’s significantly shorter than Super Mario World. It’s considered a “light” or easy kaizo, and has netted rave reviews. I’ve played a bit of it, but never passed the first level.

If you raise the GoFundMe to $80,850 before midnight MDT of September 25th, I’ll switch from playing Super Mario Randomizer (“Way Cool” difficulty) to Princess Kaizo Land. I know, that’s an increase of $1,200, but a) you’ve demonstrated you’ve got the funds at hand, and b) I really don’t want to play Pricess Kaizo Land. I haven’t played Super Mario World in ages, so my skills are pretty rusty. Even an easy kaizo game will be a big challenge! To preserve my sanity, I’ll guarantee to play at least four hours of Princess Kaizo Land, should the target be hit, but I can’t guarantee I’ll pass the game.

As before, any donations to the PayPal account also count towards this goal. My preference is that you donate to that GoFundMe instead of the PayPal link, though; the more cash we stuff in there, the more people will be free of legal debt. Still, it’s your money to do with as you see fit. I’m just happy you spent some of it to help others, in the face of all that 2020 has thrown at you.

Fundraiser: Super Mario World Edition

Like many of you, I grew up playing video games. They were my favorite distraction, much better than TV, and the primary way I bonded with some of my family. I went through a long spell where I stopped playing them, but thanks to a crippling Minecraft addiction I’ve been drawn back in.

When I was considering what to do for the fundraiser, my mind quickly settled on something relating to video games. It’s very much in my wheelhouse, yet not something I’ve shown on this blog. Having said that, I immediately crossed off doing a simple Minecraft stream; I do those way too often to be considered a special event.

Fortunately, I have an excellent substitute: Super Mario World. I played it a tonne as a kid, passing it several times, but I’ve barely played it since my teen years. This is a great excuse to chat about this game and my childhood, then sit down and actually play the thing from start to finish. As the speedrunners would say, I’m aiming for any percent warpless; no Star Road to zip straight to Bowser, though I also won’t take every exit of every level.

And I’ll do it all for the low, low price of $0.

No really, if not a single soul transfers a single penny into the fundraiser by midnight Friday the 25th, I’ll sit down and play Super Mario World at 10 AM MDT on the 26th.

Here’s the brilliant part: playing Super Mario World is kinda boring. It was the launch title for the Super Nintendo, sold 20 million copies, and often came bundled with the system. Pretty much everyone has played it, so while you can wring a bit of enjoyment from reflected nostalgia, it isn’t terribly compelling.

But that popularity also means a lot of other people have hit the same wall, and instead of moving on a few of them tried to find ways to make the game interesting again. A “randomizer,” for instance, is a bit of code that scrambles up a video game. Levels are done out of order, power-ups don’t do what they used to, and sometimes there are text or art changes made to the game. It turns something everything has played into something no-one has, and makes for much more compelling viewing.

As I type this, the legal GoFundMe sits at $79,650. Increase that above to $79,950, and I’ll switch from playing Super Mario World to Super Mario World Randomizer at the “Way Cool” difficulty on the 26th. If you insist on donating only to FtB, instead of everyone impacted by Richard Carrier’s lawsuit, I’ll still count your donation towards that $79,950. I can’t guarantee I’ll complete the randomized version, as it’s possible to encounter a version that’s impossible to pass (or beyond my skill level!) and nobody’s verified this version is passable, but I’ll give it a go for at least four hours.

So click the link and donate to the legal GoFundMe. And don’t worry about blowing past that goal, I have plenty more up my sleeve. If you want to see what else is happening this fundraiser, we’ve also got you covered.

[HJH 2020-09-14: Whoops, forgot to complete a sentence. I also added a link to the fundraising page proper, now that it’s live.]

Trying an Experiment

Usually when I get addicted to something, obsessing over it for a week or two is enough to get it out of my system. My Minecraft addiction has been going strong for a month and a half, though, with [no] signs of abating. The time I used to use to daydream posts has instead been turned to testing the best design for a lava blade or roughing up a flexible design for a mountain home in Blender.

When pondering what to do about the situation, though, I realized something: I’m a noob, but not a complete one. Yes, I can say “mob grinder” with a straight face, but I’ve also died tonnes of times in order to establish my base. I still don’t have any enchantments, I can count the number of iron bars I own on one hand, but much of that tardiness is because I’ve been more focused on finding the right location for a home. I’m not bragging about my amazing builds or redstone skillz, but I’m also not flailing around either, and I haven’t seen a lot of Minecraft players with that intermediate skill level.

I figure it might be watchable. And if I’m putting in the hours, I might as well try my hand at streaming the game. And so, I have. I’ve currently got five videos up, in fact, though I hear Twitch deletes old videos unless you fork over cash. If videos start disappearing, I’ll archive them on YouTube.

Until that point, here’s a quick overview of what I’m hoping to build and the constraints I’ve placed on myself, then four more videos where I start executing on it. Looking back on the series, I’m still a bit amazed at the pace of improvement, on a technical level. There’s no way I can keep that pace up, but at least I can always craft more mines.

Fundraising Update 1

TL;DR: We’re pretty much on track, though we also haven’t hit the goal of pushing the fund past $78,890.69. Donate and help put the fund over the line!

With the short version out of the way, let’s dive into the details. What’s changed in the past week and change?

import datetime as dt

import matplotlib.pyplot as pl

import pandas as pd
import pandas.tseries.offsets as pdto


cutoff_day = dt.datetime( 2020, 5, 27, tzinfo=dt.timezone(dt.timedelta(hours=-6)) )

donations = pd.read_csv('donations.cleaned.tsv',sep='\t')

donations['epoch'] = pd.to_datetime(donations['created_at'])
donations['delta_epoch'] = donations['epoch'] - cutoff_day
donations['delta_epoch_days'] = donations['delta_epoch'].apply(lambda x: x.days)

# some adjustment is necessary to line up with the current total
donations['culm'] = donations['amount'].cumsum() + 14723

new_donations_mask = donations['delta_epoch_days'] > 0
print( f"There have been {sum(new_donations_mask)} donations since {cutoff_day}." )
There have been 8 donations since 2020-05-27 00:00:00-06:00.

There’s been a reasonable number of donations after I published that original post. What does that look like, relative to the previous graph?

pl.figure(num=None, figsize=(8, 4), dpi=150, facecolor='w', edgecolor='k')

pl.plot( donations['delta_epoch_days'], donations['culm'], '-',c='#aaaaaa')
pl.plot( donations['delta_epoch_days'][new_donations_mask], \
        donations['culm'][new_donations_mask], '-',c='#0099ff')

pl.title("Defense against Carrier SLAPP Suit")

pl.xlabel("days since cutoff")
pl.ylabel("dollars")
pl.xlim( [-365.26,donations['delta_epoch_days'].max()] )
pl.ylim( [55000,82500] )
pl.show()

An updated chart from the past year. New donations are in blue.

That’s certainly an improvement in the short term, though the graph is much too zoomed out to say more. Let’s zoom in, and overlay the posterior.

# load the previously-fitted posterior
flat_chain = np.loadtxt('starting_posterior.csv')


pl.figure(num=None, figsize=(8, 4), dpi=150, facecolor='w', edgecolor='k')

x = np.array([0, donations['delta_epoch_days'].max()])
for m,_,_ in flat_chain:
    pl.plot( x, m*x + 78039, '-r', alpha=0.05 )
    
pl.plot( donations['delta_epoch_days'], donations['culm'], '-', c='#aaaaaa')
pl.plot( donations['delta_epoch_days'][new_donations_mask], \
        donations['culm'][new_donations_mask], '-', c='#0099ff')

pl.title("Defense against Carrier SLAPP Suit")

pl.xlabel("days since cutoff")
pl.ylabel("dollars")
pl.xlim( [-3,x[1]+1] )
pl.ylim( [77800,79000] )

pl.show()

A zoomed-in view of the new donations, with posteriors overlaid.

Hmm, looks like we’re right where the posterior predicted we’d be. My targets were pretty modest, though, consisting of an increase of 3% and 10%, so this doesn’t mean they’ve been missed. Let’s extend the chart to day 16, and explicitly overlay the two targets I set out.

low_target = 78890.69
high_target = 78948.57
target_day = dt.datetime( 2020, 6, 12, 23, 59, tzinfo=dt.timezone(dt.timedelta(hours=-6)) )
target_since_cutoff = (target_day - cutoff_day).days

pl.figure(num=None, figsize=(8, 4), dpi=150, facecolor='w', edgecolor='k')

x = np.array([0, target_since_cutoff])
pl.fill_between( x, [78039, low_target], [78039, high_target], color='#ccbbbb', label='blog post')
pl.fill_between( x, [78039, high_target], [high_target, high_target], color='#ffeeee', label='video')

pl.plot( donations['delta_epoch_days'], donations['culm'], '-',c='#aaaaaa')
pl.plot( donations['delta_epoch_days'][new_donations_mask], \
        donations['culm'][new_donations_mask], '-',c='#0099ff')

pl.title("Defense against Carrier SLAPP Suit")

pl.xlabel("days since cutoff")
pl.ylabel("dollars")
pl.xlim( [-3, target_since_cutoff] )
pl.ylim( [77800,high_target] )

pl.legend(loc='lower right')
pl.show()

The previous graph, this time with targets overlaid.

To earn a blog post and video on Bayes from me, we need the line to be in the pink zone by the time it reaches the end of the graph. For just the blog post, it need only be in the grayish- area. As you can see, it’s painfully close to being in line with the lower of two goals, though if nobody donates between now and Friday it’ll obviously fall quite short.

So if you want to see that blog post, get donating!