Let’s all grow up

January 29th, 2009 § 0

I felt the need to link to a great post by Antonio Cangiano on the lack of respect, courtesy and civility that is sadly becoming more and more prevalent in the online world. Please read it, and take it to heart.

If You Can Read This…

December 28th, 2008 § 0

…then the DNS has propagated, and all is good with the world. Well, maybe not the whole ‘good with the world’ thing, but definitely the DNS has propagated, which means you’re viewing the site on it’s shiny new Linode  VPS running on mod_rails (AKA: Phusion Passenger).

Media Temple was a great host, but something changed over the past several months, and my Capistrano deployments were no longer working. It was less of a headache to get a better host than it was to figure out what actually went wrong, and it’s about time I started bumbling around in happy server deployment land again. It doesn’t hurt that mod_rails drastically reduces the Ibuprofen required in the deployment of Rails apps.

As an aside, it’s been so long since I’ve looked at Apache configs in any depth, that it took me a few minutes to figure out how to use the same VirtualHost config for both humandoing.net and www.humandoing.net. The answer (at least the one I used) was ServerAlias. I’m surprised that this didn’t appear anywhere in the mod_rails docs, but I guess it’s more of an Apache thing than a mod_rails thing.

See my config below:

<VirtualHost ip_goes_here:80>
ServerName humandoing.net
ServerAlias www.humandoing.net
DocumentRoot /var/www/apps/humandoing/current/public
</VirtualHost>

I’m doing deployment using Vlad instead of Capistrano, but man, the documentation sucks. I think that the problem is almost that it’s too easy to use, but that aside – the documentation still seems uber-lacking.

The Illusion of Choice

December 16th, 2008 § 0

That title has been in my mind for days now, but sadly I haven’t had time to write anything. Which is to say, I’m getting that “before Christmas” burnout, which is translating into more and more Gears of War and less and less Actual Useful Stuff Getting Accomplished.

One problem that I have with Evil Corporations is that they take away (often at the ignorance of customers or end users) our ability to choose which company we’d like to deal with. It’s like a monopoly, but one that tries to lie to people by having two stores, with two completely different names and web sites.

Let’s take Canada’s cell phone gong show industry for example. You hate Rogers and go with Fido? Well, Rogers owns Fido. You hate Telus and go with Koodo (despite the ads that make you want to vomit) – well Telus owns Koodo. This list goes on and on. I ran into someone the other day who had no idea that Best Buy owns Future Shop. Bell owns Solo Mobile. I could go on.

One of the things I find funny about the cell phone situation in particular is how the ads for both Fido and Koodo come off completely mocking and deriding our infamous “System Access Fee” – and have abolished it, but their parent companies (Rogers and Telus, respectively) embrace the System Access Fee as a primary feature, er… a great way to screw customers, er… LOOK! SOMETHING SHINY!.

Paperclip Problems

October 17th, 2008 § 0

I’ve started to use Paperclip on a pet project I’m working on (a recommendation from Josh Owens), and the API is great, except for the fact that I couldn’t get it to work.

Files were being uploaded fine, but my thumbnail and other variations were not generating. The documentation says that the whiny_thumbnails option defaults to true, but my reality seems to dictate otherwise.

After I added that…

has_attached_file :receipt, 
:styles => { :medium => "600x600>", :thumb => "100x100>" },
:whiny_thumbnails => true

…I was at least getting an error:

/tmp/stream.13496.0 is not recognized by the 'identify' command.

At long last, I figured that the error message is totally inaccurate. What it really meant is “I’m looking for ‘identify’ in /usr/bin instead of /opt/local/bin even though /opt/local/bin is in your user path”.

For fixing:

cd /usr/bin
sudo ln -s /opt/local/bin/convert convert
sudo ln -s /opt/local/bin/identify identify

You’ll probably only have this problem if you installed ImageMagick via MacPorts (as I did). I probably could have fixed it by adding /opt/local/bin to the $PATH used by the web server user, but whatever. This worked.

Intermediate Rails Developer

September 18th, 2008 § 0

If anyone reads this blog anymore – I’m looking for 1-2 intermediate Ruby / Rails developers for some ongoing freelance / contract work. The work could last several months, and be anywhere from 5-25 hours per week.

I’d prefer people in North America (I’d really prefer people in BC). I’m only interested in individuals, not outsourcing shops.

Email me if you:

  • Are Smart
  • Get Things Done
  • Read people like Joel Spolsky, Rands, Reg Braithwaite, John Gruber, Jeff Atwood, Charles Oliver Nutter, Rob Walling, Paul Graham or other people who are much smarter than I am
  • Would never in your right mind consider working on a project that doesn’t use source control
  • Have excellent communication skills.

Quick / Simple Analysis of the Super Awesome iPhone Plan

July 9th, 2008 § 0

Just for kicks. The “base” iPhone plan in Canada (by our favorite company Rogers Wireless) is advertised at $60/month. This plan manages to offer what I like to call “No Value Whatsoever” – whereas Rogers believes it offers their customers “flexibility” and “special value bundles”. I don’t know how Yoga relates to this, and unless Rogers hired a marketing person who believes that “special value bundles” is synonymous with “getting stabbed in the eye and kicked in the face” – I think that someone has a very perplexing idea as to the meaning of the word “value”.

As if it weren’t bad enough, let’s see what the actual cost is if you want your phone to be usable. By usable I mean have a half decent number of text messages, Call Display and a moderate 6GB of data (now advertised at $30/month from Rogers if you sign up before August 31st). So now what’s the cost of those 150 minutes plus a half decent amount of data?


$ 60.00 - Basic Voice Plan
$ 30.00 - 6GB of Data
$ 15.00 - iPhone "value pack" to get call display and some text messages
$ 6.95 - Standard System Access Fee
$ 0.50 - 911 Fee
$ 5.62 - GST
—————————————
$118.07 per month.

This might be off by a few cents, because I don’t know if they charge GST on the System Access Fee and 911 Fee. But as far as I’m concerned, and for all intents and purposes, the real cost of actually having an iPhone on the basic plan with the features that actually make it usable for what it’s designed to be is almost DOUBLE the advertised price set out by Rogers.

I don’t know what you call that, but I call it lying, cheating your customers and downright scummy business.

Open Letter to Rogers Wireless

July 9th, 2008 § 0

I wanted to write to you to share my growing concern over the excessively expensive price plans provided by Rogers to their cellular customers. This is something I’ve been upset (even angry) about for a number of months, but the recent release of the iPhone plans has pushed me to the point where I have to make myself heard.

I can only hope and pray that you will listen to myself, and the literal thousands of others who have grown extremely and excessively tired of what I would call the price gouging of your faithful customers.

When it came time for me to get a new cell phone (August 2007), I specifically chose Rogers because I knew it was inevitable that you would be the exclusive provider of the iPhone in Canada. My wife and I now both have a ”$25/month” cell phone plan with Rogers, and this is where my frustration begins. Personally, I don’t know how it is legal to advertise a ”$25/month” cell phone plan, when after you add the features needed to make the phone usable (I don’t believe a cell phone is any use without voicemail, call display, call waiting and call forwarding, along with several hundred text messages) – plus add a bunch of special System Access Fees and 911 Fees and Random Other Fees – our two ”$25/month” plans total over $100/month, WITHOUT going over our minutes. How is this legitimate? How does this have any semblance of reason at all? While I lived in Singapore, I had a cell phone plan with 200 minutes, unlimited incoming text and 1000 outgoing text, voice mail, call display and call forwarding (plus the phone was free) – for SGD $18.90 / month (about $14 Canadian dollars).

The reason I am writing this now, is because in addition to being frustrated to the point of being near furious with my existing phone plans, your recent addition of the iPhone, and the voice/data plans associated to them are downright laughable.

Oh, it’s a value pack, alright

Then, the idea that you can advertise a “Value Pack” – which basically includes Call Display and a few text messages, for FIFTEEN DOLLARS A MONTH – is verging on absurd. There aren’t even words in the English language to describe how much “Value” that package does NOT deliver. Actually, if you have the time and generosity to reply, I would love to hear how you can describe this as a “Value Pack” at all. It seems to me that this package should cost about $5/month. Rogers, however, is charging 300% of that. Then there is the interesting idea that your base plans give us “Bonus Text Messages”. Oh Yay! Seventy-five “Bonus Text Messages” with my $60/month voice plan that’s going to cost me ~$70.82/month after all my special fees are added.

Would you like some ‘bonus’ text messages with that kick in the face?

I’m also quite confused and perturbed as to how you offer Visual Voicemail as standard with an iPhone (as it should be) – but don’t offer Call Display as part of the base package. How does it make sense that I can watch my phone ring, have no idea who’s calling, wait for the call to go to voicemail, NOT know who’s calling unless I subscribe to some $15/month “Value Pack”, or purchase Call Display for $7/month, but after the person leaves me a voicemail, I can see on screen who called me. Does that make any sense at all? To anybody?

I can’t even describe how much of a marketing debacle the launch of the iPhone has been for Rogers. To have a “something special is coming July 11” banner on your web site, for days, along with no plan information is one of the biggest marketing blunders I’ve ever seen. The iPhone was essentially a product of infinite value, handed to you by Apple. I believe that the iPhone could have actually been a turning point for Rogers. A turning point where your company decided that actually caring for and listening to customers was more important than corporate greed. You could have advertised that phone 38 ways from Wednesday, and had customers lined up out the doors for miles, handing you hundreds and thousands of dollars, millions of dollars, in three year contracts to get their hands on it – and you could have offered us decent prices, decent plans, and a semblance of fairness. But instead, Rogers took their monopoly, completely botched the largest marketing opportunity their company has seen in the past decade, AND decided to kick their customers in the teeth all in one foul swoop.

I am sick and tired of being gouged on my cell phone plans and random service charges. I am so sick and tired of customer support that can’t answer my questions. I’m sick and tired of trying to get my Call Forwarding to work, and finally getting through to a technical support person telling me “Oh, sorry, our $3/month call forwarding is broken right now, I have to set you up with our $2/month call forwarding.” (I wish I could say that wasn’t a true story).

Please, for the love of all things holy and good in this world, make a change. Make a difference. Do something for your customers. For once. Please. Prove to us that you actually listen, that you actually care, and that the voice of the customers can actually make a difference. Prove me wrong.

  • Get rid of the crazy “System Access Fee”.
  • Give us fair rates for our iPhones.
  • Stop pretending that $15/month constitutes an “iPhone Value Pack”. There is no value to be found in that package at all.
  • Give us fair rates for unlimited data, for all phones, not just iPhones.
  • Start modeling your business after other companies who care for and listen to their customers.
  • Start modeling your business after other companies who care for and listen to their customers.

That’s when I’ll sign a 3 year contract. That’s when I’ll line up at 5am, and wait 83 hours if I have to, to get my iPhone.

Please. Listen to us. Prove me wrong.

On Estimating – What Kind of Risk Do You Prefer?

July 7th, 2008 § 0

Estimating development time of software is one of my least favorite things to do. Usually, I’m pretty good at it, but that doesn’t change the fact that it’s

  • Time consuming
  • Often grossly inaccurate
  • Usually done while flying by the seat of your pants, with a marginal (at best) understanding of the functionality that you need to estimate.

I’ve always been a pessimistic estimator, and it’s something that people I’ve worked with for a long time understand and appreciate (even if they make fun of me for it, at times).

Some people might think it’s crazy to be a pessimistic estimator, because any estimate that you give to a client that’s padded by 50 or 100% is potentially going to be high. It might be a lot higher than some other shop who might totally low-ball an estimate just to land a contract.

In my opinion, in my way of doing business, the risk of a dissatisfied customer from a blown budget due to a low-ball estimate is significantly greater than the risk of losing a few contracts because of pessimistic estimates.

I would rather estimate high and exceed expectations by coming in well under budget; even if it means that I lose some work along the way because someone felt my estimates were too high.

JavaScript Menu Appearing Behind Flash Object

June 26th, 2008 § 0

Yes. It’s 1:26 am, and I’m working on stuff. Really, I’d like to be in bed. Asleep. And I’d like to stay there for three days.

But alas, instead, if you are having problems with dropdown JavaScript menus appearing BEHIND a Flash object, try adding this to the parameters you’re passing to the Flash object:

wmode="transparent" 

Or if you’re using SWFObject, you can do something like this instead:

var so = new SWFObject("crappy.swf", "crappy_swf", "100%", "100%", "9", "#ffffff");
so.addParam("wmode", "transparent");
so.write("flash");

Maybe that will save you some headaches. It saved me some.

UPDATE

Apparently it might be better to use

wmode="opaque" 

Apparently it’s less CPU intensive, and it seems to do the same job (that’s how it worked for me, anyway). I believe the differences are as follows:

Opaque makes Flash behave like any other page element, allowing you to easily float content over it using JavaScript and DHTML.

Transparent makes the page background underneath the Flash video appear through any transparent areas of the Flash video.

Email From Bill Gates

June 24th, 2008 § 0

There is an awesome article over at seattlepi.com containing the text of an email written by Mr. Gates regarding his experience trying to download and install MovieMaker on his computer. The email really cracked me up, and I think it’s worth a read.

It’s probably also worth noting, that instead of all that rig-a-ma-roll, one could just buy a Mac (which happens to include iLife, which includes iMovie). The Surgeon General agrees that my strategy would keep your blood pressure a lot lower, and increase your life expectancy by about 10 years.