Mac Web Dev Software

Every now and then, I’m asked what software I use on the Mac for what I do. Here’s by list with a few alternatives.

Coding, Styling, and Transfer

You could go with Panic’s Coda ($$), it’s sorta and IDE for the web. It’s got an editor, CSS visual editor, and file transfer build in. But I prefer TextMate ($) as an editor and CSSEdit ($) beats Coda as a visual editor in every way I care to measure. Some people like BareBones BBEdit ($$) or the TextWrangler (free) for editing. But I find TextMate is a more natural fit for the way I work and it is easy to customise and extend. Stay away from DreamWeaver.

For file transfer, there are quite a few options, but I like Panic’s Transmit ($). Most Mac file transfer utilities allow you to open a remote file in an external program and changes get shuttled back to the server seamlessly. It’s rare but I’ve had this clobber files before so keep backups. Other choices are Cyberduck and Fugu (both freeware, I think). I used Cyberduck for a few years, but switched to Transmit because Transmit is significantly faster than Cyberduck. Some people are using MacFuse based solutions to seamlessly extend the filesystem but I haven’t tried them yet.

Really, the best way to do file transfer is to develop locally, keep to code in a version control system like Subversion, GIT, or CVS. Login to the remote system and pull changes from your VCS. This way you can script the update process and easily extend it should you need clustered hosting. There are a lot of VCS clients out there, but I’m only going to mention two, svnX (free) and the command-line. SvnX isn’t feature complete but I use it because it provides a innovative view: a flatten view of the files showing only those that have changed. It is truly a time-saving feature. Why bother with the command-line client? because it is the most common, best supported, and if you are logging into remote servers with SSH you’ll have to learn the command-line client sooner or later.

Don’t forget to install the developer tools from the Mac OS install disc. It includes a few utilities that can come in handy, like FileMerge.

Servers

I use MAMP (free) and MAMP-Pro ($$). They are self contained MySql, Apache 2, and PHP installs with a GUI wrapper. The Pro version makes it easy to switch between sites, which for consulting, is well worth it. The Mac has Apache and PHP installed by default, but I find it is better to leave those to personal use and/or “Web sharing”. You never know when a system update might clobber your configuration. Also MAMP makes it easy to switch between PHP5 and PHP4, depending on your customers, this may be important. MAMP also includes phpMyAdmin.

For Rails use Locomotive (free) again for containment and convenience.

Graphics

Two paths: buy Adobe’s Photoshop suite ($$$-$$$$) or go indie. The Photoshop suite is a no-brainer if you do a lot of web and/or graphics work for hire, you’ll recoup the investment cost in no-time. The indie tools are orders of magnitude cheaper but are often missing key features I need like “Save for Web”. The indie graphic tools I’ve used include Pixelmator ($$), Acorn ($), and Lineform ($$). Gimp (free) also runs on the Mac, if you’re into that sort of thing. Personally, I don’t like using anything that require X windows in my main workflow.

Word of advice, it depends what you are doing, but always consider using a vector tool like Illustrator or Lineform rather than a bitmap tool like Photoshop. Sizes always change. For web-based work marketing wants it bigger, and management and users want it smaller. Then, maybe they’ll want to use your work in a print ad or on the business cards. Vector artwork has a better chance of looking good and any resolution.

Remote Maintainace

VNC is boon to mankind. Leopard includes screen sharing (aka VNC) but the client is tricky to find. I use Chicken of the VNC (free) because it provides connection bookmarks. VNC has 2 major downsides: it is slow and it is hard to automate. The solution is to use SSH to login into a box using the command-line.

SSH is included with Mac OS, but SSH Agent (free) provides a GUI for controlling keys and tunnels. Tunnels are important if you need access to a database or other machine that is firewalled away from normal access. It can save to tunnels to a file which is good for maintenance tunnels that aren’t used often enough to be scripted.

Sound

Maybe sound is not so important for web development, but for sound I’ve used Audacity (free), and Sound Studio ($$).

2008

I thought I should actually try to get a post in before January is over. In 2008, I intend to write shorter posts and post more often. I also intend to work on my grammar and proofreading. BTW, the current theme on the blog is sort of a experiment. It will likely change over the next few months. What can I say, I’ve been busy.

I’ve intended to write a review of Lineform for over a year now — I registered before Freeverse took over the distribution. It’s been a while. Instead, I’ll simply say I like Lineform and I use it at least 3 days a week. It is not the most stable piece of software, but it gets the job done.

Now, VectorDesigner is out and I just downloaded the demo. It shows allot of promise. If it proves itself more stable than Lineform, I just might buy it. It seems to have all of Lineform’s features out of the gate and a Flikr browser, polygon and star tools, and raster-to-vector convertor. It has a iWork style inspector and, unlike Pixelmator, knows when to use HUD style windows without going overboard.

Update

Two major strikes against VectorDesigner. No SVG export and the gradients only work between two colors. Lineform has and SVG export/import and gradients can be built from any number of colors.

Meow Meow Leopard

I’ll keep this short. I got leopard, been using it for two days. Not as smooth an upgrade as Tiger was. My iMac did fine. My powerbook “lost” it’s airport card, which a little googling fixed. Overall I’m pleased. Not in love with the new look and feel (yet). Too dark. Glad “brushed metal” is gone.

Stacks doesn’t offer the “fan” option when the dock is used on the side. Spaces is kinda cool in that linux-had-for-years-but-not-completely-kinda-way. I’m sure if the visual navigation used by spaces hasn’t been copied into most linux window managers yet, it will be shortly. Time machine is kinda fun. Making backups fun will hopefully get more people to backup their data regularly. Most everything works, except svnX despite downloading it’s leopard update. Command line svn works fine.

Then there is Java. When the list of 300+ features included ~5 talking about iChat’s tabs and 0 about Java I knew it didn’t make the release. And you know what, I don’t care. I have a confession to make as a Java Developer and a Mac User: I hate Java desktop applications. IF they are done correctly, you may not realize your using a Java app, but 99% of the time you will. File dialogs that don’t jump to a file when you type a letter. Wrong fonts. Text fields that can’t spell-check. Drag-and-drop doesn’t usually work. No working “Services” of any sort. Cut-and-paste is hit or miss. Then there is the memory usage. I mostly use Java as a way to write programs on the OS I like for people who use another OS.

As a Java developer, the only Java programs I use are the ones I write, an IDE, and some tools for database management. Since I switched to mainly consulting, I use Java less. I don’t miss it. When Java 5 came out, I was impatient for Apple to port Sun’s JVM. Java 5 had a lot of language features I wanted to use. When Java 6 was released, I was still writing Java code daily, but the feature list wasn’t impressive. I decided I could wait. I can still wait.

Java 5 on leopard is rough. Leopard, in general, still has sharp edges. These will be fixed. Java will probably take longer than the rest of it.

Please no email regarding Java. I don’t care how upset you are and I already know I’m arrogant, so stuff it.

Pepper Pad 3

Pepper Pad 3Over the past few months I’ve worked on a project involving the Pepper Pad 3. I can’t say much about the project, but I’d like to talk about the Pepper Pad itself. The “Pad” is sort of typical of mobile PC-style platform; wireless network access, touch screen, camera, ~20GB HD, and a “use-it-as-last-resort” button-laden keyboard. The Pad’s special features are an IR blaster so it can mimic a remote and it runs Linux. Whenever I show the Pepper Pad to someone, their first words are “I want one!” But after playing with it for 10 minutes the reactions cools to “If someone gave it to me, I might use it.” Well, it should be noted that this device is aimed at the home consumer market, hence the IR Blaster and lack of spreadsheets or proprietary email protocols.

(Continued)

TextMate Halloween Easter Egg 2

Create a new project in TextMate on Halloween and you’ll be greeted with a spider web (no bugs caught). Click the thumbnail below for larger image.

TextMate

Halloween TextMate Easter Egg

I was working on a website today when I noticed the “edit” toolbar button in Cyberduck was a little different. Happy Halloween.

Update: Looks like this is a TextMate easter egg. Somebody’s been abusing the auto-updater. I keep TextMate in my dock and the icon didn’t change there, so I didn’t notice it earlier.

Cyberduck

New iMac

I got my new 20 inch iMac with an Intel Core Duo on friday. Loving it. Really, the only down side seems to be lack universal binaries of Quicktime codecs. Yeah, yeah, VLC and mplayer, but QT codecs have other benefits. Photoshop Elements 2.0 (I haven’t upgraded) runs pretty well under Rosetta as does Blender which isn’t universal yet.

The Dark Side of Obj-C

To offset the enthusiasm of my earlier posts on Objective-C, here is a list of annoying stuff about Objective-C and Xcode…

  1. Header Files. Really, two files for one class is a pain in neck. I’m seriously tempted to write a tool to read the source files and create the headers for me.
  2. Lack of refactoring support in Xcode.
  3. Remembering to put ‘@’ before NSString literals.

Maybe I’m just grouchy because my neck has been hurting for three days straight.

My First Objective-C App

200601161920
Above is a screen shot (click the thumbnails for larger shots) of my first working Objective-C application that wasn’t built following along from the book. If fact, I did some stuff the isn’t talked about in Cocoa Programming for Mac OS X 2nd Edition like the toolbars. Yeah, I need to work on my icon skills. I actually finished this app a week or two ago. It is a goofy little program to help me track the amount of soda I drink every day so I can try to cut back. This is sort of a trial run at a larger program for tracking mine exercise and caloric-intake.

It was very easy to write. Between creating and connecting objects in the nib files and the bindings framework, it didn’t really require much code at all. I am surprised that the Interface Builder doesn’t have support for toolbars.

Learning Cocoa

I’m about halfway though Aaron Hillegass’s Cocoa Programming for Mac OS X Second Edition (ISBN 0-321-21314-9). All I can say is “wow”. I thought Objective-C was going to be a pain because it lacks a garbage collector, but even without a GC Cocoa way more efficient than Java/Swing. I know, it’s an apples and oranges comparing an application framework with a widget toolkit. But Objective-C is simply a better fit of GUI programing. Property change support is built into every object without requiring a lot of boilerplate code. The widgets invoke actions with a target and selector instead subclassing interfaces (you can use trampolines in Java get the same sort of savings). Yeah, Objective-C has got it’s problems (flat class namespace) but it is nowhere near a painful as I thought. I wish I’d bought this book a year ago.