Development Environment

Wow, I actually got a question from a reader:

“Hey Leah,
I just started following your django adventures as I’m wanting to get into it. Would you mind doing a post on your dev environment (machine, text editor, other favorite tools)? I’m basically looking for best of breed tools and figured I might as well go to the source.

Thanks. Keep on rockin.
Scotty”

While I’m tempted to do my best Strong Bad impression here, the question is actually a good one. To be truthful, I often change tools and am always looking for cool new stuff. Comments welcome!

The most important tool I use is Subversion. Actually, any version control tool would work and I’ve had a paper on GIT in my bathroom magazine rack for awhile. If you’re not using version control, DO IT. It doesn’t really matter what size project you’re working on either. I work solo on my side project and while it’s sad to see incremental revisions all by myself (although others DO have commit access cough, cough…), it’s nice to know that if my laptop were stolen or if I made a horrible mistake when I make a horrible mistake, I can easily get at my good code again. Zigversion is my Subversion tool of choice, but TortoiseSVN is lovely too (and available for Windows).

Moving on… I develop on a Mac laptop (yes, that one) and mainly use Coda as my text editor. I was using SubEthaEdit, but the Pownce designer, Daniel, showed me Coda and I’m a sucker for pretty Mac things. I also heard they just released an update today.

I use MySQL Administrator to view and update Pownce’s MySQL database tables on my local machine and just the plain console for running queries or updating the production site. I’ve heard good things about phpMyAdmin but I haven’t been motivated enough to check it out. For CouchDB, I love CouchDBX for the Mac and the web interface.

I’m not sure what else I would call a development tool, but here’s some stuff I love on the Mac:

- Quicksilver, to get at my apps very quickly
- Adium, for lots of chatty goodness across all my chat accounts
- S3 Browser, desktop app for managing S3 accounts
- Colloquy, more chatty IRC goodness
- SSHKeychain, because I’m lazy and forgetful
- Fetch, for ftp because I like watching the dog icon run
- Parallels, to test Pownce in IE

I’m sure I’m forgetting something, but these are the ones I use almost daily. Let me know if I’m missing out on any more good stuff!

15 Comments

  1. Posted November 11, 2008 at 5:39 pm | Permalink

    The iPhone simulator that comes with the SDK is pretty handy for website testing. It’s not quite like the real thing, but it’s close enough to give you an idea of how a website looks and works in Mobile Safari. Totally Dock-worthy.

    Do you use any dev-related Firefox extensions? I don’t think I could live without Firebug and HttpFox.

  2. Posted November 11, 2008 at 5:59 pm | Permalink

    You also use Trac productively. Not sure if you’ve kept up the “file bugs and triage them” habit, but you certainly use the wiki component effectively to keep track of things you’ll need later.

  3. Abraham Estrada

    Posted November 11, 2008 at 6:34 pm | Permalink

    OMG Leah, if you like Coda, try Textmate.
    And also instead of Fetch for FTP try Transit.

  4. Posted November 11, 2008 at 7:52 pm | Permalink

    Definitely the nice thing about Django and similar web frameworks is that you need little more than an editor, a web browser, and a command line.

    A Mac is definitely a worthwhile investment. The underpinnings are FreeBSD, so it’s quite similar to the (Linux) environment most web sites are deployed. At the same time you can run big name commercial apps like Photoshop (say, to do a cutup).

    Coda includes the FTP engine from Transmit, so you may not even need Fetch. Coda and SubEthaEdit both all live editing by multiple people, for parallel programming. TextMate and BBEdit are other popular editors for Mac.

    For a database, the Django guys tend to recommend PostgreSQL, try postgresqlformac.com. A client tool isn’t always that necessary, If you want one, Navicat has the only decent Mac one I know of for PostgreSQL. SQLGrinder is quite good for basic browsing and query writing, I’m happy with it.

    For the longest time, MySQL was a bit of a pain to install on Mac/Leopard, but hopefully that’s been resolved by now. phpMyAdmin works fine for anything you would need, though I’d recommend the command line for large data dumps/imports.

    For Subversion, the command line is fast and not difficult to pick up. Pragmatic Programmer’s has a great book on using Subversion. Practical and not too long. I’ve been following another GUI called Versions (versionsapp.com), which looks promising.

    I recommend VMware Fusion for your Internet Explorer testing needs. I switched from Parallels some time ago, and am quite glad I did. Either way, set your networking to “Host Only.” That way Windows can’t get out to the world and get infected. Once you figure out the right IP address, you can use IE to test pages on your local development server.

    For books, “Python Web Development with Django” is the only one I know of that covers Django 1.0.

    All the best!

  5. Posted November 11, 2008 at 8:11 pm | Permalink

    Leah, sorry for totally hijacking your post. I wanted to add a few things, and before I knew it, it was rather long. :-o

    If you’re taking reader questions, I’d definitely like to hear about your experiences with CouchDB. I’ve never given it a try. thx

  6. Posted November 11, 2008 at 8:36 pm | Permalink

    Have you tried TextMate yet? they have really good python, subversion/git/whatever, and django support inside, worth checking out if you haven’t already

  7. Posted November 12, 2008 at 12:11 am | Permalink

    Ooo, you linked to me! Yay for CouchDB! :D

    This is an interesting post, and i’d like to see more people doing this. I can heartily recommend Git … it is so powerful. Quite a mind-shift from Subversion, but very useful - especially for a team of people.

  8. Posted November 12, 2008 at 3:14 am | Permalink

    Nice post. Interesting stuff. Sometimes I think there should be more tools available for free (e.g. Coda). But well, there are other tools one can use. ;-)

  9. Posted November 12, 2008 at 3:15 am | Permalink

    Nice, I was looking for some informations about CouchDB :)

    BTW, phpMyAdmin is sooo ugly, you should look at SQLBuddy http://www.sqlbuddy.com you may like it (it’s pretty!)

  10. Posted November 12, 2008 at 3:20 am | Permalink

    Are you on Leopard? SSHKeychain should be unnecessary for most purposes, because svn itself has had native Keychain support since 1.4.

  11. Posted November 12, 2008 at 4:33 am | Permalink

    Thanks for sharing. :)

    I am a big fan of phpMyAdmin, which is quite handy for analyzing complicated queries.

    If you use Firefox, S3Fox is a cool add-on for monitoring S3 account.

    Also, I use Komodo as text editor. It has a super cool debug system. :)

    Jason

  12. Posted November 12, 2008 at 6:00 am | Permalink

    I want to thank you so much for recommending Fetch. FTP has just lost it’s boredom for me now. Man that dog rocks.

  13. Posted November 12, 2008 at 6:15 am | Permalink

    Agreed on version control. Very important. I use subversion as well. It gets tricky depending on the project, but I use Versions http://www.versionsapp.com/ and Beanstalkapp.com for most of my stuff. If I can’t use a hosted SVN I use Warehouse http://www.warehouseapp.com/ on my own computer.

    Coda is my editor of choice. Textmate is a close second. I also use Eclipse for non web related programming. And I use Transmit for FTP—my ISP doesn’t like Fetch and blocks it’s ports most of the time. I’m not entirely sure why I don’t use the built in SVN + FTP features in Coda. Some day soon maybe. Oh, and Terminal is always open. Processing, Openframeworks, MAMP, & Locomotive are usually running constantly as well. That is all. ;)

  14. Lex

    Posted November 13, 2008 at 1:23 am | Permalink

    I’m using SmartSVN Professional. It is the powerful SVN client we’ve found and starting with its version 4 it looks and feels even nice on OSX. But the best is, that it works out-of-the-box, I do not have to ensure the correct SVN version is installed or the SSH client is configured correctly.

  15. Posted November 22, 2008 at 6:15 am | Permalink

    Even if I don’t have the GIT docs as bathroom porn, I agree that version control is the most important part of a development environment. I use Subversion both for my one-person projects as a super redo tool and for the like/diss dev team as a way to work in the same code simultaneously with the rest of the team (don’t forget to scream: “check it out now, funk soul brother” when you’ve done something really cool so your team mates can update their dev environment).

    Another thing that often is missing in small and medium sized projects is a good build and deployment setup. Using a framework like Ant can be very efficient even if you work in a non-Java environment like Python, PHP or Rails to get a sprint of code out on a test server or to production.