I have been developing on a Mac for 3 years (give or take). I used to do projects using RubyOnRails and PHP Frameworks. For a year now I have been enjoying Django. Ruby (and Rails), Python and PHP all come built-in latest Mac OS X (Leopard). It may sound good enough but it is really annoying to find your application broken by an interesting software update from Apple.
Or worse, if you want to upgrade the libraries you use to the latest versions, you might end up breaking some of the functionality of your system. I prefer not to modify anything in the system libraries unless it is an official update.
I like lightweight editors like Emacs, TextMate or TextWrangler. But a course in the latest semester made me use Eclipse. I am a long time Java hater. After this course I realized it’s really fun to code in Java and if it’s even more fun if you use a full-blown IDE. Some of you might think those IDEs are just crap, I used to be one of you. Maybe I am getting older, some younger programmers might still want to use Emacs . Don’t get me wrong, I love it. But Eclipse takes a lot of the weight from my shoulders (i.e. boring parts of the programming). Anyway, here is the evolution of my web programming environment:
OS: Windows -> Red Hat -> Debian -> Ubuntu -> Mac OS X -> Ubuntu -> Mac OS X
Editor: EditPlus -> Gedit -> Vim -> Emacs -> TextMate -> Emacs -> TextMate -> Eclipse
DB Backend: MySQL -> PostgreSQL on Mac -> PostgreSQL on Ubuntu VM -> Postgresql on Mac
Programming language: PHP -> Ruby -> Python I also use Java, C and Objective-C but they are not really work related.
Since I hate modifying my system libraries, until recenly, I used to keep my Django, Python and PostgreSQL installation on a virtual machine running Ubuntu, share some folders between the Ubuntu installation and Mac OS X (So my editor running on Mac OS can access those files).
But I am fed up launching virtual machines every time I want to make a small change and I think there is a better solution: MacPorts.
I know there are some people very upset with MacPorts. But if you install the libraries you need without modifying anything in your Mac system, you’ll be fine. For example, if you are installing a new version of Apache, you shouldn’t let it run on port 80. Because there is a built-in Apache server in Mac OS X (according to vigo it may break your mobileMe sync).
Trying a lot of environments I am most comfortable with MacPorts. If you are developing using Python-Django or RubyOnRails, it will be a lot easier for you since you don’t need to modify Apache configuration. One thing to keep in mind when using MacPorts is that, you should add “/opt/local/bin” to the beginning of your PATH variable. When you install, say, a new version of python using MacPorts, the executable file “python2.6″ will be in /opt/local/bin. Just link /opt/local/bin/python2.6 to /opt/local/bin/python. That way, even if you don’t modify the original python executable in /usr/bin, you’ll be able to use the new version when you just type “python”.
A change of development environment.
I have been developing on a Mac for 3 years (give or take). I used to do projects using RubyOnRails and PHP Frameworks. For a year now I have been enjoying Django. Ruby (and Rails), Python and PHP all come built-in latest Mac OS X (Leopard). It may sound good enough but it is really annoying to find your application broken by an interesting software update from Apple.
Or worse, if you want to upgrade the libraries you use to the latest versions, you might end up breaking some of the functionality of your system. I prefer not to modify anything in the system libraries unless it is an official update.
I like lightweight editors like Emacs, TextMate or TextWrangler. But a course in the latest semester made me use Eclipse. I am a long time Java hater. After this course I realized it’s really fun to code in Java and if it’s even more fun if you use a full-blown IDE. Some of you might think those IDEs are just crap, I used to be one of you. Maybe I am getting older, some younger programmers might still want to use Emacs . Don’t get me wrong, I love it. But Eclipse takes a lot of the weight from my shoulders (i.e. boring parts of the programming). Anyway, here is the evolution of my web programming environment:
OS: Windows -> Red Hat -> Debian -> Ubuntu -> Mac OS X -> Ubuntu -> Mac OS X
Editor: EditPlus -> Gedit -> Vim -> Emacs -> TextMate -> Emacs -> TextMate -> Eclipse
DB Backend: MySQL -> PostgreSQL on Mac -> PostgreSQL on Ubuntu VM -> Postgresql on Mac
Programming language: PHP -> Ruby -> Python
I also use Java, C and Objective-C but they are not really work related.
Frameworks: None -> Drupal (yeah CMS) -> Rails -> Django
Since I hate modifying my system libraries, until recenly, I used to keep my Django, Python and PostgreSQL installation on a virtual machine running Ubuntu, share some folders between the Ubuntu installation and Mac OS X (So my editor running on Mac OS can access those files).
But I am fed up launching virtual machines every time I want to make a small change and I think there is a better solution: MacPorts.
I know there are some people very upset with MacPorts. But if you install the libraries you need without modifying anything in your Mac system, you’ll be fine. For example, if you are installing a new version of Apache, you shouldn’t let it run on port 80. Because there is a built-in Apache server in Mac OS X (according to vigo it may break your mobileMe sync).
Trying a lot of environments I am most comfortable with MacPorts. If you are developing using Python-Django or RubyOnRails, it will be a lot easier for you since you don’t need to modify Apache configuration. One thing to keep in mind when using MacPorts is that, you should add “/opt/local/bin” to the beginning of your PATH variable. When you install, say, a new version of python using MacPorts, the executable file “python2.6″ will be in /opt/local/bin. Just link /opt/local/bin/python2.6 to /opt/local/bin/python. That way, even if you don’t modify the original python executable in /usr/bin, you’ll be able to use the new version when you just type “python”.