Archive for December, 2009

DE Razor Review: 7 a.m.

Friday, December 25th, 2009
7am Platinum Stainless Scaled.jpeg

Can’t say I was expecting much from this particular blade. The name, the lettering, and — mostly — the packaging all scream “cheap blade” to me.

However, opening the little cardboard box revealed blades that were wrapped in two pieces of paper; the logo paper and an inner translucent wax paper. The fold is one of the tightest I have seen on a blade and, quite nicely, there was no glue on the blade!

Like the Dorco, I hadn’t shaved the day before trying the blade.

While the resulting shave is actually quite good in that it is quite smooth and the blade didn’t nick me at all, it pulled from the first stroke. The blade clearly isn’t dull — if it was, the quality of the shave would be sub-par — but it is as if the blade were catching and yanking on each hair before the cut.

Not surprisingly, this has left me skin with a bit of razor burn, especially under my chin.

Given the feel of this first shave, I doubt this blade is going to last the week.

Feast of the Seven Fishes 2009

Friday, December 25th, 2009
Christmas Table

For Christmas Eve, our tradition is to serve the Feast of the Seven Fishes.

This year, my parents and one of my sisters are in town. We were joined by our neighbor Ron.

Christmas Table Detail

As the name implies, the meal is composed of at least seven seafood dishes. Thus, a great excuse to pull out the full china settings and go for fancy table supreme!

Since my father is allergic to soft shelled seafood, this year’s feast included oysters, squid salad, clams, mussels, scallops, sole, and freshwater bass.

Read the rest of this entry »

Wii Shutting Off After a Few Minutes? Check the Fan.

Monday, December 21st, 2009

Two years after the last time our Wii showed signs of death by thermal failure, the repaired Wii is once again succumbing from heat death.

Now, the Wii will play fine for about 5 to 10 minutes and then just turn off entirely — no lights, nothing.

Before trying to fix it myself, I checked Nintendo’s customer support sight. Gone is any sense of personal account and, instead, I was told that’d cost $75 + s/h + tax to repair the now-out-of-warranty Wii; about $95 or, in other words, just about 1/2 the cost of a new Wii.

To be absolutely fair, Nintendo’s customer service has been absolutely top notch. $75 (+shipping & taxes for CA residents — $95) for a fix-any-problem service with a solid turnaround time of about 10 days (though it generally takes less) is actually very good.

A replacement optical drive — another component that oft goes flaky due to dust, dirt, or abuse — cost about $50 to $60 and are quite time consuming to replace. Thus, for some fixes, $75 is beyond fair.

Of course, there is no [non-hacky] way of moving all data and purchased content from an “old” Wii to a “new” Wii, thus replacing the unit with a new — hopefully better built — Wii isn’t viable. Not that letting Nintendo fix a Wii is that much better; they have a tendency to screw up your data in the process.

Fine. $95 and no options. Let me do some basic triage…

As it turns out, the Wii’s fan was jammed. Probably with pet hair or, hell, with one of my über-long bits of hair from my long haired days. And it was dusty, too. That could certainly be a problem!

After the fix described below was applied, the unit played quite stably for more than an hour, something that was impossible before.

So, if you are suffering from the same symptoms — spontaneous power down during play — you might want to give this a try before paying the vigNintendo to fix what is, otherwise, about $1.50 in parts (assuming they don’t do the same as below!).

  • Disconnect everything from the Wii and take it to a decent bright light (a flashlight will do).
  • Take a micro-screwdriver, toothpick, or something similar and very gently try and move the fan blades visible inside the vent on the rear of the unit. If there is any resistance, you have a stuck fan!
  • Spin the blade a few times with your poky-stick thing. If you can’t, you have an über-stuck fan and your choices are to replace it yourself or pay Nintendo ~$90 to do it for you.
  • Grab a vacuum cleaner that has a hose attachment.
  • Turn on the vacuum and place the end of the hose over the vent for a few seconds. You’ll likely hear that spinny-whistly-noise of a fan spinning up in a fast rush of air. Hopefully.
  • Put the Wii back and reconnect everything.
  • Fire up a game, turn down the audio volume, and listen for the whir of the Wii’s fan. Or have a look.

The end result might be a working Wii. If not, nothing lost as none of this procedure leaves any kind of a mark (if done right — you go sticking a metal bar into the fan and breaking off a blade is your own damned fault).

Looking more closely at the Wii, it appears that there are one of numerous design flaws in play here.

First, given the number of thermal problems reported by various folk, it is quite clear that Nintendo shoved too much crap into too small of a box without properly accounting for the thermal envelope required.

Secondly, the old-school GameCube memory card slots create quite a vent that leads directly to the fan below and behind the slots. Feeling the airflow when applying The Suck, it feels like those slots will quite happily draw anything in and dump it right on the fan! It makes me wonder if there is a correlation between fan breakage and folks that enjoy GameCube games and, more pertinently GameCube saves on GameCube memory cards?

In any case, our Wii is working again. Even if it is only makes it through the next week or so, it is going to make Christmas morning considerably happier (as it would suck to be all like “Here, son, awesome new game… you can only play it for ten minutes at a time and you’ll lose your saves. Have fun!”.

Excellent Coffee Thermos

Sunday, December 20th, 2009

One of the problems with the Chemex coffee maker is that it is utterly useless for making more coffee than you plan on consuming in one sitting simply because it does nothing to keep the coffee warm! We have guests coming in over the holiday break and I want to be able to make a pot of chemex, pour it into a thermos, pour some more hot water over the grounds (if you use enough grounds, this works great!!) and then our that into the thermos, too.

On the recommendation of one with a clear caffeine addiction, I picked up the Thermos Nissan 51 Ounce Stainless Steel Carafe pictured at left.

It does a brilliant job! I made coffee at about 10AM this morning and it was still hot — not burning hot, but hot enough — after 5pm in the afternoon! Better yet, the coffee maintained its flavor just about as well as one could expect! The caffeine addict that recommended the carafe indicated that pretty much all of Thermos’s Nissan line are top notch, too.

I tried putting the Chemex on a Bunn Warmer — was enticed by the name, obviously — but the combination of a hot bottom plus sides that shed heat rapidly meant that the coffee quickly turned ultra-nasty flavored. Yuck. The Bunn will prove useful; it turns out it heats water to pretty much the perfect temperature for brewing certain kinds of green tea that don’t tolerate boiling water without yielding bitter flavors!

DE Razor Review: Dorco New Platinum ST-301

Sunday, December 20th, 2009
Dorco 10 New Platinum Scaled.jpg

After the last few blades, I have come to expect some stupid flaw with any new blade I try.

Much to my surprise, the Dorco Platinum ST-301 have none of the stupid and are quickly becoming one of my favorite blades!

The 301s come in little plastic boxes with 10 blades per box, double the # of blades per box as most of the other blades that I have tried. The plastic boxes have a slot on the back for used blades. So, combination of more blades per box & the disposal problem solved all in one.

Beyond that, the blades are individually wrapped in a much thinner than normal waxed paper (while remaining sealed). Better yet, there is no glue. Even the Wilkinson Sword, an otherwise excellent blade, had glue spots on the blade!

Of course… the shave… how is the shave?

When I switched to this blade, I inadvertently set it up for failure. First, I was coming off a week of the Bic blade, which had left my skin quite thoroughly irritated. I hadn’t shaved in slightly longer than normal and we were having one of those extremely rushed mornings. Worse, I had run out of prep oil and, thus, neither oiled my face or used a hot towel. I followed this with a turbo-shave; a super-fast two pass shave with only a little bit of time ensuring that the difficult bits were clean shaven.

A recipe for an epically bad shave.

However, the Dorco not only performed well, the blade provided one of the best shaves I’ve had! Beyond yielding an amazingly smooth result, there were no nicks and no skin irritation whatsoever!

The Dorco seems to somehow have all the sharpness of the Feather, but is a very forgiving blade. After a few days, it is still delivering a very high quality shave and I have yet to nick myself — something every other blade has done after a few days. This isn’t just an experience issue; somehow, the Dorco doesn’t draw blood on the handful of perpetual problem spots on my face that every other blade has tripped over.

Between the high quality shave and the excellent and efficient packaging, the Dorcos are quickly becoming my favorite blade. Better yet, they appear to be pretty damned cheap — 100 blades for about $9!

objc_msgSend() Tour Part 3: The Fast Path

Friday, December 18th, 2009

Table of Contents

  1. objc_msgSend() Tour Part 1: The Road Map
  2. objc_msgSend() Tour Part 2: Setting the Stage
  3. objc_msgSend() Tour Part 3: The Fast Path
  4. objc_msgSend() Tour Part 4: Method Lookup & Some Odds and Ends

In any case, with the foundation set — with the id of the object to be targeted in %rdi and the selector of the method to be invoked in %rsi — we can jump into objc_msgSend() and understand exactly what happens instruction by instruction. Or more specifically, the compiler issues a call into objc_msgSend() (which sets up a stackframe for objc_msgSend() which, through tail call optimization, turns into the stackframe for the called method) and the method implementation that objc_msgSend() jumps to will issue a ret instruction to unwind the stack back to the original caller’s frame.

It is pretty easy to correlate the disassembly with the comments and code in the original source file. However, if you ever need to step through the messenger (si steps by instruction in gdb), this will be easier to follow as this is closer to the reality during a debug session.

For almost all method dispatches, dispatch takes what is called the “fast path”. That is, objc_msgSend() finds the implementation in the method cache and passes control to the implementation. Since this is the most common path, it is a good opportunity to break the tour of objc_msgSend() into two parts; the fast path and the slow path (with administrivia).

Read the rest of this entry »

objc_msgSend() Tour Part 2: Setting the Stage

Friday, December 18th, 2009

Table of Contents

  1. objc_msgSend() Tour Part 1: The Road Map
  2. objc_msgSend() Tour Part 2: Setting the Stage
  3. objc_msgSend() Tour Part 3: The Fast Path
  4. objc_msgSend() Tour Part 4: Method Lookup & Some Odds and Ends

Objective-C is, ultimately, a simple set of extensions to C that provide an object oriented coding and runtime model. Objective-C fully embraces C and leverages the C calling ABI throughout. Every method call is really just a C function call with objc_msgSend() acting as the preamble that figures out exactly which C function — which method — to call!

Thus, it is helpful to understand how objc_msgSend() is called and how that relates to C. That is, how does the compiler translate [someObject doSomething: 0x2a] into a call.

What follows is a bit of code that makes a [totally bogus] simple method call followed by the assembly generated.

@interface NSObject(foo)
- (id) doSomething: (NSUInteger) index;
    NSObject *b;
    NSArray *a;
    b = [a doSomething: 0x2a]; // line 11
    .loc 1 11 0
    movq	-16(%rbp), %rdi
    movq	L_OBJC_SELECTOR_REFERENCES_0(%rip), %rsi
    movl	$42, %edx
    call	_objc_msgSend
    movq	%rax, -8(%rbp)

Read the rest of this entry »

objc_msgSend() Tour Part 1: The Road Map

Friday, December 18th, 2009

What follows (across this and 3 more posts, maybe more) is a rather detailed tour of objc_msgSend() as implemented in Mac OS X 10.6.2. Rather detailed in that every instruction will be explained. Even though it is relatively few instructions, there is a considerable amount of background information that is helpful to understanding the objc_msgSend() instruction stream.

The motivation behind these posts is entirely selfish. I find the best way for me to learn something is to know it well enough to be able to explain any detail to a room full of folks in full-blown student mode.

Table of Contents

  1. objc_msgSend() Tour Part 1: The Road Map
  2. objc_msgSend() Tour Part 2: Setting the Stage
  3. objc_msgSend() Tour Part 3: The Fast Path
  4. objc_msgSend() Tour Part 4: Method Lookup & Some Odds and Ends

Read the rest of this entry »

DE Razor Review: BIC Chrome Platinum

Friday, December 11th, 2009
BIC Chrome Platinum Scaled.jpg

I had no idea that BIC — the cheap pen company — made double-edge razors. In particular, the BIC chrome platinum razor blade.

I really didn’t expect much from this particular blade. Like their pens, I fully expected the blade to be serviceable yet unremarkable.

Certainly, the packaging indicated total mediocrity. Contained in a hard to open cardboard box, each blade is individually wrapped in yellow waxed paper that is glued to the blade (sigh) with post-it like adhesive. Worse, the damned adhesive is o the cutting edge.

Not a good first impression.

However, the blade delivered a fantastically smooth first shave!! Better yet, it did so with relatively little effort!

Though the quality of the shave is awesome, the blade definitely irritated my skin more than most blades. My skin has just a slight razor burn feel to it (but no redness).

Surprising, to say the least.

As much as I had no confidence in the blade from first impression, I have equally as little confidence in blade durability.

Maybe the blade will surprise me on that front, too.

After a few days of shaving with this blade, it has surprised me. Namely, the blade continues to deliver a decent quality shave, but the blade is definitely showing signs of wear in that it has started to cut my face more frequently and more deeply.

This would be a good juncture to mention that a styptic pencil is a fine addition for any shaving kit “just in case”. Typical product shown at right — avoid the ridiculous shipping charge by picking one up at your local drug store.

DE Razor Review: Wilkinson Sword Classic

Thursday, December 3rd, 2009
Wilkinson Sword Scaled.jpg

Cadbury, get me my wilkinsons. I have an engagement at the club with Ms. Shroomshryer and need to be at my smoothest. Chop chop!

With a name like Wilkinson Sword Classic and such overwrought packaging (not shown) containing many words about the lineage and awesomeness of the triple coated edge, I expect this blade to give me a high society quality close shave. Whatever that means. All I know is that I can’t read Wilkinson Sword in anything but the stereotypical high-brow Richie Rich inflect.

Hopefully, the Wilkinson Sword (amazon search) blades will live up to their name.

Outside of the waste that is the card pack upon which the blade pack was attached (seen here), the Wilkinsons come in a plastic box with each blade wrapped in was paper. The box has a slot for used blades on the back.

I’m a little concerned by the glue splotches on the blade, though they are nowhere near as bad as the Astras nor are the splotches on the cutting edge itself.

Wow! I had inadvertently set up this blade for a bit of a first shave challenge, not having shaved the day prior (the Astras were just that meh).

Yet, the Wilkinson blade produced an excellent shave. Not only is it one of the smoothest shaves I have had, but the blade caused basically zero skin irritation at all (the Derby and Feather blades both produced a similar shave, but with just a tad of skin irritation).

Hopefully, the blade will prove to be durable, too.