Tools of the Trade

webchick's picture

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...

webchick's picture
webchick - Mon, 2009-07-20 19:01

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

  • vim is what I use about 80% of the time for quick and dirty jobs, which is usually what I'm doing. I like it because it works anywhere - on my computer, on my Windows box, and on the server. For how often I use it, you'd think I'd be much more of a power user but I mostly just do the basics like finding/editing text. Some weekend I'll find time to plow through some of the drupal.org handbook stuff on vim and the vim tips wiki and then I'm sure I'll be able to do crazy stuff like start my car remotely with vim. ;)
  • Smultron for when I need to do compensate for my lack of vim knowledge. Mostly because it's free, and I refuse to shell out money for a simple text editor. However, other Drupal people swear by TextMate.
  • Komodo IDE when I need to do something "serious." Particularly when debug something with Form API or CCK where my brain can't physically wrap itself around the problem unless I can step through the code execution one line at a time. I love the little regular expression tool that lets you preview the results of a regex "live" on actual text. Reminds me of a The Regex Coach I used to use on Windows; taught myself regex that way.

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

  • cvs and patch can be added via the XCode developer tools bundle. I do all of this stuff from the command-line, because basically once you memorize cvs up -dPC and patch -p0 < whatever.patch that's all there is to it.
  • I use Skitch for more graphical patch reviews where I want to draw big arrows on something and say "THIS DOESN'T MAKE ANY SENSE." It makes taking screenshots and posting them to the web quick and easy.
  • Otherwise, I just keep notes in Smultron and then post them to the issue when I'm done reading the patch. :)

Project Planning

  • I find OmniGraffle along with the Konigi wireframe stencil absoutely invaluable for drawing out wireframe interfaces. I've used this on more than one occasion to help clarify client requirements, because everyone can look at a picture and say "no, that's wrong" or "yep, that's exactly what I mean."
  • You can also use OmniGraffle for a mind-mapping tool in a pinch, but I've been playing around with XMind for that purpose. I haven't quite worked mind-mapping into my "flow" as a general project management tool, but I like to dive in here every once in awhile and untangle a jumble of thoughts about Drupal 7 or whatever.
  • For most of our clients, we recommend Unfuddle, which is a hosted Subversion (or Git) repository, along with an issue tracker, "Notebooks" (basically wikis), etc. This is nice because then after we're done working on their project, they can continue to use the same project management tools; we aren't responsible for hosting them.

Site building stuff

  • Drush is an amazing tool. It takes the usual process of "Hm. I need CCK. Let me navigate to http://drupal.org/project/cck, find what the most current version of it is, copy the link, download it to the server, extract it, etc." to just 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).
  • The Firebug extension is probably well-known to front-end designers, but I also use it for trying out a bit of jQuery before encoding it in a module, or debugging AJAX requests. Its default use is just to highlight any section of the web and find out what styles are being used, which is great when trying to debug some gnarly theme someone else set up for you. You can also edit HTML directly which is fun for trying to inject POST variables to make sure your security's tight. ;) Tamper Data can also be used for this purpose.
    Some "must-have" developer-related modules when building out a site:
  • Devel, which includes Devel Themer (basically, Firebug for Drupal themes), Devel Generate (auto-populate some lorem ipsum text to make sure your theme looks good), the Switch User block, which lets you switch between users of different roles with a click rather than logout/login, functions like dpm which let you output some debug information about variables, and on and on.
  • Coder, which will scan through your code, advising of obvious security problems, coding standards violations, etc.
  • SimpleTest, which allows you to take your tedious "Login as this user. Then click this link. Then fill out that form. Then click this button. Then check to make sure X works." and write it once in PHP, and ensure that once something's working once it stays working. Clicking on forms is for suckers! :D

I'm sure there's lots more, but these are the immediate things on my dock. :P


Incredibly valuable info!

jrdixey - Mon, 2009-07-20 23:10

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

esmerel's picture
esmerel - Mon, 2009-07-20 19:24

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

jrdixey - Mon, 2009-07-20 23:28

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

stella's picture
stella - Mon, 2009-07-20 23:38

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

gingercat's picture
gingercat - Tue, 2009-07-21 00:06

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

jrdixey - Tue, 2009-07-21 06:22

Wow, C.E. looks like a great alternative to Notepad++! Thanks for that.

Jennifer
@jrdixey


All Open Source All the time...

tracy_pilcher's picture
tracy_pilcher - Tue, 2009-07-21 13:17

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

aenw - Wed, 2009-08-12 01:00

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!

tracy_pilcher's picture
tracy_pilcher - Wed, 2009-08-12 13:27

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!

Tanisha's picture
Tanisha - Tue, 2009-07-21 14:12

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

naxoc's picture
naxoc - Thu, 2009-07-23 20:32

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

chana4242's picture
chana4242 - Thu, 2009-07-23 22:43

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

jrdixey-gdo's picture
jrdixey-gdo - Fri, 2009-07-24 02:31

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

gingercat's picture
gingercat - Fri, 2009-07-24 02:54

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

kattekrab's picture
kattekrab - Sat, 2009-07-25 04:21

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)

jrdixey-gdo's picture
jrdixey-gdo - Wed, 2009-08-12 19:12

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

codeknitter's picture
codeknitter - Tue, 2009-08-11 18:17

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

aenw - Wed, 2009-08-12 02:26

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:

  • what you learned ("never, ever, ever use the "blorf -all -r " command in v.8.0.86 without doing a complete backup first. Here's why:...."),
  • steps that you took to configure or install something,
  • things you accomplished ("created the 6,987th set of test data. Included edge cases #s 87-109 per August 8th use case meeting and used the wallaWalla data generator.."),
  • some marvelous brain flash you had ("border collie powered laptop == Millions!") or
  • brain fart ("must find the name of that gal who was so helpful at conference....") or
  • thoughts for a future meeting, or
  • notes from a meeting....

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'!

webchick's picture
webchick - Wed, 2009-08-12 17:33

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

Grammarian's picture
Grammarian - Wed, 2009-08-12 18:45

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

jrdixey-gdo's picture
jrdixey-gdo - Wed, 2009-08-12 19:17

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?

jrdixey - Mon, 2009-11-23 23:07

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

okwari's picture
okwari - Wed, 2009-11-25 20:47

I haven't tried any myself as of yet - but there's Unfuddle, which is a hosted service that has free accounts.


CVS

jrdixey - Wed, 2009-11-25 23:39

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