The Tools I Use

If anyone’s curious, here’s a look at the development tools I use, day-to-day.

I use a Mac, so these are Mac-based, but many are also available for Windows.


Free all-in-one webserver package, instantly sets up Apache, MySQL and PHP. Great for developing locally without all the hassle of trying to build a server yourself.

Zend Studio (plugin for Eclipse)

Eclipse, in my opinion, is slow, bloated, and lacking in some basic features like soft text wrap. Why use it as my primary IDE, then? PHP debugging. Zend Studio (which used to be a nice stand-alone IDE, but is now just a plugin for Eclipse) has a set of tools for runtime PHP debugging which in my opinion are essential to PHP devlopment.


Although I work on big projects in Zend Studio, when I just want to try something out, I’ll often fire up TextMate. It’s small, quick, and pretty full-featured. Some people I work with prefer BBEdit, which I’ll admit has more features than TextMate, but TextMate feels cleaner and… I dunno, more *modern* to me.


For graphics and occasional mockups.


For working with MySQL, I love, love, love Navicat! If you are currently using PHPMyAdmin, ditch it and switch to Navicat. You won’t regret it. I’ve heard a couple people complain that Navicat’s icons look too “Windows-y” – good god people, get over it. They look fine, and it’s certainly a lot better-looking that PHPMyAdmin. If you’re not sure, Navicat Lite is free and does most of what the full version does, try it out!


Good for whipping up quick page wireframes and site flow diagrams for requirements documentation. Believe me, that doesn’t sound like much, but it’s important and the clients love the clean diagrams produced with it.


If I had my druthers, we’d probably be using SVN or something more industry-standard, but it’s what we use at work, and someone else maintains the server so I don’t have to, which is reason enough to use it. I have no desire to become a sysadmin. Like Eclipse, the StarTeam client is also Java-based, meaning it’s slow and bloated. Plus Borland dropped Mac support, so it takes some hacking to get it working on the Mac, though once it’s set up it works fine. There might be better packages out there, but StarTeam gets the job done, and that’s all I need out of a source control system.

Parallels with Windows XP
IE Collection

For IE testing. IE Collection is great, lets me run IE6, IE7 & IE8 side-by-side.


Although I test in multiple browsers, Firefox has great plugins available that make it my favorite browser for web development. I tried Webkit for a while, but the better plugins for Firefox brought me back.

Firefox plugins:

– Download Statusbar

Better display of download status than the standard window on Firefox.

– Firebug

A super-useful suite of web development tools. Essential!

– Screengrab

Take a screenshot of the entire page, regardless of scrollbars, automatically.

– Web Developer

A handy collection of tools for web development. Essential!

– Zend Studio Toolbar

Hooks into Zend Studio, allowing PHP debugging with the click of a button.

There are other apps I use now and then, but these are the primary ones that I use every day.

Manga and Comics on Sony Reader

manga on Sony eBook reader

The last couple days I’ve discovered how to put comics and manga on my ebook reader.

There are not a lot of sources for legal comics and manga (the Sony eBook store has a handful of titles, mostly just a few that came out at the launch of the store and hasn’t been updated since). However, there are lots of sources for technically illegal (scans of books) and quasi-legal (fan english translations of scanned japanese books, out-of-print comics whose publishers are no longer in business) sources of comics and manga.

To be honest, I’d be willing to (and have) purchase legal copies, but most publishers are unwilling to provide comics in digital form, or do so in a restrictive form, like limiting viewing to special software on a computer only. So they simply aren’t interested in providing digital content.

Thankfully, there are lots of comics fans out there scanning and posting. A few searches on Google should yield you a wealth of golden-age comics and manga titles.

To put manga and comics on the Sony PRS-505:

1. Download .zip of a manga book (or create a zip of sequentially named .jpgs)
2. rename the .zip to .cbz
3. Drag the .cbz file into Calibre (free, cross-platform app:
4. Click "Convert" in Calibre to convert it to an .lrf file. Leave all the Calibre settings at default except check "Keep Aspect Ratio" otherwise it will be stretched to fill the screen.
4. Copy the .lrf file onto your reader or onto an SD card or memory stick and put that in your reader.
5. enjoy!

In some cases MacOS creates metadata files that may trip up Calibre. To remove metadata files, copy the files in the command line like this:

cp -X /path/to/original/folder/* /path/to/cleanup/folder

The -X switch will prevent extended attributes from being copied.

More detailed info:
Metadata on OSX is stored in hidden files that start with ._ so if you download an image from a webbrowser called "page_01.jpg", an invisible file called "._page_01.jpg" will also be created, which may contain info like the fact the image was downloaded from the internet, and the URL it came from. This is how OSX knows to warn you the first time you try to run an application downloaded from the internet.

MacHeist Bundle

Another MacHeist bundle is out!

$39 for a bunch of Mac apps (which are normally like $20-$40 EACH).
As usual, only a few of the apps are ones I would use, but even then, still a good deal.
If there are 2 apps there that you’d use, it’s worth picking up.
25% of the sales go to charity.

OS X filesystem madness

So most of last week I spent working on a few bugs in the Catalog Builder, a web-based application I wrote with a few other people at Staples.

The particular bug I was working on was seemingly impossible to fix, and it was driving me to the point of madness. I had it fixed on my local machine, but when I would copy that change to the test server, it wouldn’t work.

Thursday I was determined to fix it once and for all. I stayed at work until around 10 or 11pm, but finally went home in failure, near tears of frustration for not being able to fix it.

The next morning, my manager Asha sat next to me while I once again copied my change from my local machine to the test server. It still didn’t work. Then she had me do it one more time, and miraculously, it WORKED!

I chalked it up to exhaustion, figured I must have made a mistake on Thursday night, copied the wrong file up to the server or something.

But today, I thought about it – I had been very careful on Thursday night. There had to be some other reason that my good code seemed bad on the server. My first conjecture was that there was some issue with the directory names.

I did some poking around, and figured it out.

There is something really odd about the way Mac OS X treats symbolic links.

A symbolic link is a “fake” directory or file, that is actually a pointer to a real file. This is useful if you need a certain file or directory to appear to be in several places, while in fact it’s only in one place. This is better than making multiple copies of the file or directory, because if you have to make changes to it, you only have to change it in one place, since symbolic links just point to the original path the file or directory is in.

Which is the important point.

in Unix, a symbolic link is a marker that points to a path. If you “cd” (change directory) to the symbolic link, it goes to the path indicated.

On Mac, an alias is a marker that points to a folder. If you click on the alias, it goes to the folder indicated.

The difference arises if you move the target directory.

The symbolic link points to the path, so it would say the target dir is missing.
the alias points to the folder, so it would still open the folder, even if it were moved.

And the real trouble is that OS X treats a symbolic link BOTH ways. When you create a symbolic link in the command line, it does TWO things. It creates a unix symbolic link, but also creates an alias in the GUI.

In the GUI, the alias will point to the original FOLDER no matter where you move it. In command line or via webserver, it is a symbolic link, and points to the original PATH.

So when I moved the original folder to the trash, then replaced it with a new folder with the same name as the old one, I would go through the GUI to update the files, then through the webserver to view it… but going through the GUI I was updating the files in the trash (new path, old folder), while viewing the files was showing the ones in the original path (old path, new folder)…

It was this inconsistency that drove me to the point of madness on Thursday.

TaxCut = teh suck

I decided this morning I’d finally stop procrastinating and do my taxes. So I went online and bought TaxCut and went to use it.

The first screen comes up, and asks if you want to start a new return or continue an old on. I chose “start new”.

The next screen comes up all mangled:

I try clicking the “Federal” tab anyway, and this comes up:

I click “OK” and try clicking the “Federal” tab again.

The program crashes and burns:

I do a little search, and find this post:

TaxCut doesn’t work on OSX w/ Case-sensitive file systems

I contact TaxCut tech support and have the following conversation:

Welcome to TaxCut technical support. Please wait while we find a technical support agent to assist you.

Feel free to minimize this window. When an agent is available the window will pop to the forefront.

You have been connected to Chanika S..

Tev Kaber: Hello

Chanika S.: Hello Tev, welcome to H&R Block’s Live TaxCut Support Chat in North America! Please hold a moment while I review the information you’ve submitted to us.

Tev Kaber: Ok

Chanika S.: Thank you for holding.

Chanika S.: we I going to do is walk you through uninstalling and reinstalling.

Tev Kaber: ok…

Chanika S.: Click the Start button, and select Settings, then select Control Panel.
In the Control Panel, double-click the Add or Remove Programs icon.
Select the TaxCut program you want to delete, and follow instructions on screen

Tev Kaber: um, you did read my details, right? i’m on a mac.

Chanika S.: ok one moment.

Tev Kaber: from what i’ve read online, the issue is taxcut was not written to be properly case-sensitive on systems using case-sensitive filesystems

Tev Kaber: in other words, the program is trying to load “f2xmit.cxml” but the actual file is called “F2XMIT.CXML”…

Chanika S.: are you trying to create an different account or is this the first account?

Chanika S.: hello.

Tev Kaber: first account

Tev Kaber: just running it for the first time

Chanika S.: Turn off extensions. This will ensure that other programs do not interfere with the process.
Uninstall TaxCut.

Tev Kaber: i don’t think that’s the issue. please look at know issues and see if case-sensitive filesystems are mentioned

Tev Kaber: known issues, i mean

Chanika S.: ok we are going to uninstall and reinstall to see if this will work.

Chanika S.: Backup any TaxCut data files to a floppy disk.
Open the Hard Disk.
Click and drag the appropriate TaxCut folder and any install log files to the trash. The folder name usually includes TaxCut and the year.
Double-click the User folder.

Tev Kaber: ok, i found the solution

Tev Kaber: to make it work on a computer using a case-sensitive filesystem, you have to create a disc image that is using the older non-case-sensitive filesystem and install taxcut there

Tev Kaber: but this is inexcusably sloppy programming on taxcut’s part

Tev Kaber: and should definitely be in your support “known issues” for mac users

Chanika S.: I will forward this to our developers to see if this can be resolved.

Tev Kaber: please do. it’s terribly bad that this was never tested to be case-sensitive before it shipped. “f2xmit.cxml” is not the same as “F2XMIT.CXML”, and it’s a poor programmer who expects the two to match (being a programmer myself, I know this)

Tev Kaber: ok, i have it up and running in a virtual disk using a different filesystem from the rest of my computer. but after this hassle, i think next time I’ll go with a different tax software provider.

Tev Kaber: thank you for your time

Chanika S.: I do apologize for the inconvenience I will make sure to get this to the right person.

Tev Kaber: ok, thanks.

So I finally found a workaround (create a virtual disk with a non-case sensitive filesystem, then install TaxCut on the virtual disk), not with TaxCut support’s help, but in spite of it.

Talk about lazy, garbage programmers!

If I hadn’t just plunked down money, there’s no way I would use TaxCut. Next year I won’t touch it with a 10-foot pole.

Parallels vs. VMware Fusion

I’ve been using Parallels on my MacBook to run a virtual machine with Windows XP on it. Mostly for my Sony eBook reader software and Family Tree Maker (Mac is lacking when it comes to genealogy software).

I was reading some reviews of VMware’s new entry to the market, Fusion.

Fusion has two big advantages over Parallels:

1) it is written in Cocoa, so is completely native and fast.
2) it can use a BootCamp partition as its “virtual” drive.

So after reading about 10 reviews, all of which said essentially “after trying Fusion, I stopped using Parallels”, I decided to take the plunge and switch my MacBook over.

It was a straightforward setup:
1) install BootCamp
2) install Windows XP
3) install Fusion

Although it’s an easy install, it’s time-consuming. I didn’t have time to test out how it compared to Parallels yet. But it *seems* snappier…

Maybe tonight I will re-install XP on my overly cluttered Dell machine… and after that, maybe I’ll install XP on my cat. Mrrow!