Slashdot Mirror


Best Developer Tools for OS X

NoviceW writes to share that there are plenty of interesting articles written about Mac OS X applications for switchers, but not many guides focused on programmers switching from other operating systems. This guide lists a few of the more prominent tools for Mac developers, what other tools can't you do without?

201 comments

  1. Objective-C by QuantumG · · Score: 1

    The static type system of C and the dynamic type system of smalltalk, what a great idea that was.

    --
    How we know is more important than what we know.
    1. Re:Objective-C by John+Nowak · · Score: 1

      Sounds to me as if you've never used it. It works quite well in practice.

    2. Re:Objective-C by QuantumG · · Score: 1

      So does Perl.

      --
      How we know is more important than what we know.
    3. Re:Objective-C by jcr · · Score: 4, Insightful

      More like, the compatibility of C, and the messaging power of Smalltalk.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    4. Re:Objective-C by kompiluj · · Score: 2, Insightful

      Look for instance at .NET/C#. People are writing about this cool feature it has - delegates. But in Objective-C such behaviour is natural, and besides, requires no use of additional language features. Objective-C can be explained on few pieces of paper, you just have to remember some particular rules, whereas in C# or Java (or other object oriented staticly typed language) you have for each such thing a special case, which burdens your memory.

      --
      You can defy gravity... for a short time
    5. Re:Objective-C by QuantumG · · Score: 1

      You're so right! Why even have types at all!?

      --
      How we know is more important than what we know.
    6. Re:Objective-C by John+Nowak · · Score: 1

      This is true.

    7. Re:Objective-C by Poltras · · Score: 1

      Exactly. Types are clubbersome in many ways. They should be constrainted (this variable must represent some kind of numbers), but not defined (this is a floating point between -2^64 and 2^64), to ease learning and coding a lot. Check ruby for more example of what I mean (duck typing). I never learn ObjC, even less Forwarding so that may be the same thing.

    8. Re:Objective-C by samkass · · Score: 2, Interesting

      Objective-C was a pretty nice language, but it lost. Now it's pigeon-holing Apple into a tiny subset of the world's developers, who are becoming increasingly fanatical. If they really want broad-based industry and developer support, they will have to dump it eventually. For now, they're getting by with bridges to a lot of the more popular scripting-style languages, but the fact that the Java bridge failed is proof that this approach can't work for "real" languages.

      I'm a bit of a heretic, but I think Apple might do well to wholeheartedly embrace .NET/C#. I'll bet they could get great licensing deals from Microsoft, giving them a jump-start, in exchange for rapidly increasing cross-platform interest in the language over Java.

      --
      E pluribus unum
    9. Re:Objective-C by dowobeha · · Score: 1

      Seriously, though, can we get a C-syntax version of it already? It's FRICKING UNREADABLE.

      I hope you're joking, but I don't think you are. Objective C has one of the most readable syntax of any language I know.

      [newImage initWithContentsOfFile:fileName];

      --
      I am concerned about any program, any piece of hardware, any treaty, any law that treats me as a consumer, not a citizen
    10. Re:Objective-C by dowobeha · · Score: 1

      So does Perl.

      Yeah. :) Until you try calling a function with a struct as a parameter. Or try doing anything even remotely object-oriented.

      Those are the two big things that finally drove me from Perl to Ruby. I could never go back. Ruby has almost all of the nice things of Perl, with almost none of the insanely stupid bits.

      --
      I am concerned about any program, any piece of hardware, any treaty, any law that treats me as a consumer, not a citizen
    11. Re:Objective-C by outZider · · Score: 1

      Hm, I've been doing OO perl for some time, I would say that I do things that are more than "remotely" object oriented.

      This reeks of fanboy, sorry. :(

      --
      - oZ
      // i am here.
    12. Re:Objective-C by Mattintosh · · Score: 2, Interesting

      I'm not joking. It just makes much more sense to me to:

      newImage.initWithContentsOfFile(fileName);

      This tells me:
      - I'm working with an image, not a pointer to an image (or I would've used ->).
      - initWithContentsOfFile() is a member function, not a member variable.

      I get none of that from Obj-C, though that's probably just because I'm not familiar with it. But that doesn't mean that the language isn't unreadable. Why? Well, I can honestly say that I've tried to learn Obj-C's syntax. I learned C-syntax early, and I'm most familiar with it. But that didn't prevent me from learning Pascal syntax, BASIC syntax, COBOL (ugh) syntax, or any number of other languages of various types (programming, scripting, document description, etc.). But Obj-C was the nut that wouldn't crack. I've tried multiple times, each time thinking, "Hey, maybe I just didn't try hard enough." I always end up thinking something else. Something more along the lines of, "Who wrote this crap? Why do they hate me? What moron thought this was a logical way of writing code?" I don't like to fail, but Obj-C has beaten me every time I've tried it. I get kinda angry and depressed about that. Perhaps that's worthy of a "Troll" mod.

      What are the square brackets around the statement for? And now that I look at it again, it's entirely possible that I'm not looking at a method call at all and that perhaps this is part of a function prototype or something. Which brings me back to my "angry-Matt" comments above. I stand by my assertion that Obj-C is not readable.

    13. Re:Objective-C by Anonymous Coward · · Score: 2, Informative

      How about something non-trivial? NSBitmapImagRep's initWithBitmapDataPlanes is a method I use quite a lot.

      initWithBitmapDataPlanes:planes pixelsWide:300 pixelsHigh:400 bitsPerSample:24 samplesPerPixel:3 hasAlpha:NO isPlanar:NO colorSpaceName:nil bytesPerRow:1200 bitsPerPixel:24.

      In your world, that would be
      initWithBitmapDataPlanesPixelsWidePixelsHighBitsPe rSampleSamplesPerPixelHasAlphaIsPlanarColorSpaceNa meBytesPerRowBitsPerPixel(planes, 300, 400, 24, 3, NO, NO ,nil, 1200, 24). Yeah, that's really readable. Or maybe a name less verbose, but no clue to what the parameters do.

      There's also a hacky way in Java to make Creator objects and do initWithBitmapDataPlanes(planes).pixelsWide(width) .pixelsHigh(height).bitsPerSample(24).create() etc, but that involves a lot of tedious work on the class creator. I'll stick to Objective-C and actually ship software that's surprisingly (even disturbingly) easy to write.

    14. Re:Objective-C by bnenning · · Score: 1

      For now, they're getting by with bridges to a lot of the more popular scripting-style languages, but the fact that the Java bridge failed is proof that this approach can't work for "real" languages.

      No. It's proof that it doesn't work for statically typed languages with limited dynamic capabilities. (Maybe that's what you mean by "real", in which case we have an irreconcilable definition dispute). The Python bridge works quite well; in fact some things in Cocoa are easier to do in Python than ObjC.

      I'm a bit of a heretic, but I think Apple might do well to wholeheartedly embrace .NET/C#.

      Thereby becoming dependent on their primary competitor? Not going to happen; GTK or Qt would make more sense, and that's not going to happen either.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    15. Re:Objective-C by bhawbaker · · Score: 2, Informative

      Instead of swearing at the language, try to find a better source of tutorial on the language. Apple has some good ones on their developer site.

      When i first learned about Objective-C, I had some trouble grasping the idea too but it turned out that I was getting confused due to now knowing enough about the languagee and not taking time to learn the new terms.

      The [ and ] means message passing is being done. Note, that is "message passing" not "calling function" You need to change your thinking and world when working in objective-c.

      [newImage initWithContentsOfFile:filename];

      Here, we are doing a message passing using the newImage variable. The message is called "initWithContentsOfFile (it is sorta like function name but think of it as message). The first parameter is filename. The name of message labels this first parameter.

      Another example (fake code):

      [MyClass MyClassWithData:"hello" length:5];

      MyClass, in this case, is a class rather than a variable. You can also pass messages to classes. In C++ world, it is similar to static member functions. The message being passed is called 'MyClasWithData" and its first parameter is "hello". The 2nd parameter is 5 which is labeled length.

      The objective-c world is a wondrous place to work once you get hang of it. There are several things that are much harder to do in C or some other language, such as creating a proxy class that can take _any_ messages even if you did not define one.

      Hope this inspires you to go back and try to learn objective-c again.

    16. Re:Objective-C by abes · · Score: 1
      Objective-C is actually part of why Apple is so successful. Yes, they could go status-quo, and do everything in C. Much like Windows. But in the case of writing a large GUI application (such as the OS X shell), I think the right tool for the right job really applies.

      M$ has worked very hard in making C an OOP-like language. It's not that C doesn't allow you to do everything that C++ or Obj-C does .. they are after all just languages (besides which, Obj-C and C++ were originally just precompilers that generated C code). Nothing magical. but Obj-C especially provides language feature that become especially nice in a windowing environment.

      For example, compare how Apple's tools works versus M$: In M$ (at least last time I used them) you draw a GUI, and it generates a huge amount of code with comments intersperesed through saying things like "DON'T EDIT THIS". This, IMHO, creates a large amount of code, which from experience quickly becomes unmaintainable (esp. when other people created in the first place).

      Apple's Project Builder on the other hand produces no code, but rather serialized objects. Because Obj-C can do runtime class inspection, it makes life easier. You create the classes, make instances of them, set the properties, and then they get loaded when your program runs. Because they are just instances of classes, it's easy to change their properties (for the most part) in your code too, if for some reason you want to.

      I'm not sure I'd call .NET/C# a 'real language'. It hasn't to my knowledge been used in anything as large as a windowing system. I would point out, that at least some bindings for other languages have been made (e.g. Python). Including C#.

    17. Re:Objective-C by ceoyoyo · · Score: 1

      You're expecting a certain syntax because that's what C, Java and others use. It's not the only way of doing it.

      It took me a day or two to adjust my thinking to Objective C, but from then on it makes perfect sense and is much more readable than C. I jump back and forth between the two syntaxes too. Python uses the dotted style.

    18. Re:Objective-C by Anonymous Coward · · Score: 0
      Wha?? Perl's implementation of OO is lovely compared to crap like C++. In C++, I have to create an object instance if I want to call any class function, even if it's not specific to a particular instance. For example (not that anyone would use something so simple and stupid), let's say I want a class function that returns the name of that class. In C++, I do:
      Object obj;
      printf("%s\n", obj.NameOfClass());
      In perl, it's simply:
      print Object->NameOfClass(), "\n";
      This saves the overhead and nuisance of instantiating an object when I don't want to have anything to do with that particular instance.

      Haven't gotten around to Ruby yet. What's it good for? What's better about it?
    19. Re:Objective-C by Paradise+Pete · · Score: 1
      I'm going to flip over all the cards* and say that Objective C wins. For a language I've never seen before that is impressively readable code.

      * if you actually get that reference you are as old as dirt.

    20. Re:Objective-C by jcr · · Score: 1

      , can we get a C-syntax version of it already?

      Let me be the first to say: HELL, NO.

      Apple tried that once, and that idea was taken out behind the barn and shot.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    21. Re:Objective-C by jcr · · Score: 1

      I learned C-syntax early, and I'm most familiar with it. But that didn't prevent me from learning Pascal syntax, BASIC syntax, COBOL (ugh) syntax, or any number of other languages of various types (programming, scripting, document description, etc.). But Obj-C was the nut that wouldn't crack.

      Gee, none of the languages you cited are OO languages..

      Obj-C uses the [reciever message] syntax, because it was familiar to Smalltalkers, and didn't conflict with any existing C syntax.

      I stand by my assertion that Obj-C is not readable.

      Better coders than you disagree.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    22. Re:Objective-C by soft_guy · · Score: 1

      that's probably just because I'm not familiar with it.

      Right. You aren't familiar with it. Objective-C is like everything else dealing with computers - when you know how to use it, you tend to like it much better than things you don't know how to use. However, the syntax for Objective-C message sending actually does have a very good reason behind it.

      First, if we were to use something like what you propose, it would make it harder when you are programming with Objective-C++ (a quite common case!). In Obj-C++, you are allowed to mix objective-C and C++ code provided you follow some basic rules that I won't go into here (the rules for mixing are pretty easy to understand). By having different syntax, it makes it easier to see which parts are which.

      Also, in Objective-C, you aren't calling a method - you are sending a message to an object. That is a very different thing. The reason is that the message is interpreted at runtime. Not compile time. The syntax that you were using says to me "compile time". Also, Objective-C objects are ALWAYS accessed via pointers. You can't create one on the stack. So, there is no nead to distinguish between pointers and objects. You can do truly dynamic things with Obj-C objects such as having an object that poses as an instance another class, etc. C++ fundamentally works different than this because when I call foo->bar() the COMPILER decides which bar method gets called. In Objective-C when I call [foo bar] the RUNTIME environment decides which bar gets called and will raise a runtime exception is bar is not implemented. (However, they do provide a compiler warning if the compiler can't see a "bar" method.

      I can call [foo performSelector:@selector(bar)] which is equalivalent to [foo bar]. I can have code that uses some logic to decide which selector to pass to the performSelector: method. I could even have the user type in a string, convert it to a selector, and then call the selector on an object that I don't know what it is - perhaps it came from a plugin. Doing this kind of thing in C++ is much harder because it really isn't a dynamic language. (Although the RTTI, type_info stuff gives it some dynamism, but obviously not to the same level.)

      I'm not saying Objective-C is perfect or the best tool for all situations, but it does have some cool characteristics that come from various traditions (C, SmallTalk, etc.) and it is a nice programming language. A language isn't BAD simply because it has different syntax that whatever language you happen to be familiar with and like.

      --
      Avoid Missing Ball for High Score
    23. Re:Objective-C by bean123456789 · · Score: 1

      This saves the overhead and nuisance of instantiating an object when I don't want to have anything to do with that particular instance

      So you are complaining that you have to create an object in an object oriented language? Sounds like you want to use non-OOP programing languages... Oh BTW you can call a function in C++ without creating an object first, you only need to declare it as static.

    24. Re:Objective-C by soft_guy · · Score: 1

      Objective-C categories and "protocols" partially make up for the fact that it doesn't support multiple inheritence.

      --
      Avoid Missing Ball for High Score
    25. Re:Objective-C by soft_guy · · Score: 1

      This is probably one of the stupidest posts I have read this side of GNAA.

      You can program the Mac without using Cocoa or Objective-C at all. The core APIs are C based APIs. Cocoa is merely a toolkit similar to Qt (TrollTech), MFC, PowerPlant, .Net, etc. If you want to program with C/C++ APIs you can.

      No, Apple will not "go out of business" if they don't "dump Objective-C right now".

      --
      Avoid Missing Ball for High Score
    26. Re:Objective-C by JulesLt · · Score: 1

      Whatever language they use, developers are going to need to learn the OS X APIs (Cocoa and Quicktime at the very least) to make any real significant use of OS X - unless you're proposing that Apple also switch over to using the .NET2 / WinFX APIs rather than Cocoa, in which case OS X would cease to have much real point. You're more likely to see the rumoured 'Cocoa running on a Windows kernel' than Apple ditching their prime asset.

      A large reason that the Java bridge 'failed' is that there was very little interest from cross-platform developers (i.e. Java programmers) in using any of the bridged Cocoa classes, when they could use a 'Java Native' equivalent. There's not a lot of interest from Mac developers in using Java over Obj-C to write Cocoa apps - there isn't any productivity gain.
      On the other hand, there is interest from Mac developers in scripting languages, but my understanding is that most of those bridges are being maintained outside of Apple, whereas the Java-Cocoa bridge was an Apple-funded project. There are a couple of Java-side initiatives to provide better cross-platform bridges to O/S, but they're not JCP supported - there's SWT on the widget side, and there's another project to provide a standard Java library that would use JNI calls to support native features common to Windows, OS X and Linux that the JCP won't allow in the standard Java runtime.

      I'm not convinced that Apple are 'getting by' with bridges to scripting languages as I think most 'real' development on the Mac is still Obj-C based.

      If you're serious enough about Mac development to actually want to use Cocoa features, I don't think learning Obj-C is a massive overhead for a competent OO developer. That said, it is showing it's age, and could learn a few tricks from more recent Smalltalk derived languages like Ruby, but the last attempt to revise Obj-C syntax failed and I expect any new one would also.

      There is certainly more fit between a dynamic, Smalltalk derived language like Ruby and Obj-C, than the C++ -> Java -> C# lineage.

      >rapidly increasing cross-platform interest in the language over Java.

      I think the problem here is the 'cross-platform' developers and Mac developers have completely different motives. I work as a team leader in a cross-platform firm - even though our clients all run Windows and we never actually test on Linux or Solaris, and we don't have a Mac in the building, we've always stuck with cross-platform tools.
      Part of that is our legacy (we were cross-platform when that meant using 4GL's to generate platform specific binaries - hell, we were cross-platform when it meant having to put conditional compilation into your C code so it would compile on different compilers / O/S). What we've never been interested in is making great client-side software - we'd rather be happy it will run on anything.

      There are a smaller group, who actually work for companies that do release cross-platform software, who see cross-platform languages as a solution to a real problem, rather than a political one. They want to 'write-once, run-anywhere'. The problem is in this phrase - it purely deals with the technical level, rather than the design one. It typically means 'design for Windows, Mac and Linux users should be grateful we've even done a version'.

      Microsoft actually understand this quite well, and did not develop a 'cross-platform' version of Office - having learnt their lesson from the one time they did :
      http://blogs.msdn.com/rick_schaut/archive/2004/02/ 26/80193.aspx

      Mac developers, on the other hand, are largely motivated towards exploiting the platform specific side, and that is currently serving Apple well. If 90% of Mac apps were as ugly as 90% of Windows apps, a lot of the apparent slickness of the platform would be lost. There are definitely Windows apps every bit as good as anything on the Mac, but you see them as so exceptional you gi

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    27. Re:Objective-C by QuantumG · · Score: 1

      Go away.

      --
      How we know is more important than what we know.
    28. Re:Objective-C by jcr · · Score: 1

      Also, Objective-C objects are ALWAYS accessed via pointers. You can't create one on the stack.

      Well, you could do it, but it would be rather pointless. You can allocate an arbitrary amount of memory on the stack set its first four bytes to point to the class you want it to be, and then cast it.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    29. Re:Objective-C by jcr · · Score: 1

      Multiple inheritance is a bug, not a feature.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    30. Re:Objective-C by jcr · · Score: 1

      I'm a bit of a heretic, but I think Apple might do well to wholeheartedly embrace .NET/C#

      Not a heretic, just someone who knows not whereof he speaks. If you proposed Smalltalk as an alternative to Obj-C, you might have a point, but proposing that Apple embrace the least common denominator of mediocrity is simply absurd.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    31. Re:Objective-C by JulesLt · · Score: 2, Insightful

      The thing that I like about Obj-C is the way that it's a strict superset of C, unlike C++.There are only something like 12 extra bits of syntax, largely derived from Smalltalk.

      Reading your post what's interesting is that the languages you found easy to move around in were all procedural, so I wonder if the problem is actually to do with making the procedural / OO transition? I'll confess that having been programming since the early 80s, I still don't 'think OO' in the way I see younger developers do (sometimes to their detriment), but I did have a nice bridge to it from Pascal through Modula-n and ADA.

      C++ 'won' pretty much for the reason that it was an easier transition for C-developers - even if it wasn't wholly C-compatible, and had some compromises in it's OO implementation, I think there was less of a mental leap to make for the procedural developer.

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    32. Re:Objective-C by kompiluj · · Score: 1

      ever heard of RTTI and reflection?

      --
      You can defy gravity... for a short time
    33. Re:Objective-C by Weedlekin · · Score: 3, Interesting

      " In C++, I have to create an object instance if I want to call any class function, even if it's not specific to a particular instance."

      You obviously don't know how to program in C++:

      class Silly
      {
        public:
          static const char *GetName() {return "SillyClass";}
      } ... // Now call it, without an instance

      printf("%s\n", Silly::GetName());

      A couple of notes:

      1) In general, C-style fixed length character arrays (and indeed C pointers of all types) should be avoided in C++, which together with the STL, has much more robust mechanisms that do most if not all of the same jobs. The example above is however excusable due to the fact that is is returning a pre-compiled constant via a constant pointer -- it is also both simple and understandable to those not familiar with the STL.

      2) C library functions such as "printf" should also be avoided for the same reasons. It is only present in my example because the parent post used it, and things are generally clearer if a reply utilises the same idioms as the original.

      Finally, it pays to learn at least the rudiments of a language before publicly claiming that it cannot do something. The use of the "static" keyword to declare class variables and methods is kindergarten C++, not "deep voodoo" that only gurus know about.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    34. Re:Objective-C by Weedlekin · · Score: 1

      "my understanding is that most of those bridges are being maintained outside of Apple, whereas the Java-Cocoa bridge was an Apple-funded project"

      I read somewhere that Apple are at least partially funding the Python/Objective-C bridge.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    35. Re:Objective-C by oc255 · · Score: 1

      .net is the overall term for a suite of tools right? Wouldn't they be best to consider just the C# bits with Mono? Isn't the rest of the .net bits too much in Windows land?

      This has been an interesting thread. I just picked up my first obj-c book and I'm 1/3 through it. It's not easy for me because I was never good at C type development, Java came much easier to me. However, I'm still trudging through it because obj-c seems like the language to learn if I want to leverage OSX.

      For example, with just a small amount of sample code I was able to render a font in an OpenGL texture. It was super easy to instantiate. From what I understand, the same method is also capable of rendering almost anything as a texture through CoreImage. The sample app came out looking fantastic, similar to good OpenGL font projects like OGLFT. At the same time, I know people who have written their own font libraries in 100% ANSI C and used that in their Xcode projects for portability reasons.

      Take my casual observations as simply a story of someone who is still learning.

    36. Re:Objective-C by Space+cowboy · · Score: 1

      Just as a note, and in no way trying to contradict your point (which I agree with), the objective-C method to do something similar (the class name method is built into the NSObject class, so it's a nop :-) would be:

      @implementation Silly

      + (const char *) firstDayOfWeek
            { return "Sunday"; }

      @end

      printf("%s\n", [Silly firstDayOfWeek]);

      In general, you don't use char* pointers in objective C though, it would be an NSString class that was generated/returned.

      I've been coding for over 25 years, have used a wide variety of languages, including C,C++, Java as well as several more-obscure ones. My language of choice is now Objective C - it has all the flexibility of C (it groks pure C perfectly), and introduces less than a dozen language constructs to make it a *very* flexible object-orientated language.

      My own feeling is that it's a lot simpler than C++ and I've not found any situation where it restricted what I can do. It's not as fast, but nearly so. It doesn't have templates, but the dynamic method despatch can pretty much replace that. It doesn't have multiple inheritance, but it does have formal (and informal) protocols - formal protocols are pretty much the same as Java interfaces. It has categories as well - I can define a category on a class which adds methods to the class, even without the source code to that class. It doesn't have garbage collection (yet - there are rumours of Leopard adding this, and there's already a checkbox in Xcode to set it 'on'), but it does intrinsically support reference counting.

      The bottom line is that I think it makes me a lot more productive than the more powerful (but more complex) C++. I don't feel as though I'm fighting the language so often when I'm pushing it to do things out-of-the-ordinary. The class-library really helps here, of course. The NS (NextStep) hierarchy is a really easy-to-use class hierarchy, with lots of the time-saving features built-in that in C++ you have to find a library for, or code yourself.

      And all that for a slightly-odd syntax (unless you used smalltalk or lisp :-) that soon becomes second-nature. Named parameters rock! Especially with code-completion :-)

      Simon

      --
      Physicists get Hadrons!
    37. Re:Objective-C by SteeldrivingJon · · Score: 1


      To me, newImage.blah looks like you're accessing part of a structure, mere data.

      An object is something different, because it's active and knows how to do things. Therefore, it makes no sense to use
      the same syntax to pass a message to an object as you use to access part of a mere structure.

      That's why I prefer the [newImage initWithContentsOfFile:fileName] syntax. It makes clear that you're dealing with
      an object, through a dynamic message call, rather than using some traditional C construct.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    38. Re:Objective-C by SteeldrivingJon · · Score: 1

      "If they really want broad-based industry and developer support, they will have to dump it eventually."

      So you're saying they'd take broad-based industry and developer support by hamstringing themselves with inferior languages?

      Doesn't sound like a very good deal to me.

      C++ used to be the platform with "broad based industry and developer support", but that didn't stop everyone from fleeing to Java because C++ sucked so hard.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    39. Re:Objective-C by SteeldrivingJon · · Score: 1

      " That said, it is showing it's age, and could learn a few tricks from more recent Smalltalk derived languages like Ruby, but the last attempt to revise Obj-C syntax failed and I expect any new one would also."

      That's not actually true.

      The change you're talking about was the attempted shift to Java-like syntax, which thankfully died, being based on mid-90s Java hype and little else. But that was like 10 years ago.

      More recently, there are some new features added to Objective-C such as Java-style try/catch/finally exception handing, and @synchronized blocks for threaded code.

      There have been rumors that 10.5 might add support for garbage collection.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    40. Re:Objective-C by JulesLt · · Score: 1

      I wasn't aware that the try/catch/finally was newer syntax, having only player around with Obj-C and Cocoa in the last 18 months, but I think syntax is exactly the area that I'm thinking could be improved.
      I have found Ruby to be far more approachable / readable - and perhaps most importantly 'elegant' - this may be because it has done away with the C legacy that (to my mind) had dogged the whole C++/Java/C-sharp lineage.

      Of course I haven't used either 'in anger' to really evaluate how they stack up - working in the server side world, what little I've done has been playing around at home, to keep my oar in, and just to see what's out there. I've been pretty impressed with how far-sighted the decisions made in creating Obj-C were, and to a large degree these have probably been a reason why the language hasn't needed constant tweaking.

      What I'm wondering is if it would be possible to create a new and appealing language that used the same conceptual model as Obj-C. Bruce Tate is quite right in 'Beyond Java' when he says that Java developers will never consider moving to Smalltalk, even if there are really interesting projects going on in the Smalltalk community, yet the features that are exciting them in Ruby (easy introspection) are exactly the things Smalltalk and Obj-C have offered for a long time. On the whole, developers only seem to like to move onto 'new' languages.

      As a tangent - look at the way that Java web developers are now starting to back Tapestry - an open-source project inspired by WebObjects - over Struts/JSF. Again, you'll see a lot of talk about how WebObjects is dead (because it's old and didn't dominate), while hyping the features of WebObjects as the future. You'd never think we were quite so fashion led.

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
    41. Re:Objective-C by Anonymous Coward · · Score: 0

      That's not even C syntax, dipshit.

    42. Re:Objective-C by Weedlekin · · Score: 1

      Hi Simon,

      I agree with most of what you say, although I'd like to address a few points:

      "it's a lot simpler than C++ and I've not found any situation where it restricted what I can do"

      The only restriction that annoys me is the lack of user-defined operators. Smalltalk (which was the inspiration for Objective-C) has an extensible hierarchy of classes that represent numbers and all the operations that can be performed on them, so the "object and message" idea is completely pervasive; this allows Smalltalk to (among other things) have classes for extremely large integers and true fractions that inherit from and respond to exactly the same messages as those representing in-built CPU types. Unfortunately, one cannot implement such a hierarchy in Objective-C (a shortcoming shared by Java), whereas C++ allows it via the controversial "operator overloading" mechanism. I can understand the various technical reasons for not including it, but IMO this should be a choice for programmers rather than one that language designers make for us.

      "It's not as fast, but nearly so."

      Objective-C as a language is at least as fast as C++. The reason applications tend to be slower comes from the message dispatch system, which is dynamic and (in procedural parlance) binds calls at run-time instead of resolving them during the compilation phase. In most cases, the gains in terms of flexibility are worth the performance hit that this incurs, but there are some application areas where this is not the case. It is therefore fortunate that Objective-C lets us write C code for those occasions where speed is of primary importance, and that such code is compiled as C (which is not the case with C-like code in a C++ compiler).

      "It doesn't have templates, but the dynamic method despatch can pretty much replace that."

      Actually, it's more a case of templates adding some of the advantages of dynamic dispatch to languages that lack it, in a way that fits in with their statically-typed nature. This is why dynamic systems tend to have the facility designed into them from the beginning, while templates are usually added to static languages at a later date when it is found that certain types of programming become very complex and clumsy without them (C++, Java, and C# originally lacked templates).

      "formal protocols are pretty much the same as Java interfaces"

      They are similar at a conceptual level, but once again the dynamic nature of Objective-C means that formal protocols are less restrictive than interfaces. Tu use a Java interface, one must include it in a class's "implements" clause, whereas any class that has the required set of methods conforms to a formal protocol, irrespective of whether the compiler "knows about it" during the compilation phase. Thus, in Objective-C, the only difference between a class that merely conforms to a formal protocol and one that specifically implements it is an extra level of type safety (which is in most cases desirable), as the compiler will flag a specific implementor that doesn't fully conform to the protocol.

      "I can define a category on a class which adds methods to the class, even without the source code to that class."

      This is a very powerful feature that Dylan and Oberon share with Objective-C, but few other compiled imperative OO languages have. It really comes into its own when used in conjunction with protocols, because one can add the requisite methods of a protocol to existing framework classes without affecting the framework itself, or other applications that use it.

      "It doesn't have garbage collection"

      The original Objective-C had garbage collection, so the fact that Apple's version still lacks it can be regarded as an indication that Apple haven't as yet fully implemented Objective-C.

      "it does intrinsically support reference counting"

      But in an annoyingly manual way, much like Microsoft's COM. COM had to do this because it is a language-independent system that cannot make any assumptions about the host langua

      --
      I'm not going to change your sheets again, Mr. Hastings.
    43. Re:Objective-C by Space+cowboy · · Score: 1

      Most of what you say above is actually what I think too - it's just that I didn't take the time and space to expound on it - eg: when I said ObjC was slower than C++, I meant that because of the dynamic despatch, it was slower ... I still think it's worth it. And there's always IMP's and raw C to help you along...

      The only thing I'd disagree with is the class-library comment. ObjC has been my language-of-choice for ~18 months now, and I find myself forgetting some of the subtleties of C++ that I used to know by heart. I think memory management in ObjC is pretty easy though - easier than in C++ I think. Most of my problems in "the old days" were (ie: before smart pointers came along) were of memory-management issues. I don't have that in ObjC. Plus it looks as though Leopard might have GC anyway.

      Two comments about language choices. (1) I wonder if ObjC would have been chosen at all if had been more-similar to Smalltalk / Oberon (I don't know Dylan). For all their flexibility, they are a lot slower than ObjC. It's possible the reason we have ObjC is precisely the compromises that were made. (2) I think the class-library is an intrinsic part of the language - it's hard to tell where ObjC leaves off and NSObject starts ... certainly ObjC never really got anywhere on non-Mac platforms until Openstep started to make some headway, and it's still got a tiny tiny presence even now.

      My own thought is that ObjC is compiled Java with dynamic despatch (at least it will be if we *do* get garbage collection :-) The similarities (OO, single-inheritance, interfaces, introspection, exceptions, threads, abstracted IO, ...) between the language (syntax aside) are quite remarkable, and both depend on an intrinsic class-library to make them useful.

      Simon

      --
      Physicists get Hadrons!
    44. Re:Objective-C by Weedlekin · · Score: 1

      "I meant that because of the dynamic despatch, it was slower ... I still think it's worth it."

      I do too. There are few cases where the performance hit is noticeable in practice, but many where the extra flexibility and ease of development pays dividends.

      "I think memory management in ObjC is pretty easy though - easier than in C++ I think."

      I'm not sure this is the case with modern C++ if one actually writes C++ rather than C with the odd sprinkling of "++" for flavour. Note also that there are some excellent free add-on garbage collectors for C++, so manual memory management isn't mandatory.

      "Most of my problems in "the old days" were (ie: before smart pointers came along) were of memory-management issues"

      Which is why a lot of work has gone into reducing them. It isn't the fault of C++ that far too many programmers still write what boils down to enhanced C instead of using better features that have been there for around a decade. I'm not saying that memory management issues have been eliminated (far from it), but they can be reduced significantly by the simple expedient of learning to use what's there instead of continuing with the same old bad practices (note that this is not a personal criticism, but a general observation based on a lot of the so-called C++ code that I've seen).

      "I wonder if ObjC would have been chosen at all if had been more-similar to Smalltalk / Oberon (I don't know Dylan). For all their flexibility, they are a lot slower than ObjC"

      Smalltalk is slower because it is a byte-code compiler that runs on a VM. Note though that the Self project at Sun (long since abandoned, although some of its technologies ended up in "Hotspot" versions of Java VMs) had great success with optimising Smalltalk, resulting in a number of significant speed enhancements.

      As for Oberon and Dylan, both are compiled languages whose performance is comparable to Objective-C. Like C, Oberon was designed for (among other things) writing operating systems, so it is capable of producing extremely efficient code from quite simple compiler designs; Dylan on the other hand was originally put together by Apple to provide an efficient dynamic OO language for programming the Newton (which wasn't exactly brimming with CPU power and RAM). Both have full garbage collectors, so memory management isn't an issue (although Oberon can eschew its use for system-level work.

      "It's possible the reason we have ObjC is precisely the compromises that were made."

      The reason we have ObjC on Macs is because NeXT decided to use it. One fundamental reason for wanting an OO C dialect was ease of interfacing with the headers and libraries of the NeXT cube's underlying Unix, which is something that other OO languages couldn't do, irrespective of how wonderful they might have been in other ways. As is the case today, this left them with a toss-up between (a primitive version of) C++ and Objective-C. Given the fact that ObjC is a true C superset whereas C++ isn't, the choice would have been an easy one even if ObjC hadn't had dynamic message dispatching, categories, and all the other goodies, especially when there was no indication at the time that C++ would achieve the dominant position that it's in now.

      "I think the class-library is an intrinsic part of the language - it's hard to tell where ObjC leaves off and NSObject starts"

      Some of the old OpenStep can now probably be regarded as part of the standard _system_ since the GNU project settled on its non-visual classes as part of their generic Objective-C class libraries (note though that these are maintained separately from the Objective-C compiler front-end, which can be used quite happily without them). AFAIK there are no longer any commercial Objective-C implementations anymore, and Apple use the GNU compiler, so this is probably as close to a reference implementation as we have today.

      "certainly ObjC never really got anywhere on non-Mac platforms until Openstep started to make some headway, and it's

      --
      I'm not going to change your sheets again, Mr. Hastings.
    45. Re:Objective-C by Woody · · Score: 1

      Which Obj-C book did you pick up?

  2. AppKiDo by fr00dy · · Score: 4, Informative

    AppKiDo is invaluable if you're a Cocoa programmer.

    1. Re:AppKiDo by Anonymous Coward · · Score: 0

      AppKiDo? The way of applications with ki?

      And I thought extending ki in the dojo was hard!

  3. X11? MAMP? by vistic · · Score: 1

    Why is X11 listed as PPC and not Intel/PPC?

    Also... Why is MAMP listed? Isn't the 'A' in MAMP installed by default even if it's not OS X Server?

    I think what's missing is DarwinPorts... that's a nice fast way to install stuff.

  4. Shark. by netfunk · · Score: 4, Informative
    --
    Don't say, "don't quote me," because if no one quotes you, you probably haven't said a thing worth saying.
    1. Re:Shark. by Anonymous Coward · · Score: 0

      It's been so long since I've commented that I've forgotten my password (and my username ;-P), but I'll anon up to second and third this. Shark, (and ObjectAlloc, MallocDebug, and libgmalloc) help you turn prototypes into apps that people want to use instead of dreading.

      And X11 ... words fail me. It sucked rocks when I was in school, I'm sure it still sucks them today. Why anyone would build anything using it when they have any other option is a complete and utter mystery, as is it's appearance on this list. For chrissakes, learn to develop applications so the UI is modular and can be platform specific already (MVC, look it up); it'll hurt less than X, and take a tenth the time even if you do Linux, Windows and the Mac.

    2. Re:Shark. by Eagleartoo · · Score: 1

      Seeing all this developer software opened makes me wish I hadn't played so many video games in my first year of college and really applied myself to CS, I figured I wasn't cut out to be a programmer. Good logic, just bad language and syntax skills. Cause programming in say C# or Java is learning a second language. That I I cold never think of an app to write cause everything had been written. But obviously not.

      --
      -You have been modded appropriately-
    3. Re:Shark. by AttilaSz · · Score: 2, Interesting

      Seconded. Here's an account of my first use of Shark (and XCode) that helped me speed up a program by a factor of 4: http://constc.blogspot.com/2006/01/taking-out-pain -from-c-development-on.html

      --
      Sig erased via substitution of an identical one.
    4. Re:Shark. by TINGEA77 · · Score: 1

      Shark, looks great!! Do anybody here know similar tools for linux and windows?

    5. Re:Shark. by jcr · · Score: 1

      Your story of the benefits of using Shark can repeated by hundreds, perhaps thousands of other developers. Tools with this kind of capability exist for other platforms, but they sell for thousands of dollars per seat. When I was working in Apple developer relations, I saw many cases of people finding performance issues in their apps on OS X, which they then applied to the windows versions of their products as well.

      Seems that the biggest mistake people kept on making was in failing to realize the cost of integer/float conversions.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  5. Vi by GreatDrok · · Score: 4, Interesting

    You know, in the 16 years I have been running UNIX I have really come to appreciate vi. I have tried other tools (Eclipse, Xcode, others I can't remember the name of, Kdevelop probably) but for the sort of programming I do (command line, C/MPI) you just can't beat vi (or more recently vim). Syntax highlighting, the speed of editing, having a few terminals open, keep it simple is my motto and it works. A mouse just slows me down. Of course, if I was doing GUI programming then I would use something like Eclipse (I bought the vi emulator for Eclipse) or Xcode. I still remember learning Motif in the early 90's and it was a nightmare.

    Anyway, like any good *nix, OS X comes with vim pre-installed. Just make sure you have X11 and it is business as usual just like it was back on my old Sun Sparcstation 1 running SunOS 4.1.3 :-)

    --
    "I have the attention span of a strobe lit goldfish, please get to the point quickly!"
    1. Re:Vi by torpor · · Score: 2, Informative

      I, too, adore vi, and use it to write code for OSX/Darwin, and Linux, the former for 5 years, and the latter for 14 years.. its a rock-solid tool in my hands, and I have no need to go to any other editor.

      Have you added cscope to yours yet?

      --
      ; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
    2. Re:Vi by Scarblac · · Score: 2, Funny

      As tradition requires it, allow me to point out that Emacs is at least equally great at running in a bunch of terminal windows for quick editing, plus it comes with several carefully selected types of kitchen sink :-)

      --
      I believe posters are recognized by their sig. So I made one.
    3. Re:Vi by ooze · · Score: 2, Informative

      Well, my fingers are emacs wired. So let the flame wars begin ;)

      But I have to say, that in all my years programming, I have never been more productive than when using emacs on a widescreen with 2 vertically seperated windows open at all times. And if neccessary, a few additional console windows. The hands never leave the keyboard in that setting. You have svn/shell/dired/ssh/editing/documentation readily available, all only being a tenth of a second away at your fingertips. Even for file management that that double window setup beats even the * Commander tools by far. Teh only beef I have is, that etags (for better source browsing ... sort of a half-intellisense) has problems with generating tags with MACRO defined entities in C and C++. But well.

      --
      Just because I can imagine doing a hippopotamus, doesn't mean I'd like to do it.
    4. Re:Vi by Daytona955i · · Score: 1

      While I've used both vi and emacs, I tend to prefer vim. (Note: if I was stuck with just vi and not the extended features of vi, I would probably use emacs)

      However, for those of you more comfortable with emacs, you should check out aquamacs. It's got some nice features specific to OS X.

      Also, I don't really want to start a flame war, just point out the aquamacs link for those looking for a nicer emacs experience on OS X.

    5. Re:Vi by Anonymous Coward · · Score: 0

      As a recovering vim addict - I'm finding TextMate is up to the job as a replacement editor 95% of the time on OS X - This is a bold statement for me, as I continually found myself going back to vim everytime I tried something new. Of course, every once in a great while I find something where vim is more appropriate, so I keep a copy around.
      - BTW - vim shouldn't require X11 in OS X, even gvim - unless you mean for some other reason.

    6. Re:Vi by Bastian · · Score: 2, Funny

      VI is dead. I mean, they've been stuck on that version for something like two decades. VII is the original Duke Nukem Forever.

    7. Re:Vi by JulesLt · · Score: 1

      I still use vi as my primary editor (not even client-side vim - I still spend most of my day stuck in emulated VT terminals) - however, I've been getting to grips with Textmate, which seems to offer the customisability / flexibility of vi or emacs, but 'feels' Mac. Given that it's written by a Unix-to-OS-X developer that makes sense. It's the one everyone sees in the RubyOnRails demo and goes 'What's that editor'?

      (Actually there is one other editor I loved, back on the Atari ST, which I think was called Tempus. When most GUI editors were slow, it was fast as any command-line editor).

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
  6. Re:OS X Native Development Pointless by oberondarksoul · · Score: 4, Insightful

    One can run Linux alongside Windows on the same hardware. Why, then, has Linux application development not shrivelled up? Why are there native Linux applications? Perhaps it's because if a user has chosen an 'alternate platform' such as OS X or Linux, they're not going to be very happy about having to run Windows too; dual-booting is never as pleasant as running a native app, and perhaps - just perhaps - there are things OS X, Linux, et al can do that Windows can't.

    And besides, with more Macs being sold, perhaps marketshare isn't everything. An audience of several million is still an audience of several million...

    --
    And tomorrow the stock exchange will be the human race
  7. Cyberduck by nighty5 · · Score: 1

    "Cyberduck is an open source FTP and SFTP (SSH Secure File Transfer) browser licenced under the GPL with an easy to use interface, integration with external editors and support for many Mac OS X system technologies such as Spotlight, Bonjour, the Keychain and AppleScript."

    It rocks!

    http://cyberduck.ch/

    1. Re:Cyberduck by chrish · · Score: 2, Informative

      I find it really slow, and prefer to use Fugu for my SFTP needs:

      http://rsug.itd.umich.edu/software/fugu/

      --
      - chrish
    2. Re:Cyberduck by iotaborg · · Score: 1

      I agree with the parent; although not as nice of an interface, Fugu is actually fast for SFTP. I can only get at most 1MB/s in cyberduck on a local network SFTP transfer, and full rate with Fugu.

    3. Re:Cyberduck by Anonymous Coward · · Score: 0

      I'll give that a third thumbs up. I'm always amazed that I don't see more people recommend Fugu more. Cyberduck is always the free choice on all these best of lists. And while Transmit is probably the best, why pay for an FTP client!?

  8. Free Pascal (Lazarus in future?) by marcovje · · Score: 1


    I use Free Pascal on my Mini which gives me access to existing Delphi code as well as native interfaces. (Code Warrior Mac/Carbon code is easily converted, as Carbon headers come with it)

    I have ported some GUI apps using Lazarus (Lazarus.freepascal.org), but the Carbon native port is not ready, and these run under XDarwin.

    1. Re:Free Pascal (Lazarus in future?) by marcovje · · Score: 1


      There is some XCode integration for FPC btw. The last release was the initial XCode support, in the next release (within a month) it should work better.

  9. MacDevCenter by Ohreally_factor · · Score: 4, Informative

    O'Reilly's (no relation) has a great site for Mac tech/programming at MacDevCenter.

    Also, Server Logistics, a Mac based web hosting company with cred, offers pre-packed mySQL for free. Gotta love that Aaron Faby.

    --
    It's not offtopic, dumbass. It's orthogonal.
    1. Re:MacDevCenter by Sentry21 · · Score: 1

      Nice, they ship the latest upgrade to a four-year-old database engine in a tiger-incompatible format. If your OS is up-to-date (and it should be), grab them from an arguably better source instead.

    2. Re:MacDevCenter by cyberassasin · · Score: 1

      I used to like the MacDevCenter..... They used to have a nice flow of good articles.... But now it is just blog posts of a handful of people ranting or raving about what's cool/uncool this week. It has really started to disappoint.... I wish they would get back to the in depth articles showing how to use the tech in the OS. The articles are key.... There are plenty of blogs out there now. I don't need another one spouting useless information (like hey, did you know apple has free music downloads!) Show me how to do something cool.....

      --
      Who is the master of foxhounds, and who says the hunt has begun? -Pink Floyd
  10. Once you have X11 installed you can add ... by openbear · · Score: 1

    First, they have X11 listed incorrectly as a PPC app. If you have an Intel based Mac then the installation CDs includes a pkg of X11 as a Universal app.

    Once you have X11 installed then you can also get ...

    1) Inkscape (Universal) ... for all of your SVG editing needs.

    2) Gimp (Universal) ... for all of your raster image editing needs.

    ... and I am surprised that they left Eclipse off of the list. While Xcode is preferred for doing OS X development, it is still worth a mention :-)

    I'm sure there are others, but these are the ones I use most.

    1. Re:Once you have X11 installed you can add ... by CableModemSniper · · Score: 1, Informative

      Did you RTFA? They mentioned Eclipse.

      --
      Why not fork?
    2. Re:Once you have X11 installed you can add ... by Anonymous Coward · · Score: 0

      I've used Macs for programming and graphics for years. I've used Inkscape, Gimp, Photoshop, and Illustrator for real projects.

      Inkscape and Gimp simply aren't better than Illustrator and Photoshop, if you're doing graphics. (If you want to hack the source, that's a different story, but I don't think that's what you meant, or what most people would use them for.)

      Hey, I'm a free software geek, too -- I use Linux at home -- but pretending that Inkscape 0.44 is better than Illustrator CS2 is just silly. This is a list of "Best Developer Tools", not simply "Best Free Developer Tools".

    3. Re:Once you have X11 installed you can add ... by xouumalperxe · · Score: 1

      Personally I rather like Mscromedia Fireworks. Raster AND vector graphics, bundled into one. Oooooh the potential... Not really photoshop though.

    4. Re:Once you have X11 installed you can add ... by CableModemSniper · · Score: 1

      Apparently the mods didn't read the article either. That's cool.

      --
      Why not fork?
  11. Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

    I was a Mac developer going all the way back to the very beginning. I spent most of my Mac development life with CodeWarrior. It was fast. It was efficient. It was straightforward.

    Yes, for larger projects it lacked quite a bit of the things most developers expect or need, but even just using it just as an editor was good.

    And then came Xcode...

    I could spend the entire night listing problems with Xcode. I feel like my soul has been drained over the past two to three years of struggling with this nightmare of a development environment. I think the only reason there isn't a larger outcry from Mac developers is there simply is no real alternative outside of vi and makefiles.

    Something went terribly wrong with the Xcode project at Apple. The IDE is so bad that I have come to naturally expect things to just not work or crash. Even on a quad-970 machine editing and basic UI functions are mindboglingly slow. Text editing is so slow in Xcode that I cannot believe it isn't some sort of malicious sabotage.

    And even simple things like jumping to definitions or listing include files is just flat out broken when working with projects and libraries open at the same time.

    There are just so many things where I keep telling myself that in any other IDE this particular task would be easy to do or just work automatically. I feel like Xcode is some sort of possessed program that is actively seeking to thwart my every move.

    Even though I've been a foaming at the mouth Mac lunatic for years and years, Xcode has just about sapped all my desire to continue doing development on the platform.

    1. Re:Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

      Welcome to Cocoa:-)

      Seriously, I think that in XCode the "I" of IDE is missing. The tools are not integrated with the rest of the IDE, and everything goes via cmdline interfaces (lots of binary startup time and initialisation).

      Personally I prefer IDEs that really _integrate_ and don't work via external interfaces (that are often also a bit fragile and spew hordes of bad error msgs)

    2. Re:Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

      > Welcome to Cocoa:-)

      I have used Xcode and there is certainly something seriously wrong with basic text edit and display. Editors from ten years ago handled files of the same size and with full syntax highlighting that make Xcode crawl. I can only assume that since Xcode is the only choice for Mac development that no one at Apple gives a shit.

      Basic text editing is so slow with Xcode that it is something that you have wonder how the hell Apple would let its developers get away with such fucked up code. For no other reason than basic pride you would think the Xcode team would spend the minimal amount of time it would take to make text display on par with every other major commercial text editor.

      Or they should just put the fucking source for Xcode on one of the Apple servers and say here, we suck so much someone please fix it.

      And another thing is closing windows. How in the hell can Xcode take up to a second or so sometimes just to close a fucking window???

      And how the hell does the Xcode team get away with a non-tabbed interface for files? It is like Xcode is making work for everyone who uses it with its idiotic 'touch to open' for project files. I'm sure everyone who uses Xcode is sick and tired of having to clear out that ridiculous popup open file list that gets filled with every single file that you might have accidentally touched.

      Every new release I keep hoping that the Xcode team will finally get their shit together and actually fix these basic problems, but they seem to be happy to let things continue to be broken and just keep adding fun new features.

    3. Re:Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

      I'm involved in an OSS project that plugs in to XCode. The plugin interfaces are as buggy as hell, in practice only the parts used by default are _half_ what usable. The rest isn't at all.

      Support for anything that doesn't work (primarily) via makefiles is totally absent.

    4. Re:Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

      I use to use Xcode until I finally gave up in frustration after hoping that 'the next update' would be the one that finally fixed basic functionality. And then maybe the next and so on.

      I remember trying to ask about glaring problems with Xcode on the Apple mailing lists and getting pounced upon as a trouble-making asshole. Virtually every Apple person I interacted with came across as an indignant prick. And the regulars on the lists act like fawning fanboys who all leap to Apple's defense with a 'get off Apple developer X's back, he's a cool dude, I drank beer with him at last years' WWDC' attitude.

      Even though I have happily left Xcode as nothing more than an unpleasant memory now, I still have a morbid fascination with the product and how the hell something could be so bad and what type of people would actually come up with a product like it. I mean what kind of IDE team ships a version 2 product that doesn't display c-strings by default in the debugger? And Xcode's handling of global variables in its debugger is one of the single worst features I've ever seen in a commercial product.

      I don't think Apple is going to be attracting Windows and Linux developers to their platform with an almost comically bad IDE as Xcode.

    5. Re:Xcode - Yeeeeechhh! by russellh · · Score: 1
      I could spend the entire night listing problems with Xcode. I feel like my soul has been drained over the past two to three years of struggling with this nightmare of a development environment. I think the only reason there isn't a larger outcry from Mac developers is there simply is no real alternative outside of vi and makefiles.


      NeXT was known for their quality dev tools. what happened? is xcode a rewrite or the evolution of projectbuilder?
      This is funny, as I don't think XCode is all that bad. But then again, it's the first IDE I've really used outside of THINK C back in 92 or 93 for that one other time I did mac programming. I've been doing command line development since about 1984. I see XCode as a simple alternative to make, basically, as I'm unfamiliar with how to tell cc where to find frameworks or make a universal binary, etc. I suppose I could look at what xcode produces...

      aren't there other IDEs? and as I understand it, XCode is stuck with the gnu compiler, while the expensive intel compiler kicks its ass.
      --
      must... stay... awake...
    6. Re:Xcode - Yeeeeechhh! by Anonymous Coward · · Score: 0

      The Intel Compiler is free. (As in beer.)

    7. Re:Xcode - Yeeeeechhh! by __aaclcg7560 · · Score: 1

      I still have a morbid fascination with the product and how the hell something could be so bad and what type of people would actually come up with a product like it.

      Anything possible on the fuzzy edgies of Steve Job's reality distortion field. You just need to have faith and believe! :P

    8. Re:Xcode - Yeeeeechhh! by wootest · · Score: 2, Informative

      Xcode is a rethink of Project Builder, but I don't think it's a rewrite. I didn't use Project Builder for long on Mac OS X, and I never used it on NeXT, but Xcode is so much faster than Project Builder it's freaky. If you think Xcode is slow, thank your lucky star you never had to use Project Builder on OS X 10.2. :)

      I would be very surprised if Xcode didn't include optional support for the new free Intel compilers in its next major version (3.0 with OS X 10.5 "Leopard", probably), but I don't think it'll be entirely replaced since Apple has made a heavy commitment to GCC (including some more or less experimental efforts like garbage collection and LLVM), and more importantly since the Intel compiler doesn't do Objective-C at all. I don't think it's impossible at all to replace the compiler; even if Xcode *is* hardcoded to gcc, which I don't think, just write a shell script that calls the other compiler and translates the command line options as necessary and put that in place. And, after all, if you're doing command line development and see yourself just doing that for the foreseeable future, there's no reason to just use text editors and Make, especially not if that's the way you've traditionally done it.

      To answer questions in your comment, you don't tell gcc to make a Universal binary, you build an i386 build and a ppc build and use lipo to make a fat binary, and my Xcode build log tells me that you supply framework search paths or explicit framework names to ld and gcc directly.

  12. Eclipse by gbobeck · · Score: 4, Informative

    I can't believe that the article didn't recommend Eclipse. Even Apple's Developer Connection recommends this wonderful program.

    Of course, Eclipse is a good tool because it is multiplatform and highly extensible. I find it great for java and python (through pydev) work on my Mac and other boxen.

    --
    Navicula hydraulica plena anguilarum est. Omnes castelli tuus nostri sunt. Ed elli avea del cul fatto trombetta.
    1. Re:Eclipse by Anonymous Coward · · Score: 0


      It's also dog slow and complex to use, which are the natural antipodes of its extensible architecture and portability. (Compared to windows tools like e.g. a pre- .NET VS or pre .NET Delphi, or Mac CodeWarrior)

      YMMV depending on your purposes and requirements, but I don't like Eclipse.

      I want the IDE usually for editing a very limited amount of application types (a client or a server) in one language. And I prefer it to do that well, and focus on that instead of having a whole lot of stuff extra that I don't use

    2. Re:Eclipse by Octorian · · Score: 1

      One could even think of Eclipse as being the "EMACS of the 21st Century," given how its big and flexible, with a gazillion plugins.

    3. Re:Eclipse by chrish · · Score: 1

      ... and its speed and svelte memory footprint will remind you of EMACS in the early 90s!

      --
      - chrish
    4. Re:Eclipse by Anonymous Coward · · Score: 0

      Is it self-documenting? No. Is it reprogrammable on the fly? No.

      I wanted eclipse to be the next emacs, but the next emacs is GNU Emacs 22.

  13. and KDE, Gnome etc. by alistair · · Score: 1

    I agree and was puzzled the author had X11 down at no. 10 on his developers list. Once you have X11, try Fink or Darwin ports and installing KDE and gnome is as easy as with Debian.

    Once you have spent around a day watching fink compile all the libraries and applications for you KDE runs superbly on a mac. You can either alloiw it to manage the desktop and run fulll screen or simply run a toolbar in the manner of the dock. I would then highly recommend Kate - the KDE advanced text editor which is excellent for Perl and Bluefish for XML and X/HTML, although some pprefer Quanta plus which also comes with tthe Fink KDE bundle.. The KConsole is a very good terminal application also.

    While there are still a few cut and paste issues between X11 and native mac application overall the integration is excellent, you can use expose on X11 and native windows and most desktop manager applications allow you to separate them between desktops, plus you get access to all the excellent mac fonts.

    As a Perl author I was disappointed in the mac at first. Now I have the combination of KDE, Gnome an native mac tools it has moved to be my preferred development platform. I would seriously recommend anyone with a mac and an interest in development to look at fink, to my mind it is more exciting than bootcamp will ever be.

    1. Re:and KDE, Gnome etc. by mrchaotica · · Score: 1
      Once you have spent around a day watching fink compile all the libraries and applications for you KDE runs superbly on a mac. You can either alloiw it to manage the desktop and run fulll screen or simply run a toolbar in the manner of the dock. I would then highly recommend Kate - the KDE advanced text editor which is excellent for Perl and Bluefish for XML and X/HTML, although some pprefer Quanta plus which also comes with tthe Fink KDE bundle.. The KConsole is a very good terminal application also.

      Is KDE using native QT working yet?

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    2. Re:and KDE, Gnome etc. by alistair · · Score: 1

      I don't think KDE using the native window manager and QT on a mac is close to ready yet, a number of people do seem to be working on a port for KDE 4.0, there is a small amount of information at the KDE Wiki.

  14. ZigVersion by escrafford · · Score: 2, Informative

    ZigVersion is a Subversion GUI that kicks ass.

    1. Re:ZigVersion by 99BottlesOfBeerInMyF · · Score: 1

      Interesting. An easy to use GUI for accessing Subversion could be very useful. Having helped Windows users with their WinCVS and TortoiseCVS for years though, I wonder if it won't have many of the same usability problems as the former. The number one problem with WinCVS is that users get confused switching between the explorer and CVS viewers for the same files. Tortoise solves that problem by working as a plug-in that lets users perform CVS commands by selecting and right-clicking in the regular explorer and adding color codes to the icons (works with SubVersion too). Have you seen anything like this for OS X and SubVersion? Barring that, it might be easier to just teach them the CLI way of doing things.

    2. Re:ZigVersion by Anonymous Coward · · Score: 0

      So is svnX.

  15. TextWrangler, Sampler by nitroamos · · Score: 4, Informative

    I've found a use for BBEdit's free TextWrangler -- it's a really smooth program, and because it has a command line interface, TextWrangler is easy to get it to do what you want it to do. TextWrangler has the best system for merging two files that I've found.

    Although I've come to use emacs more and more for quick source modifications and when programs are only 1 source file, I still appreciate the use of a good IDE like xcode (although I do think that visual studio is still a bit better) for the simplicity in navigating a large project. On the other hand, emacs does far better than xcode or visual studio at automatically indenting code.

    I've found that the OSX developer program Sampler (which comes free with the developer distribution) is also a great program useful for getting a quick feel for where the bottle necks in my program are. Sampler is really intuitive to use, and it provides a nice way of navigating the calling tree of your program allowing you to see how different functions are spending what fraction of compute time. The only thing about Sampler that bugs me is that if I save the data, I haven't figured out how to get the data in terms of percents (as opposed to sample counts) when I load it later.

    1. Re:TextWrangler, Sampler by Octorian · · Score: 2, Informative

      I have to agree about indenting... I've never used any editor that does it as well as Emacs, and often wish I could turn on "Emacs-style indent mode" in Eclipse.

      However the reason I lean towards IDEs like Eclipse today, is that while Emacs may be a wonderful editor, it gets really painful really fast when you're navigating across a project with many files in many directories.

    2. Re:TextWrangler, Sampler by powerlord · · Score: 1

      BBEdit (and TextWrangler) are absolutely fabulous.

      I use it every day, and it was worth every penny (Text Wrangler is the free version which is still pretty feature complete).

      We use SVN at work and the integrated SVN tools (runs against the local repository), are great. They also support CVS, although both of these features require purchasing the BBEdit version of the product.

      Another of those nice features available in both versions is the ability to open a file remotely via ftp/sftp.

      (Also obviously has syntax highlighting and the ability to convert file formats between native Mac, Unix and Windows which can be useful with text files sometimes).

      --
      This space for rent. All reasonable inquiries will be entertained at proprietors discretion.
    3. Re:TextWrangler, Sampler by chrish · · Score: 1

      Having recently moved to Mac OS X, I don't have a predilection for BBEdit; I really like Smultron though, which is free.

      --
      - chrish
    4. Re:TextWrangler, Sampler by Anonymous Coward · · Score: 0

      Use JDEE and ECB.

    5. Re:TextWrangler, Sampler by bar-agent · · Score: 1

      TextWrangler has the best system for merging two files that I've found.

      Better merging than FileMerge? I find that hard to believe. FileMerge is very good at thinking of differences in the same way a person does.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    6. Re:TextWrangler, Sampler by nitroamos · · Score: 1

      I've never used FileMerge, so I can't compare those two. Recently I had to merge two versions of my program involving ~100 files, a painful process that I had simply bruteforced before. The problem arose through a failure to effectively use CVS. Using a simple perl script, I was able to send files 2 at a time to TextWrangler, which would then diff the files and in the windows for the 2 files highlight the differences. Many programs can provide glorified diff functionality.

      TextWrangler has a third window in which each difference is listed. What made it so easy was that assuming both files didn't change the same lines, it was as simple as clicking a button to synchronize each difference. When I closed the windows, my perl script detected which of the 2 files I had decided to modify, and made sure it was in the "merged" directory. Easy! I can't imagine an easier way to do it since everything is completely automated except for the decisions regarding which change to keep. The only time that I needed to do more than simply click buttons was when there had been changes to both segments of code.

  16. MAMP? oh yeahhh... by lixlpixel · · Score: 4, Informative

    well - MAMP (mamp.info) does give you everything in one package, with the newest versions (Apache 2 & PHP 5)...

    and it really invites to screw around with the setup.

    before MAMP i often hesistated to install experimental stuff, now i can just drag the one(!) folder to the trash and start with a fresh install.

    things i did with MAMP which were hard to realize otherwise (sitting with the powerBook on the couch) include

    • having the builtin Apache serving only static content, without loading PHP or any fancy modules at all and having a .htaccess rewrite rule to point certain URLs to the MAMP full-blown-with-everything-and-the-kitchensink Apache Server running on port 81. then you "generate" the static HTML with that server and save it to .html files - which then get "served" from the builtin Apache on port 80
    • because the HD on this interim server is so noisy and it has enough memory, i created a RAM disk (donelleschi.com/ramdiskcreator) with the mount-point @ /Applications/MAMP , dragged the whole content of the MAMP folder on the RAM disk and then started the server from and in memory. works pefekt - the HD only spins up when the cron-script backup of the RAM disk kicks in.

    and much more...

    it really helps if you enjoy messing around with a server setup and want to learn how everything works without srewing up your Mac OS install

  17. Re:OS X Native Development Pointless by marcovje · · Score: 1

    Agreed for clientside. The only true ones that I know are Borland's Kylix and Loki games and they failed, and the other commercial apps (e.g. Adobe Reader, Nvidia drivers ) are mostly vehicles for services or hardware, and their commercial angle (as in pay for software) is quite limited.

    But the serverside is a different story. Still mostly services based, but way more money involved

  18. PHP and professional in the same sentence? by rgravina · · Score: 0, Flamebait
    From TFA:
    Whether you are a hobby web designer or a professional developer, MAMP comes in handy when you need to test your product.
    and:
    Zend Studio 5 is the only Integrated Development Environment (IDE) available for professional developers that encompass all the development components necessary for the full PHP application lifecycle.

    OK admittedly he/she did metion PHP specificially in the second quote, but they seem to equate "professional developer" with "chooses PHP"! Hah! I had to restart an application I was working on that went from web to client/server with a GUI because PHP just doesn't cut the mustard for anything other that a web guestbook. Even if I did stick with web delivery I was running into problems with PHP (don't get me started on that session crap - oh here's an idea, run your application as a separate process to the web server and keep application state in memory! Maybe theorectically possible with PHP but I've never seen it done.) Basically, it's a joke, and it so much so that it now annoys me to no end when deveopers use "professional" and "PHP" in the same sentence (without a "not" in there somewhere"). If I had've started with Python or Ruby for example, I'm sure I could've at least reused some of that code. Thanks for wasting years of my life and teaching me bad programming habits, PHP.

    If you do consider yourself a "professional developer", and you're working on an application where you think PHP is the right tool then drop that crap like a ton of bricks and try some other language... Python I can vouch for, and I hear Ruby is great too, and they both have great web frameworks.

    1. Re:PHP and professional in the same sentence? by rylin · · Score: 1

      You seem to think sessions are something unique to PHP?
      Perhaps you're unaware that sessions are merely just an identifier (either sent through a cookie, or through the urlstring) telling PHP where it can fetch unique data.
      This is nothing new, and has been the recommended way of doing persistence/state handling on the web for quite some time.

      PHP does not teach you bad coding habits, as there's more than one way to do something - sure, it does offer you "the easy way" quite often, but if you're the one to take it, then that's your problem.

      Why you were modded interesting, I have no idea - PHP is a language much like any other. If you can't put it to use in a way that suits you - fine, chose another language more to your liking - but don't go about spouting uneducated nonsense.

    2. Re:PHP and professional in the same sentence? by elbobo · · Score: 1

      "PHP just doesn't cut the mustard for anything other that a web guestbook."

      That this comment has been moderated anything other than troll is a sad indictment of Slashdot's current breed of moderators. Someone who is obviously a failing developer (ie they can't build a web application in one of the web's most heavily used languages) gets to +4 Interesting? That's really sad.

    3. Re:PHP and professional in the same sentence? by Dekortage · · Score: 4, Informative

      I am pretty sure PHP can do more than just web guestbooks. You know, little things, like running Friendster, Yahoo, and GAIA Online. I've also run apps like the OSS Horde/IMP web-based mail front-end with tens of thousands of users. I reuse PHP code all the time. And if you add in some of the code optimizers and server accelerators, you can really make PHP sing.

      You also wrote, "Thanks for wasting years of my life and teaching me bad programming habits, PHP." Which bad habits would that be? There are good and bad ways of writing PHP, just like there are with ANY computer language.

      --
      $nice = $webHosting + $domainNames + $sslCerts
    4. Re:PHP and professional in the same sentence? by erlando · · Score: 3, Insightful

      I'm really tired of people equating PHP with bad programming and amateurish developers. PHP is a language as is Ruby, Python and Visual Basic for that matter. They're tools, nothing more.

      Whether or not YOU choose to employ good coding practises or not when you code in PHP that's up to you. I'm sure there's bad Ruby and Python coders out there too. Granted, PHP may encourage inexperienced developers to take the easier, less maintainable way. But it doesn't mean that that's what happens every time.

      Don't bash the developer for the language they're using. Just because you seem to become a worse developer because of it doesn't have to mean that it happens to the rest of us.

      --
      Remember, there are no stupid questions. But there are a lot of inquisitive idiots.
    5. Re:PHP and professional in the same sentence? by Daytona955i · · Score: 3, Funny

      Don't forget my favorite: http://www.rubyonrails.org/index.php

    6. Re:PHP and professional in the same sentence? by Dekortage · · Score: 1

      Don't forget my favorite: http://www.rubyonrails.org/index.php

      Omigosh. That's hilarious. Must be that Ruby On Rails is just too powerful to run a typical web site.

      --
      $nice = $webHosting + $domainNames + $sslCerts
    7. Re:PHP and professional in the same sentence? by hey! · · Score: 3, Insightful

      It's funny though.

      One thing I've learned over the years is you can't ever fully divorce a language from the paradigms burned into its users' heads; they are continually reproduced as if you'd wired in an unconscious brain to fingers macro. Once an idiom is common in a community of programmers, it stays there until it is forcibly ejected by deleting the language and API features it depends on.

      What was best feature of C? That the Kernighan and Ritchie were master programmers, and everybody learned from their book. Many also used Kernighan's Software Tools books, and since books on this topic were far fewer in those days, many also had Kernighan and Plaugher's Elements of Programming Style.

      The biggest problem with Java is the nearly reflexive bloat of Java Programmers who were weaned on enterprise APIs. The problem with PHP is the opposite: the very first steps a PHP programmer tends to take instruct him on how convenient mixing business logic and HTML is.

      There is nothing that prevents you from writing great enterprise PHP software, other than your own habits. But don't underestimate the force of habit.

      --
      Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
    8. Re:PHP and professional in the same sentence? by rgravina · · Score: 1

      OK, I must admit, I had a bit of a rant there, and presented my argument poorly and in retrospect it just looks stupid.

      I had meant to say PHP wasn't the be all and end of web development and that PHP lacks a decent (any?) application server. I think the problem I was facing was just that PHP wasn't the right tool for the job as I moved from a web-based application to a client/server one. I'm aware that sessions aren't unique to PHP of course. It's just that I have bad memories of trying to get a Java client to XMLRPC my PHP server and pass the session ID and do all sorts of dance to get the application state the way I wanted to process the request. Comparing that to my great experiences with Twisted Python I wonder why I bothered trying to shoehorn all that functionality into Apache/PHP. So where I am going with all this is that I was blaming PHP, the language itself, for this when really I should've chosen a differnt language or framework at this point.

      Sometimes I get a little emotional with PHP because of this :)

      Next time, I'll remember to think then type!

    9. Re:PHP and professional in the same sentence? by misleb · · Score: 1
      PHP does not teach you bad coding habits, as there's more than one way to do something - sure, it does offer you "the easy way" quite often, but if you're the one to take it, then that's your problem.


      That's just it, the "easy way" should, more often than not, be the right way. That is what pisses me off about PHP. It is so damn easy to write bad/insecure code. To do things right, you have to remember tons of rules and best practices. On the other hand, doing things the Right Way in Ruby on Rails, for example, is often the the easiest way. That is how a framework/language should be designed.

      -matthew
      --
      "THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
    10. Re:PHP and professional in the same sentence? by Carthag · · Score: 1

      I once had a Java exam for a class I never showed up to (they placed it on goddamn saturday mornings). The professor asked me about Java's session handling, and I had to wing the whole thing, describing how I'd create a unique id that would be associated with each user and passed back & forth through the POST header/html. It was pretty funny when he realized that I hadn't attended any of his lectures. Got a decent grade though.

  19. Smultron (text editor) by John+Nowak · · Score: 1

    It's Free software and does what you need it to do. For those that don't care for vim or are just detrimentally used to Cocoa's default key bindings and can't adapt well to vim. (That would be me, by the way.)

    http://smultron.sourceforge.net/

    1. Re:Smultron (text editor) by hatrisc · · Score: 1

      I'd have to agree with Smultron. It's a great little editor. Since I work with people who don't exactly like the 80 character'\n' rule, and I use Emacs, Smultron comes in nicely when lines are just too too long.

      --
      I write code.
    2. Re:Smultron (text editor) by mrchaotica · · Score: 2, Informative
      Cocoa's default key bindings

      That's mostly the same as Emacs' default key bindings, you know.

      --

      "[Regarding the 'cloud,'] ownership was what made America different than Russia." -- Woz

    3. Re:Smultron (text editor) by John+Nowak · · Score: 1

      It's true, but I don't necessarily want to use emacs as a lightweight editor. :-)

  20. Here you see ... by Anonymous Coward · · Score: 0

    ... the misery of mac devellopers. 1) Xcode2 (Free - Intel/PPC) XCode would be very very great without its bugs. Many features are wonderfull, you have whole control over your project, BUT, as i said, many bugs, it needs more much memory and CPU than it should (just for editing text), and things like completion are annoying (wait half a second for suggestion triggering, and annother half a second for retreiving and listing them, gasps). Bugs are things like subversion broken during at least two minor releases, thanks to SvnX. Also, XCode would loose all it's value without it's forgotten (and fantastic) little friend Interface Builder. 2) TextMate ($39 - Intel/PPC) duh, Mac OS X is the only OS where you don't have a decent free (as in freedom) text editor. (ok, vim work pretty well, but Mac OS X terminals are crappy) 3) iTerm (Free - Beta only) I don't like iTerm, neither i like Terminal.app (the one shipped with Mac OS X). I am a command line addict, that's painfull for me. 5) NVU (Free - PPC only) NVU has not been finished on all platmforms, it was a promising software, but, i really whish it would have been finished. Also, all XUL based software are not weel ported to Mac OS X. Seing this listed in the "Best developer tools for OS X" is pretty frightening. 6) Tramsmit ($17.95 - Intel/PPC) I don't trust proprietary software, especially for networking stuff. (hum, note that FTP (read only(!)), webdav, smb, nfs, afp and iDisk are supported in the finder) 9) CSSEdit ($24.99 - Intel/PPC) Here you see that nvu is not finished : it has the best css editor ever seen, but the whole gui is not polished enough to make a simple css edition easy, so that an external software is needed. But CSSEdit is a good software. 10) X11 (Free - PPC) The best joke from apple. 10.4.4 has broken it until 10.4.7 (in fact the fontconfig stuff hanged up). Windows are not managed in an acceptable way, for example, when you have a gimp icon in the dock, you have to click on the X11 icon to raise it, with all the others X11 windows. Also, focus is managed in a strange way : when you click on windows which does not have the focus, the window takes the focus, and the mouse event goes to /dev/null. The side effect is that if you click on a button contained in a windows which does not have the focus, you simply select the window without clicking on the button. So you have to : single click on button if the window has the focus, double click on the button otherwise. Thanks to the great lords of the UI.

  21. Re:TextMate by jcr · · Score: 3, Funny

    I can't believe no-one has mentioned Textmate.

    Umm.. It's #2 in TFA. You didn't RTFA, did you?

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  22. Re:OS X Native Development Pointless by jcr · · Score: 4, Insightful

    What is the point of doing native OS X development?

    I do it to make money. So do rather a lot of other developers.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  23. Umm ... by Anonymous Coward · · Score: 0

    What's wrong with vim? Grab an X server, install RXVT and voila, a decent terminal with a decent editor. No need for fancy OSX things.

    1. Re:Umm ... by marcovje · · Score: 1, Offtopic


      Keyboards have cursor movement keys nowadays. No need anymore for an escape mode. (even though some people idealise that out of principle now)

    2. Re:Umm ... by Anonymous Coward · · Score: 0

      You would think that, but after 1 week of using Vim you realize how much time you waste moving your hand from home row and back again. Escape mode, or "command mode," is useful for more than cursor positioning, too, especially when a large portion of your coding time is spent issuing commands that modify the text. Having a modey system saves your hand the cramping of holding down the %&#( control key every time you want to do something more than type.

    3. Re:Umm ... by marcovje · · Score: 1

      I move cursors and edit more than that I issue commands.
      Of course, with VI both also require extra keys.

      More importantly, since you address typing, the shift-alt states are covered by a normal typing posture. The escape key is not. It is out there somewhere up left.

    4. Re:Umm ... by Anonymous Coward · · Score: 0

      If you think that lack of cursor movement keys is the only reason to have modal editing then you really don't know enough about vi to be commenting.

    5. Re:Umm ... by marcovje · · Score: 1


      Afaik Bill Joy himself stated this.

  24. or NetBeans by ralinx · · Score: 2, Informative

    Eclipse has its strong points, but some people (like me) just don't like it. I can't really say why i don't like it, i guess it just doesn't feel right to me. I do like NetBeans a lot though. NetBeans looks and behaves more like a real OS X application than Eclipse IMO.

    And if you're new to Swing development, Matisse (the GUI designer in NetBeans) really helps a lot... it makes it easy to develop java GUI's in the same way that Visual Studio makes it easy to develop winforms GUI's.

    If you're a java developer (or are interested in getting started with Java) on OS X, i highly recommend giving NetBeans a shot. It's free, open source, easy to use and powerful.

    note: i have nothing to do with the NetBeans project, i just think it's a great free IDE that deserves as much attention as Eclipse.

  25. Correction re: Parallels by cliffiecee · · Score: 1

    The article refers to Parallels virtualization software as $49, but that's for the "Win&Lin" version. The Mac version is $79.

    1. Re:Correction re: Parallels by NoviceW · · Score: 2, Informative

      Until few weeks ago you could get a discount. But unfortunately you have to pay more.

    2. Re:Correction re: Parallels by FreeBSD+evangelist · · Score: 1

      But it does have the Parallels Compressor bundled for that price.

  26. Java by countach · · Score: 1

    How about Java? You run it on Mac OS-X and it looks just like an OS-X app, complete with top menu bar. All this and you don't have to change the source from Windows. I don't know if there are subtle differences to "real" OS-X apps that Mac heads would see, but from my point of view it works well. And Eclipse works quite well on Mac too.

    1. Re:Java by DrXym · · Score: 1
      Java is getting pretty good on the desktop, even under Swing. Under SWT, it uses native widgets so its even better. I think I would be hard pressed to consider writing a native application these days unless it required maximum performance or some kind of advanced feature that Java does not offer access to.

      It always gives me a kick to see my Java app, developed solely on Windows work almost flawlessly on Linux or OS X. I say almost but there are some minor UI inconsistencies that I need to fix. You mention for example the menu bar should go at the top, but it doesn't in my app. Also, my menus look a bit stupid since it uses the Windows conventions for menu structure for underlining accelerator keys, e.g. File.

      So some work would be required here and in other places for a cross-UI, but certainly nothing at all comparable with attempting to port a Win32 app to Objective-C & Cocoa. I think .NET would actually be better than Java as a cross-platform tool if it actually were cross-platform. Mono might hold that promise one day, but trying to run even the simplest Windows.Forms app on Linux and the problems that follow suggests they have a way to go yet.

    2. Re:Java by countach · · Score: 1

      > You mention for example the menu bar should go at the top, but it doesn't in my app.

      You have to set a system property. Something like apple.laf.useTopMenuBar=true, or something like that.

    3. Re:Java by DrXym · · Score: 1

      Sounds easy, I'll give it a try! I guess that a few lines of platform specific code at startup would take care of most of the differences

    4. Re:Java by dowobeha · · Score: 2, Informative

      It always gives me a kick to see my Java app, developed solely on Windows work almost flawlessly on Linux or OS X. I say almost but there are some minor UI inconsistencies that I need to fix. You mention for example the menu bar should go at the top, but it doesn't in my app. Also, my menus look a bit stupid since it uses the Windows conventions for menu structure for underlining accelerator keys, e.g. File.

      Both Apple and Sun have developer guides for fully integrating your Java Swing app into Mac OS X. Here is Apple's guide and Java system properties to help with Mac integration.

      How to fix the menu bar: Add -Dapple.laf.useScreenMenuBar=true to the command line when you call your app.

      How to fix the application name (so it doesn't show up as com.mypackage.foobar): Add -Xdock:name="My Application's Name" to the command line when you call your app.

      How to make your custom icon show up in the dock when you launch your app: Add -Xdock:icon="/path/to/custom_icon.png" to the command line when you call your app.

      How to make menu shortcuts use the proper keys, regardless of what OS you're on:

      JMenuItem jmi = new JMenuItem("Copy");

      jmi.setAccelerator(KeyStroke .getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask ()));

      Or, if you need to organize your menus differently for each OS, you can check what OS you are on as you are building the menus:

      JMenuItem jmi = new JMenuItem("Copy");

      String vers = System.getProperty("os.name").toLowerCase();

      if (s.indexOf("windows") != -1) {

      jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEven t.VK_C, Event.CTRL_MASK));

      } else if (s.indexOf("mac") != -1) {

      jmi.setAccelerator(KeyStroke.getKeyStroke(KeyEven t.VK_C, Event.META_MASK));

      }

      Also, the best thing you can do is to make your app a regular Mac application bundle. You can use /Developer/Applications/Java Tools/Jar Bundler.app to do this. Or, you can do it via an ant task. Take a look at the macBuild target of the build.xml file for TripleA an example of how to make a Mac OS X application bundle from Java code using ant.

      --
      I am concerned about any program, any piece of hardware, any treaty, any law that treats me as a consumer, not a citizen
    5. Re:Java by dowobeha · · Score: 1

      How about Java? You run it on Mac OS-X and it looks just like an OS-X app, complete with top menu bar. All this and you don't have to change the source from Windows. I don't know if there are subtle differences to "real" OS-X apps that Mac heads would see, but from my point of view it works well.

      A properly configured Java Swing application is, as far as I can tell, indistinguishable from an ObjC-Cocoa application from the end-user's perspective.

      I haven't developed using SWT, but the only SWT app that I'm aware of using, Eclipse, is not very well integrated as a native OS X app. That's not to say that it's a bad app on OS X. It's just that it has some...quirks... It doesn't behave properly in the dock. It doesn't use native accellerators for all key commands. Now to be fair, this is almost certainly not a problem with SWT, but rather with Eclipse.

      My point is, there is no need to use SWT on OS X if you want a more native look and feel. Mac OS X was built from the ground up with Java and Swing as first-class citizens.

      --
      I am concerned about any program, any piece of hardware, any treaty, any law that treats me as a consumer, not a citizen
    6. Re:Java by dowobeha · · Score: 1

      Also, here's how to manually create a Mac OS X application bundle from a Java program. The example is for an SWT program, but there would be no changes needed for a Swing app. In the shell script, just make sure that you add all necessary Mac-specific command line options.

      http://www.eclipse.org/swt/macosx/

      --
      I am concerned about any program, any piece of hardware, any treaty, any law that treats me as a consumer, not a citizen
    7. Re:Java by JulesLt · · Score: 1

      Quick checks to try :
      Do your text boxes support auto-spell, search in Spotlight / Google, etc?
      Can you drag/drop between it and a native app?
      How closely does it match the Apple HCI guidelines compared to something created using IB?

      Unfortunately the only Java app I have handy doesn't even do the top menu bar properly, and looks as ugly as it does on Windows. If not actually uglier by the company it keeps. Double row of tiny icons at the top, because that's how MS Office does it? Check.

      Actually I was alarmed by the 'All this and you don't have to change the source from Windows' statement more than anything. The 'subtle' differences are generally that Mac UI design tries to minimise the displayed options and use larger / easier to hit icons. My experience is that most Java UI follows Windows as 'best practice', but there is nothing inherent in Java to stop people creating a nice clear user interface.

      JoelOnSoftware has some nice essays on design and the problems of Mac developers making Windows apps that do things the Mac way / vice versa - he suggests the most important thing is fidelity to how your users work - meaning that even if a button is in the wrong place in v2.0 of your app, your existing users have got used to it being in the wrong place by now. There's some classic stuff in there about error messages too.

      The important thing about subtle details is not that a fan might notice them, but that they help create that inexplicable 'this system is easier to use' feeling. That means having a really good knowledge of how it should work. How many Windows developers even look at the Microsoft HCI guidelines? (It's evident that a good few people in Apple haven't looked at their own either!).

      --
      'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
  27. Quicksilver by joshdick · · Score: 2, Informative

    It's hard to describe the wonder of Quicksilver. Just try it.

    1. Re:Quicksilver by Yremogtnom · · Score: 2, Informative

      Actually it's fairly easy to describe... Quicksilver lets you launch applications and find files very quickly by typing a shortcut key (Control+Space for me), then the first few letters of the application (or file) you want to launch.

      If you don't like to take your hands off of the keyboard, you need this!

      --
      You are alone in the world.
  28. Beyond Compare replacement? by djmurdoch · · Score: 1

    I've recently started using a Macbook, after years on Windows and *nix. The one tool I can't seem to find is a nice visual file compare utility, like Beyond Compare on Windows. I believe Emacs has something similar, but I'm allergic to it. Does Vim? Is there something standalone?

    1. Re:Beyond Compare replacement? by Yosho · · Score: 1

      Try running "vimdiff" from the command line and pass it the name of two files you want to compare. Works rather nicely, in my opinion.

      --
      Karma: Terrifying (mostly affected by atrocities you've committed)
    2. Re:Beyond Compare replacement? by piehole · · Score: 2, Informative

      The OS X developer tools include a visual diff program called FileMerge. You can open it from the command line with 'opendiff file1 file2', or if you prefer to use the gui to open the files/directories just spotlight for FileMerge.

  29. Instead of Virtual PC and Parallels by snutte · · Score: 0
  30. Depends on what you do by theolein · · Score: 2, Informative

    If you code Cocoa applications you're more or less forced to use XCode. You can of course use any text editor and interface builder, but XCode is the only one that is integrated with IB. The small size of the Mac market here and Apple being the 800lb gorilla in that space means that anyone with competing coding tools is at an automatic disadvantage, much like Metrowerks was with Code Warrior. This is a real pity because the lack of competition enables Apple to be very lax about XCode performance and quality.

    If you do Java, you have Eclipse or IDEA, both of which are streets ahead of XCode for Java coding. XCode doesn't even compare here.

    And if you do Profeesional PHP coding (yes, it does exist), you may as well spend the money on the Zend IDE, since there is no other PHP IDE on OSX that shows classes and offers code completion and debugging as Zend does.

    You can of course use Textmate for RoR, since it seems it was engineered with that in mind mainly, but you can do just as well for any of the PHP, Ruby and Python (and Perl, for that matter) group with the respective Eclipse plugins.

    I personally use Subethaedit for quick single file editing and Eclipse for anything else. Textmate and BBedit offer me nothing that Exclipse doesn't.

    Finally, a good knowledge of vi/vim is a real plus since it's what is easiest to use when you need to edit files quickly in the terminal. Trying to futz around with a GUI editor when you're editing init.d scripts etc is a waste of time. Plus vi will be on any and every Unix type machine you will ever find.

  31. qt 4.0 by bloosqr · · Score: 2, Informative

    If your code is GPL'd I highly recommend giving QT 4.0 try. The native qt hooks are remarkably native looking for mac os x. It obviously depends on what your application is, but coding in qt 4.0 gives you unix / mac portable code w/ no effort, particularly if you do not have any mac os dependent code (i.e. hardware/device calls etc). (We have not tried the windows QT so do not have a point of reference )

  32. Re:OS X Native Development Pointless by Stele · · Score: 1

    The digital media and effects market (the space I work in) is still roughly a 50%/50% split between Mac/Windows, with a few percent thrown in for Linux (growing).

    It's not good business sense to just throw away half your market because the Mac "only has 2 percent" of OS marketshare. For whatever reason, people still use Macs for digital media.

    Yes, it's a total pain, and everything on the Mac takes me 3-5 times longer than on Windows, and Apple keeps changing everything every few months, but cross-platform toolkits like Qt at least make it bareable.

  33. JEdit by fdisk3hs · · Score: 1

    A few folks mentioned Java and NetBeans, but of course the whole J2EE suite runs on OSX.
     
    I enjoy using JEdit. It does syntax highlighting and all the indention things programmers need. I usually find myself going back and forth between vi and JEdit, depending on what I'm doing.
     
    Of course, you can use MySQL with Java these days too, using the connector. But I don't of a better tool than the commandline mysql tool, with which you can write queries and format them to make sure your code is working.

  34. I'll see your anecdotal evidence.... by danaris · · Score: 2, Informative

    Well, I've been using XCode for some time now, and not had the problems you're describing. I run it on a next-to-last generation AlBook (1.67GHz G4 with 1GB of RAM), and at least for pure Java projects, its text editing is just fine, it jumps to methods and classes at perfectly reasonable speeds, and the only persistent problems I've had with it is an odd tendency to lose track of how far it should be indented in large files, and a lack of support for the Expression... dialog for debugging Java projects.

    So...I dunno what you're doing wrong, or what I'm doing right, but I find XCode to be more than adequate to my needs, and your experience is not universal.

    Dan Aris

    --
    Fun. Free. Online. RPG. BattleMaster.
    1. Re:I'll see your anecdotal evidence.... by Larch · · Score: 1

      I agree with you. I've not had any real problems with it, certainly nothing that anyone else here seems to be complaining about. I actually really like the way that it works, and I find it's probably the best IDE I've used to work with GCC - it clicks for me far more than other IDEs I've worked with.

      Bear in mind though I'm not using most of the advanced features of it people here probably are, so I'm not necessarily the best qualified to find faults.

      I could certainly rattle off a bunch of similar complaints about Visual Studio 6 or .Net too. I don't think a slightly buggy IDE is strictly an Apple problem.

    2. Re:I'll see your anecdotal evidence.... by wootest · · Score: 1

      About the indenting issue - I've found one very apparent discrepancy at least in Objective-C.

      A line like this:
      NSDictionary *d = [NSDictionary dictionary];// one-line comment starting directly after the semicolon
      causes the line following it to be indented.

      A line like this:
      NSDictionary *d = [NSDictionary dictionary]; // one-line comment starting after the semicolon and a space or a tab
      does *not* cause the line following it to be indented.

      There probably are other holes in this logic but I thought I'd post it since you mentioned indentation specifically. I'm going to go report this on Radar now.

  35. Missing from the list: Realbasic by hotspotbloc · · Score: 4, Interesting
    RB clearly isn't the "one tool for every job" but for the right job it's great. A while back I worked for a company that needed a few different internal apps that could communicate through an emulated 3270 session and other networked apps. I was asked to put together a Mac client for a fax server and quoted them three weeks for a functioning proto. They were surprised that it could be done so quickly. Normally I would've used CW but thought I'd try out RB for this one. It only took three days and out of fear they would expect the same speed from me for other projects I quietly played Doom for the rest of the time minus three days. Showed them the app and they loved it.


    For the right job RB is a great tool.

    --
    "I hate to advocate drugs, alcohol, violence or insanity but they've always worked for me" - HST
    1. Re:Missing from the list: Realbasic by JonTurner · · Score: 1
      It only took three days and out of fear they would expect the same speed from me for other projects I quietly played Doom for the rest of the time minus three days. Showed them the app and they loved it.
      You are my hero.
  36. Re:OS X Native Development Pointless by Anonymous Coward · · Score: 0

    Apple keeps changing everything? Apple froze the API in 10.3. They are adding things, but the API in 10.3 will continue to function properly in all future versions. You can add new features, but your program will always work unchanged on all future versions of Mac OS X.

    As for Mac taking longer, maybe you don't have enough experience yet. I'm not intimately familiar with the Microsoft tools or XCode, but I understand the basics behind both. XCode seems to be designed to be easy to get work done in. Maybe it takes longer for you because you don't yet know enough to equal or exceed you Windows development performance.

  37. Subversion by wandazulu · · Score: 1

    If you're developing for the Mac, or simply developing on the Mac, you'll eventually want to use some sort of source control. CVS comes on the machine by default, and you can get MacCVS, but lately I've been using Subversion and find it to be a great program, even if the gui tools are a little raw.

    My favorite right now on the Mac is svnX: http://www.versiontracker.com/dyn/moreinfo/macosx/ 24158 There are others, but they all have their various quirks that have kept me coming back to svnX.

    If anyone knows of a better Subversion tool on the Mac (on Windows I use TortoiseSVN and it's great) I'd love to know what it is.

    1. Re:Subversion by Anonymous Coward · · Score: 0

      Have you looked at ZigVersion. It's still in beta but their last release added drag and drop branch support.

    2. Re:Subversion by escrafford · · Score: 1

      Make sure you take a look at ZigVersion

  38. Re:Java and OSX integration by staplin · · Score: 2, Informative

    Check out the sample code for the OSXAdapter, which is an easy way to tie in OSX support in a cross platform way. They also provide AppleJavaExtensions stubs so you can compile for Apple specifics even on non-Apple platforms. All the code uses reflection to determine if the Apple extensions are there, so nothing special needs to be shipped oncce the byte code is built.

  39. I need this by Rufosx · · Score: 1

    I use BC heavily for Windows development. Being able to create sessions with very detailed criteria and ignore lists and then connect to an FTP server to compare a local directory, and THEN be able to do detailed diff and merge on individual files, if necessary, is an amazingly powerful tool.

    Its not that it does any one of these things really well, just that it does them all.

    1. Re:I need this by pasamio · · Score: 1

      1) Create sessions with detailed criteria and ignore lists Not sure how to do this in a GUI and I haven't used BC enough to need this, but it is possible to use a lot of the Unix style command line stuff to generate a very fine level of precision. In fact the Joomla! build scripts are just shell scripts that utilizes grep, find, sed, svn, tar, install (allows auto directory create and file perm set in one hit) and curl to do their job. It takes an entire Joomla! tree and then builds patch packages. I think thats pretty much a detailed 'ignore list' given that it does things automatically and on the fly. 2) Connect to FTP server to compare a local directory Well, on Mac this isn't an issue (nor is it really for Linux) as you can easily mount an FTP server into the file system and have the computer translate this for you. Novell had a product called 'netdrive' which did a similar thing but not incredibly well (I had issues running eclipse on an ftp server through it, for most operations it worked perfectly fine), but they stopped (and perhaps started) distributing this with Novell Netware 4 I believe and now offer other tools. 3) Diff and Merge Haven't seen a diff app not have the ability to do it (obviously its diff and patch in Linux), but I've seen BC at work and there are a lot of features I've never thought about trying in other systems that I need to play with :)

      --
      I always wondered where this setting was...
  40. SubEthaEdit by aarku · · Score: 3, Informative

    SubEthaEdit is invaluable for collaboration. I can't say how many times it has come in handy when I've wanted to help someone with code over the Internet or plan out code with someone. Not to mention taking notes with 5 other people in 'ole Computer Science lectures...

  41. Re:OS X Native Development Pointless by larryau · · Score: 1

    It depends on what your doing. I have used Mac and PC for development even different flavors of linux, and it just depends on what your trying to do. Sometimes Mac is fast and intuitive other times you just want to pull your hair out because of all the extra steps you have to go through. Just depends.

  42. Everybody RTFA Now! by Bastian · · Score: 1
    I can't believe that the article didn't recommend Eclipse.


    They did. FTFA:

    Eclipse (Free - Intel/PPC)
    This is probably the best integrated development environment for Java. The Eclipse Platform is written in the Java language and comes with extensive plug-in construction toolkits and examples. It has already been deployed on a range of development workstations including Linux, HP-UX, AIX, Solaris, QNX, Mac OS X and Windows based systems
  43. wither valgrind for OS X? N/T by Anonymous Coward · · Score: 0

    N/T

  44. Platypus? by Anonymous Coward · · Score: 1, Informative

    If I'm doing Perl or shell script work, and want to produce apps, I go with Platypus -- combined with something like Pashua or CocoaDialog, you can piece together nice little apps in no time.

  45. Re:OS X Native Development Pointless by Stele · · Score: 1

    Apple keeps changing everything? Apple froze the API in 10.3. They are adding things, but the API in 10.3 will continue to function properly in all future versions. You can add new features, but your program will always work unchanged on all future versions of Mac OS X.

    You must not develop commercial Mac software.

    We've had to update software for changes from Classic to Carbon, from Carbon to native Mach-O, various flavors of OS X (there have been several ABI/API changes since the initial 10.0 release), and now Intel/Universal. Not only that, as a plug-in developer, we've had to scramble to maintain support for several hosts that have had to go through the same conversions, including compiler environment changes from CodeWarrior to XCode. To support my customers (some of which are running older hardware/OS combinations to keep using specialized hardware with no updated driver support), I have to maintain a half-dozen builds for some products.

    Compare that to my Windows products, that continue to work and haven't needed to be updated in over 6 years.

  46. Use Shark, not Sampler by kuwan · · Score: 1

    I've found that the OSX developer program Sampler (which comes free with the developer distribution) is also a great program useful for getting a quick feel for where the bottle necks in my program are. Sampler is really intuitive to use, and it provides a nice way of navigating the calling tree of your program allowing you to see how different functions are spending what fraction of compute time.

    The only reason to be using Sampler instead of Shark is because you haven't found Shark yet. Shark is part of Apple's CHUD tools that you can download here. It is quite possibly the best profiler that you'll find anywhere on any platform. And best of all it's free.

    I probably use Shark on average 2-3 times a day, every day. It has been instrumental in locating and fixing countless performance bottlenecks. Download it and give it a try, you won't regret it.

  47. FileMerge and BBEdit/TextWrangler by kuwan · · Score: 2, Informative

    FileMerge - free with Apple's Developer tools - is a good utility for merging files and folders.

    Also, BBEdit/TextWrangler both have a good compare utility and TextWrangler is free.

    My favorite though is CodeWarrior's compare utility. It is simple and easy to use but CodeWarrior is now dead. Plus, there would be no point in buying CW just for its compare utility. Still, it's probably the one I use the most.

  48. Tools for web (not 'Mac') developers maybe by kuwan · · Score: 2, Informative
    This list seems particularly tuned for Web development, not necessarily Mac developement. Tools listed such as MAMP, NVU, Zend Studio and CSSEdit really only have a place in a Web developer's toolkit and anyone doing Mac application developement would have little, if any, need for them.

    So, for Mac application developers, here's a better list:
    1. BBEdit - the best text editor, period.
    2. Interface Builder - the best GUI builder.
    3. Shark - if performance is important then there's no better tool.
    4. Xcode - well, there's really no other choice these days, and it's getting better.
    5. AppKiDo - for quick reference to the Cocoa APIs.
    6. Terminal - good enough for me.
    7. OmniGraffle - for application/class modeling and design.
    There are many other important and useful applications, but these ones really are the core essentials for application development (at least for me). Anything I left out?
    1. Re:Tools for web (not 'Mac') developers maybe by soft_guy · · Score: 1

      I find otool to be something I use all the time.

      --
      Avoid Missing Ball for High Score
  49. Re:OS X Native Development Pointless by jcr · · Score: 1

    The number native OS X developers is tiny.

    Guess again. Over 5,000 of us made it to WWDC last year, and more that half a million developers are registered with the Apple Developer Connection.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  50. Re:OS X Native Development Pointless by bhawbaker · · Score: 1

    6 years != months

    the apple changes you mention took years and it were reasonable changes. 10.0 was infant so changes were expected. 10.1 had bugs so changes were expected. 10.2 was infant with bug fixes, however some apps for 10.2 worked fine in 10.3. The post before your said no changes since 10.3 not 10.0.

    6 years for windows - what major new features have you seen in Windows ? security fixes do not count. If you were working for Vista/Net, you probably would going through "months" of changes too.

    Changes come with innovative territory.

  51. iTerm vs. screen by Van+Halen · · Score: 1
    I'll admit I haven't tried iTerm, but the author's favorite iTerm feature is what screen users have had for well over a decade. From the article:

    What I like most about iTerm is the "Tab" funtion. Instead of opening couple of windows, you can just work on one widow and switch to any Tab you want.

    iTerm may have keyboard shortcuts for this (if it doesn't, that's a major deficiency), but I guarantee screen gets the job done better. I got hooked on the remote detach/attach feature of screen about a dozen years ago, and I absolutely can't do without it to this day. I constantly have a screen session running on my home machine with a dozen or more shells. Throughout any given day, I'll attach to it from wherever I may be - the laptop at home, the desktop at home, my office at work, the lab at work, a friend's house, etc. Everything is preserved just as it was last time I left it, so I can resume any one of many tasks anywhere, anytime.

    If I need to see multiple windows at once (major development with multiple files, etc), just open up multiple terminal windows and have them all attach to the same screen session simultaneously. Works beautifully. Does iTerm do any of this better?
  52. Accessorizer by Anonymous Coward · · Score: 0

    Takes the drudgery out of writing all of those getter/setter methods in Obj-C

  53. Re:OS X Native Development Pointless by Stele · · Score: 1

    I'm not saying they don't. I'm saying they are ANNOYING when you have to deal with them, and as much as I'd like not to deal with them, the size of my market on Apple dictates that I do. And because I am forced to deal with them on a regular basis, through no fault of my own, it takes much more time to support Mac versions of my software.

    I wonder what genetic defect causes people here to jump to conclusions so fast.

  54. Quicksilver, a small masterpiece by AndreR · · Score: 1

    The first thing that caught my eye on Quicksilver was its cleverness in identifying patters.

    Say, I activate and type 'rdc', and it knows it is Remote Desktop Connection. Type 'vnc' and it finds chicken of the VNC. 'aulo' and it'll switch to the AUtomatic network LOcation.

    It finds names the very same way our own brains do, by shortcuts, keywords, abbreviations.

    It isn't a developer tool, though... And that'll give grandparent post some offtopicness. But integrate it with XCode, Eclipse, etcetera, (no plugins available at the moment, IIRC, though) and it may help you find that source file or image that you're looking for with blazing speed.

    1. Re:Quicksilver, a small masterpiece by oc255 · · Score: 1

      Quicksilver has a subversion plugin. You could commit your project with a tilde, a few english letters and a few arrow keys. I'm still reading tips online, it seems the uses go on and on.

  55. KDiff3 by CrimsonScythe · · Score: 1

    I absolute love KDiff3, which is originally a KDE application. (It works just fine on the Mac as well, though.) It's fast and I really like the way it shows the differece between files or folders. If there really is only one character difference on a line, it will indicate that there is indeed only one character difference instead of showing the usual full-line replacement that the other diff programs I've tried do. You can also compare three files/directories, hence the name KDiff3. Check it out!

    --
    The view was horrible and the smell was even worse; Julie severely regretted becoming a proctologist.
  56. Re:OS X Native Development Pointless by soft_guy · · Score: 1

    I hear you. I've been developing for Mac since System 7 and I have been through all of the changes you describe.

    If I owned my own business or whatever and felt like maintaining my products was a burden, I guess I'd probably be upset too. Since I am a developer who works for other people and I get paid for solving other people's development problems (often by the hour!), it does not bother me at all.

    Oh, and to the trolls who say 2% or whatever... I get paid to write Mac software. Paid by people who have money to spend for my services. I enjoy programing the Mac for a variety of reasons. I have been fortunate enough to be able to command a higher salary than most Windows programmers. Unlike many of the people I worked with who were experts in programming Windows, my services stayed in continual demand during the economic downturn of 2002-4 which caused many of my colleagues to be unemployed for months.

    I like using the Mac and I like creating quality software that has a Mac "polish" to it that I would want to use myself. Keeping my skills current is something I enjoy.

    I have programmed in the Mac Toolbox, MacApp, Carbon, Qt, PowerPlant, Cocoa, and with a variety of other technologies (including the Newton and including Windows). If you open a mail order catalog for Mac stuff (MacMall, MacConnection, etc), I could point to several products that I wrote. If it weren't fun, I'd hang it up and do something else. Right now it is fun. Apple just had a great quarter and sales of Macintoshes grew 12% over the same quarter last year. I'm not totally sure how that compares to the rest of the industry, but my guess is that it means Apple gained some ground. It is sure a lot more fun than it was in 1997. However, even back then, I had no trouble finding a job.

    Apple isn't going away. But if you hate Apple, I have good news for you: Microsoft isn't going anywhere either and no one is ever going to force you to use a Mac or develop for a Mac if you don't want to. So instead of bashing Apple and insulting Mac users, why not just count your blessing that unlike most Mac users, YOU can use your favorate OS pretty much all the time and never have to think of anything else except when maybe an Apple ad comes on TV.

    --
    Avoid Missing Ball for High Score
  57. I cant find QT by mnmn · · Score: 1

    I was looking for Trolltech. Somehow I couldnt find it.

    I think I've found a bug in my firefox's search function. Its late in the day.

    Can someone find the Trolltech rank somewhere in there please?

    --
    "Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
  58. Re:OS X Native Development Pointless by JulesLt · · Score: 1

    Q. Why do people make clothes worn by What is the point of wasting development resources on a shrinking niche segment of the market? I pity your timing on that one. But again, see above. What's the point in localising to Swahili or Welsh when people know English?

    --
    'Capitalists of the world, unite! Oh ... you have' (League Against Tedium)
  59. Re:OS X Native Development Pointless by GaryPatterson · · Score: 1

    I don't think your options are correct. They should be:

    1) Spend time learning an entirely new API. Spend time learning an entirely new set of development tools. Spend time/money supporting two different versions of your product/app.

    2) Include a readme.txt that tells Mac owners to either use BootCamp or Parallels to run your product and expect them to buy a licence for Windows, install it, set it up to their requirements and then use your product.

    When stated honestly, suddenly option 2 doesn't seem so hot now. Windows 'normal' licences are a few hundred dollars, which has to be *on top* of your product's cost. And Parallels is $79. Plus there's the anti-virus software.

    Do you still think users will buy your product if you treat them so badly?

  60. Real Basic by Anonymous Coward · · Score: 0

    Its a Mac classic... for native apps nothing beats RB. Fast, easy programming and if you need (only for the really hard stuff) you can allways trow objeive-c in the mix

  61. Visor by nolsen · · Score: 1
  62. Oops by nolsen · · Score: 1

    Indispensable

  63. Re:OS X Native Development Pointless by Tsiangkun · · Score: 1

    Asking me to boot windows is the exact same thing as asking me to give up
    my command line.

    It's not an option.

    Which choice is profitable and makes economic sense again ?

  64. Re:Vi with Eclipse by CaffeinieBaby · · Score: 1

    I use viPlugin with Eclipse. I'm a happy camper.

  65. Java Jar Bundling with Ant by staplin · · Score: 1

    There's a great sourceforge project that is an ant task that mimics JarBundler. The target takes a lot of parameters to get it just right, but pretty much every option to JarBunder.app is supported.

  66. Re:Vi with Eclipse by GreatDrok · · Score: 1
    I use viPlugin with Eclipse. I'm a happy camper.

    Me too, and it works pretty well although some of the missing features are a bit of a pain and keep me going back to the real vim. I'm using Eclipse at the moment because it is great for debugging but I also have a few xterms open too. If I need to do something that is quicker in real vi I just save the file in Eclipse, open it with vim, do what I need to do, save it again and then open it back up in Eclipse. Whatever works I guess :-)

    --
    "I have the attention span of a strobe lit goldfish, please get to the point quickly!"
  67. CMake by OrcaCSS · · Score: 1

    I find CMake tremendously useful, as it lets me manage most of my configuration in a cross-platform manner. I can transparently take the project over to Windows to build with NMake or Visual Studio. I don't use the XCode support very much, as the Makefiles generated by CMake seem to work pretty well.