Sugar Rush is now free

Sugar Rush 1.1 is now available and it’s now free. Current users who upgrade from version 1.0.5 won’t see ads, but new users will see a small unobtrusive ad when no special powers are in effect. If you prefer, you can purchase an upgrade that removes the add. Premium items will be added for sale in the future. You can now buy donuts, which give you a big energy boost. Soon we hope to have a Halloween candy pack available.

Links for 2011-8-19 through 2011-9-4

Links for 2011-8-19 through 2011-9-4:

  • A Jobs Program In America This is what Obama needs to do. Of course the Republicans won't allow it.
  • FoundSF San Francisco history.
  • Old S.F. Browse old photos of San Francisco by date & location.
  • productivity – What is your most productive shortcut with Vim? – Stack Overflow Nice overview of Vi commands.
  • What they’re "protecting" us from – Anil Dash It's a choice whether you, or anyone else, wants to accept the falsehood that liberal values are somehow in contradiction with business success at a global scale. Indeed, it would seem that many who claim to be pro-business are trying to "save" us from exactly the inclusive, creative, tolerant values that have made America's most successful company possible. I side with the makers, the creators, and the inventors, and it's about time that the pack of clamoring would-be politicians be put on the defensive for attacking the values of those of us on this side.

Posted by Postilicious

Sugar Rush 1.1 Submitted

I’ve submitted Sugar Rush 1.1, which is a major update.

Our sales have been pretty low, but our free promotions, including the one last weekend, have been wildly successful (18,000 downloads in a single day). Therefore, I’ve made the difficult decision to move to a “Freemium” model, and I’ve made an effort to avoid pissing off existing customers.

Here’s the deal: Nothing will change for existing customers. If you upgrade from 1.0.5, you won’t see any ads, although you will still be able to purchase other premium items. New customers will see ads, but will have the option to pay $0.99 to get rid of the ads. The ads will work the same way they do in the current free version (which will be removed from sale), occupying the bottom of the screen when no bonus power is in effect. Unlike the current free version, there will be no limitation to the game.

You will also be able to purchase additional premium content. The first new item is donuts, which give you 3x the jump boost of cupcakes and occur much more frequently. You just have to buy it once and it will remain available. We will also be offering holiday themed packages and other items in the future.

Note that version 1.1 will require iOS 4.0. Anyone running iOS 3.x will need to continue using 1.0.5.

Links for 2011-8-9 through 2011-8-19

Links for 2011-8-9 through 2011-8-19:

  • What they’re "protecting" us from – Anil Dash It's a choice whether you, or anyone else, wants to accept the falsehood that liberal values are somehow in contradiction with business success at a global scale. Indeed, it would seem that many who claim to be pro-business are trying to "save" us from exactly the inclusive, creative, tolerant values that have made America's most successful company possible. I side with the makers, the creators, and the inventors, and it's about time that the pack of clamoring would-be politicians be put on the defensive for attacking the values of those of us on this side.
  • Ex-Health Insurance Executive: Rick Scott HMO Debacle Goes Against His "Obamacare" Rhetoric – Broward/Palm Beach News – The Daily Pulp Wendell Potter — a former health care insurance executive who most recently left his post as the head of communications for CIGNA — has been following up on the Pulp's post on Florida's newest HMO policy for state employees, and agrees that the decision to allow just one HMO provider per county is a bit strange.

    The way Potter sees it, Gov. Rick Scott is now "doing exactly what he falsely claimed federal reform would do."

    Now working as a senior analyst at the Center for Public Integrity, Potter says Scott used to be at the forefront in the crusade against the so-called "Obamacare," and even though the governor wasn't dropping facts about the new program, he's doing exactly what he led people to believe would happen — limit competition.

  • Firicat.com online collaborative Wolof dictionary
  • 21 ways to monetize your game – blog – 36peas.com
  • Kuriositas: The Secret Cities of Yemen

Posted by Postilicious

Distributed Objects are easier than you think

For my current project, I had to implement interprocess communication between a background process and an application. In the past, I would probably use AppleEvents or even CFMessage, but this tech note advises against using those techniques.

After some investigation, I found that Distributed Objects is the easiest & cleanest way to do it.

Distributed Objects works its magic with a set of proxy classes that pose as the actual object which exists in the other application. Here’s how to use it.

The object you want to share can be any ordinary object, like this one:

@interface MyObject: NSObject
- (int)myMethod;
@end

@implementation MyObject
- (int)myMethod {
	return 42;
}
@end

On the server side, you create a connection and vend that object using NSConnection’s setRootObject: method.

#define SOCK_NAME "/var/tmp/com.example.socketname"

   // make sure socket file doesn't exist, or we'll fail
    unlink(SOCK_NAME);

    // create an AF_UNIX socket address
    struct sockaddr_un socketAddress;
    bzero(&socketAddress,sizeof(socketAddress));
    socketAddress.sun_family = AF_UNIX;
    strcpy(socketAddress.sun_path,SOCK_NAME);
    socketAddress.sun_len = SUN_LEN(&socketAddress);
    NSData* socketAddressData = [NSData dataWithBytes:&socketAddress length: sizeof(socketAddress)];

    NSPort * theMessagePort = [[NSSocketPort alloc] initWithProtocolFamily: AF_UNIX
                                                     socketType: SOCK_STREAM
                                                       protocol: 0
                                                        address: socketAddressData];

    NSConnection * theConnection = [[NSConnection alloc] initWithReceivePort: theMessagePort  sendPort: nil];

    // create our object to be shared
    theObject = [[MyObject alloc] init];
    [theConnection setRootObject: theObject];

In the client application, you create a remote connection and ask for a proxy object. You then use that proxy object as if it was the actual object.

    // create an AF_UNIX socket address
    struct sockaddr_un socketAddress;
    bzero(&socketAddress,sizeof(socketAddress));
    socketAddress.sun_family = AF_UNIX;
    strcpy(socketAddress.sun_path,SOCK_NAME);
    socketAddress.sun_len = SUN_LEN(&socketAddress);
    NSData* socketAddressData = [NSData dataWithBytes:&socketAddress length: sizeof(socketAddress)];

    // Create a message handler socket and add it to our runloop
    NSPort * theMessagePort = [[NSSocketPort alloc] initRemoteWithProtocolFamily: AF_UNIX
                                                           socketType: SOCK_STREAM
                                                             protocol: 0
                                                              address: socketAddressData];

    NSConnection * theConnection = [[NSConnection alloc] initWithReceivePort: nil sendPort: theMessagePort];

    // this is actually a NSDistantObject which acts as a proxy to our actual object
    MyObject *anObject = (MyObject*)[theConnection rootProxy];

    // call a method on the remote object
    int result = [anObject myMethod];

What really happens when you call the method in the client is that it gets packaged as a NSInvocation, which gets sent over the connection and is executed by the server process.

Links for 2011-8-2 through 2011-8-9

Links for 2011-8-2 through 2011-8-9:

Posted by Postilicious

Credibility, Chutzpah and Debt

Via Paul Krugman:

The truth is that as far as the straight economics goes, America’s long-run fiscal problems shouldn’t be all that hard to fix. It’s true that an aging population and rising health care costs will, under current policies, push spending up faster than tax receipts. But the United States has far higher health costs than any other advanced country, and very low taxes by international standards. If we could move even part way toward international norms on both these fronts, our budget problems would be solved.

So why can’t we do that? Because we have a powerful political movement in this country that screamed “death panels” in the face of modest efforts to use Medicare funds more effectively, and preferred to risk financial catastrophe rather than agree to even a penny in additional revenues.

The real question facing America, even in purely fiscal terms, isn’t whether we’ll trim a trillion here or a trillion there from deficits. It is whether the extremists now blocking any kind of responsible policy can be defeated and marginalized.

It’s been proven beyond a doubt that “trickle down” simply doesn’t work. Not a single job has been created by lowering taxes. The top level tax break recipients don’t use the extra money to hire new workers; they hoard it.

We need to finally put an end to this failed policy. Raise taxes on corporations and the top 1%. Spend more to invest in new technologies that will create jobs, which in turn will bring in more revenue. This is just plain common sense, something the Republicans & Tea Partiers lack.

Links for 2011-7-14 through 2011-7-31

Links for 2011-7-14 through 2011-7-31:

  • Cocos2D Tutorial – Dynamically Coloring Sprites [Brandon Trebitowski, brandontreb.com] Have you ever seen a game (such as Tiny Tower) that contains similar sprites that only vary by certain attributes (coloring, shading, accessories, etc…)? I would often wonder how long it would take the artists to create each permutation of these sprites. After discovering that you can call a method on a CCSprite called setColor, I realized how most of this customization is done in code.
  • Muddying the Budget Waters With Social Security Many people misunderstand how the program operates. Payroll taxes stream into the trust fund that is used to pay current retirees’ benefits. When there is a surplus, that money is invested in a special type of Treasury bond that pays interest to the trust fund. At the end of last year, the trust fund had about $2.6 trillion. And though last year was the first year since 1983 that the fund paid out more than it received in tax revenue, it still continued to grow because of the interest accrued — and it is estimated to continue to grow through 2022.

    Since the money in the trust fund is held in Treasury securities, taxes collected are essentially being lent to the federal government to pay for whatever it wants (and this allows the government to borrow less from the public).

  • The Cult of Centricism We have a crisis in which the right is making insane demands, while the president and Democrats in Congress are bending over backward to be accommodating — offering plans that are all spending cuts and no taxes, plans that are far to the right of public opinion.

    So what do most news reports say? They portray it as a situation in which both sides are equally partisan, equally intransigent — because news reports always do that. And we have influential pundits calling out for a new centrist party, a new centrist president, to get us away from the evils of partisanship.

    The reality, of course, is that we already have a centrist president — actually a moderate conservative president.

  • Revamp of a game [Yuchen Wang, ClingMarks]
  • Cocos2D and ARC [Jerrod Putman, Tiny Tim Games]
  • How To Use Custom Classes With Core Data Without Fear [Doug Sjoquist , Sunetos]
  • User Testing in the Wild: Joe’s First Computer Encounter « Boriss’ Blog
  • Make a backup copy of the MacBook Air USB Software Reinstall Drive | TUAW – The Unofficial Apple Weblog Since it doesn't come with an optical drive, giving MacBook Air buyers a DVD of the operating system wouldn't be very helpful. That's why Apple's lightest laptop comes with the USB Software Reinstall Drive — a very small white USB drive. Sometimes USB flash drives are referred to as "Thumb Drives," but this one is more like the size of a baby's finger.

Posted by Postilicious

Links for 2011-6-6 through 2011-7-13

Links for 2011-6-6 through 2011-7-13:

Posted by Postilicious