Favorite Semordnilap 

Well, it's actually two semordnilaps. The semordnilaps are from the old adventure game Manhunter: San Francisco and are part of a rather clever puzzle that involves signage on a glass office door at a murder scene. You (the gamer) must realize that you are seeing the lettering from the INSIDE of the office and thus a mirror image of the correct text. Once you realize this, "bAT VOMIT" becomes:


Knowing the correct name, you can identify the victim and this allows you to make progress in the game. The use of the lowercase 'b'/'d' does make the puzzle a little less elegant, but offers a clue as to how to solve it.

Here's a screen capture of the murder scene in all its gruesome 16-color glory:

UPDATE: This "bAT VOMIT" phrase should probably actually be described as Mirrored Semordnilaps, following the pattern of Mirrored Palindromes.

[ add comment ] ( 14 views )   |  [ 0 trackbacks ]   |  permalink
XCode Preprocessor Declarations for String Aliases 
I recently ran into a problem with adding some preprocessor declarations to an XCode project. Basically I needed to make the equivalent of a #defined symbol but declared within the project rather than source (a pretty common thing to do).

Googling quickly identified the project setting "Preprocessor Macros" as being the way to do it. It maps to the command line GCC option "GCC_PREPROCESSOR_DEFINITIONS".

The documentation says to specify the symbol and if it's an alias simply list the symbol followed by the equal sign and the value.

Like this:


In my case, I needed the symbol to be a string.

Like this:


This is where I ran into problems. When I attempted to compile, I got errors that indicated that my quotes had disappeared by the time the preprocessor got the declaration. So I figured this should be a simple solution. I just needed to figure out how XCode expects me to escape the quotes.

I tried everything to figure out what the stupid escape was. I tried the standard C-style /", double-quotes, two single quotes, @"STRING", HTML tags, etc. NOTHING worked. I tried Googling for solutions but came up empty too.

Finally, I had my eureka moment. I'll just create my own "stringify" macro function and pray I can define macro functions in XCode.

If declared in C(++), it would look like this:


The # sign has special meaning inside preprocessor macros and converts the succeeding argument to an encapsulated string.

The full solution is to first define STRINGIFY under XCode's "Preprocessor Macros" and then use that to define your alias declaration.

Like this:


And it worked! I don't feel too bad about this being a bit hackish because the alternative would be modifying a lot of source code. ;)

[ add comment ] ( 3 views )   |  [ 0 trackbacks ]   |  permalink
Stolen from "Hognoxious" on Slashdot.

Overheard in a museum:

Boy: Mister, how old is that dinosaur skeleton?

Curator: [after some mumbling and finger counting] 60 million and four years, eight months and sixteen days.

Boy's mother: How can you know so accurately?

Curator: Well, in the training course they told me it was 60 million years old. That was when I joined, which would be back in January 2006...

[ add comment ]   |  [ 0 trackbacks ]   |  permalink
SR-71 Blackbird 
SR-71 Blackbird

I recently went to the Air Force Armament Museum in Fort Walton, FL. It's definitely worth checking out if you are ever in the neighborhood. It's completely free, though I recommend giving a donation.

The coolest thing at the museum is definitely the retired SR-71 Blackbird on display out in front of the museum. Here is a pic I borrowed from an article about the museum:

It was cool to actually be able to get so close to the plane. One thing that was interesting is just how light the materials were. It felt very hollow away from leading edges. It even seemed a bit fragile and would probably easily dent. I guess if nothing can catch you, it doesn't matter if you're fragile. :)

Also, the heat expansion joints were quite prominent. I've often heard how the Blackbird leaked fuel through the joints until the skin heats up from supersonic flight and seals tight. The joint separation was smaller closer to the center of the plane and progressively got larger out towards the wings. I guess the heat makes the plane bow outwards.

The other interesting thing is that there are actually quite a lot of seams, welds, and ripples in the skin. It's not perfectly smooth like an expensive sports car. That matte black paint really gives the impression of being perfectly smooth in the press photos though. I guess those small imperfections don't have any significant affect on the plane at Mach 3+.

Here is a recent story from a real SR-71 pilot on Gizmodo. It's actually an excerpt from a book. Be sure to read the story about the speed check from an air traffic controller.

[ add comment ] ( 7 views )   |  [ 0 trackbacks ]   |  permalink
Thoughts on AT&T Femtocell 
I think the AT&T Femtocell is incredibly misguided technology (at least for smart phone owners). On the surface, it looks kind of cool. Essentially, it is like a tiny cell tower that you can connect to your existing internet connection. Voice calls and data are routed via a 3G connection to the Femtocell and then converted to internet protocols and sent to AT&T servers. The advantage of the Femtocell is that you can get cell coverage where you might otherwise not get it such as in a deadzone, like a building with thick walls. There are also advantages in that a private Femtocell connection will be available when all the regular cell bandwidth is used up by other users (e.g. cities like New York).

So why is it misguided? On the one hand I think customers will be upset that they need to pay $150 to fix a problem that AT&T should probably be fixing for free. However, that's not the problem that I have with the Femtocell. The issue that bugs me is why use the Femtocell at all when everyone already owns WiFi access points?

For instance, iPhones can already communicate with WiFi for internet data connections. The iPhone will seamlessly switch from 3G to using a trusted WiFi AP with no impact on the user. Also, we already know that iPhone apps can use the headset speaker and microphone and they can be used effectively with VOIP applications (e.g. Skype). So instead of a $150 Femtocell box, AT&T should be working with Apple (and other cell phone manufacturers) to create software that will automatically switch from cellular to encrypted VOIP for voice calls. As mentioned before, they've already got the internet data switching working. And the iPhone is more than powerful enough to process VOIP data.

The only negative I can think of is that maintaining an open WiFi connection is probably a big drain on a cell phone's battery. For instance, I believe the iPhone closes the WiFi connection whenever it can (especially when the screen is turned off). If cellular service is not available and the phone is sleeping, then no incoming calls will be able to be received. Also, some WiFi APs might not have bandwidth of a quality good enough for VOIP. This might necessitate a feature where the user can select which WiFI APs are trusted for voice to VOIP re-routing. (Perhaps too confusing for the average user.)

However, I think a lot of folks are in a situation where they receive 1 or 2 bars at home, just good enough to receive a call. However, if you don't stand in the "magic spot" the call gets dropped. I think people in this scenario could benefit a lot from a WiFi-only solution rather than the Femtocell. Finally, WiFi VOIP would have an immediate effect on reducing AT&T's cell bandwidth whereas the Femtocell will only have an effect as quickly as they are sold.

[ add comment ]   |  [ 0 trackbacks ]   |  permalink

<<First <Back | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Next> Last>>