Pew Pew Laser Blog

Code. Glass art. Games. Baking. Cats. From Seattle, Washington and various sundry satellite locations.

Notes On Image Spriting With Compass And Sass.

4.25.2015

I found some old notes from the last time I had to sprite some images using Compass for Sass. It was a success, and I noted two things to share with you.

Dice Masters Rainbow Draft Strategies.

4.12.2015

A rainbow draft is a nice format for a Dice Masters event. Each player gets to open 12 booster packs (always fun) and choose cards from among the packs that all the players opened. (Details). Players make a tournament-legal team from their drafted cards and any 2 Basic Actions from their collections, and then play some games.

With the draft format, players can't use the deadly Super Rare cards from their collections, so the format tends to be a little more even than fully-constructed tournaments. It's also an excellent way to fill in holes in your card collection. But there are a few strategies to keep in mind:

Alt.Swag for Conferences.

3.30.2015

Alternate Conference Swag At this point, most developers already have more t-shirts than they can possibly wear. So if you're organizing a conference - or a sponsor looking to stand out - consider some alternate ideas for conference swag:

Stickers! (Everyone)

Developers love stickers, and they're relatively cheap. Just be sure to get some fairly sturdy ones that won't fall apart after some abuse.

Sources: Sticker Mule.

Water bottles (Cascadia JS)

Save the environment by providing nice refillable bottles instead of all those plastic bottles.

Sources: Mizu, US Imprints

Notebooks (Nodevember)

It's a bit old-fashioned, but I still prefer to take notes on good old paper. I can freeform the notes without worrying about formatting, and I don't get distracted as when I'm on the computer. Notebooks are also a great place for all those stickers!

Sources: Chameleon Like, Bound Custom Journals, Poppin, Field Notes.

Pens!

How else am I going to write the notes?

Swag bag (Cascadia JS, SassConf, Nodevember)

Everyone loves a nice sturdy bag to hold all of the stuff they accumulate at a conference. Also these are great for re-use at home or later during the conference trip.

USB Battery (Nodevember)

A their booth, one of the Nodevember sponsors was giving away a very handy rechargeable USB stick.

Sources: Branders, 4 Imprint, Print Globe.

Taster glasses (Nodevember)

I got a lovely little taster glass from the closing Nodevember party. They also have mustache-shaped bottle openers, if that's your thing.

Sources: Clear Water Gear, Discount Mugs, Yankee Schooner

Hoodies! (Cascadia JS, SassConf)

A very cool item. They're fairly expensive, especially the Cascadia Fest ones with the customized sleeves. But this can be a special item for speakers, or super-early ticket buyers.

Earbuds

I got some branded earbuds from a conference, but sadly none of the silicon tips fit my ears.

Books! (SassConf)

Many a publisher can be talked into providing a few copies of a book as a give away. And O'Reilly will give free e-books to communities.

(The above photo was taken before CSS Conf AU, but I really dig the enameled coffee mug, sturdy shopping bag, and custom lapel pin that they gave out!)

Epic Recruiter Fail.

3.17.2015

Some time last year, I recieved the following email from a recruiter. This was entirely out of the blue; we didn't have any previous contact. Normally I would have deleted the email and that would have been the end of it. But this recruiter had sent their form letter to over 200 email addresses, and used the CC field instead of BCC. Presented here are the reply all responses that people sent. (I have removed the names and scrubbed the language from this exchange.)


Title: PHP Specialist

From: John Doe

To: [blank]

CC: [200 person mailing list]

Date: May 20

Hello,

I found your resume in our database, while I was searching for PHP Specialist in the greater Seattle area. This is a very unique and they are looking for someone who can jump in and make a difference right away. I would love to tell you more about this position, if it is something you would be interested in. I don't know if you are working right now or not, but we are moving very quickly on this opportunity. If you are interested please send me a revised resume, the one I have is old..

Also, if you are not interested in this opportunity I would suggest connecting with me on LinkedIn because I add positions there all the time.

www.linkedin.com/john-doe

Thank you and I look forward to hearing from you soon.

John Doe
Technical Recruiter
LinkedIn URL
Company Website URL
Mobile: (999) 123-1234
Office: (999) 123-1234


From: Annoyed Prospect #1

Date: May 20

To: [entire mailing list]

I don't live in WA and I'm not a PHP specialist. The one experience I had of contracting through [your company] was the worst in my life. I will never work with you again. Thanks for flashing my email to your spam list. Please don't ever contact me again.


From: Annoyed Prospect #2

Date: May 20

To: [entire mailing list]

Same boat as Annoyed Prospect #1, you should be ashamed of your tactics. Please add me to your Do Not Contact Ever list.


From: Annoyed Prospect #3

Date: May 20

To: [entire mailing list]

Wow look at that. Another one. Get the **** off out before I blacklist you with the PHP community. You are an under experienced idiot who has no idea how to do his own job. Just quit and find a new profession like food service.


From: Annoyed Prospect #4

Date: May 20

To: [entire mailing list]

And they don't have enough sense to use BCC instead of CC.

Hi everybody. Hope you're amused by this scum!


From: Annoyed Prospect #5

Date: May 20

To: [entire mailing list]

I don't live WA either. please remove my email from your list.


From: Annoyed Prospect #6

Date: May 20

To: [entire mailing list]

Everyone quick, grab a pitchfork!


From: Annoyed Prospect #7

Date: May 20

To: [entire mailing list]

Wow, there's a PHP "community?" Do you have cookouts and meetings and things? Can I join?


From: Annoyed Prospect #8

Date: May 20

To: [entire mailing list]

Lol funny! I used to do a lot of pup but I'm into software programming now, mainly C sharp and C++. Where is the programming community? I want some BBQ!


From: Annoyed Prospect #9

Date: May 20

To: [entire mailing list]

Thanks a lot for giving everyone my email address. lol


From: Annoyed Prospect #10

Date: May 20

To: [entire mailing list]

Well, quite the response. And no inspiring confidence in this company. But yeah, I was amazed this was just CC'd to everyone... Very unprofessional, impersonal, and a complete disregard of people's information.

I am requesting you remove my old resume, email, and every other piece of information you have about me. I will check into it a month or so down the road and them go from there if you have not done so.


From: Annoyed Prospect #11

Date: May 20

To: [entire mailing list]

How thoroughly amusing! Thanks everyone! This just made my day! J

And John Doe, I would take these good ppl's advice and find another job?


From: Annoyed Prospect #7

Date: May 20

To: [entire mailing list]

Funniest thing is I *am* in WA state, but I don't "do" PHP. I have it on my resume as something I'm familiar with, due to my WordPress development - but I'm not, by any stretch, a PHP developer.

Still, if there's a BBQ, I'll bring the dessert. :)


From: Annoyed Prospect #2

Date: May 20

To: [entire mailing list]

At this point, I say we have a BBC for all non-PHP people in WA state!

Recruiters not invited, sorry John Doe, but the people you need won't be there anyway.


From: Annoyed Prospect #7

Date: May 20

To: [entire mailing list]

This **** was a pain in the ***, but in the end (haha) it was pretty funny. A nice break in the day....


From: Annoyed Prospect #2

Date: May 20

To: [entire mailing list]

Agreed, I'll stop pinging everyone's mailbox and put it to rest.

No actual hard feelings, John Doe, we've all made mistakes, and I know I've hit reply all once on accident.

Hope everyone has a great rest of their week, and successful endeavors in their career.


From: Annoyed Prospect #12

Date: May 20

To: [entire mailing list]

Wow, 198 recipients in the CC header. How very retro.

As you can see, John Doe, we tend to be a bit touchy about this sorta thing. Nobody sends out mass emails in this fashion anymore. I'm sure you didn't mean to offend anyone, but I'd strongly suggest you send out a quick apology to everyone for the faux pas, since the last thing you want as a recruiter is to alienate so many of the local talent.

In the future, you should look for more modern tools for sending out recruiting emails to people on your list. These mass emails are very common and largely tolerated (more or less), but they should go out to one person at a time. Having them all in the CC like this is a violation of people's privacy, because now everyone you sent that email to can see everyone else's email address.

I tend to be more forgiving than most people so you and I are still cool. I can't speak for everyone else, though. =)


From: Annoyed Prospect #3

Date: May 20

To: [entire mailing list]

Touchy my ***. **** this guy I hope he chokes to death on a pile of his own vomit. In the future he should do us a favor and remove himself from the breeding population.


From: Annoyed Prospect #10

Date: May 20

To: [entire mailing list]

Yeah... I live in Seattle and am a PHP "specialist" but contract work is terrible. Might have done it years ago but no way I'd do it now.


From: Annoyed Prospect #2

Date: May 20

To: [entire mailing list]

Annoyed Prospect #3, I feel sorry for any company hiring you, as your attitude is deplorable. Wishing ill on someone because they made a mistake like pasting into the wrong field...especially with such vitriol, is extremely unbecoming of an employee, contractor, or even a human. Should I ever see your resume come across my desk,I shall be sure to pass it by. I humbly suggest you seek counseling, and you will be in my prayers.

John Doe, this man's threats and anger are not echoed by any sane person on this thread.


From: Annoyed Prospect #12

Date: May 20

To: [entire mailing list]

I can vouch for Annoyed Prospect #3's character. He's just using hyperbole to drive the point home that this sort of recruiting tactic is extremely unwelcome in our community. I don't think any reasonable person would take his vomit-choking remark as any kind of actual threat.

And it's entirely possible that I'm being too nice about the whole thing. People like Annoyed Prospect #3 have every right to be angry at this sort of thing. I agree with you Annoyed Prospect #2 that it was probably just a stupid mistake and I'm certainly willing to forgive and forget, but there's no harm either in sending a clear and resounding message that this sort of thing will not be tolerated.

Now, everyone, let's all chill and play nice. Annoyed Prospect #3's a good guy and I'm sure this John Doe fellow is, too. Just don't ever do something like this again, John Doe, and we'll all live happily ever after. An apology would certainly help, though. =)


From: Annoyed Prospect #3

Date: May 20

To: [entire mailing list]

Thanks Annoyed Prospect #12, I'm just mad over exposing sensitive information to a large group who knows how to leverage it. Literally it makes me ill to think about it, or how it can be taken advantage of.


From: Annoyed Prospect #8

Date: May 20

To: [entire mailing list]

Wow, this stupid chain letter got my ****** account disabled for a few hours!

Can you like learn to not send giant chain letters? Holy crap!

Colorblindness Simulation with JavaScript.

3.7.2015

Around 4% of humans have some form of colorblindness. Since that's a significant portion of your web site traffic, it's probably worth doing some testing for how your site would look to those users. One way is the simulate.js from http://mudcu.be/labs/. For each image in an array of images, this JavaScript adds a new canvas element with shifted colors. Below is an example usage for Deuteranope type vision. The script also includes functions for Protanope and Tritanope type vision.

var images = scope.getElementsByTagName("img");
for (var i = 0; i < images.length; i++) {
  Color.Vision.Simulate(images[i], {
    type: "Deuteranope",
    callback: function(canvas) {
      document.getElementById("lid_623").appendChild(canvas);
    }
  });
}

Below is the script in action: the fruit bowl and rainbow images are shown normally, and below each is simulated with deuteranopia, protanopia finally tritanopia.

Alessi fruit bowl, filled by Dirk Ingo Franke / CC 1.0 Public Domain http://commons.wikimedia.org/wiki/File%3AFruit_basket_alessi.JPG Rainbow from Budapest by Takkk / CC 3.0 http://commons.wikimedia.org/wiki/File:Rainbow_in_Budapest.jpg

The canvas element seems a tad unreliable - refresh the page once or twice to get the new images to load. It also can't be added when Codepen.

Why I Finally Switched From GoDaddy.

2.20.2015

I'd been using GoDaddy as registrar and host for several years. But a few months after I wrote Why I Still Use GoDaddy, For Now., I switched most of my stuff away from GoDaddy.

I had started having more technical problems with the blog hosting (some URL re-writes were failing). I'd identified that the cause was somewhere in the domain's configuration (not in my .htaccess file) by deleting .htaccess. I contacted GoDaddy's tech support (usually quite helpful), but after a few go-arounds, they declared that it was a code problem. I did technical support for years; I know when I'm being flushed.

As a female human, I'd felt un-valued by the company for a while. Then LifeHacker ran a DreamHost promo which brought the costs down to something that my inner cheapskate could deal with, so I said so long to GoDaddy. Getting everything set up at DreamHost was a breeze, and naturally, there were no URL rewriting problems over there.

PS - here's my referral link for DreamHost, if you're into that sort of thing: http://www.dreamhost.com/r.cgi?1495678.

Speaking - Your Talk Has Been Accepted.

2.8.2015

If you keep writing and submitting talk proposals, you'll suddenly find yourself having to write and present that talk. Here's what that phase of speaking can look like:

More on Talk Preparation: