Forceful salesmen

January 14th, 2010

Recently I was in the market for a customer relationship management (CRM) tool. I wanted something to track leads, contact dates, and I wanted to store a plethora of custom information with each new lead/customer.

I tried out some open source tools, but they were too complicated for the job. Highrise didn’t have what I wanted for this particular purpose. So I tried one out one of the CRM/SaaS market leaders. Let’s leave them nameless for the post.

Within 30 minutes of signing up online to try it out, the sales staff phoned me. Holy moly, what quick customer service! Peter, the chap on the other end was delightful. He asked me all about my CRM needs, my business, and touted the benefits of his CRM online service. He was a genuinely pleasant fellow. I raved about the customer service after the call. Unfortunately, Peter set me up for a follow up call with… an account manager.

Enter the forceful salesman.

Bill the account manager emailed me 10 nanoseconds later eagerly looking to arrange a call with me. A day passed before I emailed Bill back. I had solved my CRM needs in the meantime with something much cheaper that his solution, and so I emailed him back to politely decline his offer.

This didn’t suit Bill.

Bill ignored my email and phoned me back the very next day, clearly juiced up on one too many orange mocha frappachinos. He was aggressive, dismissive, and never gave up on the sale. He was everything what you would expect from a forceful salesman. I told him annual payments were so 2007, but he parried with quarterly payments.  I told him I disliked lock-in contracts and favoured 37 Signals style, ‘cancel anytime’ policies. He informed me that they’d be out of business in 8 months.  I told him his user interface was too complicated for me, he countered with the offer of an in-house demonstration. But my favourite part was when he turned IBM on me and started to talk codswallop about The Cloud.

The Cloud, man.

“Steve, you could have your leads integrated with your Facebook, your LinkedIn, your Twitter. If you don’t leverage The Cloud, you’re going to get left behind. The Cloud is the future of selling.

The call ended there as the cow manure detector was off the chart and I’ve been known to get belligerent towards the parties of fear, uncertainty, and doubt (FUD).  What a real shame that the whole affair spiralled from “What great customer service!” to “I’m gonna blog about this jackass”

In the meantime, our CRM solution which is a custom Rails application that we built, is serving our needs nicely. Let us know if you need some custom software done right.

Top 5 tips for upgrading Rails to Ruby 1.9

January 6th, 2010

[Warning, this is a programmer post!]

We’ve upgraded almost all of our applications to Rails 2.3.5 and Ruby 1.9. All things said, it was not easy.

So here are my top 5 tips for upgrading your Rails applications to use Ruby 1.9

The MySQL Ruby Gem

If you use MySQL, use this mysql-ruby fork by  Loren Segal. It wouldn’t install as a gem so I downloaded the code from GitHub and turned it into a gem. Email me if you want the gem.

The MySQL Database

The columns and tables in our databases had to be converted to UTF-8. These commands came in handy

/* Here's 1 command altering a table, and 2 commands altering the first 2 fields in that table */
alter table users character set utf8;
alter table users modify email varchar(255) character set utf8 collate utf8_unicode_ci;
alter table users modify crypted_password varchar(255) character set utf8 collate utf8_unicode_ci;
/* etc.... */

Then I put these lines in my.cnf

[mysqld]
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci

UTF-8 + Rails + Ruby 1.9

Watch for UTF-8/ASCII problems. In combination with the above, I would advise

  • Putting # coding utf-8 at the top of your ruby code
  • Putting these lines into your environment.rb
Encoding.default_internal = 'utf-8'
Encoding.default_external = 'utf-8'

Maintaining Multiple Ruby versions

Use Ruby Switcher. This is very useful if, like me, you have a number of Ruby 1.8 and Ruby 1.9 applications running. Ruby Switcher makes it easy to install new Ruby VM’s and switch between them.  Note, it installs Ruby 1.9 off your home directory. Edit the script to change this.

Test

All of our applications have a healthy mixture of Test Unit tests, and Selenium tests. Converting to 1.9 would have been terrifying without this safety net.  It’s been said enough already, but if you’re not testing your code, I would advise that you start now.

If you’ve any questions about converting your Rails applications to Ruby 1.9, just email me or comment below.

Your product is not that important

November 12th, 2009

The idiot that almost killed me

Today a van driver almost ran me over. (That’s him above). The details aren’t important, other than he was driving like a maniac in a business car park. It was a quick reminder that we can lose our lives in a flash.

An hour later when I started breathing again, it reminded me that a successful business is more than just the product. The product is probably the least important part. It’s about the systems used to build and distribute the product, the communications used to sell it, the legals used to protect it, and of course the cash flow.

Today’s experience reminded me I need to concentrate less on the product, and more on developing a system that allows me to be killed by an idiot in a blue van and the business keeps running fine without me.

Write an app in 30 minutes. Go!

October 15th, 2009

We just returned from the 2009 Meath Enterprise Day, an event organised by our client and friends at Meath County Enterprise Board. Today we lent a helping hand by setting up some online surveys using SurveyMonkey where participants were entered into a draw.  It struck us shortly before the results were to be picked, that we had no elegant way to choose the results.  It was nothing that a little Rails application wouldn’t solve.

Half an hour later, and thanks to SurveyMonkey’s export features, we had this little doozy which allowed an independent judge to choose the winner.

Prize app screen 1

Prize app screen 1

prize_2

Prize app - screen 2

SurveyMonkey results exported

SurveyMonkey results exported

The end result is hardly rocket surgery, but the feeling of having a daft deadline, several hundred onlookers, and no margin for error is still intense and exhilarating. Making a real world app in 30 minutes will test your programming kung fu and ability to focus under pressure. Try it!

P.S Congrats to the prize winner: Clayton Coyle.

Defining Project Success

August 21st, 2009

success

As a consultancy,  how can we define project success?

Typically in a project, a client asks for features and a software development consultancy delivers those features, hopefully on time, on budget and to a professional standard. Then everybody claims success.

But how do we know if it was a success? Did we really fail? Could we do better than this?

We think the best way to address  project success is to first understand the project stakeholders’ real requirements. The problem is that even the most enlightened agile developer can mistake features and design as project requirements. But by continually asking why, and not how, we can fish out what the client really requires. Consider the following example:

A sample set of  so called “requirements”

The client needs us to develop a web application with the following must have features:

  • Users can sign up for free and upload and sell their own books
  • Room for Google ads, and sponsors.
  • User can upload their own avator and connect to  authors of the same genre
  • Forums
  • Integration with MySpace, Twitter
  • Facebook App

This is not untypical of the kinds of applications we are asked to build. However, if we continually ask our client why (5 times will do the job) she wants these features, we might actually get to the real requirement which is:

The client wishes to increase her passive income by €2000 euro a month, within 6 months

Now that’s a requirement and that’s exactly where we should start the conversation.  Now we can start to talk about things like the business model  e.g.

  • Why is she offering a free sign up? Why not charge her users a flat fee per month or percentage of the sales? 50 subscribers on a €40 a month plan will achieve the goal in a more predictable manner than advertising. Not to mention, can she realistically get enough traffic within 6 months to justify the advertisers fee?
  • We might ask her if she would consider trying to aim her product at businesses instead of the consumer, since businesses are usually happy to pay for services, while consumers expect everything for free. Would she consider working with a dedicated sales team to get those 50 subscriptions within 6 months?
  • Why bother inventing adding social network features when she could integrate with another established one or avail of a social networking platform service. Will the social network aspect help her to achieve the €2000 in 6 months goal at all?

And so on. You can see how this way of thinking can drastically alter the list of must have features from above. Perhaps the feature list now looks like this:

  • Build a subscription based service aimed at professional authors. Authors get a shopping cart and microsite CMS with a spot for video blogging. Charge 40 euro a month for this service.
  • Sample chapter of the book can be downloaded as a watermarked PDF
  • Offer an auxillary service connecting authors with publishing companies

So coming back to the title of this post, how could we define project success? How about this.

  • Get the real requirements. Make sure they have been quantified. If you’re feeling saucy, you could even consider a requirements specification language like planguage. Don’t be put off by the phrase specification language, it’s quite accessible really and not at all stuffy.
  • Get your stakeholders to prioritise the top 10 requirements. Each requirement fits on an A4 sheet of paper. There’s no need to mention features – that’s for the design and development team to figure out.
  • Drive the design from these requirements
  • Then, do all of your usual wireframing, test driven development, iterative planning, continuous integration and all that good stuff etc.
  • Measure continuously and communicate with your stakeholders on whether the requirements are being met, and thus if the project is going to be a success.

The masters in this department are Tom and Kai Gilb. Take a look at their site, publications, and free books for a wealth of information on requirements gathering and measuring project success. It’s exactly what’s been missing in the Agile software movement.

Kablingy Tip: Mind map your customer’s requirements

August 13th, 2009

Getting started on a new project can be daunting sometimes. It can be difficult to know where to start when you first sit down with your customer and have to extract requirements from them in a structured manner. When I’m stuck, I mind map.

First I draw a central image with the project title.

Then I draw a branch for Users. I will start to ask about the different kinds of people that will use the application I’m about to build. These days subscription based web applications are all the rage, so that means there’s usually at least  3 personas can be identified. So I’ll sketch up Barbara the account owner, Julie the web application administrator, and Bill the customer.

users

Draw a branch for each user - name them and avatar them

Inevitably, that quick discussion will help me to spot at least 5 domain objects. So now I can do a little boxes and arrows diagram of the object relationships between User, Account, Subscription, Plan, Role. As we run through the scenarios of each users, more domain objects present themselves. During this discussion we might also identify more users which we can add on to the Users branch.

domain

As you learn about new nouns and verbs in the project, add them to the domain model

I usually draw a branch for business model also, as I really want to understand how the web application is going to make money. It’s a top priority for me that I build just enough software so that the client can get a ROI as soon as possible. Otherwise I run the risk of saying yes to every feature and building an application that doesn’t generate enough income to cover its initial investment. Fail.

bizmodel

As a developer, you might have useful input on how to price the service

mmfs

MMFS - Minimal Marketable Feature Set - Just enough software to get a return on investment

In mind mapping the business model, the users and their scenarios, and the domain model, the project will start to take shape very quickly. Mind mapping around the whiteboard is also a great way for your client to interact in this process. As you draw branches, she’ll immediately start to fill in the gaps of the map, and since it’s very visual and colourful, it sticks in the memory. You’ll find that you can wipe the board and redraw most of it from memory without even trying.

Give it a go – 4 markers and a whiteboard is all it takes. Don’t forget to take photos of it with your camera or phone before you clear it.

Irish students forced to use Internet Explorer

May 15th, 2009

internet-explorer-voodoo

Did you know that some people defend Internet Explorer? It’s true.

We got a support call from a client yesterday who was demonstrating their Kablingy-built product in a  school (I believe a third level one). They application we had built for them wasn’t working on Internet Explorer.

No surprises there.

When I gave my stock answer to the IT administrator to try Firefox, I was truly shocked at the response.

“Sorry, we don’t want Firefox in the schools because it can’t be controlled”.

Apparently some IT administrators want or need to set what the users can visit, what they can download, and what the homepage must be, all from the server. I’m told Firefox doesn’t allow for this. Furthermore, the IT administrator did not want to see Firefox in any school in the country. No disrespect meant towards the IT admin, but this is the fear, uncertainty and doubt propaganda that’s being spread to our children and their keepers.

I generally meet two kinds of clients in my travels – those who use Firefox/Safari/Chrome etc. and those who don’t know about the latter and use Internet Explorer because they don’t know how crummy it is.

I have never met someone who actually stood up for the product. It also makes me sad to think that this is how IT administrators and schools think about students. We must restrict and control everything they do on the web in order to protect the school, and in the process we must make them use the worse software out there.

What kind of adults are we going to produce with that attitude?

And for the record, there’s no hard feelings directed at the IT administrator – he’s just doing the best job he can with the demands made of him. But what hideous demands they are.

The Irish recession is clearly not that bad

May 4th, 2009

Today is a public holiday. We’re currently on a crazy sprint to get a project finished, so we’re taking advantage of the public holiday today.

Below are photos of the business park that we work in. This business park is mostly populated by small businesses. Yet, as you can see, it’s like a ghost town and the shopping malls will be quite popular today.

04-05-09_0910

13-04-09_1459

04-05-09_0912

If business owners want to take the day off and shop in the mall, then that’s great. But let’s not kid ourselves that this recession is as bad as the 1930s. Clearly, people are not affected by the current economic climate as much as the media would have us think.

Could somebody please resuscitate GNU/Linux?

April 4th, 2009

resusitate-a-lizard

Humour me please.

OS X

Take a look at the feature list for Apple’s OS X Leopard:

  • Time Machine – See how your system looked on a given day and restore files with a click.
  • Mail – Email personalized stationery, take notes, and write to-dos that appear in iCal.
  • iChat – Video chat with effects and backdrops, present remotely, and get more from text.
  • Quick Look – Browse, play, view, and page through your files. Without opening them.
  • Boot Camp – Run Windows on your Mac.

Windows

Take a  look at the feature list for Microsoft’s Window Vista:

  • Find, fix, and share photos – Organize, edit, and share your favorite photos with family and friends using Windows Photo Gallery.
  • Find almost anything -Find documents, e-mail, photos, and more in a snap through Instant Search.
  • Turn any room into a media room – Manage and enjoy digital photos, music, TV shows, and movies in your living room with Windows Media Center.M
  • Make movie magic – Retain high-definition quality as you capture, edit, and publish movies from a video camcorder with Windows Movie Maker.2

Both feature lists look relatively good on the box. I’ll omit how well each lives up to its advertised features, except to say I like OS X and I detest Vista. But at least I detest it. There’s something to work with there. One could argue Windows is opinionated. Hell, at least they tried!

GNU/Linux

Let’s take a look at the different variants of Desktop Linux and the features they advertise. Starting with:

Fedora Linux

After scrolling down through paragraphs of missions, core values, community, method, I got to what looks like the distinguishing feature list:

  • NetworkManager
  • D-Bus
  • PolicyKit
  • PackageKit
  • HAL
  • FreeIPA
  • SELinux
  • PulseAudio

Oooooh, excited yet? Take a look at some screenshots from the new Fedora Beta coming out in May. From this arstechnia article.

Fedora Screenshot

Fedora Sound Preferences

Fedora Plugins Required

This is about as exciting as an episode of Friends, unless you are stimulated at the sight of sound preference pop ups of course. Read the arstechnia article in case you think I’m taking this out of context.

[Update 6/4/09: A commenter informs me that Fedora 11 is more intended for IT technicians rather than regular users - its more comparable with Windows Server]

Let’s take a look at another popular flavour:

Ubuntu Linux

Here’s the blurb:

With Ubuntu Desktop Edition you can surf the web, read email, create documents and spreadsheets, edit images and much more. Ubuntu has a fast and easy graphical installer right on the Desktop CD. On a typical computer the installation should take you less than 25 minutes.

I could do all that in Ubuntu in 2004. The feature list for the current release is more of the same. I can browse, chat, email, type a document, and plugin my music player.

Great.

When can I put together a great home movie, record a song, or make a DVD on Ubuntu, out of the box?

When can I waste a precious hour of my Saturday taking a hundred daft photographs like this, using just the camera in my computer?

photo-815

Can anyone rescue GNU/Linux from a world where features like ‘Ext4 support’ and ‘X.Org server 1.6′ are seen as the latest features to be advertised?

Maybe its happy to stay in that world.

A date with IE 8

March 30th, 2009

crying-child

Today we had to test our application (Overtake) on the recently released IE 8. I was quite hopeful as my Twitter friends had spoken favourably of it, and I figured after all this time, Microsoft would eventually produce something that was compliant and respectful of industry standards. Lofty goals of compliance aside, what I was wanted was that the application would behave as it already does in Firefox, Safari, Opera & Chrome. I develop for Firefox, and 9 out of 10 times, everything is perfect in all of the other browsers. This is all I wanted for IE 8. In short, I wanted to forget about IE from the development cycle.

Happiness did not follow.

Installation

The fun started with the installer. As usual IE 8 can’t separate itself from the operating system. An update to Internet Explorer is a multi stepped and time consuming process. It means an update of the OS, virus checks, integrity checks. Then there’s the questions. “What is your default search engine? Where would like to import Bookmarks? How are you coping in the recession?”.

Once this was over, I realised IE7 had been destroyed in the process. Since I really need IE7 for testing purposes, I went on a wild goose chase to have an operating system that runs IE 8, IE 7 and for fun, IE 6.

Bad idea.

Multiple IEs

To date, I’ve been using Tredosoft’s Multiple IE program which allows me to run IE 6 and IE 7 amounst others. It’s perfect for testing. So when I realised IE 7 was no more, I followed this advice and installed Tredosoft’s “Stand Alone” installation of IE 7 to complete my growing collection of pointless Microsoft browsers.

Don’t do this.

When I installed IE 7, it broke IE 8. Drop downs no longer worked! Everytime I clicked on a drop down box, the popup blocker(!!) was invoked and could not be disabled despite clicking every preference available. Of course I didn’t know the weirdism was because of the dual install. I guessed it was a defect in my coding. So this wasted another hour until I realised it wasn’t my fault.

The Reinstall

So now I went to re-install IE 8. This really took a long time. An hour easily. First it uninstalls everything, reboots, and re-installs. Why is this software so punishing?

Since I’m running Windows on Parallels on OS X, I took precautionary snapshots so I can test on IE 7 and IE 8 by reverting snapshots. A messy solution but it gets the job done. Microsoft recommend Virtual PC for this task. Forgive me if I’m not hopeful about anything Microsoft produces. Instead I’m hopeful about Cross Over which hopefully will run IE 7 and IE 8 on OS X in a couple of months. You can follow their friendly marketing dude, Jon Parshall, on Twitter.

In case you think the above catastrophe was all ignorance and kerfuffle on my part, I leave you with the results of the Acid3 Test run on Internet Explorer 8. I should mention that Safari 4 and Opera 10 both score 100% on this test.

ie-8-acid-31

Certainly a middle finger to standards, to web developers, and an Epic Fail in general.

Photo taken from Flickr