Why developers prefer Macs
infoworld.com
infoworld.com
The word evil is starting to get thrown around a little to much these days. Maybe we should save it for when it truly applies.
I think evil is bandied about as a proxy for "this corporation operates in a way detrimental to a world I would like to see", or something like that. In which case, I think the label is well deserved for both.
You can't be uncompromising in your feature set and design if you don't hold control over every small aspect of your software and hardware. Apple has decided that they know what's best for their operating system, and that other people aren't allowed to undermine them. It means that programmers have to conform and that hardware designers can't use Apple at all. The result is that users don't have many options, but that all their options are good ones; Apple employees are much better-suited to fixing computer problems than retail employees for other companies; and designers get to focus less on overall design and more on their features. It's a win-win-win.
Say you get to install Apple on a virtual box on your computer. You lose the multitouch capacity, if you're using a laptop, because multitouch pads are rare outside of Apple notebooks. That means you're operating at a loss already, that Apple's system isn't working exactly how Apple wants it to. You also lose the preset keyboard controls for stopping and starting music, you lose keyboards that light up in the dark, you lose buttons for Expose and Dashboard and ejecting CDs. You lose the Command key. In other words, you're suddenly using an operating system that isn't operating at its full capacity. Apple doesn't want that: Steve Jobs is famously quoted as saying that he could make his computers cheaper, but only at the cost of quality and reputation, and that in his mind quality ought to be the top concern for getting a computer. Is that evil? Because I think it's highly principled.
The loss is openness, and that's where you're getting "evil" from. (I'd assume.) The problem with open is that it's unfocused. You can't demand the same level of quality with open that you can with a closed, rigid system. And in my eyes, that's the evil route. The people who say they wish Microsoft and Apple would crumble and fall away because they charge money for their systems are people who're saying that they'd do away with an incredibly efficient system for the sake of something that's buggy and unstable, which is pretty smug and stupid in my opinion.
(I think this is a very meaningless argument. Some people care about one thing, other people care about other things. Products may be judged by different criteria by different people.)
Translation: I like it when I am mistreated by Apple because I can believe it is part of some greater purpose.
So, was my argument entirely invalid? Because I thought I did an okay job of explaining why being "evil" wasn't actually evil.
In my opinion, Dell and Microsoft mistreat their customers, because they sacrifice quality for customization. I understand their viewpoint but they turn out the inferior product. If Apple's "mistreatment" means excellent screens, keyboards, designs, specs, and software, then by all means let them go ahead.
Microsoft sacrifice quality for customisation? Hah. I dislike it because it's so high quality and uncustomisable. Means you can't do what you want with it, but the boss loves it.
Then that's very different from their OS set-up, which allows for a lot of options at the expense of unification and aesthetic pleasure. I haven't used what you talk about, but if they do that then good for them. I still think they do their OS customers a disservice.
POP3 is open. SMTP is open. IMAP is open. Microsoft make money from Exchange which deals with all three. C# is an open standard, Microsoft make money from it; it's high quality and reliable. Java is an open standard, Sun make money from licensing it, it's Enterprise class. RedHat is open source, RedHat Inc. make money from supporting it, it's used in Enterprises accross the world.
Open, good quality, focused, reliable, profitable, they're not all the same thing.
Apple does support open standards. Look at WebKit. What they don't support is releasing everything they make openly. Usually, the rule of thumb is as follows: if the product's quality would suffer from being open, they don't make it open. If it works completely open, they release it as such. The problem is that in a lot of cases, opening things means inviting opposing beliefs. And that means that you get a bunch of sub-optimal choices, and that results in a lot of noise and a lot of low-quality options. Apple prides themselves on having a very reliable brand name. They couldn't do that if they were as open as Microsoft, and they couldn't turn out such good programs.
And as I said on this thread: Jobs is famous for having said that he'd rather make a high quality product than lower his standards and make more money. And he's making billions and churning out good things, so I'll trust that he knows what he's doing, and that part of what he's doing is closing things that ought to be closed.
People get so feisty that Apple doesn't cater to them. Apple makes the products that Apple feels are profitable. There are a lot of other choices and a variety of alternative OS's. You shouldn't feel pressured to buy a mac.
I think a lot of the anti-apple sentiment that you see on the net is a mix of resentment and jealousy because modern macs are such coveted machines.
Why are you motivated to be an anti-advocate? The product isn't right for you. Do you go around making fun of deodorants or toasters that you've decided not to use? Do you make fun of Ivory soap because you're a Dove man?
Yeah, right.
Get back to me when Apple arrives in 2006 and releases a version 1.6 JVM, or at least provides an automatic update to Java 1.5 on OS X 10.4!
http://developer.apple.com/java/
Also, I think it's pretty clear that Apple hates Java, at least on the desktop, and for pretty good reason. Java GUI apps are pretty much the antithesis of Mac OS X GUI apps. Java may be great for certain applications but I have yet to be convinced that GUI apps are one of them.
So, Windows 2000/XP: No problem! 1.6 compatibility in 2006.
OS X 10.5: Whoa! This Java thing is too new-fangled for us!
As for the GUI: You can get around that with a Synth theme. Ugly and slow Java on the desktop is a thing of the past (even on Mac).
I'm pretty sure that all the Macs Apple sells now (and for the past year or so) are 64-bit. (Also it's been available since April). But yes, it's less than ideal.
As for the feel: Don't get bogged down by the implementation technology. The vast majority of your customers (presuming you're not targeting the rabid fanboy subset of Mac) will not notice nor care about the language you've implemented your application in.
If your software does what a business needs and looks reasonably good while doing it, you'll make a killing.
You know.... as it's Java. It should run (with modest effort) on a few platforms.
You cannot deploy Java 6 applications to Mac (except 64-bit Intel Mac OS X 10.5 after September, as mentioned above). You can build Java 6 for all other platforms (back to Windows 98, FFS), but to work for Mac customers you have to adjust your build to create a Java 1.5 version.
You also have to add in special Java upgrade instructions for those using OS X 10.4 (since the 1.5 upgrade isn't included in automatic updates), and tell anyone with a Mac earlier than that to piss off, because Java 1.5 (released over FOUR years ago, in 2004) won't work on OS X 10.3 or earlier.
That is an exceptional pain which isn't present on Windows or Linux.
Apple makes wonderful hardware but they treat their third-party developers like crap. Microsoft is absolutely awesome in comparison and realizes that "Developers, Developers, Developers" are the secret to their OS's success.
Every time Apple upgrades their Mac OS a frantic application re-write is often required from third-party developers just to get things working on the new platform. In contrast, I can pull out an application written 15 years ago for DOS and fire it up under Windows without a problem. Microsoft realizes how important it is to keep third-party software working on their platform and bends over backwards to provide that backward compatibility.
For our own software, we've not had to tinker with the base code (written on Win 98) at all under Windows.
Building desktop apps for Mac is a (lucrative) pain.
It's true Microsoft goes to extraordinary lengths to keep backwards compatibility. Consider the Joel Spolsky anecdote about SimCity: http://www.joelonsoftware.com/articles/APIWar.html
In case you missed that, SimCity had a bug where it used memory it already freed. This worked under DOS for whatever reason, but not under Windows. So the Windows team hardcoded a special case just for SimCity.
That is going too far, IMO. Why should my OS have all this extra bloat to check for buggy applications? This is why OS vendors seed preview releases to developers, so they can test their own damn software and issue fixes for these kinds of bugs. While it may have been hard to distribute updates 20 years ago, with the internet it's trivial.
It sounds like there was a some kind of bug in DOS that allowed SimCity to work with object freed from memory and Windows team tried to hide it in Windows by making a special case :)
In any case I think it's called going an extra mile for the customer, isn't it? (I can't believe I'm writing it about MS)
It might work sometimes, but I'm pretty sure most platforms consider that behavior undefined.
Also, Apple never just pulls the plug on an API - at worst, if you use an API, and then Apple decides to remove the API, the next version of the OS simply lists the API as deprecated, and you get a warning when you compile. It is only in the following version of the OS that the API may actually be pulled. I don't think it's unreasonable to expect developers to update their apps every 2-3 years if they want them to keep working.
As for Java developers wanting to develop on the Mac, well, I don't know any Mac developers still using PPC Macs as their principle machine. Actually, I don't know any developer, period, using a computer that is older than about 2-3 years as their principle machine.
It is worth noting that Chet has since moved to work for Adobe, and Romain now works at Google on the Android UI.
Developing C# on bootcamp is like developing Linux on Windows running VirtaulBox. I actually experienced the last sentence to one time thing, but on daily basis I would say its inefficient.
Personally after 4 years of windows development staying with Windows. I've got a Vista laptop and I admit that there are some challenges to get things done, but in all its working fine. For what I'm doing I can't see any benefit using a Mac
I can develop in whatever OS I like and still enjoy being at my computer. It's the little things, I find, that make me stop working. It's the little things that Mac takes care of. I don't have to be frustrated, I can just open up whatever tool I need on whatever OS it needs and work away.
A lot of credit goes to VMWare too. Fusion is a terrific product.
In the end, I spent several years developing on Windows, and a couple years developing on various versions of Linux. Then I tried a Mac, and found that for my needs, for the way I work and the things I'm working on, I am more efficient on a Mac.
It may be true that it's possible to do that, but part of the reason Macs are so expensive is that they don't (generally) skimp on parts, and there's a lot of design that they put into the system.
are you kidding? they sell inferior hardware for more cost. it is trivial to locate a vendor selling better performing hardware for less cost