Jake Behrens |
I'm a Software Engineer. I help developers make amazing software. |
Ok people, I know we’re a little over-excited to figure out new things sometimes. Sometimes it’s just re-implementing a cool new feature someone else did. But the line needs to be drawn at stealing outright, not to mention encouraging others to do the same.
I read this article today about how to implement Loren Brichter’s Pull-to-Reload feature in Tweetie 2 and was enjoying the article until this WTF quote:
“The final touch is to steal the appropriate wav files from the Tweetie 2 IPA and play them at the correct places in the flow. For sound effects I like to use the SoundEffect wrapper class that can be found in the Apple samples. In case you don’t yet know, you can simply rename a .IPA file to .ZIP and decompress the bundle. Right-Click “Reveal Package Contents” and look for the wav files. Turns out Tweetie 2 only use 3 and all of them belong to the refresh table view, so I grabbed them all.”
Are you kidding me? Just like that, steal the sounds. Why not take the graphics? Hell…why not just steal the app. Is this where we’re going devs?
I just think it’s plain wrong. Make your own sounds modeled off the existing ones if you have to, license your own, but seriously, don’t steal them! We’re all developers trying to make something cool and trying to make a living at it. This is why we do it. We are passionate. How the hell can we lift each other up if all we do is break each other down?
He says in the article that he bought both versions and that he knows Loren makes quality…excuse me, that $2.99 didn’t give you a license to sounds or graphics in the app.
Maybe I’m too upset about it, but I really don’t think Loren would be like, “Cool!” about it. And I know for a fact that other people like Tapbots have gone to great lengths to point out devs that are blatantly ripping off their graphics and sounds from their apps.
In conclusion, if you want to make something cool, make it yourself. Stealing from other apps is just plain weak.
Two days ago I was contacted by a client of mine saying that Apple had contacted them about their app that was in review. As most of you are thinking, my first thought was, “crap…what’d they reject?” but much to my surprise it wasn’t a rejection. It should have been. I can say all I want about philosophies on the App Store process in general, but they would have been right to reject it as it broke their terms (unknowingly to me at the time).
Apple called my client and said two things were holding it up, one was using an outdated version of Three20 that made private API calls and the other was some marketing speak that they wanted altered for clarification.
They told my client that after the changes were made to the app: re-submit it and email them, so they could put it up for review immediately instead of going back into the queue (wow).
I’m left with a few thoughts from this.
1. They called. They didn’t have to do that. At all. They could have rejected it and we were at fault for using code that makes private API calls.
2. This shows that they’re listening. They are hearing the talk from developers and are starting to take more time to care and feed us. That’s huge as far as I’m concerned.
So you can whine and cry about the process in general, but for the volume of submissions that they have, taking that little bit of time to reach out means a lot.
I’ve heard so much negativity to the App Store process lately that I just want to remind everyone that they’re adapting and listening to us even when we think they’re not. And without them making the incredible device that the iPhone is in the first place, many of us wouldn’t even have the jobs we have and love right now.
At the moment, my favorite Mac/iPhone dev blog is Jeff Lamarche’s blog. He almost always has something repost-worthy and lately he has had something that applies to my current projects in almost every post.
So what’s your favorite iPhone/Mac dev blog at the moment?
This post by Jeff Lamarche has changed the way I will do most of my UITableViews going forward. Life changing.
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
NSInvocationOperation *op = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(parseXML) object:nil];
[queue addOperation:op];
[op release];
Holy crap, this trick is awesome when you turn it into an Automator application.
Core Animation debugging with Color Blended Layers can be a pain because you always have to use a device…until now! Follow the title link…
Came up again today. Remember…if you’re using an MKMapView and you have:
mapView.delegate = self;
There is a bug in the MapKit framework so you have to put this in your dealloc method before you release mapView:
mapView.delegate = nil;
If you don’t, it can throw an EXC_BAD_ACCESS when mapView has been released and not all map tiles have been downloaded and loaded yet.