Pew Pew Laser Blog

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

Past Blogs

Judging the Chocolate.

2.27.2009

This may be no surprise, but I like chocolate. I like chocolate a lot. In the past several years, I've evolved from preferring the cheap sweets of a normal Hershey's bar to enjoying fancy pants truffles.

Portland-local Moonstruck remains my favorite chocolatier. Their chocolates are certainly the cutest around, as well as being inventive and flavorful. Of course, this preference hasn't stopped me from testing the offerings of other chocolatiers.

I bought a Green Box from San Francisco's Recchiuti Confections while visiting last November. Their truffles were exquisitely decorated, and reasonably tasty. In some instances, I did find the fancy flavors to be too subtle for me to pick up on. Though I wouldn't mind trying the Black Box or Key Lime Pears someday.

I have tried one of Fran's truffles. It had a rich flavor and I look forward to trying more truffles, as well as the famous salted caramels.

The husband was kind enough to provide me with a selection of confections from Theo. I wasn't a fan of the Big Daddy Marshmallows - they were big; the graham cracker, and the marshmallow and caramel didn't come together for me. The candied orange covered in dark chocolate, however, was delicious.

Last month, the husband and I discovered our new downtown Seattle dessert spot - the Chocolate Box. Not only do they sell confections and truffles from a variety of chocolatiers (including Moonstruck) they have a sizable selection of baked goods by the slice, hot chocolate and gelato. Delightful!

British Cats.

2.25.2009

Cute Overload generally holds that the Japanese are the international masters of cute. But I propose that the British, while subtle, are no slouches in this arena. The exhibits:

Unimpressive.

2.23.2009

I was looking through the Junk Mail folder for my work email, and I found this obvious scam.

From: International Monetary Funds Organization [brittk2@rrohio.com]
To: info@email.com

Attention,

I wish to bring to your knowledge that your previous Won prize has been 
cancelled and you are now re-awarded sum of Seven Hundred and Eighty 
Thousand Dollars ($780,000.00) only on facts below :

A. Your Fiduciary Agent was discovered to be corrupt.
B.The Organisation want all Winners to claim their Won prize through Bank 
only and no longer want any of its winners to have anything to do with 
Agent.

C.The only Accredited Bank we now have as Affiliate paying Bank is Halifax 
Bank Plc.

D. We also discovered that you were too delay in claiming your previous Won 
Prize.

Now what you are to do is to send  email to the paying Bank HalifaxBank plc 
via email:
halifaxbnk_plc@yahoo.com.hk

and inform them of this development that you are One of the winners who the 
winnings has been re awarded.

You are also to send to the Bank the  followings :
1.Name :
2.Occupation :
3.Date of Birth :
4.Age :
5.Nationality:
6.Telephone Number:
A copy of this Notification mail.

Warning : You are not to have anything to do with your former Agent anymore 
as you will be disqualified if found still communicating with your former 
Agent.

Note : Your former Agent still have your information and might still be 
communicating through your email but we strongly warn and advise to desist 
with further communication with him because he no longer work for us and he 
has case to answer in the Law Court.

You are also to be forwarding to us all winning Notification email 
Notification receive from now henceforth so that for us to know how to 
trap your former Agent down for the refund of what he is owing.

Your Winnings has not been paid since as a result of your Agent 
Nefarous activities.Help us for us to help you.

Congratulations Once again.

Mrs Patrol Baker.

Wow. There are a couple clever tricks in this email. For one, the email doesn't come out and ask for any "red flag" information like address or SSN, making it seem like a low risk; but they're just fishing for suckers. Also, the thrill and threat (Congratulations and Warnings) combination of a "Nefarous" agent adds some exciting detail, which may dissuade rubes from thinking carefully about the overall plausibilty of the presented scenario.

Otherwise, his scam/span inspires a variety of snarky comments:

Smooth Animation Using jQuery's slideToggle().

2.18.2009

I finally found a solution to a jQuery problem that had been bothering me for nearly six months - the dreaded jumping animation. Here is a simple definition list, where visibility of the definitions is animated using jQuery's slideToggle() function.

Bat Cupcakes
These are a simple chocolate cupcake, with a dusting of powdered sugar for a topping. The bat and ghost shapes were made by placing paper cut-outs over the cupcake before dusting on the powdered sugar.
Jam Cookies
Start with a tube of premade sugar cookie dough. Press a cookie-sized amount into mini-muffin pans and then bake as directed. Dust the cookie cups with powdered sugar. Microwave some jam (raspberry and mint) and spoon it into the cookie cups. Melted some chocolate chips, scoop them into a platic baggie, cut off the corner of the baggie, and drizzle the chocolate on the cookies.
Chocolate Sprinkle Cupcakes
These are chocolate cupcakes, with a cream-cheese frosting, and fall-themed harvest leaf sprinkles.

In the previous version, the elements would jump a bit near the end of the animation as they were closing. With jQuery version 1.2.x, the most popular solution for this was to remove all padding and margin on the animating elements, as it was known that jQuery wouldn't animate them. jQuery v1.3 now animates margin and padding, but simply upgrading to the newest jQuery library did not fix my problem.

I noticed that my animation jumps occurred only when the animating elements or any of their parents had a width specified. The final fix came via Fen's comments on "Animation Jump - quick, tip" at jqueryfordesigners.com. I store the height of all dd before they are initially hidden, and the re-apply the height just before slideToggle()'s hiding animation.

To make the script flexible enough to handle new elements added to the definition list, I stored each element's widths in an array, and then retrieved the appropriate width based on the definition's position in the list. Here is my finished code:

 $(document).ready(function(){

	//  Get height of all dds before hide() occurs.  Store height in heightArray, indexed based on the dd's position.
	heightArray = new Array();
	$("dl.v_show_hide dd").each(function(i) {
	  theHeight = $(this).height();
	  heightArray[i] = theHeight;
	});

	// Hide all dds
	$("dl.v_show_hide dd").hide();

	//  When a dt is clicked, 
	$("dl.v_show_hide dt").click(function () {
	  //  Based on the dt's position in the dl, retrieve a height from heightArray, and re-assign that height to the sibling dd.
	  $(this).next("dd").css({height: heightArray[$("dl.v_show_hide dt").index(this)]});
	  //  Toggle the slideVisibility of the dd directly after the clicked dt
	  $(this).next("dd").slideToggle("slow")
		//  And hide any dds that are siblings of that "just shown" dd.
		.siblings("dd").slideUp("slow");
	});

 });

I suspect that what I encountered is a jQuery bug - that when a parent width specification exists, the animating element's height is not calculated correctly when animating to non-visible using slideToggle().

1 comment(s).

My Kind of Stick People.

2.12.2009

I know that XKCD's recent statistically significant other comic was very popular. But the recent comic about space elevators spoke to me much more. And I've laughed out loud multiple times at Operation Duckling Loop.

What I'd Test.

2.9.2009

I've been imagining doing some optimization testing on Woot's new design. This is a bit of an intellectual exercise, and a bit of show-and-tell for designing a web page optimization test.

All tested elements should run concurrently, and for at least a week. Woot's conversion rate is probably highly dependent on what's for sale that day. If a test were run where the display of the elements were non-random (one element per day, for example), the results would be so heavily influenced by the desirability of the item for sale that the element's actual influence on conversion would be impossible to suss out. The site is highly dynamic, but even the dynamic elements can be tested using style changes and JavaScript.

I'd measure the results of 2 different actions - signing up a new user and purchasing the item. There's a good chance that the test elements would influence these events quite differently.

Screen shot of Woot with overlay of optimization test areas
Above is a screen shot with an overlay of the elements I'd test for optimization. (Click for a full size screen shot) For each of these test elements, I'd test the original versus a new idea:

  1. I'd try different colors on this Call to Action button. In subsequent tests, I'd test the language of the button.
  2. I'd like to try a different treatment on this quick production information box. Creative styling (like what I've drawn, only good) that highlights the Call to Action button might prove effective.
  3. Hiding the Discussions box as a test element will tell us whether visitors are being distracted from converting.
  4. This smaller headline might prevent people from seeing the rest of content that would be more convincing.
  5. Same for the larger headline.
  6. I'd test hiding this advertisement box. Once it's influence on conversion rates is identified, we can look at the ROI of the advertising revenue to see if it's worth keeping the ad.
  7. Lastly, I'd try moving this more straightforward and detailed description of the product near the top of the page.

All in all, that's 7 different elements to test. If we test only 2 versions of the Call to Action Button, we can do it in 8 experiments (the unique number of pages displayed) using a fractional factorial array. If Woot's traffic volume and conversion rate support 16 experiments, we can test 4 versions of the Call to Action button, as well as more versions of the other test elements, or a few completely new test elements.

300 Million Reasons to Optimize.

2.2.2009

A recent article about web optimization and the visitor experience got a lot of attention - The $300 Million Button. It's a really exciting read - I recommend you check it out even if you're non-technical.

To summarize, by removing a "Register" button, and adding reassuring "you can just buy" language, the e-commerce site increased their conversions by 45%. (Forty five percent is huge - 300,000,000 dollars is ginormous.

One lesson I see in these results is that if you test big things, you can see big results. It probably took a ton of work to set up business rules and back-end support so that visitors could simply buy an item, without signing up. This effort paid off. The results of the testing are just another example of users despising the sign up. Think about it - do you need another password to remember?

(I suspect that the "major e-commerce site" is Barnes and Noble. I received the "you don't have to sign up" experience when I was shopping recently - and it was quite influential. It convinced me to just buy the item I was looking for, instead of hunting around for some easier way.)

Jared Spool, the usability tester and article author, is rather famous within the web design industry. I really appreciate Spool's sharing of his results, and the excitement that this article are bringing to the optimization industry. Both Spool and Luke Wroblewski will be speaking at a conference in Seattle in spring. I hope I get to go.

Alton Brown Fail.

2.1.2009

I made some red velvet cupcakes this weekend, and was experimenting with new kinds of frosting. I'd had good success with cream cheese frostings previously, but I wanted something that was a little more stable.

I tried Alton Brown's Buttercream from "The Icing Mam Cometh". Alas, it was an epic fail - I ended up with a custard-looking soup instead of frosting. I then turned the mixer onto high for 10 minutes, and then I got a sweet creamed butter. Not a great result, since I started with butter and sugar.

I did use egg substitute instead of the 4 eggs; since they would have been raw in the final frosting. That should have been fine since Brown has approved that substitution for other frosting recipes. I think that one trouble point was the "whip the eggs until light and fluffy" instruction. I suspect that "whip the hell out of the eggs until stiff peaks form" is more appropriate. My work bowl also got a bit warm to touch when I added the hot sugar, so that might have broken the frosting structure.

In the end I bagged the failed frosting, and made the simple white frosting that's included with the red velvet recipe. It was a little thick, but at least the cupcakes aren't naked.

Last Month

Next Month