I wasn't impressed by this list. There were no hidden gems. Most of this stuff is extremely basic for any Mac developer, there were also glaring holes in the list.
Examples about how to get things like Bazaar VCS installed from Macports would have been a lot more interesting for people I think.
Q: "Dr. Anasastio, can you recommend a different editor from emacs? It's so hard to work with. Can we use pico or jot?"
A: "No. Emacs is THE editor. If you plan to work in computer science, you have to know it."
Though I personally use TextMate for most coding these days, I can certainly see his point. 15 years later, emacs is still relevant and powerful (and free).
Find me another editor you can say that about, and I'll pay you $5. (vi doesn't count: it's only relevant because sysadmins could fit it on a floppy, and now it's vim anyway.)
> For those Mac users who think BBEdit is better than Textmate, it’s usually because BBEdit is a Cocoa application, and TextMate is a Unix application.
False. TextMate is a Cocoa app and BBEdit is Carbon.
I've thought about this. How do you transfer files between the host and the guest? Do you develop in OS X, transfer the files and then run them? If yes, isn't this a little time-consuming?
Pretty much every desktop virtualization package supports setting up shared folders to facilitation moving files between the host and guest OS. I know for a fact that VMWare Fusion on OS X does this, though the preference tab to enable it did take a little bit of searching to find.
That being said, if your goal is to develop in an environment more like your production system(s), you're going to need to work out your automated deployment model sooner than later, anyway. You may as well do it locally, where the cost of a screw-up deployment is effectively nil.
You can mount your VM locally by running something like Samba on the VM side, then open stuff normally with TextMate or whatever.
It's a bit slow and has some quirks with huge projects, so I stopped doing it, personally. Mounting with ExpanDrive or MacFuse(SSH) were slower when I tried.
Personally, I just setup an rsync share on the VM, and then run a script on my local machine that rysnc's the project directory just checking timestamps for changes and ignoring all scm folders. It's super quick after the initial sync, since all your usually changing anyway per testing iteration is just a few small text files at a time. Works great for big projects too.
Although nowadays, I'm finding the 'separate VM & host os" for development a bit tedious. Even executing that script to see code changes vs. just saving the file and seeing it right away is a drain on productivity. And doing remote editing put's a noticeable lag to my editing.
Very true. Why not just setup a staging server on the VM and use MAMP and benefit from the quick save and preview. Then sync up to your VM for staging to test your deployment.
This sort of setup is great for working out server configuration kinks during development. To do it right, you need an editor with remote file support and a way to interact with a remote process.
Just about all of the text editors on the Mac that are oriented towards web development have support for automatic sftp/ftp/scp of files to a server, so use that route. The virtualization tools also support sharing folders/directories with OS X, so you could use that path but since the eventual goal is deployment to another server using the sftp option means that going from testing to deployment consists of changing the name of the server you are pushing to.
I'm doing some kernel development at work right now, so I test my code in a virtual machine (VMWare Fusion). I use SSH to both copy files (via SCP) to the VM and run things on it, and automate those actions with a Bash script or Makefile rule.
That way, the only direct interaction I have with the VM is to to click "revert to snapshot" whenever I mess it up.
You could use subversion or git, or if your a man you could cvs or perforce. that last bit was just a joke. Even though you can setup a shared drive between the two, I found that checking out a subversion repo is a lot easier then moving files around.
How's 4 tools sound instead? I could add one more, but I wouldn't consider it "essential".
1. Some sort of text editor that you know how to use.
2. Some sort of versioning that you know how to use.
3. Some sort of way to transfer files offsite that you know how to use.
4. Some sort of way to run the code. A local copy of the server environment that you use should do.
I can't think of anything else that's essential. Some things might help make you more productive, but you could easily continue working without the likes of Quicksilver or Spaces.
Actually, Transmit's a pretty awesome little utility. It supports ssh (scp) and more importantly, it supports AWS S3 so you can explore and modify your buckets with it. There's a Firefox plug that does similar thing but it's horribly buggy.
But why? I don't know of anybody that deploys by copying files to their server manually. There's always something else that needs to be done and it ends up getting scripted away. Even the most basic deployment usually involves a copy and telling the server to restart or refresh itself.
A list for those just who haven't found Eclipse and it's plugins: SQL Explorer, Subclipse, PHPEclipse,CFEclipse, EPIC. and Firefox and it's plugins: Web developer, Firebug, FireFTP I'm sure there are many more that I have forgotten.
cocoamysql and phpmyadmin can easily be replaced by navicat or navicat lite (free), which is available for linux, osx, and windows. ive found it pretty handy.
There doesn't seem to be as many good free apps on the Mac as there are on Windows. However, most of the really good Mac apps are relatively cheap and high-quality.
Examples about how to get things like Bazaar VCS installed from Macports would have been a lot more interesting for people I think.