Wednesday, June 30, 2010

Modern ABI & No More @Synthesize

I haven't talked about one of my favorite new features of Xcode 4 and LLVM, because I wasn't sure of the NDA status. However, the cat's out of the bag now, so I feel like it's safe to mention. The iPhone Simulator in Xcode 4 now uses the Modern ABI (yet it's still correctly uses 32-bit datatypes!), so we can use synthesized instance variables in our iPhone applications and use the simulator. On top of that, if you choose to use LLVM instead of GCC, one of the (many) benefits you'll get is that @synthesize declaration is now assumed. If you don't need to specify anything on the @synthesize declaration (like a different setter or getter name) and your property isn't @dynamic, you can justleave it off. This feature isn't turned on by default (yet), but see Pilky's blog post for instructions on enabling this feature.

Less code to write? Boo-yeah! Count me in!

I believe (though I haven't confirmed this yet) that you can write code this way and still target older releases back to 3.0. If anyone knows otherwise, please let me know and I'll spread the word, though.

Mandarin ABC 1.8.1 App for iPhone will make your learning more productive

Announcing that Mandarin Boy has released the updated version of Mandarin ABC for iPhone, iPod and iPad touch. Updated version of the app offers to the users easier way to learn the language correctly.
With Mandarin ABC app you will be able to learn nine hundred words and each with proper pronunciation by authoritative native Mandarin speaker teacher. Users will be taught by lessons, review and testing.
App contains 3 difficulty levels and after completing the lessons of one level user is tested to determine if he's ready to move on. When the section has been mastered, the user is rewarded; otherwise the mistakes are recorded for reviewing and improving.
Mandarin ABC 1.8.1 offers to the users easy way learning of the language, that is hard enough. Leaning Mandarin will give you advantage to remain competitive trough global markets and make your business more reliable.

Features:
Teaches 900 words in 6 categories
All words are from the HSK, the only standardized test of Standard Mandarin Chinese proficiency for non-native speakers
Divided into "Pinyin" and "Word Meaning" - 2 streams with 3 difficulty levels
The first ever app to provide proper pronunciation by a native Mandarin speaker
Past mistakes are recorded for reviewing and correction
Achievements are praised and rewarded

Device Requirements:
3G iPhone and iPod touch; iPad
Requires iPhone OS 3.1.2 or later
18.2 MB

Pricing and Availability
Mandarin ABC 1.8.1 is only $1.99 (USD) and available worldwide exclusively through the App Store in the Education category.

Tuesday, June 29, 2010

Football fans will have a great fun with VoodooCup 2010-App for iPhone!


Your team lost the game? what can be worse that thing! Aggression? Frustration? Maybe you just want to kill the winner team? No matter, App developer Rodrigo Labanca and his team from Rio de Janeiro have great thing to offer for you football fans all over the world! They have developed and just released their new app called VoodooCup 2010 for iPhone and iPod touch.
This app helps you to express your mood and attitude towards the team you choose and have a great fun at the same time. You can also share the snapshots of your voodoo by e-mail facebook or twitter and let the people enjoy.
Just pick the football shirt to dress your voodoo doll. You can choose it from 32 world cup participating team shirts. Stick pins, staplers and chainsaws in the doll or burn it with lighter. Using each weapon from 4 on your voodoo doll gives scores to your team and if you miss, then voodoo scores. App offers 8 different backgrounds and great sound affects as well.
After the game you can share your score results with friends via facebook or twitter.
Besides, you can send the information to voodocup server to generate statistics about most voodoozed and voodoozer teams.
Note that VoodooCup 2010 is free through the app stores till 30.06.2010 so don't miss the chance to be first to download it for FREE!

Features:
32 football shirts to dress the doll in each one of the 2010 world cup teams
4 kinds of weapons to torture your voodoo
8 different backgrounds
Score
Shake to clear
Awsome sound effects
Share snapshots of your voodoo via email
Send your score informations to twitter or facebook


Device requirements:
iPhone and iPod touch
Requires iPhone 2G, 3G, 3GS and iPhone iOS 4.0

For more information click iTunes

Monday, June 28, 2010

Code As If…

Sorry for how slow things have been here lately; I'm still suffering from WWDC work backlog, plus I've been spending a lot of time on the new book. This is the first book I've tried to write while also doing full-time client work and it's taking a bit of a toll on me.

I've had a blog post floating around my head since writing Beginning iPhone Development that has never become completely formed. It's about how the process of writing about code has changed the way I write code. I think the thoughts are finally ready to congeal into solid form. So, here goes.

The other day, I saw somebody wearing a T-shirt that said "Dance Like Nobody's Watching". I'm not much of a dancer, but I like the sentiment. However, dancing is not coding. The worst thing you can do is code like nobody's watching. You should code like everybody's watching you.

One thing I noticed after I'd been writing code for public consumption for a while is that I've become much more critical of my own code than I was before I started putting it out there for the world to see. A lot of that comes from pure vanity - I want to minimize the number of stupid mistakes that people are going to call me out on. There are a lot of eyes on the code I write for books and for this blog, and some of those eyes belong to people who are, quite frankly, smarter than me.

It's impossible to always put out perfect code, but I do like to avoid giving the impression of being a sloppy coder or, worse, of being a complete hack. The process I go through with code that goes into a book or blog post goes something like this:
  1. Make it work
  2. Make it work well
  3. Make it read well
The process isn't quite as linear as that makes it look, but that works as a very basic statement of the process. The last step includes the idea of refactoring, but it includes more than that. It's proofreading my code after I'm happy with the way it functions in order to look for ways the code could be written better. I'm not talking about performance here, that goes under #2. This is purely about maintainability and readability. Are my methods and variables using logical names? Is my code easy to read? Is the formatting consistent? Was I being lazy anywhere and doing quick copy and paste coding. Step 3 is about trying to be my own worst critic. You wouldn't send a proposal or other written document out without proofreading it. Your code shouldn't be any different.

I thought that I would revert back to my old ways when I wasn't writing code for public consumption, but it turns out that once acquired, this habit is hard to shake. Frankly, like most developers, I had always assumed that the third step, or at least the more picayune aspects of it, were a waste of time when doing production work.

That hasn't turned out to be true in my experience. In fact, it's been quite the opposite. In almost every case, I spend less time writing code because my code is now more readable, more precise, and generally quite a bit shorter than the way I used to write code. Every time I have to change, fix, or extend existing code, I spend less time doing it, and those little bits add up over the course of even a short job. In the log run, all those little things pay huge dividends.

Here's an example I was working on this weekend for OpenGL ES 2.0 for iOS 4. I'm putting together an Objective-C class to make creating and managing multiple programs and shaders in OpenGL easier. One piece of functionality I wanted to include was the ability to get the program and shader logs out of OpenGL. Without that information, it's awfully hard to identify why a shader won't compile or a program won't link. The end result of my first two steps ("Make it work", "Make it work well"), was this:

- (NSString *)vertexShaderLog
{
GLint logLength = 0, charsWritten = 0;

glGetShaderiv(vertShader, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
glGetShaderInfoLog(vertShader, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

- (NSString *)fragmentShaderLog
{
GLint logLength = 0, charsWritten = 0;

glGetShaderiv(fragShader, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
glGetShaderInfoLog(fragShader, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

- (NSString *)programLog
{
GLint logLength = 0, charsWritten = 0;

glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
glGetProgramInfoLog(program, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

It was obvious, even as I was writing this code that I wasn't going to leave it like this. You can get away with this kind of unnecessary duplication of code in most projects because it functions fine and most clients and many development managers don't have the technical chops to read your code, but it violates the DRY principle something fierce. This is hardly the worse example of copy-and-paste coding I've ever seen, but code like this shouldn't ever go into production.

I tested this code to make sure the methods worked, then I immediately refactored the two shader log methods by adding a private method declared in an extension. I then changed the two existing methods to simply call the private method, so I was then using the same code for both scenarios.

- (NSString *)shaderLogForShader:(GLuint)shader
{
GLint logLength = 0, charsWritten = 0;

glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
glGetShaderInfoLog(shader, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

- (NSString *)vertexShaderLog
{
return [self shaderLogForShader:vertShader];
}

- (NSString *)fragmentShaderLog
{
return [self shaderLogForShader:fragShader];
}

- (NSString *)programLog
{
GLint logLength = 0, charsWritten = 0;

glGetProgramiv(program, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
glGetProgramInfoLog(program, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

That's definitely better than the original version. I got rid of the obvious duplication between the two nearly identical shader log methods. The only difference between the original two methods was the GLuint (unsigned integer) value passed into the two OpenGL ES function calls.

This code still bothered me, though. Look how similar the shader and program log functionality is. It's identical except for the two function calls and, I realized, those two function calls take exactly the same parameters. It had been a while since I had used them, so it took my brain a few seconds to drudge up how C function pointer worked, but once it did, the path for refactoring this code became obvious. A single method could be used for all three of these cases if I took function pointers to the two OpenGL API calls as method parameters.

Now, this second refactoring is one a lot of people would probably say isn't worth the hassle. It's too much. It doesn't pass a "cost-benefit analysis". The result is not going to be that much shorter, so how can you justify the time? I used to think exactly the same way before spending so much time writing code for public consumption, but now I've become convinced that refactoring like this does pass the cost-benefit analysis. I wasn't putting enough weight on the value of good code when doing that analysis. When you come back to code weeks, months, or years later, you won't remember all the little details. With well-written code, you won't have to.

The truth (in my experience, at least) is that refactored code is enough easier to maintain that it's worth taking the time to do it. Like everything, the more you do it, the better you get at it, and the faster you can do it. Eventually, it becomes second nature. You end up writing better code in roughly the same amount of time that you used to write sloppy-but-functional code. Plus, every time you visit that code in the future, you have a little less code to search through. Whenever you have to debug that code, you have a little less code to step through. Every time you fix the code, you have less code to fix.

If I had an error in the original version of these log functions, I would almost certainly have the same exact error in three places. When I discovered such an error, do you think I would remember to fix it in all three places? Maybe, if I wrote the code recently enough to remember. If somebody else were fixing my code, do you think they'd know they had to fix it in three places? Maybe… but more likely they wouldn't.

Here's the final version of the method I settled on for the book¹:

typedef void (*GLInfoFunction)(GLuint program, GLenum pname, GLint* params);
typedef void (*GLLogFunction) (GLuint program, GLsizei bufsize, GLsizei* length, GLchar* infolog);

- (NSString *)logForOpenGLObject:(GLuint)object
infoCallback:(GLInfoFunction)infoFunc
logFunc:(GLLogFunction)logFunc
{
GLint logLength = 0, charsWritten = 0;

infoFunc(object, GL_INFO_LOG_LENGTH, &logLength);

if (logLength > 0)
{
char *log = malloc(logLength);
logFunc(object, logLength, &charsWritten, log);
NSString *ret = [[NSString alloc] initWithBytes:log
length:logLength
encoding:NSUTF8StringEncoding
]
;
free(log);
return ret;
}


return @"No Log Data";
}

- (NSString *)vertexShaderLog
{
return [self logForOpenGLObject:vertShader
infoCallback:(GLInfoFunction)&glGetShaderiv
logFunc:(GLLogFunction)&glGetShaderInfoLog
]
;

}

- (NSString *)fragmentShaderLog
{
return [self logForOpenGLObject:fragShader
infoCallback:(GLInfoFunction)&glGetShaderiv
logFunc:(GLLogFunction)&glGetShaderInfoLog
]
;
}

- (NSString *)programLog
{
return [self logForOpenGLObject:program
infoCallback:(GLInfoFunction)&glGetProgramiv
logFunc:(GLLogFunction)&glGetProgramInfoLog
]
;
}


Now, if you work for somebody else, especially if you work in a large corporation, you may be measured on a series of metrics including something like "Lines of Code Written" (LOC). While I understand the need for accountability, most corporate metrics are (to be blunt) a bullshit abuse of statistics. The absolute worst metric ever devised is LOC. If you're working somewhere that's still in the coding dark ages and measuring you by LOC, run like hell, or at least lobby for a change in that policy. Measuring performance based on LOC encourages even good engineers to write sloppy, horrible code.

In my example here, I spent some of my time improving my code by removing 25 lines of code. I spent time taking it from 64 lines of code down to 39 lines of code. As an developer, I shouldn't be punished for doing that!

In real-life situations, we often convince ourselves that there's not time for refactoring while we code. After all, we have to make that deadline, and there's always a deadline! We can always come back and refactor the code later when we have more time, right?

Only you won't. You won't come back until you absolutely need to, and by that point, it'd probably be faster to rewrite it. If you work for somebody else, they're unlikely to let you go back and spend time "fixing" something that works perfectly well. That's especially true if you have a non-technical manager. Besides, you'll probably be onto your next deadline already and feeling time pressure all over again.

In the long run, good code is worth the time it takes. Often, it's worth it in the short run as well.

Make time to refactor, and not after the fact make it part of your development process. Do it up front, before it goes to test, because you won't come back. Proofread your code before you ever send out a build.

Or, in other words, code as if everyone was able to see and understand your code.

Addendum


There's another point I want to make. Not only should you code as if there were lots of eyes on your code, you should actually get lots of eyes on your code if you can. You will miss stuff even if you make proofreading and refactoring part of your development process. You will sometimes even miss stupid stuff. Case in point, I got an e-mail shortly after posting this from Brent Simmons of NetNewsWire fame. Brent very kindly took the time to proofread the code and pointed out one bug and several improvements that could be made.

Here are his suggestions:
  1. Return early if logLength < 1, so that the main functionality doesn't have to be indented.
  2. Return an autoreleased string, per Apple's coding conventions
  3. Return nil in the case of no log data, rather than a string that would have to be compared to determine if there was log data or not.
  4. Change the name of the char * and NSString variables to something slightly more meaningful. (Since the method is logForSomething, it returns a variable named log.)
I absolutely agree with every single one of these suggestions and am a little embarrassed about leaking the string, to be perfectly honest. Here's Brent's rewrite of my function that I plan to use in the book (with Brent's permission):

- (NSString *)logForOpenGLObject:(GLuint)object 
infoCallback:(GLInfoFunction)infoFunc
logFunc:(GLLogFunction)logFunc
{
GLint logLength = 0, charsWritten = 0;

infoFunc(object, GL_INFO_LOG_LENGTH, &logLength);
if (logLength < 1)
return nil;

char *logBytes = malloc(logLength);
logFunc(object, logLength, &charsWritten, logBytes);
NSString *log = [[[NSString alloc] initWithBytes:logBytes
length:logLength
encoding:NSUTF8StringEncoding
]
autorelease]
;
free(logBytes);
return log;
}


Thanks, Brent!


1 This may, of course, change if my tech reviewer finds an issue with it

Tropical Software Releases TopXNotes touch for iPhone and iPod touch

Tropical Software has just released TopXNotes for iPhone, iPad and iPod touch. TopXNotes supposed to be the first from companion product series, that the company has scheduled to release for Apple touch devices.
TopXNotes features include note creation and editing in landscape and portrait modes, emailing a note from TopXNotes touch, backup/restore to the device, clickable hot links, and note synchronization (NoteSync) with TopXNotes for Mac. Now you can create, edit, delete and keep notes in sync with your Mac’s notes.
TopXNotes touch works perfectly with Apple’s just released iOS 4 as well. And even more, TopXNotes touch even supports the new iOS 4 style spell checking. When combined with just released TopXNotes for Mac 1.6 customers can synchronize notes between one Mac and multiple devices running TopXNotes touch including iPhone, iPod touch and/or iPad.

Device Requirements:
iPhone and iPod touch
Requires iPhone OS 3.0 or later
10.8 MB

Pricing and Availability:
TopXNotes touch 1.0 is only $0.99 (USD) and available worldwide exclusively    through the App Store in the Productivity category

For more information click here: iTunes link

Sunday, June 27, 2010

WorldCard Mobile and WorldCard Contacts apps on your iPhone will make your life easier!


Most likely you are aware of Worldcard Mobile's existence and functionality, but wait a minute, have you heard something about the latest iPhone version of WorldCard Mobile and how it works together with WorldCard Contacts? If your answer is yes then let me just remind you and introduce those of you who haven’t learned about the product yet, to its capabilities.
With The latest iPhone Version of WorldCard Mobile, your business card is captured and recognized by taking a photo with your 3GS iPhone. Recognized data is sorted automatically by name, company, position, address, phone number, email address and other fields and added to your contact list.
Just point your camera at the card, take a picture, and WorldCard Mobile puts it into your address book.
With the help of OCR technology, information from the business card is saved as searchable text in the language you'll choose under the card's image.

But it is not all! For those who want to store actual business card images together with contacts, Penpower Inc., the creator of WorldCard Mobile, offers another app called WorldCard Contacts. This app serves for enhancing your ability to browse contacts in smart ways (custom groups, images, etc) and make phone calls/send SMS/ and Search Maps directly.
How this two apps work together?
Tap the WorldCard Contact icon to use OCR from Worldcard Mobile inside of Worldcard Contacts, take a card image and choose your desired language recognition to save this card info with image and text. WorldCard Mobile will sync with WorldCard Contacts to extract, store and place the card's info into an interactive directory.
                                                    Having both applications will make your life easier!

Friday, June 25, 2010

Group Text!- the easy way app for your iPhone

Redbits is offering to the iPhone users their just released app called Group Text 1.0! The easy way app for iPhone devices is available since today.
With Group Text! you’re able to send SMS to address book groups, to handpicked set of contacts as well as to custom distribution lists that don’t affect your groups. If you use the same text frequently, app gives you ability to create templates to send prompt SMS and save your precious time.

Feature Highlights:
  Easy and quick interface
  Use address book groups
  Handpick set of contacts from address book
  Create distribution lists from address book or
  manually entering recipients information
  Distribution lists are very useful if you have contacts
  with more than one phone number or if   you don’t
  want to create groups only to group text them
  Create message templates
  iPhone 4 retina display ready

Device Requirements:
 Compatible with iPhone
 Requires iOS 4.0 or later
 0.5 MB

Pricing and Availability:
Group Text! 1.0 is only $0.99 USD and available worldwide exclusively through the App Store in the Productivity category.

Thursday, June 24, 2010

Break World Yoga Record with your iPhone/iPad or iPod touch!

More then 10,000 people are gearing up to participate in world's largest Yoga event held by Flavor Pill. What's more is that it will actually be monitored by the team at the Guinness Book of World Records.
As most yoga practitioners in the country will not be able to make any of these events, Deepak Chopra and his yoga instructor Tara Stiles are offering a new app for the iPhone, iPad and iPod touch users called “Authentic Yoga with Deepak Chopra”. With this app people from all over the world have a chance to join the great event.
Just imagine you can be a part of this event no matter where you are at home, at work or somewhere else and all this is possible simply, with your iPhone, iPad or iPod touch.
You can practice several poses with Deepak and Tara no matter on what yoga level you are. Additionally, if you suffer from back pain or tight shoulders there are poses designed even for this propose.
The app includes video, images and audio instruction from both Tara and Deepak.
For the worldwide event, Signal Patterns (developer of the app, as well as many other psychological based mobile apps) together with Deepak Chopra are offering special reduced price $ 0.99 (USD) that will be valid from 22th of June till the end of the week. Every participant who will use the app will be tallied and sent for insertion to the Guinness Book of World Records.

Don't miss the chance to be part of the world's great event! Performance will start at 5:30 pm eastern time and run for an hour and a half.
Device Requirements:
* iPhone and iPod touch
* Requires iPhone OS 3.0 or later
* 9.6 MB

Pricing and Availability:
Authentic Yoga with Deepak Chopra 1.5 is only $0.99 USD and available worldwide exclusively through the App Store in the Healthcare & Fitness category.

Wednesday, June 23, 2010

Apple releases iBooks 1.1 update for iPhone, iPad and iPod touch

Glad to inform that with the release of new OS 4 Apple releases an updated version of their iBooks app for iPhone and iPod touch.
The latest version includes several additional features as page background color choice-you can use sepia or white, choice between left or fully justified text layouts and ability to increase the font size even larger. With this update Georgia is available as a new font as well.
iBooks 1.1 offers to the users bookmarks, ability to highlight passages and also note-taking capabilities. All above mentioned can stay in sync across your iPhone, iPad, and iPod touch, too.
iBooks 1.1 update is universal app for your iPhone / iPad and iPod touch, so hurry up and download now!

Herewith, Apple has made Winnie the Pooh available to download for free to iPhone users who install iBooks.

Device Requirements: iBooks requires iPhone OS 3.2 or later.
Price and availability: iBooks 1.1 is available now for free in the App Store.

Tuesday, June 22, 2010

DogBeMine app helps you choose and raise a dog!

Announcing the release of new app for animal lovers called Dog Be Mine 1.0. The app is developed by Animal instinct for iPhone, iPad and iPod touch. Dog Be Mine will provide dog lovers with all pet related information. If you want to adopt a puppy you have a big choice! App includes more then 200 dog breeds with pictures. Besides, you can learn about training tips, health care, get news and updates from the dog-loving community and many more with app’s feature guide to help.
Additionally, Dog Be Mine 1.0 offers search engine service, giving you access to maps and information about local services such as breeders, closest vets, kennels, and even pet friendly hotels. Search results are displayed with maps to the searched locations and can be added to your contact list for quick recall as well.
The possibilities include uploading pictures of your own dog from app’s photo gallery for other users to see.

Priced at $1, DogBeMine runs on the iPhone and iPod touch as well as on the iPad (though it hasn’t been optimized for that device).

Saturday, June 19, 2010

WWDC 2010 Post Mortem

WWDC. The Dubdub. Christmas in June.

If you've followed this blog for any length of time, you know Apple's annual developer conference is my absolute favorite week of the year, and it just seems to get better every year. For the days leading up to leaving for San Francisco, I'm like a kid on Christmas eve. I can't sleep from excitement and the time passes way too slowly.

Every year, there are less "must-see" technical sessions for me, personally. That was especially true this year because something like 60% of the attendees were first timers who haven't shipped their first app yet and the session schedule was designed accordingly, with quite a few beginner and intermediate level sessions. But WWDC is so much more than the sessions (and those come out on video anyway). Your first year or two attending, it's all about the sessions, but by this point for me, it's about the sessions that focus on new technologies, labs and, most importantly, a chance to catch up with people I only see once or twice a year. Well, it wasn't just new technology sessions. For obvious reasons, I also attended all of the OpenGL ES sessions this year, and they were great. They were much deeper technically than last year, and were much more focused on the OpenGL ES 2.0 programmable pipeline.

Even thought it was the same number of attendees as the last two years (5,200 attendees plus the various engineers and other staff), this year felt way busier than past years. Lines to get into sessions were often very long, and many sessions filled up. Some even filled up an overflow room. Although we've seen long lines for sessions going back to the introduction of the iPhone, it's never been like this year. Last year, for example, for the State of the Union addresses, I meandered into the overflow room ten minutes late and found a seat in one of several empty rows. This year, I sat on the floor of the overflow room for the overflow rooms. I guess that's good - people were serious about learning this year.

One negative aspect of the massive influx of newbs this year was a certain loss of etiquette. I've always been super impressed by the way my fellow WWDC geeks treat the staff and the facilities. I've never seen garbage left around or more than isolated cases of people being rude to the catering or cleaning staff. This year, unfortunately, that respect was somewhat lacking. During the keynote line, hundreds of people just left their litter laying around on the floor. It was really disgusting and I was embarrassed at that moment to be part of the group. And it didn't end with the keynote line, either, unfortunately. I saw many examples of people not bothering to pick up after themselves, or being rude to the staff. Even a few instance of people being rude to Apple engineers who were trying to help them with problems. I almost feel like I need to add a few items to my annual first timer's guide with things I had assumed any decent person would already know, like throw out your garbage, treat people with respect, and be nice to people who are trying to help you.

Let's be better next year, okay? Almost everybody I met or talked to seemed like super people, so I'm hoping this was just a one-time anomaly. I really, really would like it to be an isolated occurrence. Enough said on that topic.

Although the new iPhone 4 was the belle of the keynote ball, the real buzz at WWDC this year, as you probably know by now, was Xcode 4. For the first time in history, Apple has released the session videos to all registered developers for free, so if you haven't done so yet, you should go watch the Developer Tools State of the Union and the handful of Xcode 4 sessions. Apple's Developer Tools teams have been working really hard for quite a long time on this upcoming release, and even in the early preview state it's in, I already wish I could use it full-time. Fortunately, the Xcode team foresaw this and they made the project file format 100% backwards and forwards compatible between Xcode 3 and Xcode 4, so I can work in Xcode 4 then switch to Xcode 3 to do my ad hoc and release builds.

Honestly, one of my favorite parts of this particular WWDC was having the opportunity to buy a few rounds of drinks for some of the engineers who worked on Xcode 4. I'm not sure if those engineers have forgiven me yet, so I'm not going to call them out by name, but it's important to me during WWDC to show my appreciation to as many as I can of the people who make all the cool stuff I work with everyday. Steve Jobs gets a lot of credit, and rightly so, but he doesn't do it alone. It was really nice to see him call out some of the people who worked on iPhone 4 and iOS 4 during the keynote, but there are a lot of unsung heroes working at Apple, and most of them don't get a lot of recognition for teh awesome they bring. WWDC is the one week a year where we get to show our appreciation in person.

The User Experience lab appeared to be the biggest hit among the labs this year. Each morning, within minutes of the Moscone West doors opening up, there was a long line extending around the corner waiting for the UX lab to open. People waited in line literally for hours to get a UX review. I guess word got out this year about how good those reviews were. I know I saw several people raving about them last year. In general, I think people have really started to grok the fact that the labs represent an incredible opportunity to get questions answered by the people who really know the answers. If you're having a problem or an issue with a certain part of the system, likely you can find someone who actually works on that part of the system to answer your questions.

As for MartianCraft, we gave out all of our away team shirts pretty quickly this year. Sorry to those who wanted one but didn't get one. We way underestimated demand for the shirts and just didn't have enough with us to give them to everyone who wanted one. We'll be better prepared next year, and we're looking into making the shirts available online for anybody who's interested, but that probably won't happen until we've dug ourselves out from the hole that got created as a result of all three of us not working for a week.

Friday, June 18, 2010

First words: animals is most profitable app for your toddlers

Anyone who has a little family member will agree with toddler’s exceeded interest towards adult’s items, but phones are the first among them. Well, after rebellious entertainment with your phone, the percentage of keeping it’s previous look is under discussion. And how can man solve this problem when they are simply addicted and if it’s forbidden then it’s even more attractive for ones’s minds. But if you have an iPhone, then the problem is considered to be solved, as Learning Touch company has developed First Words: animals app for your iPhone and iPad touch.

First Words: animals app was specially created for your toddlers, making them smarter and cleverer. The developers had planned prior to make something profitable in addition to it’s challenging and entertaining character and it had worked.

First Words: animals offers great colored graphics, dozen animated animals, learning letters visually, by names, learn their spelling and how to match them. During the interaction game, kid has to match letters and put them together to make a word. While touching the letters they make sounds and if it’s spelled correctly child is hearing the whole word as well as watching the animal’s funny animation on the screen, giving it’s specific noise. For example if the word is lion than a little lion appears on the screen roaring attracting kid’s whole attention. As a result this makes child delighted, addicted and serves for the development of one’s mental skills.

In addition the touch interface of iPhone is easy for kid’s fingers to rule and the games simplicity enables him/her to play by themselves without adults help. Additional plus includes app’s accessibility for adults also and these information is approved by several videos spread through internet demonstrating parents interest and enthusiasm towards the game-play.

Besides, Note that First Words: animals app’s iPad version has also been released and is available for iPad users.

The price of the app is  $1.99 (USD)

Apple launches 'Find My iPhone' app to find your lost or stolen treasure

Apple’s new iPhone app called Find My iPhone, had just been added to iTunes app store. The app is free and can be installed on iOS 3.1.3 or later devices.

Find My iPhone app works in case your iPhone, iPad or iPod touch will be lost or stolen. Install Find My iPhone app on other iPhone, iPad or iPod touch (surely you can’t do it on the one that is lost or stolen), family member's / friend’s and the app will find your iPhone/iPad/iPod touch, should it be stolen or lost.

You can login with MobileMe account to map your missing item and lock the device or delete all the data. After 15 minutes of inactivity, the app signs your log-in details out.

The App can only be installed on iOS 3.1.3 or later devices and is available now for free.

The first Ultra Slim Silicone case for iPhone 4 will be shipped on 4th of July


CAZE is announcing the manufacture of it’s first Ultra Slim Silicone case for iPhone 4. New ultra slim case is available in Black, Grey, Pink, Purple, Red and is made from 100% silicone. It provides iPhone with impact protection, an anti-dust treatment and access to all ports and controls.
Moreover this product is made from TPU and Characterized by resistant to chemical, fire and tearing and is lightweight.

Slim case brings good protection to the chrome edges, front/ back and LED flash of an iPhone and besides, serves for fashionable outlook of iPhone 4.
CAZE silicone case for iPhone 4 is suitable for those who don’t want to add extra bulky to an iPhone.
Ultra Slim Silicone case for iPhone 4 comes with two screen protectors and a wallet size iPhone stand. It will be for sale on 24th of June, the day Apple iPhone 4 is planned to be released.

Thursday, June 17, 2010

Grand Slam!

Apple has set a new record for WWDC video avialability this year, getting them out not even a week after the event ended. Amazing.

Even more amazing, they're not selling them this year. Registered developers can access them for free. Want to know what all the fuss is about with Xcode 4? Go watch the videos.

Smart Case is Sleek Protection for Apple iPhone 4

WaterField Designs is planning to release new Smart Case specially designed for iPhone 4 on 9th of July 2010. New Smart Case offers six new colors and protective leather sides to the users. WaterField Designs manufactures computer bags and cases for digital gear and is leading company in this field. All products are made locally in San Francisco and new custom-sized cases can be offered quickly.

The iPhone 4 Smart Case:
 * Unique, multi-layered padding system with a high-impact, rigid insert to protect screen
 * Naturally tanned, distressed, brown leather flanks each side for an easy grip
 * Protective Ultrasuede(R) scratch-free liner cleans iPhone 4 as it is inserted/extracted
 * Textured, highly water-resistant outer nylon material
 * All internal stitching and thin design for a sleek and smooth look
 * Six color options let users mix and match with their Muzetto and iPad Smart Case

Three functional style options offer carrying options:
 * Slip style: for stashing in a pocket or bag
 * Flap style: for attaching to a bag or backpack strap for quick access
 * Clip style: for clipping to a belt or bag

Pricing and Availability:
 The iPhone 4 Smart Case – Three styles: Slip $39, Flap, $45 and Clip $45 (USD).
 Six colors: Black, Copper, Pine, Green, Flame or Pearl.
 Available now for pre-order from company website. Shipping July 9, 2010.

Apple releases iTunes 9.2

Announcing that Apple has released iTunes 9.2 for iPhone, iPod touch, and iPad. With this update Apple offers several advantages to the users, including media update and syncing software.

iTunes 9.2 includes several features that are compatible with iOS 4 and iPhone 4 releasing next week. The update proposes book syncing and reading with an iPhone or iPod touch running iBooks 1.1, and support for organizing and syncing PDF documents as books.

New Folders feature in iOS 4 that implies letting users to organize apps is supported by iTunes 9.2 as well. For example, if you synced a device running a build of iOS 4 with a previous iTunes version, your folders would be blown away and all apps would wind up spread out across home screen pages. iTunes 9.2 provides much faster backups during syncing an iPhone or iPod touch when running iOS 4, not previous iOS versions. Additionally an album artwork should appear more quickly when exploring your library.

iTunes 9.2 is available now via Software Update and at Apple’s site for both Macs and PCs.

Wednesday, June 16, 2010

Delayed Mirror 1.0 Gives Real Working Mirror to iPhone users

Happy to inform the release of Delayed Mirror 1.0 for iPhone users, developed by WFTSoft. Delayed Mirror 1.0 gives the users actual image of themselves instead of framed black simple screen offered by other apps. Now you’re able to see your reflection without turning your device back or forward. Watch and check your hair or makeup, even back of your head with a single tap on your screen.

Besides giving the true image of themselves, Delayed Mirror 1.0  records a video. Additional features include editing mirror session time settings, selecting manual or automatic mode. Major from above list of capabilities is the ability to recall your image from previous sessions. Want to compare your current appearance to your look earlier in the day? No problem, Delayed Mirror 1.0 will comfort you in this regard.

Delayed Mirror 1.0 features include:
   Easy to use controls
   One touch image activation
   Last image recall
   Manual mode activation
   Automatic mode activation
   Customize desired length of mirror session

Device Requirements:
   iPhone 2G, 3G, 3GS
   Requires iPhone OS 3.1 or later
   1.1 MB

Pricing and Availability:
Delayed Mirror 1.0 is only $1.99 (USD) and available worldwide exclusively through the App Store in the Lifestyles and Utilities categories.