How to Monetize Your Blog: A Really Dumb Recursive Formula

Sometimes I’m stupid enough to subscribe to some online marketing newsletter. I got two this week from different “marketers” whose content was almost identical. They went something like this:

Want to make money off your blog?? I make $100000000 a week off my blog! Here’s How! Click here for this magic formula! Drive Traffic! Make dollars!

And of course, clicking takes you to an order page where you can shell out some hard-earned money for a PDF containing their “magic formula”.

Well I like you, dear readers, so I’m going to tell you their secrets, absolutely FREE! Here’s the trick to “monetizing your blog”:

  1. Put up a newsletter subscription form
  2. Write some nonsense about how much money you make off your blog, even if you don’t – this will drive traffic
  3. Blast your users with stupid annoying emails promising them the secret to blog monetization
  4. Put these steps 1-4 into a PDF and sell it for $30

It’s recursive!

Posted in Funny | 2 Comments

“Drupal Sucks” Followup: Drupal Alternatives

First of all, thanks to everyone who read and commented on the original post. If nothing else, I got some (angry) tips for how to improve my Drupal experience when I do have to use it. It reminds me of this bash.org gem: Start the sentence with “Linux is gay because it can’t do XXX like Windows can”, and you get Linux geeks rushing to angrily help you. So again, thanks everyone.

That said, I haven’t changed my general opinion about Drupal, and this week I’ll be addressing some of the recurring points from the comments.

Let’s start with:

Q. What do you recommend in its place and under what circumstances?
Read More »

Posted in Design, Technology | 14 Comments

Run IE6, IE7 and IE8 on the same machine

Need to test your site in multiple versions of Internet Explorer? I just downloaded DebugBar and was beyond impressed. With a couple clicks, you can open a url in a single tabbed window with all IE versions 5.5 through 8. Grab it here.

Two years ago I endorsed Multiple IE, but unfortunately they’ve dropped the ball on Vista and IE8 support. I recommend upgrading to DebugBar.

Posted in Technology | Leave a comment

Drupal Sucks

Edit: First followup posted.

Are you choosing a Content Management System for your next site? Allow me to throw in my two cents against Drupal. In theory, Drupal is a CMS that lets you control your site out of the box. In practice, it’s a nightmare to configure and maintain.

I recognize that Drupal might work for small sites: install the software, upload your custom theme, and start adding content. But if you’re planning a serious site, with custom features and potential for high traffic, Droople, as I’ve christened it, might not be your best bet.

Apologists may protest that module X or hack Y might fix my gripes with Drupal. I think this is irrelevant. A CMS requiring a slew of third-party mods before it can be usable is useless to someone who can code a custom Rails CMS in a day or two. (Hint, hint. Build it in Rails.)

Without further ado, here is a breakdown of why Drupal is bad for the various parties involved, together with Why It’s Bad (WIB) notes for the less tech-savvy.

Read More »

Posted in Technology | 135 Comments

What are your shortcomings as a programmer?

What embarrassing shortcomings do you have as a coder? I find that I often need reference material when dealing with:

  • File permissions (chmod)
  • Regular expressions (Apache rewrite rules, Ruby regexes etc)

Does anyone else feel the same way? Do you have any good tutorials that can rid me of these handicaps once and for all?

Posted in Technology | 3 Comments

This Week in Brief

I’m all over the web except here these days. Two highlights of my week:

Posted in Uncategorized | Leave a comment

Upgrade to Symfony 1.2: Have your layouts stopped working?

I had a Symfony 1.0 app and I finally decided to make the leap to 1.2. Lo and behold, this mysterious error cropped up:

Notice: Undefined variable: site in /path/to/myproject/apps/site/templates/layout.php on line 10

If you’re upgrading from 1.0, you may suddenly notice that you get these “undefined variable” errors. That’s because global variables are deprecated in layouts as of Symfony 1.1, to be replaced with slots. Generally, a wise idea. More info here: http://trac.symfony-project.org/wiki/Symfony11LayoutUpgrade

Posted in Technology | Leave a comment

RubyOnRails.org Parked

Remember to pay your domain fees, folks:

RubyOnRails.org actually showed this for a good few hours. TechCrunch has the full story.

Posted in Funny, Technology | Leave a comment

Symfony, Doctrine, preSave and postSave

My new Symfony app calls a remote web service as part of the user creation process. Since this is intimately linked with the model (I want this behavior executed for my fixtures, too) it makes no sense to call the web service from the controller.

Like Ruby on Rails, Doctrine has some handy built-in hooks to execute code before and after saving a record. Here’s what my updated model looks like:

class sfGuardUser extends PluginsfGuardUser {
 public function preSave($obj){
  some_voodoo_magic($this->get('id'));
 }

 public function postSave($obj){
  call_my_special_webservice($this->get('id'));
 }

}

Posted in Technology | 1 Comment

Trouble with MySQL Foreign Keys?

There I was, coding up a fresh Doctrine schema for a Symfony app, when my plans to implement foreign keys were repeatedly foiled:

SQLSTATE[HY000]: General error: 1005 Can’t create table ‘./mydb/#sql-xxxx.frm’ (errno: 150). Failing Query: ALTER TABLE cow ADD FOREIGN KEY (barn_id) REFERENCES barn(id)

I was using InnoDB, both tables were there, both columns were there, what else could MySQL want? Why didn’t it work?

Apparently, you must use the same data type for both columns. My cows.barn_id was an INT, while barns.id was a SMALLINT. This didn’t fly. Changing both to SMALLINT did the trick.

Hint: if you’re using Symfony with Doctrine, like I am, use “integer(4)” to get the MySQL INT datatype, or “integer(2)” for a SMALLINT data type. Plain old “integer” converts to BIGINT.

Posted in Angry Development Tips, Technology | Leave a comment