Archive for December, 2012

The whole Ratchet & Clank series of games is just fantastic (save for the last one or two that kinda lost the plot). This year, the first 3 games were remastered for the PS3; 1080p and a bunch of new content. If you like 3D platformers and haven’t played R&C, I highly encourage you to do so.

R&C features a whole slew of upgradeable weapons. You collect bolts — the in-game currency — and use those to buy new weapons (and ammo). There is one incredibly powerful black market weapon available called the R.Y.N.O. (the “Rip Ya A New One” gun). Priced at 150,000 bolts, it would take many, many hours of repetitive game play to harvest enough bolts (until you beat the final boss once and start over in challenge mode where bolt collection is 2x to 3x faster).

There aren’t any cheat codes that’ll get bolts any faster, but there are bugs that can be exploited. Specifically, you can exploit a flaw in the geometry engine to go through a wall, fly through a roof and then fly to a race track where the game engine rules are tuned to you being on a hoverboard. In particular, you can use “the taunter” to break boxes of bolts in a way that the boxes keep breaking for as long as you hold down the “taunt” button.

It takes about 3 or 4 hours of taunting boxes to generate the 150,000 bolts to grab the R.Y.N.O.

Now, of course, this hack — “cheat” implies a Konami-Kode, this is much more of an exploit than a purposeful feature — is well documented online. This is a pretty typical example video.

It, however, is the hard way. A much easier way to do this is to go to the room containing the two health globes (screenshot(s) forthcoming) that said video shows you flying to. Once in the room, stand in the corner behind the globes and knock yourself through the wall using the decoys. Once through the wall, walk to the left along the narrow ledge until you are between the building and a really tall wall that goes over the race track. Wall jump up to the top of the building and fly to the race track as the video shows.

Much, much easier than the video for several reasons. First, going through a right-angle corner is a lot easier than that nuttiness in the raceway plaza. Secondly, no need to fly nearly blind from way up high through the roof of the building.

Of course, the hacker in me immediately asked “Why does this happen and can we exploit this further?”

Turns out that the answer is a resounding yes. It is really easy to find flaws in the game geometry that can be exploited. Look for sharp corners and aim your decoy gun (or any gun with a target) into them. If the gun’s target jumps between planes rapidly — better yet, if there are places where it will steadily oscillate between two planes — you can almost assuredly use the Decoy trick to knock yourself through that spot into whatever is beyond.

The glitches that result can be pretty mind bending. I have yet to see the game crash, but “divide-by-zero” would be an apt description of some of the results.

I’ve now used this in a few places in the game to complete a mission without doing any of the intervening bits or to get into a secret room without bothering to find the oft-well-hidden entrance.

Every now and then, I’ll be coding along merrily in Xcode and I’ll get an error much like the one at left. Or “expected identifier or ‘(‘” is another variant.

Huh? That code is fine. Maybe it is an invisible character? Nope. Nothing shown.

Took a bit, but I figured out the cause; 25 years of using emacs as my command line editor of choice, along with the folks at NeXT that implemented the AppKit’s text editor.

In emacs, you quite commonly navigate about by holding down the ctrl- key and banging on various keys to go to the beginning/end of lines, etc. Many of these control sequences are honored by Cocoa’s text editing system and quite a few more are supported in Xcode’s editor.

Seemingly unrelated, ctrl-return is mapped to Insert Line Break.

Thus, if you are an emacs head and you commonly hit ctrl-e<return> to start a new line of code and you happen to hold down the return key just a tad too long, it causes the error shown (or a variant depending on where the insert happens).

The easiest way to tell if this is the case is to go to the line of code after the line reporting the error and hit ctrl-a. If the cursor ends up at the beginning of the previous line, that line is ended by a line break and not a true newline. (ctrl-n – backspace – return to quickly fix).

While it is easy enough to fix once you know the ctrl-a trick, a better fix is one that makes it such that it’ll never happen again.

To do that, go to Xcode’s Key Bindings Preferences, click on “Text”, and scroll down to Insertions and Indetions. On Insert Line Break, delete the ctrl-return (hat + u-turn arrow) key sequence. For convenience add the same to Insert Newline.

Koch Snowflake Tree Ornament Baubles

This year, I started down the path of custom designing an ornament for printing, but grabbed the Koch snowflake baubles from Thingiverse.

Lesson Learned: Design software is hard to use. 3D design software is harder. You’d think a simple circle with some stars and words extruded in 3-space would be easy to do. Still, people totally dig the unique texture and shapes of these. In hindsight, I probably should have used Inkscape (awful, but works and is what is used for the egg-bot) to do a 2D design and then extrude that.

For Thanksgiving this year, I couldn’t decide between cooking a smoked turkey or a roasted turkey. So I did both. 38 lbs of turkey may have been excessive for 12 people, but the leftovers are grand (still have quit a bit frozen).

For the smoked turkey, I followed the guide at Amazing Ribs. Hands down, the best BBQ/Grilling site around.

For the roast turkey, I started with Martha Stewart’s Cheesecloth Method, derived inspiration from Amazing Ribs, and applied a bit of my whim. The end result was incredibly good and, bonus, also produced some of the best gravy I’ve ever had.

Details:

You’ll need a roasting pan that allows the turkey to be suspended at least an inch, preferably more, above the contents of the pan (which will be about 1″ deep). Looking closely at the (admittedly poor) picture, my turkey roaster’s rack has little notches that allow it to be suspended over the pan. If you have room, you could use a pan on the bottom rack of the oven with a rack immediately over to hold the turkey.

Shove some sage leaves and a lemon inside the bird’s body cavity. No stuffing, though, as that just dries out the meat (by requiring a longer cook) while not really improving stuffing quality.

Pre-heat oven to 450â„‰

In the roasting pan place all the turkey innards but the gizzard — neck, any fatty bits cut off, heart, liver, etcâ€¦ Add to the pan:

In a deep sauce pan, melt 3/4 lbs of butter. Add 2 cups of Sake and ~1 Cup of Jack Daniels. Once thoroughly melted and stirred, soak a cheese cloth in it and layer on top of the turkey. There should be at least 4 layers of cloth on the top and down the sides of the turkey.

Shove the bird in the oven. After one hour, drop the temperature to 350â„‰ and baste the turkey with most of the remaining butter/sake/JD magic sauce. It’ll sizzle and pop. That’s OK. The cheesecloth will likely be near black and crispy. Also OK.

After another couple of hours, remove the cheesecloth carefully. Baste with any remaining awesomesauce and baste with a bit more of the drippings from the roasting pan below the turkey.

Cook for at least another hour. The bird will be done when the meat in the thickest part reaches ~155â„‰. Not 165â„‰ as the bird needs to rest for a good 15 to 20 minutes when pulled and carryover will cause the temperature to both continue to rise and continue to pasteurize (if you hold poultry at 131â„‰ for long enough, it’ll be fully pasteurized– the USDA’s quote of 165â„‰ for safety is based on holding at that temperature for only a few seconds!).

Strain the contents of the roasting pan into a pot. You could choose to serve it as is as a delicious and flavorful broth to be ladled over the meat. Or you can choose to cook it down — to thicken it up — as a more traditional gravy.