# How should I set up my coding environment for PHP, mySQL, and JavaScript development?

I'm having trouble finding a coding environment that is comfortable and I'm hoping anyone has had the same problem. On my windows box at the office I've found my ideal coding environment that I really dig. VS2010 or Eclipse, Notepad++, WinScp, Fireftp is often everything I need.

On my macbook pro however, I've not yet found that environment that just says "click".

What I'm looking for is a solution that can handle "intellisense" with php, ssh browsing like WinScp and snapping windows over halv the screen like Windows 7.

I've found one solution for the last point, but it had a lot of bugs so it got disabled. For some reason I find Eclipse to be a bit slow on my mac, and I haven't found a nice way of integrating a browser for the remote server via ssh either.

I'm making this community wiki since I'm really looking forward to seeing how everyone sets their environment up. I'm sure there are some gems to be found.

On my mac I mainly do PHP, mySQL, javaScript development.

• If you really like the Win environment, and you're not doing Mac-specific languages, why not use Win on the Mac? You could boot a VM, go to the integrated view (Win windows part of the Mac OS). Your working folder can be a native OS X folder (mounted in the Win VM). – user588 Dec 18 '10 at 0:01
• Because I kind of like Mac OS on my macbook. It's a nice laptop OS to me. Windows is more of a desktop system (mostly because I'm conditioned to believe so after many years of working with several screens and heavy duty processors) to me. – Phil Dec 18 '10 at 9:18
• Oh, and I'd like to do more programming on the fly and I don't like the concept of using two OSes on my laptop. Of course, if I don't find a good enough solution this will probably be my worst case solution. – Phil Dec 18 '10 at 9:20
• this is one of the best subjective questions we've had on the site so far in my opinion. – Robert S Ciaccio Dec 18 '10 at 20:27
• Glad you liked it! It warms my heart to see so many great answers. – Phil Dec 28 '10 at 19:28

I have about 7 years of experience coding in a Windows environment before I got my first mac early this year. So I know exactly what you're talking about. I was very used to the combination of Visual Studio for c++ and .net, Notepad++ for .bat and other scripting and lightweight tasks, and the occasional bit of Eclipse for java.

When I first started using my Mac, I was frustrated by what I saw to be a lack of equivalent software for OS X. I tried different IDEs and text editing solutions (Eclipse, Aptana, Textmate, Smultron, Fraise, etc), but like you said, nothing really 'clicked'.

However, at some point I stopped looking for replacements and started using the tools that were commonly used on *nix machines. Particularly vim. I've found that once my expectation of finding software equivalents to everything I had used on Windows dropped away, my horizons broadened. I feel like my interest in coding has been renewed because I'm learning a completely different way to work and think about the process. I'm using the command line way more than I ever have in the past, and this has translated into new techniques even in my Windows development (like using powershell and command line versions of tools rather than the gui).

I was in a huge programming rut before I started using my mac, but I'm finding that being forced to look at my process and tools in a different way is really bringing out talents and interests I didn't know I had before. I'm coding in python and c++ rather than javascript and c#, in one of the oldest editors in existence, and I'm loving it.

• Amen to learning and using the CLI. – user588 Dec 18 '10 at 2:05
• Nice story. Is the learning curve less steep than commonly perceived then? I only get frustrated with VIM so I end up using nano whenever I'm on a linux box without gnome/kde/whatever. I like your approach, personally I value my personal "growth" as a developer very highly and thus I'd like to try your approach as well. – Phil Dec 18 '10 at 9:24
• @Phil: I wouldn't really say it's easy to learn. Depending on your situation, my advice would be to do something like what @mankoff suggested in the comments, and combine that with learning the new tools for fun. I didn't just drop my windows environment and start using vim for everything right away. It's a baby steps kind of thing.. started out by remoting into my Windows machine to do my professional work, while gradually learning vim, python, bash, etc on my macbook for my own personal projects. – Robert S Ciaccio Dec 18 '10 at 20:22
• @Phil: It's been about 6 months, and only recently (last week) did I make the switch to vim in my Windows environment. Strangely enough, I had finally hit a point where using notepad++ and the like felt 'wrong', just as vim had felt weird before. That's when you know it's time to make the switch :) I guess the main point is to take it slow and not try to rush yourself. You'll be more likely to keep on with it if you don't expect yourself to know everything all at once, and you don't stress yourself out by forcing yourself to use tools you aren't yet comfortable with for important projects – Robert S Ciaccio Dec 18 '10 at 20:24
• MacVim is a nice version of gvim, similar to vim on Windows or gvim on Linux. With a little bit of creative soft-linking you can use the MacVim version from the command-line replacing the stock vim, or by typing mvim open the MacVim app with files. The best thing is your editor is available at the command-line or with a windowed interface on all sorts of OSes. I spend hours ssh'ing into hosts at work using vim at the command-line. Sometimes I use the netscp vim plugin to open files from the hosts on my office Mac. It's all the same keypresses and plugins and color schemes. – Greg Dec 19 '10 at 3:27

I my self use variant of IDE for coding:

When I did PHP I mainly use Zend Studio that was eclipse based.

Beside that I use Eclipse itself (but I hadn't your problem about it's speed), or use NetBeans (it was really good).

And some times use Vim or MacVim.

I've found TextMate with a PHP completion bundle and an ftp+ssh bundle to be pretty solid. You get everything you're asking for except for the window management, and as @mankoff noted, there are lots of choices for that. Not listed by him is HyperDock, which handles both window-snapping and window previews from the dock.

If Vim is being given as a solution - I think Aquamacs should also be considered. It is a version of Emacs configured to be more OS X like. (Note the usual vi/Emacs arguments)

Emacs includes several modes supporting programming.

Emacs does not have the vi split between inserting text and text manipulation whch might be a point in Aquamacs' favour if that is the reason you use nano.

For window arranging:

• Any particular that you recommend more than the others? – Phil Dec 17 '10 at 23:03
• I don't use any of them. I do use aFloat and have windows go transparent when not in use. – user588 Dec 18 '10 at 0:02
• @Phil: i use shiftit but i'm just working on a laptop screen so i don't have a lot of requirements in this type of application. – Robert S Ciaccio Dec 18 '10 at 3:19
• Just found a new site which lists a few more... alternativeto.net/software/shiftit – user588 Dec 18 '10 at 3:45

I've been using a combination of Eclipse and TextMate. TextMate grew on me quickly, especially since I'd come from the premise of finding a free editor, it was just very neat. I use VI for quick command line edits.

TextMate has nice SCM integration, snippet based completion, great highlighting and folding. It also has plenty of helper scripts, and a really good system for customizing or adding languages. However, it lacks if you want to browse a codebase - no indexing. It is for that kind fo indexing and heavyweight autocompletion that I switch to Eclipse. TextMate is fast and light, in a similar way to Np++ on windows. Extending textmate can be done with simple scripts - ruby, shell and others.

Eclipse you already know - just download and unzip. Heavy, a little slow, but great for source browsing.

With the SSHFS suggestion from mankoff, take a look at macfusion - handy setup for fuse file systems.

I'll recommend:

• MacVim - it's a great editor, extremely powerful, and uses all the same plugins and config files on MacOS as it would on a PC or Linux. This is my main editor at work and I do about 50% of my coding at home with it.
• TextMate - MacOS only though there are some clones for Windows now. Very flexible and powerful too, but not the fastest or most powerful when doing search/replace. It is very easy to set up snippets and tab-completion. I recommend watching the videos to see what it can do. It's commercial and hasn't seen any enhancements for a while but it's solid. When I'm experimenting or answering questions for Ruby code on StackOverflow I'm using TextMate.
• Komodo Edit - Pretty useful. I don't use it as much as the other two but some people swear by it or it's big brother Komodo.
• BBEdit - BB and I go way back, to before it was released as a commercial product. It is very fast when searching/replacing in multiple files - amazingly fast. The developers know the Mac really well and, in my opinion, have a lot more powerful editor than TextMate or Komodo Edit. When I have to munge or search a bunch of files it's my first choice. BBEdit's smaller sibling is TextWrangler, which is free and quite fast and nicely featured also.
• Coda - a great web development editor, and my first choice when I'm going to be doing a lot of HTML because of its web-page preview integration and CSS editing.

Also, if you do a lot of CSS then check out CSSEdit. That's all it does, but it does it really well.

• What are "software links"? – Greg Dec 19 '10 at 20:27
• i think he means links to the pages for the apps you list. – Robert S Ciaccio Dec 19 '10 at 21:50
• Oh. Those are called URLs. I'm sure he said the same to all the other responders who didn't put them in too. – Greg Dec 19 '10 at 22:02

For SSH browsing, you could use sshfs to mount the drive locally, and then use the Finder, or whatever local browser you want.

• I've seen this being done at a couple of places but for some reason I've always dismissed it as it seems awkward somehow. I realize it's time to think twice about that since it would be very nice to have it mounted. I'll check this out. – Phil Dec 17 '10 at 23:02

Personally, I use a combination of NetBeans PHP Edition and Coda for my PHP / JavaScript development. I use NetBeans when I'm working on a full project locally, and when I commit to subversion that uploads to our testing server. I use Coda for editing files via SFTP as well as for quick PHP or JavaScript edits. I also use Transmit on occasion when I need to browse an SFTP / FTP site.