Windows Programmers Shifting to the Mac?

Vista to Core AnimationThe tide is turning or so it seems. Well, maybe it’s not quite so monumentous as a tide shift, but there is certainly a buzz in the air that I think is indicative of at least a gradual shift. I can’t speak for all Windows developers of course, but I’ve talked to enough of my friends to know that the Macintosh is no longer in their eyes some obscure computer made by some obscure computer company that makes computers for artists. It’s got some amazing tech that would appeal to any geek especially programmers who have the initiative to take advantage of it.

I made the switch to the Mac along with a job change back in June of 2007 and I have to say that I am glad I did. It’s not to say that there aren’t good tools for programmers on Windows, but there is most definitely a different approach to everything from the kinds of applications that you build to the way you build them on the Macintosh. These differences in some areas are subtle, but in others they are monumentous.

Core Animation, for instance, a technology that enables programmers to use animation to provide users with visual feedback of many different sorts (e.g. change window frame dimensions and watch the window change in steps rather than having the frame update instantly), is really groundbreaking. It’s not something that you see in Windows programming. There are many other technologies that have a similar appeal. Some frameworks that I’ve used such as WebKit–a framework for building web applications, or QTKit–a framework for building multimedia applications based around QuickTime, are exciting and interesting to work with.

I have made predictions in the past that haven’t come true, so when I make a prediction, you ought to take it lightly. However, on this one I feel pretty confident. Apple just gets doing technology elegantly and they’ve made their tools and libraries available to everyone so that anyone who takes the initiative can build elegant software themselves. This fact, I think, will soon have a snowball effect that will start brining programmers from the Windows world in droves. Considering the disappointment that Vista is and the fact that Microsoft doesn’t even seem to like it, Windows programmers are going to start looking for ways to deepen and broaden their toolsets and even consider new platforms such as the Mac.

So what are the hurdles to entry? I think the following list pretty well summarizes it:

  • The cost of a Mac. I’ll put this one out there even though I don’t agree with it. To get a decent professional laptop, you’ll pay at least as much if not more to get similarly equipped systems to the MacBook Pro line. The MBPs were just recently upgraded and the price is actually excellent for the specs you’re getting
  • The cost of the development environment. Oh wait… XCode is free and comes with every new Macintosh. Scratch that!
  • Objective-C uses square braces. Well, you will need to learn a new language. Just take it by the horns and go for it. It’s not that hard and once you become proficient with it, you’ll prefer it. It’s very powerful and often intuitive.
  • No real hurdles. There really aren’t any major hurdles to entry. Just get a Mac and start coding. It’s that easy. And if you need some pointers, take a look at my XCode 3.0 article to get your started. When you’re done with that, head on over to Cocoa Dev Central for some great tutorials or your can check out Cocoa is My Girlfriend a new site that Marcus and I put together.

If you are planning to switch or have just recently switched to the Mac, you should know that you are far more likely to find work building applications for consumers. Most of the work I’ve done over the years on Windows has been business software. This is one of the main differences. I think this will also shift over time, however, for right now, expect to build applications your mother might use rather than software your company might use. And if you have any questions as to what other benefits there are, talk to any successful independent Macintosh software vendor out there. There are lots of them and they do very well.

Core Animation Tutorial: Window Shake Effect

Marcus and I have started to have NSCoder Nights on Monday’s at Panera Bread on Powers near S. Carefree. We’ve been working to try to learn how to do certain OS X Leopard animation effects using Core Animation. The first challenge we took on was figuring out how to shake a window back and forth to indicate that the user has entered the wrong password in the login window. OS X does this when you try to login and enter your password incorrectly. If you’ve never seen it before, you either don’t have manual login enabled, or you’ve never entered your password incorrectly.

Anyhow, the article is short, but it has an XCode project that you can download and use. Take a look at the post, Core Animation Tutorial: Window Shake Effect and let me know what you think.

NSOperation Example

I just finished writing a new article for Cocoa Is My Girlfriend. I am building on the work Marcus did on his first article called Cocoa Tutorial: NSOperation and NSOperationQueue. In my article I’m taking a slightly more practical approach where I provide a flicker free method for grabbing images from a currently playing QuickTime movie. The NSOperation grabs the image data from the movie and saves it out to a folder in the filesystem specified by the user.

I think it is pretty cool. I hope it will help others see the power and flexibility of NSOperation and NSOperationQueue.

Read the new article, NSOpeartion Example, here.

Cocoa Tutorial: NSOperation and NSOperationQueue

I just finished helping Marcus post an article on our new site Cocoa Is My Girlfriend, a site dedicated to providing blog posts and tutorials on how to develop applications using Objective-C and Cocoa on the Macintosh.

This first post is on how to use the new threading objects found in Mac OS X Leopard (10.5) called NSOperation and NSOperationQueue. They provide a really simple and robust way to do multi-threaded programming. Take a look at the post and let us know what you think.

4GB Memory Upgrade for $92.50

I’ve been waiting to upgrade the memory in my MacBook Pro, but hadn’t–until this week. Other World Computing has this deal going on right now where you can get the 4GB upgrade for $92.50. If you send in your old memory chips after the upgrade, you can take up to an additional $20 off. After it’s all said and done, this will cost me $72.50 for a 4GB upgrade. That’s a pretty good deal.

Self Tuning Guitar

So this is pretty cool. My friend Kip says that it would make me look like a dork if I showed up with one of these at an open mike night, however, I don’t think I’ve ever been to an open mike night where *everyone* didn’t look like a dork. It’s a cool piece of gear. And by the way, I’ve never done and don’t plan on doing an open-mike night, no matter what Kip says.

Twitter: The Long Tail of Celebrity?

If you’re not familiar with Chris Anderson’s The Long Tail, you should take a look at his book or at least read the about page on his site to understand this post. In a nutshell from Chris’s site:

The theory of the Long Tail is that our culture and economy is increasingly shifting away from a focus on a relatively small number of “hits” (mainstream products and markets) at the head of the demand curve and toward a huge number of niches in the tail.

In an attempt to explain what Twitter is to those who are not familiar, I’ve said that it is the long tail of celebrity. Ok, so that is probably pretty dumb since now I also have to also explain what the long tail is. I probably need to keep searching for a better definition, but when I say that it’s the long tail of celebrity, I simply mean that everyone who uses Twitter can be a celebrity…

to a certain extent.

Once you have followers on Twitter, you could be considered a celebrity of sorts. You’re not one of the big names, the hits, but you could certainly be considered a niche–especially in the case where your followers are only friends or family.

Thanks to Marcus I have started to follow some independent software developers for the Mac on Twitter and find many of their tweets (Twitter posts/updates) to be interesting. There’s lots of noise too, but you can quickly filter through that. What I’ve learned from following these guys is just the sheer amount of time these guys seem to spend coding. I know that’s what it takes to be successful as an indie, but it’s just fascinating to me to watch these guys update what’s new in their development processes.

To me, guys like Wil Shipley, creator of the award winning Delicious Library and Daniel Jalkut, developer of MarsEdit are celebrities of sorts. I don’t know Wil or Daniel personally and they don’t know me from Adam, but Twitter has enabled me to see what’s going on with the most recent developments in the latest version of each of the applications they develop and maintain. It’s highly interesting to me.

I see them as successful at doing that which I would personally like to do as well. I’m not star struck by these guys as tends to be the case when people are fascinated with Hollywood celebs, however, there is certainly an element of admiration as they are the real deal in independent Mac OS X development. They actually have applications available for purchase and are living the dream.

If my theory is right, then everyone can be a celebrity by using Twitter. Just don’t go taking yourself too seriously, throwing public tantrums, and getting caught driving drunk like the regular celebrities do every time your followers number rises. Remember, you’re still in the long tail–you’re a niche, not a hit.

You can catch me on Twitter at It’s not terribly interesting, but if you follow me, I’ll be your celebrity.

Satisfaction Guaranteed

So I’ve been using the NetBeans IDE v6 to do some Java development. I’ve been pretty happy with it so far. It has a nice set of project templates. It allows you to run and test web apps directly and at $0 dollars you can’t beat the price.

I loaded the application today and here is what I was greeted with:
Bad Netbeans!

Now, I suppose you could make the case that since it’s a free application, I should be obliged to take their survey, but I don’t recall agreeing to that. Just like most people, I didn’t read the license agreement so maybe I did agree to it, but what’s funny is that they want me to express my satisfaction with an application that has, for the first time since I started using it mind you, done that which is one of the most likely ways to cause dissatisfaction. They gave me two options and neither of them are useful to me.

Netbeans is cross-platform which means you’re going to have some hold-over ideas from other platforms, namely Windows. Since I work on a Mac, this also seemed very unfamiliar. Mac apps don’t bother you with stupid dialog boxes (that often) and when they do, they normally give you a way out. This dialog does not.

Call me crazy, but I don’t think a third option that says “No thanks. I don’t ever want to take a survey”, or even simply “Cancel” would suffice for the moment. That’s basically what “Remind Later” does, but when labeled that way, I realize that I should deal with this in a permanent way in order to be left alone, but the only permanent way is to choose the other option, “Go To Survey”. Now, I realize I don’t have to take the survey once I’m at the site, however, I am now less satisfied with the application because it is bugging me to take a survey and tell the company that I’m not satisfied because they bugged me about taking a survey. (I’m dizzy now) So I’m going to clue them in without taking the survey. Hello, Netbeans people. Yes. Here’s one way to guarantee my satisfaction–leave me alone!!

So this is just a rant and me complaining. It’s not that big a deal, but I would take this opportunity to say that if you are a new Mac developer coming from the Windows world where forcing users into choices they don’t want is the order of the day, just get over that notion now. Don’t start building Mac apps that do this. Please. It doesn’t help anyone. I think Mac users are generally happier people. I think it’s because their apps are unobtrusive. Leave your users alone. They’ll let you know if you need to fix or change something.

Update: Just got contacted by Gregg Sporar who works for Sun (see the comments). He says this has been fixed in Netbeans 6.1. Cool!

I’m Nearly Certain He’s Right

I’ve started reading some economics blogs lately. Marginal Revolution is one of them. It’s not the standard fair I cover here, but keep in mind I’ve left myself the option to talk about anything by saying my blog is about programming “and stuff”. Anyhow, economist, author, and blogger Dr. Tyler Cowen posted this gem called What I Think I’m Nearly Certain About. I didn’t know anything about Dr. Cowen until I read this post, but several of his insights are quite profound to me. I’ll name the ones that stand out.

3. Government-dominated health systems, insofar as they work well (a number of them do), succeed simply by lowering costs. Health care has a murky relationship to human health, pharmaceuticals and broken limbs aside. A version of the single-payer system, as might be adopted in the United States, would not lower costs. We would be raising taxes and lowering medical innovation to give poor people a good deal more financial security and a slight bit more health; that is the relevant trade-off.

It seems that often when you get people talking about healthcare, there’s this simple pat answer people give no matter what side they are on (and there seem to be many sides). The pat answers are almost always wrong. Dr. Cowen I think hits the nail on the head. If you have a plan that reduces costs, it doesn’t matter what side you’re on. It just makes sense. If public healthcare could do that, so be it. If it’s privatization, so be it. It gets to the root of the matter–make healthcare cheaper by lowering costs. Who’d a thunk.

5. We are programmed to respond to the “us vs. them” mentality and highly intelligent people are no less captive to this framing. We should try very hard to get away from this framing.

Man, isn’t that the truth. Seems hard to admit sometimes, but it’s so much easier to be all about what we (humans) are against than what we are for. This is no less the case for intelligent people. Look at the presidential candidates. There’s a lot of rhetoric about what’s wrong with our country/the world/etc., but it’s very difficult to get a clear answer as to what direction any of them would go that isn’t neck deep in spin and fancy words. This applies to all candidates.

7. It would be a disaster if American taxation ever reached 55 percent of gdp.

A democratic candidate is a shoe-in for Prez. this year, which, frankly, makes significantly higher taxes likely.

8. Which institutions work well is often country-specific.

Amen! Man, I get tired of people saying, well healthcare, taxes, gun control, {your favorite societal problem here} is so much better in {favorite european country or Australia here}. It’s more complicated than that with *everything*.

12. It is a big mistake — even in rhetoric — to conflate concern for the poor with comparative egalitarian intuitions. The left ought to turn its back on this mistake, although it would mean losing one of their most effective rhetorical tools.

Lip service that shows favor to the poor is pathetic. Anyone who does it should be called out on the mat for it. A true bleeding heart is a good thing–a bleeding heart in name alone is societally detrimental.

Well, that’s all I have to say about that. Read the rest of the post and enjoy Marginal Revolution. You should also start reading Mark J. Perry’s blog called Carpe Diem if you’re even remotely interested in economics. I think I like his blog a little better (though slightly) than Marginal Revolution for some econ insights. Mark cuts through the crap and gets to the point. Short posts with a ton of digestible information.