Postage Video-Product Decisions

July 15th, 2010 by liz

On October 9th, 2009 RogueSheep was approached to shoot a video by the production company Tipsy Pix and their partner Boston-based NKP Media. NKP Media is one of the top video suppliers to the big textbook publishers in the college market. The video was being shot for Cengage Learning’s best-selling textbook on marketing. The chapter in which we were asked to be a video component was Product Decisions, and we were chosen due to the fact that earlier in 2009 our iPhone application “Postage” had won the coveted Apple Design Award. Postage was a gift that just kept giving. We agreed to be a part of the video.

With our Seattle office under construction the morning of the shoot, the producers were creative and took it outside to use the scenic skyline as a backdrop. It was a perfect way to start the day. Chris Parrish and Brad Ellis were enthusiastic to talk about their product decisions, concepts and show off Postage to a few locals during the short clip. It was a gratifying experience to demonstrate the app in the wake of the huge splash it had made. The video was shot in HD and is slated to be shown all over the country at different universities in marketing classes during the 2010/2011 school year.

Tipsy Pix has produced hundreds of succinct educational documentaries and case studies of many well-known and upwardly-mobile companies. The condensed list includes: Vans, Kodak, Organic Valley, Method, Honda and Raleigh Bicycles. We were proud to join that list and enthusiastic to see the final footage.

It was a lot of fun for the company to get involved with this shoot. It is so rewarding to see something you did some of your best work on spread itself to unexpected venues. We will continue to make top-notch products with a design flair people seem to appreciate. We hope you will enjoy the video. Thank you for making Postage the success it has become!

Click here to watch the video about Postage!!!

Friend us on Facebook (Postage for iPhone) or on Twitter (@postageapp) to keep up with all the latest news, free giveaways and information on upcoming products.

Tags:

Leave A Comment »

Postage Turns One

May 17th, 2010 by liz

One year old!? Yes, it has already been one year since the release of Postage for iPhone. It has been a special product for us here at RogueSheep. Postage brought out the best in the whole team;  it spotlighted our then relatively new team member Brad Ellis’ design skills and allowed our engineers to shine while creating a much-loved product. If you asked “Does doing what you love pay off?”, we’d say, “Yes it does!” Postage won a prestigious Apple Design Award right out of the chute. As it was our first iPhone application, it was a huge compliment to our far-reaching standards. After receiving a 5-Mouse rating from Macworld magazine, we were further honored to win a Macworld App Gem award that included a booth in San Francisco at Macworld 2010.

Postage continues to make us proud and amaze us, with daily sales around the world! It provides people with a tool to share their lives with their loved ones. We are happy to have some small part in our users’ joy. If you are reading this and have not yet tried Postage, we invite you to get it now and let us know what you think. If you are a long-time user, we thank you for your patronage and support. We will continue to make great products that we hope you all enjoy!

Postage Birthday Postcard

Get Postage ~ Postcards from the iTunes Store today to enjoy the new birthday design in honor of Postage’s 1st birthday.

RogueSheep Buttons

Please join us on FaceBook at Postage for iPhone.  For a limited time you can get a FREE RogueSheep button! Go to the “Contact Developer” link in the lower right and send us your address and we will send it to you in the mail! Show everyone that you are not just some sheep, you are a RogueSheep!

Thanks again for a great year!

– Liz

1 Comment »

Acorn and JSTalk

March 27th, 2010 by Chris

Last month when planning for exhibiting our iPhone apps at Macworld Expo, we decided to use the fabulous services at MOO to create promotional materials to hand out at the show. We wanted to have a a simple way for attendees to take something with them with as a reminder of our iPhone apps. We also needed a method to hand out iTunes App Store promotional codes that could be used to redeem copies after the attendees went home.

Moo’s MiniCards were very affordable and sized just right for our purposes:

Macworld MooCards Blog.png

They are sized small enough that its not a burden to carry around the conference. Not everyone at Macworld wants to load up a bag full of chotskies, schwag and product materials! We found the MiniCard’s appearance and quality really attracted the attention of attendees. Also, critical to our needs each card can have one side that con be printed with a separate image. Perfect for making individual cards each have a unique promo code.

Apple allots developers 50 promotional codes per version of their application. In total we had four versions of Postage plus, SnoGlobe and RoseGlobe that we wanted to make a full set of 50 moo cards with a promo code on the back for. That was 300 unique images we needed to make and upload! Certainly a tedious process at best.

Lucky for us, we had some automation magic in our toolchest thanks to Flying Meat’s image editor Acorn and Gus’s excellent new technology project JSTalk. While there are plenty of Mac OS graphics tools that support AppleScript for automation, I have to be completely honest here. Every time I try to use AppleScript I find myself struggling with the syntax and terminology. Frequently I just give up and do whatever I was trying to accomplish manually after banging my head on the keyboard for a few hours.

JSTalk exposes Cocoa frameworks and applications for scripting and automation using JavaScript. It also performs some preprocessor shenanigans so you can write JavaScript that looks a lot like Objective-C. Being an Objective-C programmer for a good number of years now, I find this absolutely charming. I don’t have to bootstrap myself into learning a new language, especially not some crazy english-language hybrid that demoralizes me for weeks at time after it beats me over the head with my apparent lack of basic English language literacy.

While Acorn has built-in support for JSTalk, Gus has made it easy for other applications to add support as well. JSTalk also allows other applications without support to be automated using the Script Bridge.

To create the backs for our MiniCards, we started with a the image of the layout of the back of the card. Brad left an empty spot for the text :

PostageMooCardsBack.png

Then I created a JSTalk script to drive Acorn. First the script reads in the promo codes from the file that iTunes Connect creates for you when you generate promo codes. Then for each of the codes, the script opens our layout image, creates a new text layer with the promo code and styles it properly. Finally, it saves the newly created image with a proper name.

Here is what the script looks like :

var acorn = JSTalk.application("Acorn");

var codes = [NSString stringWithContentsOfFile:
                @"/Users/twenty3/Desktop/SnoGlobePromoCodes.txt"];
var lines = [codes componentsSeparatedByCharactersInSet:
                [NSCharacterSet newlineCharacterSet]];

var sourceFilePath = "/Users/twenty3/Desktop/"
var sourceFileName = "SnoGlobeMooCardsBack";
var sourceFileExtension = ".png";
var destinationFolder = "SnoGlobeMooBacks/";

for (i=0; i<[lines length]; i++)
{
    var doc = acorn.open(sourceFilePath+sourceFileName+sourceFileExtension);

    var layer = doc.layers()[0];
    var wc = doc.windowController();

    var shapeLayer = [wc addNewShapeLayer:nil];

    var textArea = [shapeLayer addTextWithBounds:NSMakeRect(526, 106, 264, 40)];

    var promoCodeText   = [[NSMutableAttributedString alloc]
                            initWithString:[lines objectAtIndex:i]];
    var promoCodeFont   = [NSFont fontWithName:@"Menlo-Bold" size:30];
    var promoCodeColor  = [NSColor whiteColor];
    var promoStyle      = [[NSMutableParagraphStyle defaultParagraphStyle]
                            mutableCopyWithZone:NSDefaultMallocZone];

    promoStyle.setAlignment(NSCenterTextAlignment);

    var promoCodeAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                promoCodeFont, NSFontAttributeName,
                                promoCodeColor, NSForegroundColorAttributeName,
                                nil ];

    [promoCodeText setAttributes:promoCodeAttributes
                range:NSMakeRange(0,[promoCodeText length])];
   
    [textArea setContents: promoCodeText];
   
    doc.dataOfType("public.png").writeToFile(
            sourceFilePath + destinationFolder +
            sourceFileName + i + sourceFileExtension );
    doc.close();
}

[acorn activate];

Now, I got a little bi-polar there going back and forth between Objective-C style brackets and plain ol’ JavaScript style function calls. You can use whatever syntax makes the most sense to you personally though.

And here is a sample of one of the generated images:

PostageMooCardsBack0.png

Using this technique we generated all 300 images in something like 10 minutes. Add a little time to that to create the script and it added up to a whole lot of time saved. Plus, it was way more fun than the copy/paste dance it would have taken to do this by hand.

Count me in as a fan of JSTalk. Its such a cool technology and Gus has been kind enough to develop and distribute it completely free of charge! If you develop Mac apps you should think about dropping in support for JSTalk. If you have the need to do some automated image manipulation or creation, Acorn + JSTalk may be the perfect tool to tackle your problem.

2 Comments »

Postage Spring Cleaning Sale

March 24th, 2010 by Chris

We’re excited about the Northern Hemisphere’s move to spring here at RogueSheep. While getting our clocks adjusted for daylight savings time and packing away the winter wool, we realized we’d love to pass on our excitement for the season to our fans and customers. What better way to do that than a sale?

Postage Spring Cleaning Sale

For a limited time our premiere iPhone postcard application, Postage, is available for 60% off its normal price. That’s just $1.99 in the U.S. App Store!

But that’s not all. Our seasonal editions of Postage, each themed for a specific holiday, will be completely free. That’s right, a whopping ZERO dollars! Take Valentine ~ Postage, Halloween ~ Postage and Holiday ~ Postage for a test drive and upgrade to the full complement of over 80 postcard designs in the premium version before this sale ends.

If you’ve been sitting on the fence, waiting to decide if Postage is right for you, now is the time. Don’t fool around though, on April 1st all the applications in the Postage suite will return to their normal prices. Its not often you’ll find an award winning application available for so little. Head on over to the iTunes App Store and grab Postage now!

SpringClean.png

Comments Off

An enhancement for UIAlertView

February 19th, 2010 by Jeff

I like objective-c protocols, and I am a fan of the interface oriented designs that it allows for. But, sometimes the indirection of using a selector with a defined signature just works better, and the problem is that UIAlertView does not take a selector. Instead, UIAlertView defines a protocol, UIAlertViewDelegate, that the alert’s delegate adopts to receive notification of the user intent. To be fair, UIAlertView communicates a bit more information back to it’s delegate than the target of an NSAlert, and the UIAlertViewDelegate protocol does a fine job achieving that goal. 99% of the time, however, I want to show an alert and have it call my named selector when it is done. To that end, I finally busted out the admittedly tiny class that does the job.

Now in my client code I show an alert like this:


RSAlert* alert =
    [[RSAlert alloc] initWithTitle: @"Title"
                           message: @"Message!"
                            target: self
                          selector: @selector(dismissedAlert:buttonIndex:)
                 cancelButtonTitle: @"OK"
                 otherButtonTitles: nil];

and handle the result with a selector, similar to NSAlert:


- (void) dismissedAlert: (RSAlert*) alert buttonIndex: (NSInteger) buttonIndex
{
    NSLog(@"dismissedStartupAlert with buttonIndex: %d", buttonIndex);
   
    [alert autorelease];
}

I realize this is an infinitesimally small annoyance, but sometimes it’s the little things that keep us happy.

RSAlert.h


#import

@interface RSAlert : NSObject
{
    UIAlertView*    alertView_;
    id              target_;
    SEL             selector_;
}

- (id)initWithTitle: (NSString*) title
            message: (NSString*) message
             target: (id) target
           selector: (SEL) selector
  cancelButtonTitle: (NSString*) cancelButtonTitle
  otherButtonTitles: (NSString*) otherButtonTitles, ...;

- (void) show;

@end

RSAlert.m


#import "RSAlert.h"

@implementation RSAlert

- (id)initWithTitle: (NSString*) title
            message: (NSString*) message
             target: (id) target
           selector: (SEL) selector
  cancelButtonTitle: (NSString*) cancelButtonTitle
  otherButtonTitles: (NSString*) otherButtonTitles, ...;
{
    self = [super init];
   
    if ( self )
    {
        target_     = [target retain];
        selector_   = selector;
        alertView_  = [[UIAlertView alloc] initWithTitle: title
                                                 message: message
                                                delegate: self
                                       cancelButtonTitle: cancelButtonTitle
                                       otherButtonTitles: nil];
   
        if ( otherButtonTitles )
        {
            va_list argList;
            id anArg;
           
            [alertView_ addButtonWithTitle: otherButtonTitles];
           
            va_start(argList, otherButtonTitles);
           
            while ( anArg = va_arg(argList, id) )
            {
                [alertView_ addButtonWithTitle: anArg];
            }
           
            va_end(argList);
        }
    }
   
    return self;
}

- (void) dealloc
{
    [target_ release];
    [alertView_ release];
    [super dealloc];
}

- (void) show
{
    [alertView_ show];
}

- (void)       alertView: (UIAlertView*) alertView
    clickedButtonAtIndex: (NSInteger) buttonIndex
{
    // Do nothing
}

- (void) alertViewCancel: (UIAlertView*) alertView
{  
    [target_ performSelector: selector_
                  withObject: self
                  withObject: (id) 0];
}

- (void) willPresentAlertView: (UIAlertView*) alertView
{
    // Do nothing
}

- (void)didPresentAlertView: (UIAlertView*) alertView
{
    // Do nothing
}

- (void)             alertView: (UIAlertView*) alertView
    willDismissWithButtonIndex: (NSInteger) buttonIndex
{
    // Do nothing
}

- (void)            alertView: (UIAlertView*) alertView
    didDismissWithButtonIndex: (NSInteger) buttonIndex
{
    [target_ performSelector: selector_
                  withObject: self
                  withObject: (id) buttonIndex];
}

@end

Leave A Comment »

RogueSheep at Macworld 2010

February 9th, 2010 by Chris

Just a reminder that we will be exhibiting Postage and all our iPhone apps at Macworld Expo 2010 in just a few days. If you are planning on attending, be sure to look for us in the Mobile Application Showcase in the expo hall. We’ll be giving out promo codes and some other cool schwag including buttons, and these adorable MOO cards:

Macworld MooCards Blog.png

If you are not yet planning to attend Macworld 2010, there is still time! It looks like some great events are planned this year, including a special iPad event where Macworld editors will have an iPad on hand to show off. There are also a ton of interesting and entertaining speakersthis year including, filmmaker Kevin Smith, the legendary Guy Kawasaki and the cranky, but lovable John Gruber of Daring Fireball.

The Expo takes place from February 11-13 at the Moscone Center in San Francisco. We have a number of free exhibit hall passes to give away. If you are interested, send us an email here : macworld2010@roguesheep.com

Comments Off

Brad Speaking at 360|iDev San Jose in April

February 2nd, 2010 by brad

Brad here. The Designer Sheep. I’m going to be speaking at 360|iDev San Jose along with Dave Wiskus in April. Our talk is entitled “Core Elegance” and we’ll be talking about how to think, look, and do like a mobile app designer should.  We’ve got a kick ass presentation lined up, should be a good time.

In commemoration of the event, I’ve created a wallpaper.  Its a Möbius Strip, a shape with one side.  Simple in concept, beautiful in presentation. Check it out here.

Also, you can use promo code “CountingSheep” during registration to save 20%.

Leave A Comment »

Two Apps, one Girl

January 29th, 2010 by Chris

We’ve caught the love bug here at RS HQ and have two great new iPhone applications available in the store this week.

RoseGlobe

RoseGlobe is a romance-themed version of the SnoGlobe application we released last December. RoseGlobe is just beautiful and every bit as mesmerizing to play with as SnoGlobe. Be sure to check out the demo video that Brad created at the product website. It’s almost as pretty as the app itself. I think he is going to create a blog post soon to talk about how he worked the magic to motion capture the iPhone to create the animated phone in the short.

Valentine ~ Postage

We have also created a newly themed edition of Postage for the upcoming holiday next month. Valentine ~ Postage has 14 love inspired postcard designs, one for each day of February leading up to Valentine’s Day. Grab it and send your sweetheart a special little message every day next month. I guarantee it will win you some big relationship points!

Postage ~ Postcards

Finally, we have also updated the premium edition of Postage with several of the new postcard designs form Valentine ~ Postage filling out the love category with ten total designs. Be sure to update if you haven’t done it yet.

Comments Off