Happy Halloween!!! ππ»
New #TeamSPS space is ready to roll. Here is one of the many collaborative tables with great tech.

Whole family at Wild game! Mazie is practicing teenager looks already.

30 foot whiteboard surface with 5 operational dashboards. New #TeamSPS space is awesome!

One detail. Each desk in the new #TeamSPS space has these handy USB power ports. Mobile friendly.

Updated Dynamic Questy Captchas
A little over a year ago I shared a method of generating dynamic Questy Captchas for the MediaWiki ConfirmEdit extension. This method has been awesome for stopping registration spam on the thingelstad.com wiki farm and many other wiki admins have used it with success. Unfortunately it was more useful in it’s novelty than in it’s difficult to solve, and eventually some spammers wrote the logic to solve it and the registration spam started flooding in.
I decided to put a new method in place that is based on the same question. The previous question generated 8 characters and asked the user to provide one of them based on a random index. I’ve now changed this to generating a number between 100,000,000 and 999,999,999, turning that into spelled out words and then asking to identify one digit. It looks like this:
What is the sixth digit of the number nine hundred fifty-one million eight hundred ninety-eight thousand four hundred twenty-seven?
That turns out to be a somewhat hard question for a human too. I find I typically have to type out the number as I read it. The benefit of this is the solution isn’t in the text of the page. And while I’m sure there are great libraries for turning written numbers back to digits, it’s not immediately obvious.
Implementation
I had no interest in implementing my own code to convert a number into words, and happily there is a PHP package called Numbers_Words that does just that. The URL and install information are in the comments right before the require line. Everything else is pretty simple stuff.
To implement this I used the same technique I did previously. Here is what this looks like in LocalSettings.php.
# Let's stop MediaWiki registration spam
require_once( "$IP/extensions/ConfirmEdit/ConfirmEdit.php" );
require_once("$IP/extensions/ConfirmEdit/QuestyCaptcha.php");
$wgCaptchaClass = 'QuestyCaptcha';
# Set number question for questy
# sudo pear install channel://pear.php.net/Numbers_Words-0.16.2
# http://pear.php.net/package-info.php?package=Numbers_Words
require_once("Numbers/Words.php");
$myChallengeNumber = rand(0, 899999999) + 100000000;
$myChallengeString = (string)$myChallengeNumber;
$myChallengeStringLong = Numbers_Words::toWords($myChallengeNumber);
$myChallengeIndex = rand(0, 8) + 1;
$myChallengePositions = array (
'first',
'second',
'third',
'fourth',
'fifth',
'sixth',
'seventh',
'eighth',
'ninth'
);
$myChallengePositionName = $myChallengePositions[$myChallengeIndex - 1];
$wgCaptchaQuestions[] = array (
'question' => "What is the $myChallengePositionName digit of the number <strong>$myChallengeStringLong</strong>?",
'answer' => $myChallengeString[$myChallengeIndex - 1]
);
Initial results of this are very solid.
The Numbers_Words package also supports localization into over a dozen languages. I didn’t explore this but clearly this should work for multiple languages pretty easily as well.
Related
Have you ever seen a ~
in a URL where the hostname did not end in .edu
?
SPS Kubb Class
Garrick and I joined forces and auctioned off a Kubb Class at the annual SPS Charity Auction this year. The sales engineering team won the event and we got 12 of them together this past week for a tournament level Kubb class. It was an awesome time with a ton of great questions on the game and a jump-start into Kubb strategy and technique.
Business Hours: I wonder how you put this into Yelp? From the mini-donut stand in Nisswa, MN.
Minnesota United v San Antonia Scorpions
Minnesota United FC Culvers tailgating dinner with Mazie.

Good luck Minnesota United FC! Letβs win this! β½οΈ

Well done Atomic Data sponsoring Minnesota United FC! β½οΈ
San Antonio Scorpions must have a flopping clinic mandatory for all players. Go Minnesota United FC! β½οΈ
Is it possible to get the ElevationLab NanoPad off of a surface? I canβt get it to even budge.
Tammy is in full force cabin shopping mode. Not sure how this happened.
Screen sharing through Messages in Yosemite is pretty slick.
Drivetrain Agency sold to Toronto shopping tech company SlyceIt β Congrats to Dan Grigsby and team!
Great Kubb event with #TeamSPS today! Sporting Planet Kubb shirts and US National Kubb Championship set!

I’m really enjoying the visual refresh of Yosemite. Refreshing. OS feels snappy too.
I finally joined 2013 and got a Bitcoin address.
1JNbi6bHfQPMgmizA7NVprz4nj3DBJqAuM
Fire.

This works for me.

Awesome Kubb afternoon with my US National Kubb Championship set! Great family weekend event!
