I happened across this sublime anecdote and I just had to share

Some years ago I spent a week giving an in-house program design course at a manufacturing company in the mid-west of the United States. On the Friday afternoon it was all over. The DP Manager, who had arranged the course and was paying for it out of his budget, asked me into his office.

“What do you think?” he asked. He was asking me to tell him my impressions of his operation and his staff. “Pretty good,” I said. “You’ve got some good people there.” Program design courses are hard work; I was very tired; and staff evaluation consultancy is charged extra. Anyway, I knew he really wanted to tell me his own thoughts.

“What did you think of Fred?” he asked. “We all think Fred’s brilliant.” “He’s very clever,” I said. “He’s not very enthusiastic about methods, but he knows a lot about programming.” “Yes,” said the DP Manager. He swiveled round in his chair to face a huge flowchart stuck to the wall: about five large sheets of line printer paper, maybe two hundred symbols, hundreds of connecting lines. “Fred did that. It’s the build-up of gross pay for our weekly payroll. No one else except Fred understands it.” His voice dropped to a reverent hush. “Fred tells me that he’s not sure he understands it himself.”

“Terrific,” I mumbled respectfully. I got the picture clearly. Fred as Frankenstein, Fred the brilliant creator of the uncontrollable monster flowchart. That matched my own impression of Fred very well. “But what about Jane?” I said. “I thought Jane was very good. She picked up the program design ideas very fast.”

“Yes,” said the DP Manager. “Jane came to us with a great reputation. We thought she was going to be as brilliant as Fred. But she hasn’t really proved herself yet. We’ve given her a few problems that we thought were going to be really tough, but when she finished it turned out they weren’t really difficult at all. Most of them turned out pretty simple. She hasn’t really proved herself yet — if you see what I mean?”

How to install gems without ri and rdoc documentation on Windows

Installing gems is usually very quick on my computer … its the accompanying ri and rdoc installations that slows everything down to a crawl.
There’s an easy way to stop ri and rdoc installs on Windows.

All you have to do is go to
C:\Documents and Settings\All Users\Application Data\ on Windows XP
C:\ProgramData\ on Windows 7

create a file called gemrc

then put in the following
gem: --no-ri --no-rdoc

Hat tip to this Stack Overflow comment, give the man some more upvotes!

The 2 dumb mistakes Twitter made with its ipad app

The twitter app for the ipad is pretty darned spectacular, not just from a visual perspective, but specifically because of the brilliant UI choices they’ve made

However, there are two things that it/twitter does that are almost unbelievable.

Twitter app on the ipad

1. You cannot delete your tweets

No that’s not a typo.
You simply cannot delete a tweet you’ve made on the ipad app. If you make a mistake in one of your tweets, you’re SOL.

I understand getting a product to market fast, but leaving off a crucial feature, like deleting error ridden tweets, strikes me as a bit brain dead.
Its certainly a HUGE source of frustration for me … enough to keep searching for an alternative app.

2. You cannot access from the ipad

I’m sure you’re saying “You whine too much dude. Just go to and delete your tweet!”

Here’s the kicker …
You cannot access from Safari browser on the iPad.

If you try to go to you get this screen

twitter for the ipad splash screen

Very dumb, guys.
Please. Fix it.

PS: I lied … you can actually go to urls like … but thats about it, you can’t login or anything.

In the midst of crisis, opportunity … a counter-argument to “Free Kills”

Today I read this really insightful article about how giving away software can kill the market for it.

While I largely agree with the Andy, I think that he has missed one important point.

Giving away a really good product in a certain space can depress sales and stifle innovation, but there will always be that small percentage of users whose needs are not met by the free alternative. Because of this, niche users will be willing to pay top dollar for a product that goes beyond the free alternative.

What about the free alternative?
Won’t its developers be adding features too?
Sure. They might.
But its free, so its not a priority.
Your customers, on the other hand, will pay you good money to make adding features they want a priority … see the difference?

Case in point, Google Calendar added to-do lists, almost a year ago now … but despite cries for an api for it, nothing has happened.
2524 users (people requesting that feature) is not a large number to google, but if you’re a small development shop … and each of those users were paying you  … say $4.99 a month … you’d be doing okay.
Lots of motivation to bang out an api … yeah?

So, instead of looking at it as “Free” killing the market for your product.
Look at it as  …. “Free” doing you the favor of hand delivering the most passionate, keyed-in, highly motivated group of users in the market for your product, to your doorstep … for free 😀

You’re welcome.

Don’t hit the business growth accelerator just yet Joel!

Yesterday, Joel Spolsky posted an article about why growing steadily but slowly might not be such a good idea.

When I read it, I had my reservations about it, but I couldn’t express them … the whole idea just sounded wrong?

Well, the guys over at 37Signals issued a rebuttal of Mr Spolsky’s argument, and I have to say … I agree.

The main thing that drives the use of software like Fogz bugz (a bug tracking web application), is how good it is, and how much buzz it generates. The size of your company doesn’t matter if people that matter (developers in this case) are talking about the other guy’s software on twitter, facebook, digg or reddit, and recommending it to every other developer they can find.

Just my 2 cents.

cropper_capture_11-05-200911-05-14 AM

From the books: Exceptions to Ruby’s standard variable assignment by reference behavior

The un-reference: immediate values
Some objects in Ruby are stored in variables as immediate values. These include integers, symbols (which look like :this), and the special objects true, false and nil. When you assign one of these values to a variable (x = 1), the variable holds the value itself, rather than a reference to it

— From page 54 of The Well Grounded Rubyist by Robert Black

Filed under Things I did not know about Ruby 😀


R.I.P Michael Jackson

Yes I know this is supposed to be a professional blog.
But today, a man I considered the greatest ever musician in modern history … died.

Thank you for the awesome memories Mike.
You inspired me more than you’ll ever know.
You were amazing.
I’ll miss you.


json_encode error “missing ] after element list” with jquery json plugin

If you’re using the excellent jquery json plugin you might run into problems trying to parse json returned from the php function json_encode.

Specifically, when you try to parse the returned json using $.evalJSON you get the javascript error

missing ] after element list

I also had this same problem with the cakephp json component (which I decided to use instead since it would be more portable across php versions than the php5.2+ only json_encode).

The simple fix is this.
Add slashes to your output and surround it with double quotes like this …

$status = json_encode($status);
echo '"'.addslashes($status).'"';

I figured this one out, by examining rails json output that worked just fine with the jquery json plugin.

andlinux = Fail (rant)

Its admirable what they’re trying to do, but I installed the software and couldn’t get it to run. (Strange “could not connect” errors)

After screwing around with their rather unhelpful help thread and losing 2 hours of my life I gave up and uninstalled it. Don’t waste your time like I did, until they at least figure out how to make the darned thing work right out the box.

Thats probably why I hadn’t heard about them until a few days ago, and then, entirely by accident.


From Paul m. Jones

“I don’t recall where I first heard the term BREAD; it stands for “browse, read, edit, add, delete”. That covers more of what common web apps do, including the record listings. It even sounds nicer: “crud” is something icky, but “bread” is warm and fulfilling. That’s why I tend to use the term BREAD instead of CRUD …”

I like BREAD.