Over 250 entries showed up for the Day One giveaway. Thanks to everyone who entered, below are the names of the lucky 10 winners (with links to the original comment to confirm that it is or is not you1).
- Hawken Rives
- Mosa Almohsen
- Kyle Plattner
- Faraz Yashar
- John Michl
- James Frost
- Hemant Jangid
I contacted the winners this afternoon and sent out promo codes. I’ve heard back from most of you, but if you’re on this list and haven’t seen the email with your codes, let me know.
Also, I promise to stop putting “YOU WON” in the subject lines to help avoid getting tossed into the spam folder2.
Regarding the magical sweepstakes robot that determines your fate
In case you’re wondering and have missed previous explanations, giveaway winners are selected like this:
- A GMail filter takes all comment notification emails from that post and adds a unique label
- A smart folder is set up in Mail.app that shows all of these emails
- I select all and run the PickWinners script
- Asks me for the Application name
- Asks me to paste the available codes, 1 (bundle or code) per line
- Parses out the name, comment id, IP address and email address from each comment
- Removes duplicate emails and repeat IPs
- Passes the complete list, App name and codes to an embedded Ruby script
- Counts codes and generates 10 random, non-repeating numbers between 1 and the number of codes in the list
- Sorts the array based on a random seed
- Grabs the elements from the array at the indexes of the generated random numbers
- Creates a Mailto: link with the name, email, subject and body containing the app name, congratulations message and promo code.
- Opens the links in the default Mail application
- Stores a copy of the links as an HTML file as a backup
Then I just double check and hit send on the open message windows.
Lastly, since he won, I will respond to Hawken Rives questions from his comment:
- I try to avoid syntax unique to just one flavor of Markdown, and 90% adhere to Gruber’s original Markdown spec. I make exceptions for tables and fenced code blocks, but not much else; at least in cases where I want the document to be readily usable in the future. The fact of the matter, though, is that these plain text formats are so easily parseable in any language that even making up your own syntax (within reason) would give you future-proof documents.
- Random. Entirely. See above.
- I am a product of my environment (and several chemical imbalances).
In this circumstance, that’s more useful in cases like “Jean” and “Thomas” than with “Faraz Yashar” or “Hawken Rives.” There may be more than one Brett Terpstra in the world (there are), but I don’t believe you’ll ever find another Aditi Azizi Czarnomski Terpstra (best wife in the world). ↩
From now on, ↩