helpspot in the wild purple stork

It’s not just technology companies purchasing HelpSpot. Purple Stork specializes in the design and creation of baby announcements and cards. Over the past month I’ve been working very closely with the team there as they have some very interesting needs.

Their workflow requires them to accept huge email attachments from their clients, generally full size high resolution baby pictures. They don’t use the public portal, in essence they use HelpSpot as a back end for their ecommerce system. In the first two weeks alone their HelpSpot installation imported more than 1.3 GB of images via email. Far and away the largest number of any current HelpSpot customer.

They’ve had many good ideas for improving HelpSpot several of which will be in the next release, including a very snazzy feature which lets you tie other actions to your predefined requests, such as setting a category, making a note public, changing the status and so on.

It’s always interesting to see your product used in a fashion you never envisioned. I’m discovering that is usually the case more often than not.

you can never look back

If I had to do it all over again I would change nearly every function call, class, and line of code in HelpSpot. Now that I’m able to see the product as a whole there’s so much I would do different. Places where code could have been reused better, code could be faster, code is unnecessary. Sometimes it’s hard to let this code be. I thought it was hard before I launched HelpSpot and I knew there were some things I would do different, but it’s even worse now. However, I’ve come to realize that you just have to ignore this code.

At the end of the day it’s running well and doing what it’s supposed to do. Is it perfect, no. In some places is it not even clean, yes. That’s life. The choice is move forward making new features customers need and want or look back and spend months re-factoring code just to see disappointment in your customers eyes when your new releases don’t seam any different. Sure, the reports page runs 20 milliseconds faster, but they won’t notice.

So my advice is simply to never look back. Now sometimes, you have to re-factor code to move forward or the opportunity presents itself to do so in order to smartly add new features and those opportunities should be taken but re-factoring for it’s own sake should be avoided like the plague. All it does is slow down your forward motion, which is something all small ISV’s desperately need to cultivate at least in the first year.

ajax in your app

Dimitris has an interesting point about using Ajax in your apps. Using it in a few carefully selected places can really improve the experience. HelpSpot uses Ajax in 5-6 places I think and there’s some more coming in the next release. My current favorite is a little flag that lets you mark a request as being unread, providing yourself a reminder to go back and check on it. Before Ajax, this would have been a page reload and really annoying. So annoying that I’m sure I wouldn’t have even added the feature.

On the other end you really do need to be careful. I’ve been prototyping the addition of Ajax to the request form, allowing full submission via Ajax along with queue switching via Ajax. These should be better with it, but in practice they aren’t or at least in my current prototype they aren’t. They load in ways you don’t expect that are jarring. Also, you run into URL issues and being able to easily link or open up new tabs with separate URL’s and so on. It really is playing with fire.

php is junk meme

The PHP is junk meme seems to be rolling around the over the past week. Harry addresses it well in the link I posted in the last post. The thing I find interesting, but not surprising is that most of the stones seem to be thrown by folks who have never built a production app in PHP. Mostly “real” programmers who use “real” languages.

I was a little sad to see one of my favorite “real” programmers enter the fray. Ian Bicking seems to be a really smart guy and is certainly a superior programmer to myself. I love reading his blog even though I don’t know Python. However I must say he has lots of errors and poor assumptions in his post.

I won’t go through them all, but there are two that stand out. First is that PHP has horrible database support. I love PHP’s DB support. I have a product that supports 3 distinct DB’s (Postgres, MySQL, MS SQL Server) all from one SQL base. I see very few apps of any type in any language that do so.

Second, is “PHP gets by with nearly everyone using Apache, and it does well — the constraint is a feature. Less to think about.”. Again, my product has over half its install base running under IIS. People are handling thousands of requests with PHP under IIS and things are running great. Not just under IIS but IIS in both CGI and ISAPI.

So here’s a quick rundown. HelpSpot, a 100% PHP application, is currently known to run with 3 different DB’s, on at least 3 different web servers (IIS, Apache 1.3/2.0, Lighttpd) in no less than 7 different configurations if you count both CGI and modules, on 4 different operating systems (Windows, Linux, Unix, OSX) with probably 15-20 different configurations if you consider various Windows builds and Linux flavors.

Doesn’t sound too bad for a language that’s been given no proper thought, is poorly designed, and is no good for serious development.

software as a service

More evidence why companies like buying products like HelpSpot which they can host themselves. Of course there’s a market for SAAS as well, but it’s not the universal solution some seem to think it is. [hat tip to Jeff]

transparency at work

Sometimes when you’re transparent about your operations the competition gets a heads up on what they’re doing wrong. That’s OK though, I’d love to see my ideas on knowledge bases take off in the market. Right now they suck. In any event, HelpSpot is not primarily a knowledge base tool, but a request tracker so there’s plenty of room for Kyle and me.

russ doesnt get myspace

Russell Beattie doesn’t get MySpace. Here’s why it’s popular Russell. It’s because it’s anti The Man. All kids look to be outside the norm, outside of what they’re supposed to do or how they’re supposed to look. Rock-n-Roll in the 70’s or Rap in the 90’s, etc.

Sure if you’re a kid you can go put your photo’s up on flickr. It’s beautiful and neat and all us web pro types love it and the design is great and all that, but where’s the freedom? I can’t make it look like me or like my personality? I don’t care if what I create looks horrible, I want to convey a part of myself to the community and all these pretty apps don’t let me.

So instead I go to a place where I can have a cascading background image of $50 bills, 3 embedded videos, a background song that comes on when you enter, and all my text in white which you which you have to highlight to see since my background image has lot’s of white in it. Best of all my parents can’t even figure the thing out and have no idea that you have to scroll 8 miles down the page to find the message board where I talk with all my friends.

That’s why it’s popular. Now of course even those things don’t really matter because it’s transcended cool and is now simply assumed that you have a MySpace page. EVERYONE is on it, hence you must conform even though the whole point was to not conform and round and round it goes. In 2 years it will be old news and the next big site will come up and we’ll all be wondering what the kids see in it when there’s so many better tools out there.