Trying to Be an Ally

All I want is to be on the side of the good guys. When the dust settles, will I be near those who value the rule of law, even if that rule is riddled with rot, or those who are fighting for justice, and for the liberty to live without fear of unjust law enforcers.

I’m doing virtually nothing to contribute in this fight. I did reach out to my black friend and neighbor and expressed my love for him and his family.

I want to do something, but I’m hamstrung by cowardice and ignorance.

300 Million URLs and the Sitemaps Who Love Them

I have a funny website.

Well, I have a few funny websites. But this one is funny because it actually makes money, and it’s only one page on the backend.

It’s infinity URLs, however.

The site is MathHelper.us, a site that as of right now just teaches how to add, subtract, and multiply fractions. (I’ll add dividing fractions eventually.) But it’s geared for long tail traffic — I want to show how to add every fraction.

Check out 1/5 + 3/8. Or 9/17 plus 78/92. They probably look pretty similar, because they’re full of the same language, but the numbers and steps are different. Yay for dynamic content generation.

So, too, are their images. Those are generated dynamically as well – giving me infinite possible images, created on the fly as needed for whatever math problem is being handed to it.

The magic is in a .htaccess file at the root of the site. It has this one important line:

RewriteRule ^(.*)$ /index.php?p=$1 [L]

That means, no matter what URL folks came through, send it as a parameter to index.php. Index.php then does all the fun parsing and sanitizing, as well as the solution generation.

Now, when you search for 1/8 + 7/12, I want my search result to be first. (As of this writing, I’m second, after another website and Google’s calculator answer — which currently renders the answer as a decimal, which is useless if you’re trying to get a fraction answer.

So, the problem with Google: how do I let them know about, well, a metric gazillion URLs?

First, let’s reduce the number from infinity to, say, 100,000,000. That’s the number of math problems from 1/1 + 1/1 to 100/100 + 100/100. Then include subtraction and multiplication, and we now have 300 million URLs we want to point at. (Again, division will come later.)

300 million is a much more manageable number than infinity. But how to let Google know about them?

Enter sitemaps. A sitemap is a file that contains all the links on your site, so search engines can look in one place and see, ah, there’s everything. It makes their job easier to crawl your site, and it makes it possible to give links to Google that aren’t linked to elsewhere on the web.

Sitemaps have some limitations, however: you can only include 50,000 links in a sitemap. Additionally, you have to have them in a parent directory of the link they’re pointing to.

The solution is two-fold:

The first part is a sitemap of sitemaps. You can make a sitemap that points to other sitemaps, like

<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
  <loc>https://mathhelper.us/sitemap1.txt</loc>
</sitemap>
<sitemap>
  <loc>https://mathhelper.us/sitemap2.txt</loc>
</sitemap>
....
</sitemapindex>

With that, each child sitemap – 6000 of them – can contain 50,000 urls, and this parent sitemap can contain a mere 6000 links. Now we have links to every solution from 2/9 + 7/5 to 98/75 x 45/3.

But. BUT. How do I store 6000 sitemaps?

I could generate them dynamically based on the link, like if I called them “sitemap1over1plus1over5to100over100to5over5.txt” – but that’s gross. Easier to just generate the 6000 files, am I right?

But who wants SIX THOUSAND files in their website’s root directory?

Not this guy. I shoved them in /sitemaps.

But this violates the “sitemap must reside in parent directory of urls it contains” rule. SO! We come back to .htaccess.

RewriteCond %{REQUEST_URI} !^sitemaps.
RewriteRule ^sitemap([0-9]+.*)$ /sitemaps/sitemap$1 [L]

That’s the second part. Now, anything that’s not already in the sitemaps folder (the first line there) that is the word “sitemap” followed by a number, redirects to the same filename, but in the sitemaps directory.

NOTE THIS IS NOT A 301 REDIRECT! That would change the URL that is being fetched, and violate The Rule.

But now I have 300,000,000 unique URLS pointing to unique math solutions that kids can step through for help with their homework problems.

I’m not sure if all this is going to ding me or help me on Google. I just submitted the parent sitemap two days ago. We’ll see if they decide I’m somehow spamming them or violating some other rule I couldn’t find. If my traffic goes up or down, I’ll let you know.

Making your Kickstarter go KA-CHING (or cha-ching, whatever) on every new pledge

Hi Kickstarters. Want to make your browser say “Ka-ching!” every time you get a new pledge on your Kickstarter? Here’s some Javascript code that will do it. You’ll create a bookmark that you click while looking at the Kickstarter page. It won’t load a new page, but will silently load this code in the background. Silently, that is, until you get a new pledge.

Right click your bookmark bar and click ADD PAGE. Change the name of the page to “Ka-ching” or whatever. Then change the URL to this exact code:

javascript:var ching = document.createElement("AUDIO");ching.src="https://freesound.org/data/previews/351/351304_96253-lq.mp3";document.getElementsByTagName("body")[0].appendChild(ching);var pl=document.getElementsByClassName("js-pledged")[0];var lastpledge=pl.innerHTML;setInterval(checkamount,1000);function checkamount(){if (pl.innerHTML != lastpledge) {ching.play();lastpledge = pl.innerHTML;}}

Now, when you’re looking at your Kickstarter page, click this bookmark button. And then wait. It’s fun!

My Ambien Screenplay, Part 1

So I’ve been writing a screenplay on my phone every night after I take my Ambien. Then I post screenshots to Twitter before I’m unconscious.

It’s fun. The normal stress of quality control goes right out the window – it’s written while I’m practically intoxicated! What do you expect, Charlie Kaufman?

Here’s a PDF of the first 20 some pages. It’s coming up on the one scene I planned from the beginning… Everything else has been discovery.

Written on Ambien

Wonder Woman Was… Weak

SPOILER ALERT: I’m going to write this with the assumption you’ve seen the movie. If you haven’t, you might want to go watch it and see if you enjoy it, because I seem to be in a tiny minority.

*

*

*

*

Let me start by saying I wanted to love this movie. Rebecca and I got luxury seats for a matinee showing on Friday, and I’ve kinda loved seeing every weasel out there who feels afraid of empowered women.

I still consider myself a burgeoning feminist. I’m tripping over old preconceptions all the time, but I have three daughters whom I want to raise to be strong women. What do I mean by that? I’m not sure. Maybe strong enough to demand higher pay. To demand to be treated with respect from the men they choose to date. To not be afraid of being called a “bitch” if they aren’t docile. To not be trampled by oafs like me.

I want them to be strong and kind, centered in Christ, unshakable in the knowledge that they are daughters of God – queens in embryo – with power to be more than just what is allotted to them by a patriarchal country and world.

So that’s me. I really thought I’d love this film.

But it has problems. Some are technical, some are artistic, and some are thematic.

Technically, it did a lot of very cool slow-mo action sequences, but those were often interrupted with shaky-cam that made me lose my place in the action. I hate shaky-cam. (See my PhD dissertation titled “Bourne Movies Are Blurry and I Hate Them”, and the class-action lawsuit I started,The People vs Michael Bay).

Some of the CGI was terrible. I mean, it would have blown us away in the 90s, but now it was smack-dab in the middle of the Uncanny Valley, making me uncomfortable when I should have been cheering. Queen Hippolyta jumping off her horse was the first time I noticed – did they paste her face onto a 3D model?

But most of the F/X problems seemed to be in the physics: flying objects and people didn’t arc correctly through the air. I get that Wonder Woman can jump really high, but there didn’t seem to be any slowing at the top of her arcs. Or at least the slowing wasn’t the right speed. Something was off.

All that is totally forgivable in a fantastic movie, but I’m not done.

This one. "Ooh, you're strong. Well here I go again."
This one. “Ooh, you’re strong. Well here I go again.”

Gal Gadot, while impressive in the fight scenes, still didn’t seem to be an amazing actress. I lost count of how many times she did the little renewed-determination-head-tilt. Maybe just three?

I never felt what she felt. When Steve dies, I didn’t weep with her. Was that her acting? or just flaws in the screenplay that made him less than her true love? Maybe it was both. (Or was it just me? Well, no, because Rebecca didn’t like the movie either.)

Which brings us to the screenplay. I thought it started strong enough, but the dialog… it was always kinda first-level. Bland. Predictable.

That’s not quite true… Etta Candy (Lucy Davis) had some fantastic lines, and I think she really gave the movie some of its best humor.

So weak dialog was a general problem. Here are some others:

  • Steve gets out of the bath as Diana enters, and rather than sitting again to conceal his nudity, he just sorta stands there. Why? So that they could make a penis joke that wouldn’t have worked otherwise. I don’t care how fit you are – unless you’re a flasher, you’re going to be modest. Especially given the era in which it took place.
  • Ares says he’s only suggested how to make weapons to mankind, but never poisoned their hearts – yet when he dies, suddenly all the Germans are chummy-chummy with the quartet of invaders. You could say, “Oh, well, he was lying,” but then that robs the movie of one of its central themes, that man is complicit in the evils of war. Steve states that theme on the tower as he begs Diana to come help him. So, the movie couldn’t make up its mind.
  • How did German ships catch up to Steve’s plane?

Thematically, there’s little difference between Wonder Woman and any other superhero. There are overtones about Diana fighting not for revenge or hate, but for love. Um, no. I mean, she does on the battlefield and in the village, but there is zero love in her eyes as she fights the final battle. If anything, losing Steve is the spark that sends her into a frenzied fury, empowering her with a desire for revenge, giving her the abilities necessary to take on Ares. Shouldn’t she have learned he was her brother, and felt compassion for him, and ached as she took his life, her love for mankind having to override her love for a lost sibling? That would be someone fighting for love, I tells ya.

Wonder Woman needed to make some sacrifice for the story to make her a heroine to me. Instead, Steve(!!!) makes the final sacrifice, giving his life to save the world. THAT’S HER JOB!

No, of course she can’t actually die. We need her. But to many storytellers, it’s an obvious misstep. She needs to give up what she wants more than anything in exchange for the greater good… and then still get what she wants. (I don’t know what she should want more than anything. Love of a man shouldn’t be it, though, because that’s weak sauce, especially if we’re trying to say women don’t need men in order to be of value.)

And here’s the biggest problem of all: this ended up being Steve’s movie. We see far too much from his perspective, making Wonder Woman an object of fascination. She’s so strange, so different, so beautiful! When in reality we should have been seeing more of HER viewpoint, how strange and different the world of men was.

Take her moment with the car. We don’t zoom in on the details of the car, it’s smelly exhaust, any of that – we just see Steve pulling her out of the way, and her glancing back. It felt like the writer was determined to derive humor from the situation by making her the fool, the one we laugh at for her naivete.

Too often Diana is the butt of the joke, rather than the one telling it. As a result, she becomes the object, the prop in a movie about Steve falling for a mysterious Amazon princess.

I wanted to love this movie, but it let me down.

I don’t hate this movie like I did Man of Steel – that movie left me angrily searching for Zack Snyder effigies to burn – but I wanted something better.

Taylor Swift Song Generator

This took me quite a long time (15 minutes) so I hope you appreciate it. Click to generate a new Taylor Swift song.

Time to Go / Abandon Ship – part 1

So I have a fun idea for a game that I’ve been working on in April. Randomly generated levels, a countdown timer, and random obstacles – missing keycard, hostile alien, voracious infestation, missing power coupling, etc.

Here’s a start. I need to fix the teleporters today or I’m going to go crazy.

Video Game Apathy

I’ve been suffering lately – yes, suffering – from Video Game Apathy. They don’t hold pleasure for me anymore. In fact, media as a whole seems to be sucking me in less than it used to. Movies, TV, books, even.

In short, I’m worried I’m getting Old™.

What does interest me, you ask? Crosswords, Wheel of Fortune, Agatha Christie novels–

Just kiddin’. What interests me now is creating. Writing, programming, drawing… putting stuff into the world instead of absorbing what’s been created.

I’m 6k words into a middle-grade novel that I’m really excited about, but which, as usual, I haven’t adequately outlined. We’ll see how that goes.