Saturday, May 12, 2012

Why I Will Never Buy Anything Ever Again From Zazzle

If you've never heard of Zazzle before, it is not a frozen yogurt chain. It's a company that makes customizable products in a variety of form factors. That means you can get everything from a t-shirt to a coffee mug with a design you, or another regular person uploaded to Zazzle.  Back in the old days, the master of this business model was Cafe Press. Zazzle has taken the idea a step further than mugs and t-shirts and has begin printing awesome stuff on phone cases and a variety of other devices. When I saw they had a Tardis case for sale, it fell right in with my fairly recent three year love affair with Doctor Who.

Zazzle lists the case as "Funny Police Phone Call Box Iphone" (Link)and it is indeed funny, because everywhere else it's called The Tardis. The case was STEEPLY priced at $40, but it's one of those things you fall in love with and MUST HAVE, so I bought it. When it got to my house 4 months ago, it was love at first sight. Normally I don't like cases on my phone. The iPhone 4s is a thing of beauty, and slides in and out of your pocket like it dug the burrow itself. Until now I've been averse to cases, despite having dropped or broken 3 out of the 4 iPhones I've owned. But the Tardis was SO PRETTY. I put it on and what it lost in sleekness, it made up for in geek euphoria. So it went for four months. I dropped my phone a couple of times in the past 4 months and the case performed admirably. The fabric on the back wears well and though it's gotten a little dingy, it's still a beauty. Problems set in a couple days ago.
I was in my car and dropped my phone on the carpet in the back seat. When I picked it up, the front of the case was cracked completely through and fell off in my hand.  As you can see here, the back of the case acts as a sort of cradle for the phone, and the front snaps on to hold it in place.  The front is flimsy when it's not on the phone, so it wasn't a huge surprise that it broke.  What WAS a surprise was that when I called Zazzle support, I was told that Zazzle will not sell you a replacement part.  They will only sell you an entirely new case, at $40. 

Now I've worked in retail.  You get returns all the time, and occasional defects or breaks in shipping from the manufacturer.  Add to that, their bread and butter is customization, most likely print on demand.  That means there is very likely human error in the customization process and there are almost certainly extra front face covers remaindered after a botch in the customizable part (the back).  My point here is that these parts aren't molded once and mated for life.  It's not like there aren't spare parts laying around.  It would be extraordinarily unlikely that only matched fronts and backs exist in exact ratios.  Zazzle simply doesn't want to sell you a replacement for the part.

That is their right.  It's their product and they can sell it in whatever way they choose.  It is also my right to be disappointed and complain about it.  True, it won't fix my case, but it will make me feel better, and also let you know that if you expect to be able to fix anything from Zazzle, you're out of luck.  I can't think of many other companies that sell you things that arrive disassembled that won't sell you a replacement parts.  Some companies that do are: Ikea, Apple, Dell, Nestle, Epson, HP, and most other electronics manufacturers. If I need a new slat for my bed, Ikea isn't going to make me buy a new bed.  They charge a reasonable price for the part for which I'll gladly pay.  If I lose a cable for my iPhone, I don't need to buy a new iPhone.  If my wife accidentally throws away the tray for my coffee maker, Nestle doesn't require me to buy a new coffee maker.  Why does Zazzle require me to  buy a whole new case if the least of the two parts breaks?  The only reason I can think of is that they know the case is effectively useless without the front panel, so without them, you have no case.  They won't sell me the replacement part so if I want the case I love, I have to spend another $40.  Maybe geek euphoria was worth $40, but I really can't justify $80. Even if I could, something about this sort of pretend inability really irritates me. 

Based on this experience, this case represents the first and last product that I'll be buying from Zazzle.  If you buy from them, just understand what you're getting (and more importantly, what you're not getting).  Hopefully this helps you make an informed decision.

Monday, April 30, 2012

Saturday, January 28, 2012

Wednesday, January 11, 2012

Andrea Mitchell - SHOCKING!

Andrea Mitchell's shocking (out of context) comment!!!





Visit msnbc.com for breaking news, world news, and news about the economy

Friday, July 8, 2011

XElement.Load - removing or reading Namespace


One of the super irritating things about loading xml with XElement.Load(url) is that every. single. node. inherits the namespace of the root node. Normally this isn't problematic and can be dealt with by adding the namespace of the containing node's parent with a little of THIS action:

xml.Element(xml.Name.Namespace + "title").Value;

If you know that ALL nodes in the entire tree have the same namespace, the more performant way to go would be:

const string _title="title";
const XNamespace _namespace ="http://foo.com";

...

xml.Element(_namespace+ _title).Value;


Now this is all well and good, but what if there are multiple namespaces in the root element and you don't know which one the node is inheriting (and it isn't inheriting its direct parent)?

You might want to get rid of all of the namespaces all together and just deal with the node name. That's where THIS handy little piece of code comes in:

foreach (XElement el in xml.Descendants())
el.Name = el.Name.LocalName;

See, the node name you're looking for is always stored in the Name.LocalName (weird, I know). By replacing the Name (which by default is a marriage of the Namespace and the LocalName) with the LocalName, you leave yourself with only the node name you WANT to work with, thus turning your xml name handling into something that works like every other xml node selector you've ever worked with.

Some might say - hey, you should know what your data looks like before you try to read it.

I say - Sure, but sometimes you want to read something slightly unpredictable.
They might reply - hey, this removes the semantic and probable empirical intent of the namespacing away.
I say - hey look, I don't know what the data is empirically and can't write code for a million cases. I know GENERALLY what I'm looking for and can write in special cases if the importance of the dataset rises enough to justify it. And here's - hey look! Elvis!

Ahem -

So here's your CAVEAT:
If you know your data like the back of your hand, use namespaces and tightly map things as precisely as you can. If you don't, just know that if your data sources re-use names in different namespaces, the above might give you ambiguous inaccurate data. If you can live with that ambiguity because the standards themselves are tight enough to protect you, this code might get out around some irritation.

Kisses.



Friday, September 17, 2010

My Japanese Chicken Katsu and Curry Rice recipe


Chicken Katsu is a super easy recipe that you can make while your curry is cooking and should definitely be started after the curry has already been put together so that they can be eaten together.

The katsu recipe is as follows.
2 eggs, beaten.
3 cups (more or less) of Panko bread crumbs (I like Sunluck, but Kikkoman will do in a pinch)
1 cup of flour
1 pound chicken thighs
1 cup of vegetable oil (You can use olive, but the color turns out better with vegetable or canola)
1/2 tsp of salt (your choice, but I like Kosher or sea salt)
1/2 tsp of pepper
Meat tenderizer, hammer, pan, whatever you have to flatten out your chicken thighs.
Wire cooling rack, or plate with paper towels. Rack is better because excess oil will drip out and your chicken will be crispier.
Tongs of some kind.

Get a frying pan out and put the oil in. Heat to medium (I like somewhere between 5 and 6 on my stove top). While that's heating, pound the hell out of your chicken so it's about 1/2 to 3/4 inch thick. This will ensure that it cooks all the way through. Next get three bowls and a plate out and put the panko (mixed with salt and pepper), beaten eggs and flour into individual bowls. Put the plate at the end of your assembly line. Take your beaten chicken and coat it with a thin coat of flour, then dip and coat completely in your beaten eggs. Finally, put the eggy chicken in the panko and flip it around until completely coated with panko crumbs
. From here, put it on a plate. Some people say you should let this rest for a while so that the panko will stick to your chicken when you cook it. I found that if you use tongs and are gentle, this isn't a problem. Once you've coated all of your chicken, *gently* place it in the oil. Using your fingers is better, but dangerous. Nothing really creative isn't a little dangerous, but use good sense :)

Once you have it in there, let it cook on one side for 5 minutes, or until golden brown on one side. Use your tongs or a fork to flip it once. Let it cook for another 5 minutes (or golden brown) on the other side. After golden brown on both sides, pull it out with your tongs and let sit on the rack for a minute or two while you serve up your curry rice (recipe below) and then place the katsu on top. Damn, I'm hungry now, but here's the curry rice recipe.

8 Medium sized potatoes (Peeled and cut into cubes)
8-9 large carrots (chopped)
1 Carton of sliced Mushrooms (or slice them yourself)
(I also substitute Enoki mushrooms sometimes when I'm feeling sentimental)
1 pound of chicken breasts or thighs (cut into smallish pieces.)
1 large white or yellow onion (I like white) (diced)
1-2 tablespoons olive oil.



2 boxes of House Java Curry (Available at Uwajimaya)

1) In a large pot, boil the potatoes and carrots, skimming off the
starch that forms at the top occasionally.
2) Over medium heat, put a tablespoon of olive oil and onion together,
stirring occasionally until the onion starts to carmelize and become
clear.
3) If you're using mushrooms, add another tablespoon of oil and stir
un mushrooms, cook until they've softened a little.
4) stir in chicken with the onions/mushrooms and let cook halfway
(still pink on the edges, but mostly white)

By this time, the potatoes and carrots are probably starting to get
soft. If you can lift one out by poking it with a fork, they're
ready, if not, take your chicken/onion/mushroom combination off the
oven...you don't want the chicken to cook completely and seal out the
curry.

5) Stir in the chicken/onion/mushrooms with the potatoes and carrots
*gently*. Skim off excess oil and starch.
6) Add both boxes of house Java Curry and stir in *gently*. (It's
important to be gentle with this because you don't want to break up
the potatoes, which act as a thickener if they break up too much while
things are cooking together. The oil from the chicken will prevent
some of this, but you have to give it some time to let it happen. )

All you have to do from here is stir occasionally on medium to low
heat and let it cook down to a thicker consistency. Serve over rice
(I like Nishiki sushi rice or Botan washed 4 or 5 times to make it
sticky, but any rice will do).

That's it. Cook, eat and enjoy!

Friday, December 11, 2009

Line Up Pro - Same Great Game, Different Name


Anyone who's ever played the Bubble game on Windows Mobile knows it's a great and fun time waster and probably has the feeling they played it on some other platform a long time ago - really enjoying it then too. Line Up Pro (and its Free version) are basically the same sort of a reverse Tetris that comes one row of blocks at a time. It's fun and engaging and probably the best new/old game you can take with you to the bathroom or to lunch alone. A few curves add some complexity to the game that some other clones lacked, which is part of the reason I bought the Pro version.

Gameplay
The object of the game is to keep a column of blocks from getting so tall that it can reach the top. A row of blocks is built across the bottom one by one on the bottom and once it gets to the end, it pushes the entire stack up. The player can remove blocks by finding a set of three or more contiguous blocks of the same color and tapping on them to make them disappear. Three blocks at a time is six points, five blocks or more is 2x and ten blocks is 3x. That's sounds EASY you say, but wait, here's the curve: You have a limited number of taps to clear 1000 points and slow the game down. If you miss a block, it counts as a tap. If you merely tap every three block combination, you will run out of taps before you hit your 1000 points. Oh, and all the time you're scoring, it's speeding up the game. The speed and your time are displayed in the same bar at the top, so you'll always know right when the game is going to start kicking your ass. Once you reach 1000 points, the game slows down - not all the way - but enough. You're also awarded 100 extra taps at the slowdown, so it pays to conserve. On the other hand, the game is constantly getting faster whether you're scoring or not, so it pays to be very strategic. One way to do this is to intentionally let several rows of blocks stack on the bottom. "Wait, what?", you ask! Read on.

Since the game shows you the row that's coming a block at a time, you can determine if you're going to get another block to connect to blocks you already have. In the early stages, you can really afford to wait until you have 2-3 block levels that aren't working together before you start culling the field. As things get faster, the luxury of letting it build goes away almost completely. One benefit the Pro version has over the free version is the handy pause button that lets you pause the game without closing it. There's a bug in the version I have where if you pause the game, then close the app and come back, the game starts again behind the transparent pause window so you really have to get back into it immediately.

Design
For those of you who aren't a fan of the squares, the Pro version has a settings screen that lets you change them to bubbles. My daughter likes this version better so I'm constantly going in and switching it back. You'll be right at home if you really miss the Windows mobile game with this view. The sound design of the game is actually pretty good. The sound for when you remove a few bricks is sufficiently science-fictiony to my taste and the bonus bells aren't bad either. The colors are clean and smooth, but overall if you've seen one of these games, you've seen them all.

Love? Hate?
Fish and Visitors.
It's the ex-girlfriend who visits and reminds you why you went out, but later you remember why you stopped.


The game is fun enough that I bought the Pro version after beating the free version, but it's nothing ground breaking. If you play it every other weekend, it's entertaining enough to keep you interested, but soon your mind is wandering back to the App store for something a little more original. You'll still like Line Up. You'll still play it late at night or in the bathroom, but it's probably not going to make you stop looking for other things to do. I just played it for a half an hour and had a great time, but probably won't need to hit that again for a couple weeks. Sorry baby, I'm jut not ready to be exclusive....again.