MySQL configuration settings

I’m posting this here because I don’t want to forget it. I’ve used MySQL for almost 10 years, and I never picked up this tidbit of information. Knowing it long ago would have saved me some headaches.

If you’re setting up a MySQL connect string, if you use ‘localhost’, the driver will attempt to use the mysql.sock defined for your system. If you use ‘’ it uses the 3306 port that we’re all used to.

Here I was thinking that localhost:3306 would use the port.

This is particularly important on MacOS 10.6 Snow Leopard because the mysql.sock file isn’t in the expected location. I was installing a dev version of Drupal to test my themes locally and I kept hitting this error

Failed to connect to your MySQL database server. MySQL reports the following message: No such file or directory.

Changing to fixed it.

A note about Drupal’s XML Sitemap module

I’ve been setting up Drupal’s XML Sitemap Module and I ran into a problem with a non-obvious solution. When you initially install the module, it sets most content, particularly blog posts, to be excluded from the sitemap. I spent a while poking around Admin looking for a way to include it, since all I have is blog posts. I figured I’d be able to changed it in the module settings page, but while the ‘excluded’ status is listed there for each content-type, you can’t change it.

Some googling led me to a post pointing out that the include/exclude setting is on the configuration page for the content-type itself, namely blog-post. From there it’s an easy change.

Bulking up my Drupal install with SEO plugins

I’m a bit overwhelmed by the sheer number of SEO plugins for drupal. This list of modules is really only a start. I’ve got all the ‘required’ modules installed and a few of the others. It’ll be tiring to list all of them, but pathauto and SEO Friend are already very useful after only a few minutes of being installed.

I am by no means an SEO expert, but I’m learning a lot as I go forward. I don’t plan to get crazy with the dark arts of SEO, for that is a deep rabbit-hole. But it just makes sense to have the basics covered: page titles, meta tags, canonical urls, 301 redirects and a few other bits.


I only learned the word “micropreneur” recently. I don’t know if it was coined by Rob Walling, but he introduced me to it. It is a “business style” where the goal is sustainable long-term income, and little, if any hiring. The micropreneur usually runs one more more small websites that actually make money. The difference between that and the usual startup path is there is no exit strategy, no IPOs, VC funding, or crazy growth.

That’s exactly teh type of business I am hoping to build. I really enjoyed reading Rework, and I had been thinking along those lines. But I didn’t know there was a name for it until I stumbled across Start Small, Stay Small and a few of Rob’s blog posts.

That book has been very informative. It validated some of my initial decisions, and laid out a panoply of guidance that I would have otherwise been without. Very smart, practical stuff.

I’ve also joined the Micropreneur Academy which expands on the information in the book even further, and has a community of founders all doing the same thing together.

I’m getting ready to launch my “sales site” which is a simple one page web page that gives a bit of information about the product and lets people sign up to be notified when I launch. Since launch is still months away, I’ll have a web presence that I can point people to, and I’ll hopefully collect a good mailing list that I can leverage at launch time to get a nice bump in traffic. It also allows me to test various SEO and SEM strategies long before I’ve polished up the code. When I launch, all my SEO will be fully primed in Google. I would not have done it this way without Rob’s advice.

I’m almost done finalizing the name of my new product. Once that’s done, I’ll let you all know and link over to the sales site.

I’m Just Getting Started

I’ve been working for the last few months on a new project. I’m not ready to publicize the details yet though. Once I’m farther along, I’ll post all the details. In fact, I’ll be blogging my progress here as I go. Suffice it to say I’m building a web application (SaaS style).

The basics:

  • I’ll be using Rails 3. I started building with 2.3.8, and I’m very excited now that 3.0 is out and the plugins I’m using are now compatible.
  • I’m using Haml, Sass, Clearance and Formtastic. doubtless I’ll add more tools later, but that’s what I’m starting with. I really like working with Haml and Sass, the learning curve is a little bumpy, but now that I working templates I just love working with them. The markup is so clean!
  • I’ll be hosting on Heroku, when I get to that point. I really like the flexibility of their offering, I can really tune it to my needs as I grow. I’ve used Engine Yard Solo, and it’s a fine service, but it seems less flexible and more manual ( though that could make it more flexible for some). I;ve used plain Ec2 before, but I like the interface that Heroku has built. I haven’t tried Scalr.

Coming up: analytics tools, design decisions and more.

Ups and Downs with Capistrano

Capistrano is an insanely useful deployment system for Rails (among other things). But I just spent two hours banging against an annoying issue.After Cap extracts the latest code from my source repo (hg), it tries to set the group permissions on the files. Due to some oddness in the setup on my server this fails, even though they already have g+w set on them. It was outputting this:* executing "chmod -R g+w /wwwDocs/foo/releases/20080303233346"And then listing a series of files with “Operation not permitted”. At least I had the benefit of this output. Some stories I ready involved FastCGI failing silently after the permissions changed. Man. I got lucky.Some quick googling led me to a number of stories mentioning that cap is running “set_permissions” after the code update, and that overriding it like so will stop it from doing that:task :set_permissions, :except => { :no_release => true } do # do nothingendHowever, that had zero effect. I tried many different permutations. Once I finally dug into the actual cap recipes file (which I should have done earlier), I discovered that in my (apparently newer [2.2.0]) version of capistrano, they helpfully moved the activation of this code to a flag task :finalize_update, :except => { :no_release => true } do run "chmod -R g+w #{latest_release}" if fetch(:group_writable, true)So, I set that flag and all was finally well. Too bad there is so much info out there that’s misleading. It’s not the fault of the people who posted it, they were being helpful at the time. Anyway, I hope this post helps some other people out of the same jam.

More reasons why browsers and flash suck

Mac Firefox ( has a few bugs. One of them is this weird font anti-aliasing bug where fonts are anti-aliased at one setting in a normal page, but if you set the opacity of any object on that page, then they swap into a different mode. You can see the font strokes getting thicker or thinner. It’s really obvious with bold fonts. We ran into this issue with a recent release. On our home page were two rotating banners, we use Scriptaculous to Fade() and Appear() each one, so they cross fade into each other. Saves real-estate nicely. However, when it started the cross fade, the fonts would thin, then when it was done, they would thicken back up. It didn’t bother me, but the higher ups thought it was a catastrophe, so I hunted around for a solution. Eventually we hit on setting “-moz-opacity: 99” on the body element, forcing it into one mode all the time. So we cruise along with that for 6 months until we add some flash to another page in the site. Works great for everyone but poor little old me in FF Mac. If the flash has “wmode” set to “transparent” the flash object appears, but then goes blank, and only appears in parts where my mouse drags over it. In that setting our DHTML menus don’t appear in front of it, so it’s useless.So we switch to “wmode=opaque” and it “solves” that problem, now the flash box is completely empty all the time. Some googling around points me to problems between flash and CSS opacity, so my first thought was to take out that -moz-opacity declaration and whaddayaknow, everything works. So we override that opacity setting on the flash page and we’re all good.