Tuesday, March 31, 2009

Abby Crabby Reviewed by appVersity

Graphically the game is very colorful and the animations are crisp.

The sound is also very good. Effects are clean and the soundtrack has a nice steel drum feel to it that actually didn’t make me want to listen to my own music while playing.

I like the way that Abby Crabby didn’t take the easy way out by just giving good game play. You’ll find some bonus items like beach balls, dynamite and stars to spice things up, and there are several achievements to unlock. I have to admit that I love it when a game throws in unlockables because it really ups the replay factor.

Abby Crabby is a great pick up and play game that will work for all ages – and hidden in there somewhere is a nice message about keeping our oceans cleaner, and that can’t hurt.

http://www.appversity.com/games/abby-crabby-review/

Sunday, March 29, 2009

Looking for iPhone Promocodes?

Did you know developers have 50 free distributions per version application they release? These free copies are handled through promotional codes and are redeemed through iTunes. Redemption with Mac or PC desktop iTunes is obvious. Did you know they can also be redeemed on the iPod Touch / iPhone itself? Enter the code into the iTunes application and then switch to the App Store application. The download begins.




Interested in a free copy of one of our applications? Make your request here:
iphone (at) steamboat mountain designs (dot) com

iPhone iTunes SEO

Apple must have tweaked their iTunes search engine again. Weeks and weeks back I had noticed some applications blatantly inserting lists of the top applications in their listings so they would appear in searches for those applications. It seems that strategy has come and gone since Apple is filtering for it now.

Doesn't work:
  • Recommended for fans of Scub, Virtual Village, Scoops, The Creeps, Bugdom, Crazy Penguin Catapult, Pocket God, Eat Bunny Eat, Peekaboo Barn, Zombieville USA, Flight Control, Wolfenstein 3D, The Oregon Trails.
A little more complex (might work):
  • Familiar with scuba diving sure, but it's not a village of ice cream scoops. It will not give you the virtual creeps as there are no bugs, penguins, pets, or god forbid a pocket of crazy puppy bunny to peekaboo. Zombies are not in flight with a wolf on the trails in oregon.
A link to Abby Crabby in the iTunes App Store

Labels: ,

Thursday, March 26, 2009

ZigBee security by obscurity

The open source ZigBee stack author, Christopher Wang, has released a rebuttal to Travis Goodspeed's Smart Grid "sky is falling" security article on ZigBee Smart Energy devices.

Step back for a moment. Let's not forget that the XBox was cracked by recording a serial stream between a few chips on the board. The bootloader to the iPhone was used to sneak in the jailbreaking code that millions of users now run. And if you're really serious about hacking, then look into the decapsulation of Microchip and Atmel Mega parts by professional reverse engineering outfits.

Let's face it people. If there is physical access to a device there is certainly a way to break it. If there is motivation, someone will do it. Those keys you're looking for? They're potentially in the RAM, they're in the flash and EEPROM, they're running on a bus between the chips, and they're in the air. The solution, more and more layers! Temporal keys! ECC! Public key crypto! Security by obscurity!

Labels: , ,

Wednesday, March 25, 2009

SpellFlyer


Our children's edutainment application called SpellFlyer was just launched by its producer, Zero260 in Seattle. In just two and a half weeks the SMD team put this application together with our 2D game engine, art talent, voice talent, and music talent. We're pretty proud of the results. Check it out now on the iTunes App Store.

Labels: , ,

Sunday, March 22, 2009

Digging around in iPhone IPA

After syncing your iPhone / iPod Touch with iTunes, take a look in the ~/Music/iTunes/MobileApplications folder. Here are all the applications you have purchased and downloaded. Perhaps not so obvious is that an IPA is a ZIP file in disguise. Make a copy of the IPA and throw it onto your desktop. Rename it so that it has a .zip extension. Double click it to uncompress the ZIP. Now you'll have a folder with some content. The iTunesArtwork is a 512x512 JPG. It's the icon that the iTunes store and iTunes Application browser use. Rename it with a .jpg extension and double click it to open it and check it out in all its glory.

The Payload folder contains the actual program and more interestingly its resources. To look at it you'll have to right click and ask to Show Package Contents. You should copy all the contents and put them into a new folder on your desktop so that you can easily sort and work with them.

At this point you'll be able to see all the goodies inside the IPA. In this case I'm looking at Pocket God v10. What can I see? Well, it has about 2MB in graphics. The graphics are contained within two very large atlas files. Most developers do not go to the effort of creating atlas files, not even KP funded ngmoco.

There are 26MB of audio in 75 files. Five of those files contain 22.2MB in music. This is an interesting discovery since playing the game I don't think all of the music is used. They aren't compressing the audio either these are just plain little-endian CAF files. These two things give us part of the story about why the version 10 Pocket God is about 25MB compressed in the store. At that size, the download is over the 10MB mobile download limit and is probably loosing impulse buyers to the CBS NCAA application. (And March Madness?)

The PNG images you see in any IPA are not in the usual format. There are in a proprietary format that is optimized for the graphics hardware on the device. A conversion tool such as iPhonePNG will have to be used to convert them into something you can use with a normal PNG viewer. As of this writing the PNG conversion tools are not compatible with the large PNG files found in applications like Pocket God.

Finally, the last interesting tidbit looking into this IPA is the use of XML to script the animations and sounds. This is the first application I've seen taking this approach. It emphasizes BoltCreative's background in scripted languages and suggests the potential for the BoltCreative game engine to quickly and easily support products beyond Pocket God.

Labels:

Friday, March 20, 2009

Cellular Coverage in Lyons Colorado

When the iPhone was being announced at the Keynote presentation in January 2007, the first thing I did was call the local Apple store and ask to get on the list. What a fan-boy. The second thing I did was take a look at AT&T's coverage viewer. Wireless coverage has been horrible in Lyons. It's a bit of a valley surrounded by mountains in the foothills of the Rockies. To the right is a screenshot I saved from back in 2007. As you can see the cream color is "no service". That orange color is "moderate coverage" and there wasn't much of it.

Then the 3G iPhone was released. A few friends with 1st generation iPhones came by around that time and showed me five bars in every room of my house! A quick look at the latest AT&T coverage viewer showed me then what I still see today. Most of Lyons now covered by "good" coverage. No 3G service in town, but "good" EDGE was enough to sell me on finally getting a few iPhones. but they worked great. 3G service was available in Boulder and around town I could hook into WiFi.


And then, New Years Eve 2008 happened. The signal on my phone dropped to zero. This went on for a couple of days. Honestly, I figured it was some sort of silly Y2K9 issue. Service eventually came back around January 4th, 2009. Even so it was pretty strange to see service drop from five bars to zero and stay there for days on end.

The problem is this has been going on every few weeks. I talk to customer support and technical support at AT&T so often I'd like to think I can now put myself in a Zen like state and find my happy place. Every time it's the same routine. Do I have permission to access your account today Sir, can I get your address, will you confirm your phone number, last four digits, what is the name on the account, what can I help you with today... and the ever brainfloss... please reset your phone. As if -- I wouldn't have tried that a thousand times before blowing an hour here with you. There is nothing quite like having someone drag you though the customer support flow chart every couple weeks over and over. We pay about $180 a month for our two phones. This is $6 a day. I figure with 20 days of complete outage thus far, we're out $120.

Given a couple of tidbits from the AT&T folks, I confirmed some things and did little digging. AT&T will not give you the location the cell towers covering your area. Some kind of security risk? Yeah, right - you can get them anyway, there are on public record with the FCC. And with the magic of the modern internets you can find the information very easily. There is only one cell tower within 10 miles of my location! I don't know if I would have placed a $180/mo by two year bet ($4320) knowing that.

The first thing I did was pull up a satellite image of the tower from a year or so back. Notice it's in the middle of nowhere without any surrounding structures. It's the green roofed building there in the dirt.

The I drove by the location to check out what the latest was. It doesn't take a rocket scientist to figure out what's going on here. Take a look at the massive multistory retirement homes being built between the tower and Lyons.

The antennas furthest down the tower are about even with the roof line of the new structure. That's certainly not a great scenario for radio propagation headed eight miles West and into the valley of Lyons. If you look really closely at the photo on the left you'll also see a crew that seems to be working on the tower itself. There is even someone bending pipe out front.

After I discovered this little gem, I made a call to the owner of the tower. Towers own land, and lease their space to cellular service companies like AT&T. This was one of the most interesting phone conversations I've ever had in my life. It's pretty clear the tower owners don't often get calls from end customers to hassle them about construction around the towers. A little tidbit I learned, Boulder County is no longer allowing new towers to be installed. So whatever coverage you have now, is what you'll be stuck with --- forever!

Labels: , , , ,

Thursday, March 19, 2009

802.15.4 / ZigBee stack

I've been working with ZigBee, and the ZigBee precursors, since 2001. I've seen the pre-15.4 platforms, ZigBee 2004, ZigBee 2006 and ZigBee 2007 (aka "Pro"). I've been doing some thinking recently about the software effort that goes into a stack. This is an area most people who buy ZigBee radios don't think much about. They tend to focus on the hardware characteristics of the radio, such as receive sensitivity and adjacent channel rejection.

It's software that makes ZigBee not hardware. After all, without software a ZigBee radio is just an ordinary point to point radio like any you'd see in a remote control toy.

Back in the ZigBee 2004 days, the intention was to fit in a 32kB part. The natural course of design by committee has changed that of course. With the swelling of the application support layers, the multiple layers of security, and concerns for application profile interoperability, we're now pushing outside of even the larger 128kB parts. Not many 256kB 8bit micros even existed in 2004. It makes you wonder if it's ZigBee that's driving the larger parts now available. It's like how Microsoft's bloated software used to drive Intel and the drive manufacturers. :)

So how much code is 128kB of flash? I figure on an 8-bit micro (the predominate ZigBee platform at the moment) you're getting about 2 bytes of machine code per line of C code. This means there are about 64,000 lines of code in the complete system. By complete I mean everything. The radio drivers, the MAC, networking layers, ZDO, ZCL, security, RTOS, application utility code, and interoperable applications.

Studies have shown that the average programmer generates about two lines of debugged C code per hour. That may be shocking if you've never heard it before, but trust me it will eventually sink in. This means that a ZigBee platform has about 15 man years of software effort in it. Assume that these programmers cost about $60k/year, this is $1m in software engineering for this little radio. In the real world, you'd also have to about double or triple those figures to account for documentation, QA, management, interoperability testing and overhead. And finally, don't even think about building a stack without both building simulation targets and real hardware networks (huge dollars on their own!).

Take a look at UC Irvine and USC Center for Systems and Software Engineering's COCOMO II model. Head over to the online calculator and enter 64,000 lines of code. Be sure to make your adjustments for team familiarity with the subjects and organization efficiency style. You'll find results in the 80 man year range once you account for the constrained system embedded nature, team unfamiliarity with the standards, and extreme necessity of unusual embedded tools (wired and wireless sniffers, diagnostics and scripted testing software, and commissioning tools).

Admittedly if you have top notch programmers you're probably getting 5x the stated COCOMO efficiency and paying them accordingly. However, as the team grows the law of averages takes over and you're no longer getting the 5% cream at the top, instead you're getting average performance.

Labels: ,

Monday, March 2, 2009

Info.plist tricks

Often developers miss out on a couple of tricks that can clean up the way the application looks while launching. Admittedly thse adjustments can be made programatically within an early function such as applicationDidFinishLaunching; however, it's visually appealing to make changes prior to the splash or loading screen. There is only one way to do that and it's the Info.plist file.

Orientation

Usually iPhone / iPod Touch applications launch in a portrait mode. Games and web browsers may instead want to launch into a landscape mode. Most developers use landscape right mode. But it's worth noting that the external speaker is often very easily covered by the right palm when the device is in landscape right mode. It's worth considering landscape left orientation as well.

Edit the Info.plist file. Add a key called UIInterfaceOrientation. Set the value to UIInterfaceOrientationLandscapeRight. Other possible values are UIInterfaceOrientationPortrait, UIInterfaceOrientationPortraitUpsideDown, and UIInterfaceOrientationLandscapeLeft.

Status bar

It's always nice to grab more screen real estate and that little bit at the top that's wasted for the status bar for the time and cellular carrier strength is easy pickin's.

Again, edit the Info.plist file. Add a key called UIStatusBarHidden. Set the value to YES.

It might also be the case that it's appealing to retain the status bar for some reason but the application has a dark color pallet. In this case you won't want the default high brightness white status bar. Edit Info.plist again, this time add a key called UIStatusBarStyle with a value of UIStatusBarStyleBlackOpaque or UIStatusBarStyleBlackTranslucent.

Labels: