LAMPP and then some

I recently built Apache, MySQL, PHP, Python, SQLite, OpenSSL, Subversion , and Trac on a Mac, an Ubuntu box, and a RHEL 4 box. Don't ask why, just see these tips:
  • Try building your own APR. Also, check what APR is being used; if you already have an APR version 0.9.x, the new APR will be named apr-1-config instead of apr-config, and likewise apu-config will be apu-1-config to get the proper version.
  • Try building Apache --with-included-apr.
  • Try using a different version of OpenSSL, even if you have to go back a version. Security holes are typically backported as a letter release to the previous one or two point releases.
  • Under linux, remember to run sudo ldconfig, make clean, make if you're having trouble.
  • Under MacOS, if you're building under a prefix, make sure to add the prefix to the environment variable DYLD_LIBRARY_PATH.
More tips, and maybe even a step-by-step, will be forthcoming.


Blogger vs Google

Does it make sense to anybody out there that Blogger, a Google property, doesn't automatically generate, or even have an option to generate, sitemaps, which are a Google initiative?


Call for Help (Updated)

Okay, I've been struggling with this issue for several days now. So, if anybody out there has successfully built Subversion 1.4.2 or 1.4.3 on MacOS 10.4, please, PLEASE let me know if you know how to resolve this issue.

When I try to build Subversion, I can configure it just fine, but when I try to make, I get the following:

Reason: Incompatible library version: libaprutil-0.0.dylib requires version 6.0.0 or later, but libexpat.0.dylib provides version 2.0.0

I can install Subversion via fink just fine, but if I try to run it (e.g., svn -v), the above message displays and the execution fails. As far as I can tell, there is no version 6 of libexpat; I've updated libexpat via fink and tried compiling it manually myself.

I've since resolved the issue. The fix (in my case, at least - YMMV) was to custom-build APR 1.2.3, and specify that APR and APR-util on the command line (apr-1-config and apu-1-config) when building Subversion. You can also build APR and APR-util automatically along with apache by adding --with-included-apr to apache's ./configure. Please post in comments with your experiences.


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


Short Story

The other night, in the middle of the night, a fragment of a story popped into my head, and I typed it out. Since then, none of it has come back to me - I can't think of any of the qualities of the characters other than what's laid out in what I had written. So, in the hopes that it might come back to me some day, I'm going to post what I wrote here. Please forgive its roughness, and, obviously, its incompleteness.

We came across a great battle - legions of men fighting, screaming, sweating, bleeding. I recognized the colors of my people - and immediately after, I realized that they were sorely losing.

"Your people are being slaughtered, Dorian. They are no match for these warriors, either in number or in tactics," Jonas said.

"I see that, Jonas, but what can I do for them? Surely you don't mean for the two of us to jump headlong into battle against thousands," I said.

"We needn't do any such thing," Jonas replied. "Close your eyes."

This seemed like a dreadful idea - we had suddenly walked out of the wood and into the middle of a vast battle - eyes open, I was doing my best not to be killed just by being in the vicinity. I pointed this out to Jonas.

"Close your eyes, Dorian," he said again. I closed my eyes. I was shaking gently with fear, waiting for an axe to land in my skull. Waiting to open my eyes and find Dorian gone, or dead. My breathing was ragged, fast, my heart pounding.

"Take a deep breath," he said.

"I can't."

"Do it!"

I tried to take a deep breath, and succeeded in taking a nearly normal one. I tried again, but just couldn't do it. I opened one eye to peer at Jonas.

"Close your eyes!" he shouted, "and take a deep breath!" I closed my eye again, and suddenly he was behind me, one hand clasped hard over my eyes, the other covering my nose and mouth.

I struggled against his grip, pulling at his arms with my hands, trying to wriggle myself free. I started to feel lightheaded as I tried in vain to gasp for air, when none was available. Suddenly he let go, and I gasped, sputtering, filling my lungs completely in one giant breath, and exhaling slowly. "Relax," he said.

I looked around at the battlefield, and everything seemed to be moving so slowly. The sounds had gone from a deafening roar to the murmuring of some distant conflict; yet I could hear Jonas as clear as day.

"Can you see alright?"

"Yes," I said, "I can see fine - why?"

"Your eyes are still closed," he said, and I realized he was right - my eyes were still shut, but I could see the battle raging around me with perfect clarity.

"Do you see their leader over there?" he asked, pointing. I concentrated, and picked him out of the bustle.

"Yes, I see him," I said.

"Good," Jonas replied. "Now kill him."

"But... Jonas, surely you're kidding? He must be a hundred yards away - and even if I made it to him alive, he'd flay me before I could make a move! I'm no soldier, and certainly no assassin!"

"But, Jonas... don't you see? He's not really all that far away, if you think about it. And do you see how slowly he moves? Surely you could step right up to him and run him through before he could turn around. Go ahead, do it."

I took another deep breath, and realized Jonas was right - though I knew he was a hundred yards away, I was sure I could just step right over to him, and in three strides I was there, untouched by any of the clashing warriors around me. And indeed, he was moving incredibly slowly now, and it seemed he hadn't even noticed me walk up to him, blade drawn. I stabbed him hard in the gut, pulled my blade back out, and kicked him hard as I could in the wound, knocking him back hard into one of his own men. Two steps later I was right back at Jonas' side.

"Good work, Dorian," he said. I opened my eyes, and stared in amazement at the field of battle: the death of their leader left the enemy forces confused, disorganized, and demoralized; while at the same time, it gave my own people a second wind, as they pushed forward, turning the tables on the enemy.