2014
-
The couch seating is unique, comfortable and nice, but could use more leg room. ↩︎
TeamSPS Opens New Floor
Today is first day in new #TeamSPS floor! Expect many tweets with photos today. Collaborative, mobile optimized team-oriented space! Fifty five #TeamSPS WiFi access points found from my desk.
#TeamSPS getting setup!
Writable surfaces everywhere!
140+ lockers to keep your coat and stuff.
Two #TeamSPS dev teams.
Donuts for #TeamSPS move in day!
Morning scrum in one of the #TeamSPS scrum rooms.
#TeamSPS new floor.
Another #TeamSPS scrum room.
Great #TeamSPS teamwork space.
#TeamSPS game room getting some use. Galaga FTW!
Whiplash
Tammy and I went to see Whiplash last night at the renovated Uptown Theater1. Really good film about the ridiculous effort that must be put in to be great at something, in this case music. In addition to the storyline your treated to wonderful music and some stunning drumming on screen. Purchased the soundtrack on the way out of the theater.
Boomboxes at Franconia Sculpture Park. See also.
Post-Halloween Breakfast

Investors eye site near Mpls. Farmers Market for MLS soccer stadium
I really hope this happens. Having an MLS soccer team, but more importantly a team playing in downtown Minneapolis, would be great. I’d definitely look at season tickets!
United Properties says pro soccer is an option for a site it may develop near the Minneapolis Farmers Market — a sign that the Minnesota Vikings may have a serious rival in their bid to bring Major League Soccer to their new home in Downtown East. via Investors eye site near Mpls. Farmers Market for MLS soccer stadium | Minnesota Public Radio News.
First thing I noticed in the new Outlook for Mac is Retina graphics.
Can I order my Apple Watch yet? Waiting is the hardest part.
I bought $40 of Bitcoin and now I have less money! I thought this was supposed to go the other way!
Drinking the beer means I won’t eat the candy. Healthy!

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.