Urgent Apps – Mac Development Kit

After yesterday’s post, I got to thinking. I had pulled some items out of that list because they were highly developer-centric applications. However, that does mean that some really top-notch programs didn’t make the list, and I think that’s unfair. There are some apps that I really can’t live without when it comes to development work.

Before we begin, I should point out that my particular development tasks typically include the administration of a MySQL database, editing PHP, Java, HTML, CSS, and JavaScript files, and operating revision control; the tools laid out here are centered around those tasks.

Now, without further ado, the list:


jEdit calls itself “the programmer’s text editor”, but that’s selling it short. jEdit is, to put it lightly, a god among executables. I’ve never seen another program come close to its level of flexibility, modularity, and customizability. The sacrifice for all this goodness is that it’s a bit of a RAM-hog, particularly running under the MacOS JRE (I highly recommend updating to the 1.6 JRE available on apple’s website, and completely switching over to 1.6; it provides some vast performance and footprint improvements.)

NetBeans is, of course, the Java IDE, unless you’re one of those people that thinks that Eclipse is the Java IDE, but I’m not.

SmartSVN (payware)
The best SVN client I’ve seen for the Mac. Unfortunately, there aren’t many good free options.

The real deal, straight from the source.

This nifty little app lets you take any shell or other script file and turn it into a Mac application package.

Java-based UML designer.

Revision control extraordinaire. Any box I do development on has a local Subversion server for anything I happen to want to keep a history for.

I’ve recently fallen in love with Trac, which is why it made the list. It’s not exactly an application – it’s a web application. However, it can be installed on a Mac, so it made the cut, and I do love it dearly. Go check out their page; the Trac site runs on Trac.

Anything I’m missing? Post in the comments!!

Urgent Apps – "20" Mac Software Picks

So, I just reformatted my laptop and reinstalled the OS, which got me to thinking about which applications I installed first, reflexively, as I can’t stand to be without them – and then I progress on through the stuff that I need infrequently, but I do still need nonetheless. These are my “Urgent Applications”.

The best browser, period. Well, okay, Camino might actually be better – I haven’t used it, because it doesn’t support FireFox plugins. Bust.

The ultimate multi-messenger application. Handles MSNM, Y!IM, AIM, ICQ, GTalk, Jabber, IRC, and a whole host of smaller services. Moreover, it’s just about the most customizable instant messaging app I’ve ever used, on any patform.

Quicksilver is a launcher and then some. It doesn’t just let you quickly find and open documents and applications; it lets you do anything to them, with just a few key presses. I still have yet to fully discover its potential.

Nice text editor, especially for programmers, webmasters, and power-users.

MacOS file tagger and tag-based file browser. Stores tags in meta data so they can still be searched with Spotlight.

Global notification app. Many of the programs on this list support Growl notifications, and more applications add Growl support every day.

On windows, 7Z has always been one of my “urgent apps” whenever I reinstall. 7zX holds the same spot for OS X.

I know, I know, it’s cheating, but hey, you do have to manually install it. And besides, it’s required for Fink.

Again, I know, it comes with MacOS, but again, it must be installed seperately. X11 is found in the “optional installs” package on your MacOS disk, and it allows you to run graphical Linux applications on your Mac, side-by-side with Mac applications (programs such as OpenOffice, the GIMP, and Inkscape.)

A pure Aqua port of OpenOffice. It’s got some quirks, and it tends to be a couple of steps behind the official OpenOffice tree, but it’s still a very solid port.

VLC isn’t just a multimedia player; it’s an omnimedia player. I’ve only run into a couple of files in my life that VLC can’t play; and even when multiple players will play the same file, VLC usually does so with better quality, less resource usage, in fullscreen (unlike unregistered Quicktime), and for free.

Fink is the Darwin package manager, like apt or yum (in fact, it’s a forked port of apt to Darwin.) It’s a command-line tool you can use to install and update the thousands of standard (free) packages that have been ported to Darwin.

For those squeemish at the command line, there’s FinkCommander, which puts a nice graphical interface over top of Fink. Heck, I love the command line, but I still use this instead of fink itself 90% of the time.

FruitMenu (payware)
One of the few pay apps on my list, FruitMenu is well worth the price. It lets you turn your Apple menu into, well, something that’s actually useful for stuff. There’s a free demo, so check it out.

FileZilla 3.0 beta
The famous FTP client for Windows has in its third generation finally been ported to the Mac – and the people rejoiced. My all-time favorite Windows FTP client is finally available, and completely free, for the Mac (and, for that matter, Linux as well!)

Mac OS X app that lets you view Windows CHM helpfiles, which are prolific throughout the open source community in providing packaged online documentation. Works very well, with an interface similar to Preview.

OnyX is a system tweaking, tinkering, optimizing, and maintenance tool. And it’s free. Go get it. I run the full suite about once a week.

SuperDuper (payware)
The other pay app on my list, SuperDuper lets you quickly back up your Users directory, your entire disk, or any selection of files, to a disk image.


Hfsdebug is a command-line utility you can use to quickly get information about an HFS drive, such as file size and fragmentation. The only free way I know of to determine file fragmentation on an HFS+ disk.

Dashboard Widgets
iStat Pro
Shows various system stats, such as memory use, network info, disk use, fan speeds, temperature readouts, CPU usage, uptime, battery status, and more.

Delivery Notification
The best package tracking widget I’ve ever seen, bar none – and I’ve used many of them. If you do a lot of online shopping – or even just occasionally – check this little widget out.

Color LS
Yes, yes, this would make #22 (#21 if you count the dashboard widgets as one item, which I do, because I’m a cheater), but it’s not exactly just an application, so I’m not counting it as one. In order to get LS in color, you have to install a version of LS which supports color output. You can do this from Fink by installing the “fileutils” package. This gets you a color-capable ls, but it’s not in color by default; you have to use the –color=always flag. However, you can change this by editing your ~/.bash_profile and adding a line like so:

alias ls=’ls –color=always”

You can find more info here: http://kung-foo.tv/xtips.html#9.

Open Terminal Here Workflow
(See note from Color LS about how this doesn’t put me over 20 items.) Sometimes you’re browsing around the Finder and you need to get to the current directory in a Terminal window – only to discover there’s no easy way to do it; you can’t even quickly copy and paste your current path. So, what is a power-user to do? Script the action!

Right-click on a folder’s background (or the desktop background) and choose Automator -> Create Workflow. This will open Automator with a new Workflow, with “Get Selected Finder Items” already inserted as Step 1. Choose Automator as the library, find Run AppleScript, and add it as Step 2. For the script body, use:

on run {input, parameters}

tell application “Terminal”
set firstpath to item 1 of input
do script “cd ” & (quoted form of POSIX path of firstpath)
end tell

return input
end run

Now save the file as a Finder Plugin, and name it anything you want. Now, to get a Terminal that’s where you are in the Finder, just right-click, and choose your script name from the Automator menu.

Know of a superior alternative to one of my picks? Or something that should be on the list but isn’t? Post a comment and let me know!!

Development Tactics

I recently set up an account with hosted-projects.com, because I wanted a Subversion repository more accessible & stable than the one running on my home desktop. I shopped around for a while, and decided on this place – it’s a small project, and a starter account is only $7/month, so I figure, what the heck.

My account was set up within a few minutes, even though I ordered after business hours – I’m guessing they’ve got a pretty good automation system going. I get fast, secure access for unlimited users to unlimited projects in 100M of space, plus a free Trac – not a bad deal. As far as reliability and support, well – only time will tell.

The host is all well and good, but what I really wanted to talk about is Trac. I had looked Trac up some time ago, and decided to take a pass on it – it just wasn’t mature enough at the time, and didn’t have most of the features I was looking for.

Now, however – after some time, and a few bug tracking schemes – I find myself with a free Trac page sitting around, and I figure, what the hey, I’ll give it a shot. And you know what? It still doesn’t have some of the features I was looking for. But it works so well, it doesn’t matter.

The whole thing runs on a Wiki engine. This Wiki engine identifies all CamelCase as wiki links, which I find a bit annoying, but I got used to it pretty quickly. It lets you easily link to pretty much anything, and inline, too: #123 is ticket 123, r456 is revision 456, etc. It hooks up to your Subversion repo and lets you keep an eye on changelogs and browse the repo; plus, this means if you put properly formatted notes in your commit messages (which isn’t hard), you get links in the changelog, for free.

While not quite as versatile as MediaWiki, for example, in terms of page layout and design, it’s probably easier to use – and programmers tend to go for form over function anyway. It’s a developer’s tool. Developers probably won’t spend all day perfecting page templates and macros.

The system provides for a roadmap of milestones, a list of issue tickets, the wiki, and the repository. That’s it. What’s the big deal? How insanely easy it is to wire them all together. With some really basic formatting, you can turn a simple list of milestones into this.

It’s got some rough edges, and there are definitely some huge opportunities yet to be taken advantage of – particularly, I have yet to discover decent, proper JavaDoc support, with full wiki integration. I may just have to learn enough Python to write a plugin for it. I’d also really like to see automatic backlinks added to all the internal links.

I know it’s still version “0.10.3”, but it’s pretty stable so far, and everything works pretty well. I have yet to run into any bugs or bad behavior – however, you should keep in mind that this is bleeding-edge software if you’re considering deploying it. Don’t let that scare you off though: if you don’t mind the under-heavy-development label, you really should give this little application a try and see what you think. At the very least, check out Trac’s own website to see what it can do.

Review: Eventum

Eventum is an open-source web-based issue management and tracking system from MySQL AB. It runs on PHP with a MySQL backend (of course), and offers a rich featureset and easy installation – in theory.

Eventum is a little bit picky about it’s installation environment. Attempting to install Eventum on a default installation of Apache (with MySQL libraries installed) results in some bad luck. When you load the installer, you’ll get a long list of files that Apache doesn’t have the permission to write to. Then, it’ll tell you you’re missing the GD2 library, and that you need to turn on the deprecated allow_call_time_pass_reference in php.ini.

Under Windows, installing GD2 means uncommenting one line in php.ini. Under Linux, it means gathering libjpeg, libpng, and libttf, and gd2, compiling all of them, then reconfiguring and recompiling PHP itself. Easy for some, but hey, I’m not a comand-line ninja. That stuff takes me a while.

Once you’ve done your bowing and scraping, the installation is rather straightforward – fill in the fields, click the button, it installs itself, but doesn’t log you in or tell you the default account – you have to go back to the INSTALL file to get the default admin account, and use this to create your own account and other accounts. Then you’re ready to get started.

Initial Setup
Once you’ve got it installed, you have to create your project. This seems simple enough until you try to create a ticket, only to discover that new projects have no default priority codes or issue types – an odd choice.

The interface leaves much to be desired, even for a developer’s tool. In terms of usability, it isn’t very intuitive in general, and navigation can be complex and confusing. The entire interface could sorely use a severe overhaul – something I may take on if I decide to continue using it.

Eventum is very feature-rich, which is a bad thing in my situation. I chose it for its quick install, not for the features; I just need issue management, not timekeeping, which seems to play a large part in Eventum. I also don’t need all the pie charts and graphs that made GD2 necessary in the first place.

As far as it’s core featureset is concerned, it is an effective issue manager, though some features are clunky. For example, the notes on issues are difficult to get to; as a developer, I want to be able to open an issue and immediately see the note history so I can see where progress is being made and what the current status is, beyond the “implementation” status code.

It should really also open to the My Assignments page if you have assignments, rather than the Stats page. It also sorely needs a preference to let you change the default rows per page on the issue lists to something other than 5 (yes, the default is 5, and each row actually only takes up one line on the page. I’m not sure what they were thinking.)

I’m stuck with Eventum for the time being as I don’t have time to find, install and migrate to an alternative. I chose Eventum as a quick-fix. Once I have time to apply to the issue of issue management, I may switch to another solution, or try to fix Eventum. I’ll burn that bridge when I get to it – who knows, maybe it’ll have grown on my by then. Or maybe I’ll finally make that issue management system I keep putting off…

Review: FireFox 2.0

After the Great Chronos Crash of ’06, I was forced to reinstall, well, everything. That’s mostly a bad thing, but it did encourage me to upgrade everything I use to the latest and greatest, including Mozilla’s FireFox browser (my browser of choice.) So, behold the silver lining to my grey cloud: my review of FireFox 2.0.

The first thing anyone notices about a new version of a program is , of course, the interface. FireFox 2.0 sports a somewhat updated interface, particularly in the toolbar and tab bar.

The new toolbar I’m really not happy with. I like the search suggestions that have been added to the search box; other than that, I hate what they’ve done with the toolbar. The addition of a Go button is fine for computer novices – which I am not, yet there is no option to remove the button to free up screen real estate. Likewise, there is an equivalent Search button added to the search box – again, fine for users who don’t know about hitting enter, but I want an option to remove the thing, because I don’t need, use, or want it. The updated icons are ugly, particularly the home icon. Using FireFox 1.5 I left the default skin in place; now I’ve switched to one of the freely-available custom skins (GrayModern2, if you’re wondering). I’m sorry, brown is just a really unappealing colour for a toolbar button.

The new tab bar I do like; it integrates many of the features that I previously had to add myself using extensions, like the close box now available on every tab, and the use of fixed-width tabs. I would have liked to see a close box remain fixed at one side of the tab bar; I often find myself closing a series of tabs one after the other, so the ability to just click several times in one spot to close several tabs in a row is a big plus. It’s now more obvious which tab is the active tab, which is nice. They’ve also added a tab menu button to the far-right side of the tab bar, which gives you a list of the currently open tabs; this feature is almost useful, but deeply hampered by the fact that you can’t right-click items in this menu to get the context menu you’d get by right-clicking the tab (e.g., close tab, close other tabs, etc.). They have added Undo Close Tab to the context menu, thank god – a feature I use regularly, being one who often makes mistakes.

The preferences have been updated slightly; I noticed that they removed the option to change your screen resolution in DPI – a mixed bag, since it didn’t work before, but such a feature would be extremely handy if it worked, since I run at high resolution with DPI turned up for improved readability.

The extensions and theme managers have been integrated into a single “add-ons” manager – not a big deal, but a positive change nonetheless.

New Features
The new version isn’t particularly big on new features, but there are a few. The new search bar has support for search suggestions, such as those available on Google, which, I have to say, I didn’t really like at first. However, after leaving it on for a couple of days, it’s really started to grow on me as a handy time-saver. Plus, your search history shows up ahead of the suggestions, leaving that feature unencumbered by the new addition.

It also features a long-time wish of mine, inline spell check. That means you have a spell checker like that of a word processor when you’re using web form fields (such as the one I’m entering this post into.) Not much to explain, but incredibly handy. It underlines misspelled words as you type, and you can right-click to auto-correct, add to dictionary, etc.

There’s a new feed reader as well, but I’m not a big RSS user. I may just have to give RSS another try with the newer clients available (including FireFox’s built-in options) and post a followup here.

They say it’s more stable and performs better, but it’s really hard to say, as it’s always been really stable and performed really well. I will say that this version seems to be bogged down less by having multiple extensions installed than 1.5 did, but that may also be partly due to the fact that all the plugin developers had to release new versions for compatibility with 2.0, so they may have released some improvements of their own along with the update.

All in all, I’d say it’s certainly worth the upgrade (especially being free), but nothing ground-breaking here. I’m looking forward to FireFox 3.0 which seems to have passed the Acid2 test in development builds. Finally!