Snow Leopard for developers

August 28, 2009

Today is Snow Leopard day, and unlike many other developers I’ve waited to buy it in stores instead of installing an ADC development seed. This means I’ve been mostly in the dark about any API changes or new developer tools in 10.6, aside from what I’ve managed to coax out of the guys at the local Syracuse CocoaHeads meetings.

To give myself something to do while waiting for my pre-install backup to finish, I’m going to update this post on any good articles or write-ups on what’s new in Snow Leopard for developers. If you’ve written or seen anything that I should include here, please leave a comment!

  • Tim Wood gives a great roundup of the major (and not so major) new developer features in Snow Leopard.
  • Andy Matuschak talks about associated objects, which allow you to add instance variables to any class which descends from NSObject.
  • Twitter has plenty of 10.6 tips from developers today. In particular, you probably want to follow Cocoa Dev Central.
  • Mike Ash has a great write-up on the basics of Grand Central Dispatch, one of the most exciting new features in 10.6.
  • Jesper lists some hidden gems in Snow Leopard. </ul>

Steven Frank on the App Store

August 05, 2009

Steven Frank, of Panic co-founder fame, is taking a stand against the iPhone.

When the app store first opened, there were some questionable decisions, and like most everyone, I was willing to forgive Apple a few transgressions as they were navigating new, exciting (and rocky) territory. Historically, Apple has made bad decisions, but they’ve generally corrected them. (The $100 refunds for original launch-day iPhone purchasers after the price dropped come to mind.) The boat may turn slowly, but nothing before has ever suggested to me that Apple are actively malicious. But after an entire year of continuous bad decisions that are hostile to developers and consumers alike, we’ve moved on from “working out the kinks” to good old-fashioned getting fucked.

Every week it seems like there’s more and more developer backlash about App Store policies and the viability of making a living as an independent iPhone developer. I don’t blame them; right now the App Store is not a platform I would want to commit to. At the same time though, I’m not about to give up my own plans for the iPhone. Most of the apps I have in mind are companion apps to desktop Macintosh applications I’ve been working on over the past year or two. While I might make money on the iPhone apps alone, I don’t see them as a way to make rent as much as I see them as a way to augment and improve the work I’m already doing on the Mac. And I think most Cocoa developers will agree with me when I say that OS X is still a pretty sweet platform to write software for.

Voices That Matter: iPhone Developers Conference

July 31, 2009

I’ve recently been invited to the 2009 Voices That Matter: iPhone Developers Conference, taking place in October in Boston, MA.

This conference is designed for Mac developers looking for a succinct, easy way to get up to speed on the specific skills needed to build, test and distribute successful applications for the iPhone and iPod touch. Erica Sadun, author of The iPhone Developer’s Cookbook and our event’s technical chair, will lead an epic group of speakers at the conference including Aaron Hillegass, Andy Ihnatko, Jon Rentzsch, Steve Kochan, Fraser Speirs, Lee Barney and lots of others.

Having missed out on yet another year of WWDC, I’m excited about this conference. Many of the presenters are developers I know well through Twitter and blogs, and I have a great amount of respect for their work. I’m pretty confident I’ll pick up plenty of great tips that will help in the iPhone development work I’ve been doing lately.

The event organizers sent me a $100 discount to post here for readers. If you’re planning on attending, register here and be sure to use the priority code PHBLOG. There’s an additional $200 early bird discount available before September 12th. Also, send me an email beforehand if you’re coming and I’ll try to say hello!

Come visit Croquet Shows!

July 07, 2009

I know most of you are here for the programming snippets, but in case anyone from upstate New York is reading I’d like to invite you to visit Croquet Shows. Croquet is a music booking co-op based in Rochester, NY I’m volunteering for this year. We book artists from all over the world in some of Rochester’s best venues, including Bug Jar, Boulder Coffee, The German House, and others. I’ve been a fan of Croquet for years, and there’s a lot of great shows coming this summer and fall. If you’re looking for something to do in Rochester, have a look!

Coming soon: Runner’s Log 2.0

May 26, 2009

Those of you who are following me on Twitter have probably known about this for a while, but for everyone else I’d like to officially announce Runner’s Log 2.0, which I hope to release sometime later this year.

I’m very excited about this release. I’ve learned a lot of lessons since the first release of Runner’s Log, and I’m using this as an opportunity to fix some of the things I was never really satisfied with, as well as clean up and polish the entire UI. Best of all, I’m making some changes to the underlying data model that will both speed things up and allow for a lot of flexibility working with other applications and devices, including an iPhone companion app I’m planning.

If you’ve already bought Runner’s Log, good news; updates to version 2 will be free. If not, this really is the best time to purchase a license. Not only will you be supporting development, but you’ll be saving $5 since I plan to raise the price once 2.0 is released.

I’ll post screenshots and beta testing information as the release date draws near. In the meantime, please add your suggestions on the new Downtown Software House UserVoice feedback forum.

Code snippets and reuse

May 04, 2009

Jeff Atwood recently wrote about copy and paste coding, and those small, frequently reused code snippets that pop up at every programming blog or website.

To me, the most troubling limitation of copypasta programming is the complete disconnect between the code you've pasted and all the other viral copies of it on the web. It's impossible to locate new versions of the snippet, or fold your features and bugfixes back into the original snippet. Nor can you possibly hope to find all the other nooks and crannies of code all over the world this snippet has crept into. What I propose is this:
// codesnippet:1c125546-b87c-49ff-8130-a24a3deda659
- (void)fadeOutWindow:(NSWindow*)window
{
        // code
}
Attach a one line comment convention with a new GUID to any code snippet you publish on the web. This ties the snippet of code to its author and any subsequent clones.

I’ve been idly thinking about the same thing lately, especially since I’ve started using services like gist.github to share and view small code snippets. A good example is a category on NSBezierPath to add rounded rectangles, which I remember copying from someone 5 or 6 years ago when I first started with Cocoa. If I was using this in a project today there’s no way I would remember who it originally came from, or be able to tell (except accidentally) that Leopard added the same thing when it was released and now I don’t need to use the snippet at all.

I really don’t know if GUIDs are the best (or even a workable) solution. I don’t have anything against the idea, but how can you enforce it on every blog, code sharing website, programming forum, and so on? Still, when I think about a programmer’s dream world I imagine my IDE tagging these snippets with contextual information, popping up a window with text from a blog post just like it does with autocompletion.

Link Roundup

April 30, 2009

Steven Frank critiques the Office 2010 UI. I gave up on Office and started using iWork exclusively a little over a year ago, and I couldn’t be happier.

Set piece replicas of the Fifth Element stones are on sale for $240. They’re expensive, and yes I want them. I WANT… THE STONES.

Tweetie for Mac OS X is out, and it’s great. I’ve tried a lot of Twitter clients this year, and Tweetie is the first one to really replace the web interface for me. John Gruber has an interesting write-up on why the Twitter client app market has exploded recently.

Terminalicious now open source

April 18, 2009

If anyone still remembers it, I’ve decided to retire Terminalicious, one of my very first applications released under Downtown Software House. Given my focus on other projects there hasn’t been time for any development for a while, and 10.5’s Terminal.app has made it a bit redundant anyhow (it was always sort of a niche application to begin with).

In case anyone might find it useful, I’ve released the code on GitHub. There’s some interesting stuff with customizing windows and NSTextField, but just keep in mind parts of the code are probably outdated by now. You can also find the latest binary there too if you’d like to give Terminalicious a try.

Kacie Kinzer’s Tweenbots

April 12, 2009

I love stuff like this. Kacie Kinzer designs robots that require human intervention to get to their destination, and sets them loose in New York City.

</embed>

Time Warner Cables’s plans to kill the Internet

April 11, 2009

Update: Some good news for once; it looks like Time Warner Cable has capitulated on the new tiered plans. The language seems to indicate they might try it again in the future, hopefully if they do they’ll make the bandwidth caps more sensible for consumers.

If you’ve followed technology news this month you’ve probably heard about Time Warner Cable’s plan to expand its new bandwidth caps to four other cities, including (of personal importance to me) Rochester, NY. The idea of capped broadband isn’t exactly new, but TWC’s plans (ranging from 5GB to 40GB) haven’t taken long to draw criticism from customers and journalists.

The plans are, simply put, bad. I’m not even really against the “pay-as-you-go” pricing model. I use a lot of bandwidth and would prefer unlimited access, sure, but I can see the argument of having reasonable metered usage fees. The difference is that TWC’s usage fees are not reasonable; it’s hard to see them as anything but protecting their traditional cable TV subscriptions from new services such as Hulu and Netflix’s downloadable service. TWC’s tiers are priced as if it’s still the 90s, but with Mozy, Hulu, Netflix, Steam and so on it’s easy for someone to greatly exceed the bandwidth cap with only legitimate usage. This is no longer something that’s only going to affect only technical users or media bootleggers.

At best, Time Warner Cable is hurting their own customers in order to protect their cable TV subscriptions. At worst, this is something that’s going to hurt a lot of emerging online business markets as their customer base on TWC (and other ISPs that follow them) are reduced or eliminated.

It’s not all bad news though. New York state congressman Eric Massa announced he’s drafting legislation that will prohibit the bandwidth caps. Time Warner Cable also seems to be adjusting the new plans in response to the bad press they’re receiving, including introducing a new “unlimited” tier for $150 per month. Still, at three times the cost for the same service subscribers have now, it’s a pretty small gesture.

It’s going to be interesting to see how this plays out over the next year. If it’s something you care about, I’d suggest dropping Time Warner Cable if you’re a subscriber (and telling your friends and family to do the same) and supporting any local legislation aimed at preventing this sort of thing.

Installers on Mac OS X

March 26, 2009

One thing I’ve noticed more and more of lately is news of trojans appearing for Mac OS X. Take this, or this for example. These stories aren’t the result of a security issue, but of users trusting applications they shouldn’t, and explicitly authorizing them to do whatever they want to the system.

The reason I’m bringing this up is because there’s a rule every OS X developer should follow, one that I think is more important now than ever: never, ever use an installer unless you absolutely need to. I’ve seen a lot of applications use an installer when they don’t need it (especially cross platform applications), and if trojans like these become well known to the public conscious, you’re going to have a lot of potential customers trashing your app before even trying it.

So when do you need to use an installer? Obviously there are exceptions, but it doesn’t seem to me like there are many cases where you do. Preference panes can be installed with a simple double-click, and users can drag application bundles wherever they want (frequently I run an app from the disk image before I decide if I want to keep it). Even if you have good reason to put support files or background applications elsewhere on the hard drive, you can check and do this the first time the user opens your application.

MacHeist bundle now available

March 25, 2009

If you haven’t been following MacHeist 3, be sure to take a look at the new software bundle, which just went on sale last night. The $39 deal includes some great apps, a few of which were just released last winter. Best of all, it looks like the earlier developer complaints about payment terms are resolved:

So why is Flying Meat participating in MacHeist time around, when I blasted it a couple of years ago? Well, it's pretty simple. The folks at MacHeist fixed the payment terms after MacHeist 1, and developers are getting a much better deal now. Tada.