Tools of the Trade
Over in the tokenism discussion, Chach pointed out that one of the things that is extremely helpful to getting new people involved is learning some of the tools other people are using and some of the best practices around that. So let's have a big thread where all of us -- whether we're developers, designers, project managers, business owners, etc. -- talk about the tools we use to make our lives easier on a day-to-day basis. :)
Groups:
Login to post comments

My rig...
I use a Mac, so most of this is centered around OS X. I like the Mac as a platform because it's the only way that I know of to have one laptop that can run all three major operating systems. :) Also, I'm a big coder geek, so most of this stuff is around writing and debugging code. Photoshop terrifies me.
Code hacking
I try to get Eclipse going with debugging every 6 months or so and it always ends in me smashing things. I swore off Zend because they left all Intel Mac users basically hosed for 6+ months when they first came out, claiming we were not a priority. It is therefore not a priority for me to shell out $300 for their stupid IDE. ;) It worked great on Windows, though. And lately, I've been hearing good things about NetBeans but haven't tried it in years, since it was a Java-only IDE.
Patch reviews
cvsandpatchcan be added via the XCode developer tools bundle. I do all of this stuff from the command-line, because basically once you memorizecvs up -dPCandpatch -p0 < whatever.patchthat's all there is to it.Project Planning
Site building stuff
drush dl cck. There are also command-line arguments to checkout the code directly from CVS, which we love to do because it makes patching and updates so much easier. It can do lots of other stuff too, like run cron or update.php from the command line, and has a hook so that you can create your own command-line batch processes which can be invoked via drush. Highly recommended if you have shell access! (And if you don't, you should probably switch to a decent host :P).Some "must-have" developer-related modules when building out a site:
dpmwhich let you output some debug information about variables, and on and on.I'm sure there's lots more, but these are the immediate things on my dock. :P
Incredibly valuable info!
Thank you, Angie, thank you 100 times. I am on Windows at work and a Mac at home, and I do almost as much at home as I do at work, so I am taking all of your recommendations to heart immediately.
This would make a great post for your blog BTW, don'tcha think?
Cheers
Jennifer
Tools and such
I'm not a coder - I can kinda read code and follow it, but if you asked me to write anything, well.. no.
What I mostly am is a support person and currently a writer, so from my perspective, my toolset is a little less concrete in some cases.
Tangible tools:
Like webchick said: Devel and Firebug rock the world when you're trying to figure out what busted piece of CSS is causing you problems.
My 'development' platform is my Windows XP T61 laptop. It desperately needs a reinstall, but it's familliar, and I'm essentially lazy about beating my head over something I don't have to. It works for me. And our actual real webserver in our house is a red hat box of some flavor. I run WAMP on my laptop and have a few different installs of Drupal on it.
For editing work, I use a little editor program called EditPlus. It's small, it's clean, and it includes extensions for a bunch of different file types so that it color codes all your code for you so it's easier to spot mistakes. On my server, I just use VI.
For stuff like screenshots, I have a nice program called SnagIt that does everything I need and was fairly cheap.
Less tangible tools:
Honestly, one of the biggest tools out there that I use is IRC. I hang out, I listen, I pay attention to who is active and helpful and who is only one of the two or neither. I learn who does what (because the current maintainer of the module is not necessarily the person who is actively committing stuff or doing the heavy lifting) - becuase knowing who really knows what is an invaluable skill. If I know who does X really well, then I don't necessarily have to know it as well.
I make friends with people in the community. A lot of coders like to work alone (in my experience) - being friendly with lots of them helps me bring people together who didn't necessarily know who they were looking for, and that helps them and the community. Plus, it gives me people to go have fun with at the cons. :D
What I'm using now
Oh so primitive, on Windows I'm using Notepad++ currently and just started to play with UltraEdit. On the Mac I'm usually doing graphics with Fireworks, but with all of Angie's recommendations I think I'll set up a rockin' dev environment there ... and maybe try to persuade the Powers That Be to supply me with something less loud & huge than the G4 I have on hand at the office. (MAMP is another reason to make that happen, which I think was left out of Angie's list, but I'd sure put it on mine.) For little edits, I use the server-side code editor provided by our ISP via cPanel, which isn't especially great, but it is quick because it's on the server and I don't have SSH (yet).
Has anyone tried out Mozilla Bespin? They have a tantalizing li'l button on their site that says "Edit Open Source: Give us an open-source project name or a publicly accessible repository URL and we'll create a project for you." ... but the field for entering the project just says "Coming Soon". I signed up and I have to say that I'm not really fond of the UI, but the idea is a good one.
Like webchick, I really like
Like webchick, I really like vim for editing, firebug for debugging, and use Drupal modules devel, coder, drush and simpletest.
In addition to those I use a number of Firefox addons. I'm a big fan of Web Developer toolbar which is handy for quick debugging without having to start up Firebug. I also use Firefox addon MeasureIt for measuring the size of objects and ColorZilla for picking colours from web pages, while YSlow addon, combined with Firebug, can help identify why pages are slow.
I use a Mac laptop, with MAMP Pro and XCode installed. I then use VirtualBox to run virtual Ubuntu and Windows machines on it.
Most of mine are already here
I use vim when on the command line, and Crimson Editor (free) when I prefer a desktop text editor. My favorite part is it lets you pretty easily create your own syntax highlighting definition files. (Was fantastic when I had to do Perl Template Toolkit way back when.)
Stella beat me to Colorzilla. :-) What else...FireFTP for FTP-ing...Jing is my SnagIt/Camtasia alternative for screenshots and simple screencasting. I should really start using IRC again...have gotten in the habit of shouting questions on Twitter and hoping a Drupal guru is kind enough to respond. Um....I use Putty to connect to my servers...unique, I know.
Outside the usual Drupal channels, I use Sitepoint forums if I get stuck on CSS or hosting issues. Oh, and just this week I learned how to alter my hosts file (Windows) to test a new site (my first solo Drupal 6!) deployment before the DNS settings were updated.
Amy C. Cham
Twitter: amycham
Crimson Editor
Wow, C.E. looks like a great alternative to Notepad++! Thanks for that.
Jennifer
@jrdixey
All Open Source All the time...
Hi,
Thanks Angie and everyone else. I see many new tools that I am going to try out. Especially Drush.
In my home computerscape I have 1 win xp box so that I can update and load music onto my iPod. My web development tools are all run on Ubuntu boxes.
IDE - Eclipse
Graphics - GIMP
general text editing - Ubunto's default text editor that comes with 9.x.
Firefox - I haven't installed firebug yet on my home workstation
I'm using Filezilla for FTP stuff, but I will try the Firefox plugin FireFTP that gingercat metioned.
I am lucky in that I do mostly development and I only occasionally have to do web graphics. I did use Photoshop previously and I find I can do what I need to in GIMP.
XAMP/LAMP for local development.
At work, in the corporate cubicle farm I am in WinXP jail. I do have Eclipse for my IDE. I use Putty for systems stuff. I use vi for editing files on the system. I like emacs if I have to do a lot of config file editing, but mostly I can do what I need with vi.
Using Eclipse's SVN and CVS plugins to work with our versioned code base.
Firefox w/Firebug and web developer tools.
Eclipse+Drupal - ready to try it again
Tracy -- I'm a little late to this game (just found this group). Like webchick, I've been frustrated with Eclipse time and time again. I used it when it first was out for Smalltalk dev, but that was many moons ago. I've tried to dabble in it off and on in the last 3 years but either enter Smashing & Throwing Land or with a tangled mess.
But I'm ready to climb that mountain again. I've started reading through info in the Drupal IDE group and am going to sloooowly go through the ideas documented there. I may ping you for some Eclipse help in the future if that's ok. (Contrarily, you can direct me to other resources.)
I've always liked IDEs because I have very little patience for having to deal with too much 'operational crap' when I'm deeply focused on the problem(s) at hand. And perhaps I got too used to the totally open and reflective environment of Smalltalk. If there was some systems/admin/whatever repetitive task to be done, I'm used to figuring it out and then making in a one-button click kind-of deal. Plus I'm more attracted to graphic visuals than text. is that the geekGirl equivalent of bling? :-)
Eclipse can be a pain!
Hi,
I have a love/hate relationship with Eclipse. When it works its great when it starts to get flaky, the only cure I have found is to completely re-install and re-checkout my repository.
I used Aptana a while back and I may try using it again. Aptana is based on Eclipse but with a slant towards web development, javascript in particular. I don't remember offhand how it handles php code. I would also have to see how Aptana handles working with CVS and SVN repositories.
The one thing that I really like Eclipse for is working in a CVS/SVN environemnt, it can create and install patches via the gui interface. I like the graphical compare tools, call me a wuss but I get a headache looking at diff output :-)
I'll post a link to my adventures with Aptana/Eclipse and Drupal as soon as I have a chance to write them up.
Cheers!
Tracy
Invaluable Information...Thanks!
I can't say that I'm using anything much different than the rest and I say that proudly because I'd been searching for tools to make sure I'm doing it/learning it right. Needless to say this thread is right on time
For editing I've been using Notepad++ but do have Aptana loaded. I just like going back to Notepad++.
For Graphics I use Fireworks and have IrFanView loaded on my usb drive for when I'm not at my laptop. I'll probably switch that to GIMP though.
I just went through the process of installing Apache, MySql and PHP on my Windows XP laptop and have added a drupal install to that set up. So much troubleshooting but so glad I did it. Our local drupal users group recently had a discussion on drush and I believe that is a module that I'd like to try. I found I had to include the journal module in my devel mode because I will write stuff down on scraps of paper and have information (fragmented) all over the place. I will be sure to pick up simpletest :-) I didn't even know to look for it but definitely need it.
Firefox with firebug is a life saver for me. I also use IE Developer toolbar when viewing things in IE.
Good stuff
Great reading about which tools people use. I always enjoy that. I guess the tools I use has pretty much been mentioned already: TextMate, Firebug, vim, MAMP, xCode, and the very helpful coder and developer modules. The krumo print_r-nicifier in devel is very handy.
Like Webchick, I am terrified by Photoshop and I am too cheap to ever buy it. I think the only "graphics" app that makes me feel safe is MS Paint. Right now I need to do some graphics stuff and I am struggeling with the Gimp. I know there are a lot of tutorials out there, but does anyone have a killer tip or a link to some good stuff for a complete graphics novice?
Oh, and here is a link for a cross-platform regexp trainer app that saved me a lot of times. RegExmm It is not a pretty app, but I really like it that it can identify the grouping stuff you are trying to find.
This database app: DbVisualizer is not free, but I love that tool. It happily talks to any type of database I ever came across and has completion in the SQL editor and a "formatter" that will take my messy query and make it readable.
Graphics Programs
Depending on what you're trying to do, I use the open source tool, Inkscape. It's a vector draw program that does an excellent job, runs under most of the OS' and is under active development. And, did I mention free? Gimp is awesome - and complex. I find the interface just overwhelming most of the time - and I'm too impatient to take the weeks the learning curve takes. Inkscape is very complete - there are a couple of twists to launching it under Mac OSX - but other than that - it works great. Very stable - I've never had a crash under it.
FireWorks
Short of Photoshop, which I agree is a lot to get one's head around, Adobe also distributes the old Macromedia app, Fireworks. It's great for quick UI mockups. What I like about it vs Pshop is that it treats all the art as objects. So without even having to use layers you can manipulate pieces individually (whether vector or bitmap). If you want to make it interactive you can import your file into Flash and have it keep original graphics so they remain discrete objects. And if you wouldn't touch Flash with a 10 foot pole you can script objects with Javascript and have it export CSS & XHTML.
I hadn't heard of Inkscape, so thanks for that.
Jennifer
Fireworks & PNG-8
Another perk of Fireworks is its advanced transparency tools for PNG-8. While not a real substitute for PNG-32 alpha, the ability to select multiple indexed colors for transparency (semi in current browers and full in the legacy IE's) makes for better compromises.
Tutorial from Sitepoint: http://www.sitepoint.com/blogs/2007/09/18/png8-the-clear-winner/
Amy C. Cham
Twitter: amycham
Graphics Programs - Inkscape
chaba4242: "Depending on what you're trying to do, I use the open source tool, Inkscape. It's a vector draw program that does an excellent job, runs under most of the OS' and is under active development. And, did I mention free?"
Yes! Inkscape is awesome - http://www.inkscape.org
There's a new release just around the corner too, so if you want to be brave you could try the 0.47pre1 release candidate - http://sourceforge.net/projects/inkscape/files/
There are some fantastic tutorials available for Inkscape.
This free floss manual is pretty decent reference too :)
Great trick! (Re: Fireworks - PNG 8)
Well I'm one of those gobsmacked Fireworks users who didn't know about this. I'm going to share this tip with the TopNotchThemes group - Acquia Marina makes use of 32-bit PNGs with some adaptations to make them work in IE6 and this would likely be faster, with no hacks.
maintenance tools
I end up doing a lot of periodic maintenance to sites where I have 'user' rights, and I love Navicat for making database backups quick and easy. I use Blumentals Webedit -- and I really, really like that feature in Photoshop where you "Save for the Web" and it makes your files very small and tidy. I think software is worth paying for if it makes my job substantially simpler.
old school tool: a journal
I'm re-dipping my toes into Drupal again, so not sure I have much to contribute as far as really helpful tools -- I've poked around with many but wouldn't consider that I have quite enough experience to recommend too much.
But I will definitely recommend this:
Keep a Simple Daily Journal of What You Did.
This is somewhere that you consistently record what you did each day and somewhere that you can easily and quickly go back to and read through past entries. It might be a spiral bound notebook or it might be EverNote or it might be a text file. Or a blog just for yourself. Or -gasp!- maybe blog entries on a localhost Drupal site. Or maybe you send yourself an email each day and somehow tag it so you can filter for all such emails. (Standard pros/cons of a paper journal vs. electronic systems apply: paper is much more transportable and generally requires no backups, but is slower to search and share, yadda yadda yadda...)
This is not a "to do" list -- it is very much a "Been Done" list. At the end-ish of the day and/or in the moment, record:
The purpose of it is to have one easy and consistent place where you can go and look for information -- how you did something or configured something or why you made the decision you did (or pointers to such). Don't re-write things you've documented elsewhere -- but instead note that you did document them, and note a pointer to where you did so (system/path/filename/filedrawer/etc). (You can re-write things if it makes your toes wiggle, of course.)
You are the audience, so it does not have to be neat or tidy or super ultra complete. Some days you might write lots; some days maybe just a few bullets. Always timestamp your notes, however it is you want to do that.
Use what is easy and fast to use, and feels good to you. If it helps to write with your Most.Favoritest.Pen.Evah! -- do that. Peppermint-scented notepaper? OK. emacs v.1.1? go ahead. It's only for you. Do what it takes to make it a habit, not a burden. To sum: consistent, fast & easy, searchable & browsable, and timestamped.
I started software development back in the 80s and this is one of the most powerful and valuable work habits I ever learned. I saw a coworker do this with a little lab notebook and saw how valuable it was to him and to our projects. So I developed the habit. Time and time again I would refer back to my jotted down notes to be the basis of some documentation or to finally gather all of those little design ideas together, or to remember why we did (or didn't) go down a particular road, or to remember exactly how something was installed and configured. (And a no brainer: very valuable for you when it comes to performance review time.) Just as valuable, it taught me the value of having really tangible evidence of progress -- something important when you spend so much of your time dealing with abstract ideas and the painful slogging that comes with any project.
As with any habit, it works best for me if I don't beat myself up if I do it imperfectly or if I miss doing it some days. I just keep trying to move forward and do a little better next time.
- ae in the PacificNorthWest
Wow, this is a great 'hack'!
It makes me curse myself for not having kept one of these sooner. :)
I think it's especially important when going up the Drupal learning curve, too, because sometimes it can seem less like a curve, and more like an enormous, treacherous mountain with numerous sheer cliffs that also happenly to randomly become 300 ft taller or start an avalanche that knocks you down a couple hundred feet when you least expect it, etc. :P
Back when I was learning Drupal I swear I spent two weeks just staring at it and nervously poking things, trying to figure out how to make it do something. I didn't feel like I was making any progress until one day in the #drupal-support IRC channel I was able to answer someone else's question. That was the best day ever. :D But having a notebook with 20-odd pages of notes would've allowed me to put things in perspective: "Well, look at it this way, two weeks ago I didn't even know how to install it!"
Another thing that would be awesome to come out of these notes are issues in the issue queue that can help make Drupal easier for new users and developers. "I got confused by X, it would've been much more clear had it been Y, and here's a screenshot with some arrows on it to show you what I mean" is invaluable because most of the people working on Drupal forget what it was like to be new and the things that used to just make them crazy because by the time they get that far they're well past the "I suck" threshold.
Oops, I got OT. :P But seriously, thanks for sharing this!
good for resumes, too
I used to keep a "things I did this week/month" list, and it was invaluable when resume-writing and job-hunting time came around. I've gotten out of the habit since I not longer work for someone else, so this was a great reminder.
I'm especially interested in finding a good tool for tracking my time - the simpler and more automatic the better. Right now I'm using Freshbooks, but remembering to actually use the timer consistently is a problem.
Jean Gazis
www.jeangazis.com
www.webhostny.com
Google Docs journaling
I started tracking my work with Drupal because it was necessary for my position (which is grant funded) to report everything I've done on a quarterly basis, but I think it's a habit I'll continue. (It has really helped with the Drupal learning curve!) I keep all of my notes in a Google Docs spreadsheet, so it's accessible from any location or computer.
Preferred CVS Tools?
Anyone have recommendations for a good CVS tool? I'm digging in to the CVS reference guide for module maintainers (http://drupal.org/handbook/cvs/quickstart) and there are several tools listed. I have shell access so a GUI isn't absolutely necessary, but it might be nice to have that option. I'm on both Mac and PC at various times. Oh yeah and I'd rather not pay for it. :)
Thanks 'chix,
Jennifer
I haven't tried any myself as
I haven't tried any myself as of yet - but there's Unfuddle, which is a hosted service that has free accounts.
CVS
Oops, I should have been clearer, I need a CVS client recommendation! I want to be able to review/contribute code and have been plowing through the orientation docs for new contributors. One of the first things they say is to get a CVS client, and there are several options listed, but I wanted to get some opinions about which is best. Thanks! (Unfuddle looks neat, I'll keep that in mind for other purposes ...)
Jennifer