Unfortunately, Apple iPhone SDK (as of this writing, the latest is iPhone 2.2.1) doesn’t come with a built-in JSON parser. But I found out a good one called json-framework. It is both a generator and a parser. As a generator, json-framework can create JSON data from an NSDictionary. As a parser, you can pass to json-framework an NSString that consists of JSON data and it will return a NSDictionary that encapsulates the parsed data.
There are times when building an iPhone application that you
need to inform other parts of the program to do something, without regard to
what or where those parts are. The NSNotificationCenter (aka “notification
center”) is the way to go in these cases. Using notifications supports ‘loose
coupling’, which is a good thing in software design.
A notification center object provides a mechanism for
broadcasting information (“notifications”) within a task. An
NSNotificationCenter object is basically a notification dispatch table. For
those familiar with Windows programming, this pattern is similar to the Windows
Message Loop architecture.
Scrum is a bit like 20th century politics. You have your burn-down crazed fascists, your ground-up “power to the coding plebe” reds, greedy ladder climbers hiding under the guise of scrumocracy, and on very rare occasions… responsible elected representation.
Let’s deal with the fascists first. Your average scrum doctrinaire falls back on phrases like “command and control” to describe the tired, archaic waterfallists. They should poke their own chests with that finger. I’m going to stick my neck out here and suggest that a large percentage of businesses practicing scrum err on the side of a Gestapo-like control. Why? Well let me answer you with a question: What do you think got your Product Owner or Director of Engineering their job in the first place?
Last Thursday KillerDeals v1.0.1 hit the shelves in the iPhone AppStore. It was only a minor update to fix a few bugs that appeared post release. So we got right to work hammering out a quick fix and Apple approved the update in no time flat. This was good news.
The necessity for the "emergency" update got us all really talking about the future of this application and where we want to head in the future. Here's a short list of the plans that will be rolling out over the next few releases:
- Create a KillerDeals web service – Currently our application communicates directly with the ODAT web sites, retrieves the content, parses it, and redisplays it in its current format. Although this is a completely acceptable approach, we are at the mercy of Backcountry. If their developers change the website format or content, our app is too tightly coupled to handle this change and thus we would need to release another application version through the iPhone store. But if we moved the retreval and parsing code to a Grio owned server, we can make changes on the "fly" without ever having to release an update through Apple. Much faster response time to content related issues.
- Push notifications -This app was meant to incorporate Apple's Push Notification system. Apple has been promising this technology for quite some time and iPhone 3.0 will finally deliver it. We all very excited about this. We have some very unique ideas about how Push alerts should be configured but you'll just have to wait to check out our innovative approach.
- More sites - Recently added to the ODAT family are Brociety.com and Chainlove.com. Expect to see these sites in KillerDeals sooner than you might think. But with 6 stores the tabs might get a little crowded. So we'll just have to see what our crafty Grio developers come up with.
- More information – KillerDeals is lacking a few bits of crutial information in its current state. Items and time remaining are key indicators for the ODAT sites. Expect to this this data ticking down the seconds in an upcoming version of KillerDeals
In summary, I guess you can expect KillerDeals just to get better with every release. Remember we are exicted to here from our users so drop us a note or leave us a blog comment. We'll be waiting.
At Grio, we use EC2 to power almost all of our server needs. Amazon hosting provides a convenient means of housing a web server and database server, a wiki, and our client development environment. It’s a cost efficient solution for companies like ours, in that we can avoid the hassle or purchasing and maintaining hardware. The strategy allows us to add servers only when we need them and remove them when they are no longer needed. Since Amazon’s pricing structure is based on the duration of server’s up-time, we want to make sure that we only use a server when necessary.
I was recently tasked with writing a profanity filter for the chat module of an AIR application. I did some research and alas, there were no Flex examples to be found. I thought I’d share my implementation with you.
The filter needed to replace naughty words with asterisks: so profanities such as ‘f— you’ would appear as ‘**** you’. The filter also required the ability to use localized word ‘blacklists’.
Recently, we submitted our new iPhone application to Apple and it is currently under review. It has been approved and is available at iTunes store. It’s called KillerDeals. It’s a lifestyle application targeted at users who are either currently fans of sites like Steepandcheap.com and Tramdock.com or new users who are looking for amazing retail deals on outdoor clothing and equipment.
KillerDeals gives you access to 4 of the hottest sources for outdoor gear on the web in the one convenient application. Now you can check the latest deals anytime, anywhere.
It’s easy to add sounds to a Flex/Air application. Here we’ll see how to add whirrs, chirps, and bloops to your application’s button clicks and mouseovers. We’ll also see how to use Air’s EncryptedLocalStore to add mute and volume controls.
The first step is to create a sound manager for playing the sounds. The sound manager will make it possible to centrally apply user preferences like volume to all application sounds.
var str:String = ‘Go to <a href=”google.com” id=”linkGoogle”>google</a>’;
html.data = str; // html is of type HTML…