Wednesday, June 25, 2014

Promoting Stubmatic: Tips on marketing your start-up

I blogged 2 month ago (wow was that two months ago?) about how I was launching a ticketing site with my wife to rival Ticketmaster, Eventbrite etc in our spare time and I thought I would update you with some tips we have learnt along the way. For more tips on marketing your start-up you should check out the Titan SEO Blog.

In the last two months we have been able to increase our membership by 60%. Considering we did very little promotion before this it wasn’t hard to do but trying to find tips online has been difficult. Some start-ups have blogged about their success and claim to have thousands of users sign-up, but are either very cagy about what they did to achieve this (if they even did achieve this at all) or make out users were queuing at their home page to sign-up! So through a little blood, sweat and tears we have started to make a little headway and although our user base is not in the thousands we are seeing a slow and steady growth which I feel is more important. So here are some tips (including are some we still need to do ourselves!)

1) Get blogging

This blog isn’t aimed at the target market of Stubmatic but I have still ensured that I link to Stubmatic from each page. Also blogging about our progress like this and being as transparent as possible about who we are gives us a human front which is massively important. One mistake I feel we have made is creating a separate blog for Stubmatic. I feel I only ever seem to post notices about maintenance outages and new features. So, instead, I plan to bring the useful information onto this site and add technical details (Such as any rails challenges we have overcome) at the bottom of those new feature anouncements for my technical readership who may be interested.

The other thing you need to do, in relation to blogging, is to get other bloggers (that are relevant to your target audiance) blogging about you and your web app. This is something I REALLY need to do. I need to find the bloggers who blog to venues, event promoters, theatres etc and get them to check out Stubmatic. I may even look at offering them an affiliate fee for refering signups.

2) Get tweeting

When I first tried Twitter back in 2007 I totally didn’t get it, what was the point of 140 character posts, who would ever want to read them but I recently revisited it and was amazed at how open, helpful and accessible the community is there. Twitter has been a fantastic business tool and I have made some great friends through it. It’s a brilliant networking tool. One thing to note though is that you get out of Twitter what you put in. So for it to be any use, you need to start tweeting useful tweets and following and replying to others that are of interest or may be interested in what you have to say. Through Twitter I met my designer Dan as well as helped to encourage the regular meet up of my local web 2 community (No, there are not many of us in Cornwall). In addition to this I got the oportunity to pitch Stubmatic to a Media Guardian journalist as well as get early notification of a great start-up event Carsonified was running. (Okay I admit some of the tips in here are courtesy of Ryan Carson)

3) Get a well designed home page

One thing that was originally lacking with Stubmatic was a clear homepage that instantly explained the service and captured the visitors service. Although I have a good eye for design I am not a designer and so hired Dan Oliver to redesign. Not only was this a fantastic move in terms of user signups it also got us feratured in Smashing Magazine.

4) List your startup on CrunchBase and web 2 directories

CrunchBase is an open directory / wiki of web startups and anyone can add or edit startups on the site. Timinig is key! Don’t list yourself too soon. It seems people monitor CrunchBase for new web apps and so make sure your site grabs attention, is clear what you are / will be offering and that users can signup or pre-register.

This led me to be contacted by Ziipa suggesting I also register with them, which in turn made me think about who else I could register with. There are loads out there but in terms of who has redirected the most traffic to me, I suggest listing your app on the following sites: Feedmyapp.com, killerstartups.com (costs $49), netwebapp.com and ziipa.com

5) Make yourself accessible

In addition to the first tips, do everything to make yourself accessible list your email address (use an anti-spam technique), phone number, use your real name and offer links to social networks you participate in. For example here is my Twitter, Facebook and LinkedIn. Gary Vaynerchuk is a great example, he lists his twitter feed, facebook, linkedin etc on his page and invites anyone to be his friend. He also makes some great points about using Google to search yourself and find out what others are saying about you and make yourself part of the conversation. A few great tips I learnt from Ryan Carson was to use Twitter search to provide a search RSS feed for mentions of you web app on Twitter and you can also do this for Google blog search.

As you can see it is easy to promote your web app, you can do it yourself but it does take time..

Mate Framework for Adobe Flex

I just wanted to share with you a great framework I have been using recently called Mate (pronounced ma-tay).

Developed by the guys at ASFusion Mate is a great framework that features MXML declared event handling, dependency injection and best of all it is really easy to use and implement (It even has a way of reusing your existing Cairngorm commands. Additionally in the next version there will be an infrastructure for mocking out your services and really provides a clean architecture for Flex apps.

The framework is provided as a .swc file you can drop straight into your /libs folder and supports both Flex 2 and Flex 3. The only downside to the framework is the documentation does not reflect the latest .swc and is a little light in places, however the forums are excellent and very active and there is a good selection of examples.

I will be blogging about this in more details soon, but wanted to share my initial thoughts and urge you to look at this framework as it is really worth it.

Rails deployment is so easy these days

I have been meaning to blog about Phusion Passenger for a while as about 3-4 months ago we migrated Stubmatic from using Apache / Mongrel Cluster to Phusion Passenger A.K.A. mod_rails.

Mod rails is extreamly easy to install. Make sure you update gem first:

gem update --system
Then install the Phusion Passenger gem

gem install passenger
Once complete you can run the Phusion Passenger install that compiles mod_rails for you.

passenger-install-apache2-module
Once this completes it will give you some code to past into your httpd.conf file and you are ready to start configuring your sites.. Well actually if you have been using Mongrels then time to strip most of the configuration out of your https.conf file. You can have as simple a configuration as shown below. Note: The DocumentRoot should be set to the public folder within your app. Passenger automatically detects that this is a rails app.

    ServerName www.stubmatic.com
    DocumentRoot /websites/stubmatic/public
One thing to note is that by default Passenger disables ModRewrite for that VirtualHost and in our case we use ModRewrite for a number of things such as providing a Maintenance page when maintenance.html is in our public folder allowing us to take the app offline. We also use ModRewrite to hide .svn folders, so we needed to use ModRewrite. Thankfully Passenger provides a solution. Note: You must first make sure you remove the .htaccess file in your rails public folder!

So our new Apache configuration looks like this:

    ServerName www.stubmatic.com
    DocumentRoot /websites/stubmatic/public

    RailsAllowModRewrite on

    RewriteEngine On

    RewriteRule ^(.*/)?.svn/ - [F,L]

    RewriteCond %{DOCUMENT_ROOT}/maintenance.html -f
    RewriteCond %{SCRIPT_FILENAME} !maintenance.html
    RewriteRule ^.*$ /maintenance.html [L]
If you want to setup an Apache / Phusion Passenger testing server you will also need to add the following directive to your VirtualHost configuration:

RailsEnv development
As you can see Phusion Passenger make deployment of Ruby on Rails as trivial as deploying a PHP. You can easily reload Phusion Passenger by running the following command from within your Rails project root.

touch tmp/restart.txt
In terms of performance, Phusion Passenger holds it’s own against Mongrel and there are plenty of details on Phusion’s website.

Creating a two-way binding between Model and Form in Flex

A quick sorry to all my Flex readership for the lack of Flex related posts these last few months. I though I would drop a quick tip / class I often use to create a two way binding between a form to a corresponding class model.

Flex provides a one way binding through its <mx:Binding> tags, if you are unfamiliar with this tag check out the section on them in Adobe’s Flex quick start guide. However if you want changes made to the model reflected in the form as well as changes made to the form reflected back in the model you need to set up two way bindings. To simplify this I have created a helper class (listed below) which then allows me to establish a two way binding.

package com.vibrant.components.Forms
{
import flash.display.DisplayObject;

import mx.binding.utils.BindingUtils;
import mx.binding.utils.ChangeWatcher;

public class ModelBinding
{

private var _modelWatcher : ChangeWatcher;
private var _componentWatcher : ChangeWatcher;
private var bindingsAreEstablished : Boolean = false;

public function ModelBinding()
{
}

/**
* Property field
* @default null
*/

private var _model : Object;

public function set model( value : Object ):void
{
_model = value;
updateBinding();
}

public function get model() : Object
{
return _model;
}

/**
* Property field, field within model to bind
* @default ""
*/

private var _field:String;

public function set field( value : String ):void
{
_field = value;
updateBinding();
}

public function get field() : String
{
return _field;
}

/**
* Property: target, component to tartget binding from model to.
*/

private var _target : Object;

public function set target( value : Object ):void
{
_target = value;
updateBinding();
}

public function get target() : Object
{
return _target;
}

/**
* Property: property, to bind to on target component
*/

private var _property : String = "text";

public function set property( value : String ):void
{
_property = value;
updateBinding();
}

public function get property() : String
{
return _property;
}

/**
* @private
* Updates bindings between component and model
*
*/
private function updateBinding() : void
{
if ( bindingsAreEstablished ) clearBindings();

if ( model != null &&  model.hasOwnProperty( field )
&& target != null && target.hasOwnProperty( property ) )
{
_modelWatcher = BindingUtils.bindProperty( target, property, model, field );
_componentWatcher = BindingUtils.bindProperty( model, field, target, property );
bindingsAreEstablished = true;
}
}

/**
* Clears bindings
*
*/
private function clearBindings() : void {

if ( _modelWatcher != null )
{
_modelWatcher.unwatch();
_modelWatcher = null;
}

if ( _componentWatcher != null )
{
_componentWatcher.unwatch();
_componentWatcher = null;
}
bindingsAreEstablished = false;
}

}
}
This class basically takes a model class, that has the data you would like to setup the bindings with in. The field name, the name of the property within the model class to bind to. A target, the form component to establish the view side binding with and finally you can specify an optional property that the binding should be made to on the form element. If unspecified, the ‘property’ defaults to “text” as this is the most often used property to bind to. So for example given the following User model:

1
2
3
4
5
6
7
8
9
public class UserModel
{
    public var firstName : String;
    public var lastName : String;

public function UserModel()
{
}
}
We could set up a binding to a TextInput as follows:

1
2
3
4
5
6
7
8
9
10
11
12
13
...
<mx:Script>
<![CDATA[
public var userModel : UserModel;
]]>
</mx:Script>
<mx:Form>
<mx:FormItem label="First Name">
<mx:TextInput id="txtFirstName"/>
</mx:FormItem>
</mx:Form>
<ModelBinding model="{userModel}" field="firstName" target="{txtFirstName}"/>
...
As you can see with this class you can quickly setup two-way bindings with your models.

Stubmatic - My Ruby on Rails site for grass roots venues, promoters, bands, theatres and clubs

Getting on for 18 months ago, I wrote a fully-fledged Rails app for ticketing events. This is a very competitive industry but about 2 years ago I had the idea for this site, when I was looking into ways to sell places on a technical course I was running. There are lots of ticketing sites out there from the large solutions such as Ticketmaster to the smaller self-service solutions such as TicketWeb and Eventbright etc. The thing is, these all take a massive cut out of each and every ticket you sell. All these sites seem to think that this is okay and it doesn’t cost you anything as you pass the costs onto your customer. I beg to differ.

Firstly why should ticketing sites (especially online self-service ones) take a per-ticket cut. You may be able to pass the cost onto your customer, but they are then aware of this and I for one feel resentful when buying tickets where a middle-man is taking a large (up to 10%) cut of the ticket price just for printing out a piece of paper. I realise the Ticketmasters of this world have high costs and also provide telesales etc as part of the package but there seemed to be nothing aimed at the small “grass roots” organisations that need to recuperate the whole face value of the tickets.

The second unique selling point was the fact that all the other ticketing solutions (bar EventBright but I didn’t know of them at the time) had completely missed the whole social-web revolution. So my idea was a site that didn’t charge booking or transaction fees (rather a subscription based model) and could be integrated with Social networks, blogs, websites etc.

So I set out to build a rails app that aimed to be simple and could allow anyone with a standard PayPal account to sell tickets. The original site took me about 3-4 months (Pretty much written in my spare time - evenings and weekend) and I launched it fairly quietly last August, with Flex and Javascript based widgets.

At the time I complications with integrating with MySpace (which was the site social network I particularly wanted to integrate with) and their strict restrictions at the time, mixed with a new baby Son. This resulted in me ignoring the whole project for a while. I left the site to do it’s own thing for nearly a year, as it slowly built up a number of customers and then in June this year I came to a decision I needed to either put renewed energy back in and run with it or pull the plug.

Pulling the whole site was certainly tempting as I had a list of bug fixes and issues that had been raised by the users who were increasingly using the service. The problem was that the service was free for the majority of users and the pro version was too cheap. Four things made me take the option of putting renewed energy back in. Firstly I think this is a great idea, I just need to get the message out there and if I pulled it I would always have regrets for not trying harder. Secondly I have always wanted to this. I have a passion for doing this and it is my ambition to build a web business from scratch. Thirdly the positive feedback from users who felt the site was a great idea and exactly what they needed. Finally from watching some of the lectures that have been given this season, in particular by the much hailed DHH and Jason Fried of 37 Signals and in particular this one given at Start-up School 2008.

The message was clear: you can create a start-up and if you want it to be a success you need to charge for it. Additionally, you can launch a start-up in your spare time (remember that since January I am no longer freelance and I lead a team of Rich Internet App developers at Trigger Software full time), and that while everyone else is chasing the Fortune 500, success could be found chasing the Fortune 5,000,000 which is exactly the target market of my ticketing site (then called tktit.com).

So over the last few months I have ironed out all the issues raised by my users and revisited my business model. In the meantime MySpace has opened up their API and allowed for the creation of Apps. You may be wondering why I feel MySpace is more important to me than Facebook and this the pure fact that my target market are still heavy users of MySpace - its open profiles, not requiring signup, is its strength for marketing. So I have finally been able to create the MySpace app I always wanted that lists a user’s box office directly on their MySpace profile. No one else is doing this!

Additionally I have streamlined and simplified the site further, done a whole bunch of SEO work and undertaken a complete visual redesign and rebranding as Stubmatic (the name TktIt was a mistake partly no one could pronounce it so it made it harder for us to be found and also it was open to school boy humour as it has “tit” in it).

So this is my mission. To prove you can indeed launch a start-up in your spare time and to add to that, I want to prove that you can start a start-up from anywhere. I am not in San Francisco or the US, I am not even in London but 5 hours train from London in Rural Cornwall.

So this is the start of my experiment, other than some tweaks to the home page, adding a Tour / FAQ it is pretty much there. I have so many plans for the site but for now I need to focus on getting my user numbers up. I have hired a PR man. I know there is talk on the web that this is unnecessary but working full time means this gives me a point of contact and also the additional assistance in marketing the site.

I’ll keep you posted!

Please Help Me Win Carsonified’s Golden Ticket…

I am a big fan of Ryan Carson and the guys over at Carsonified. They have just announced a competition to send one person to all of Carsonified’s events for 2009. To win, all one needs to do is post a blog entry (this) linking back to Carsonified’s competition post and then get 25 comments. So, if you are a regular reader (or your first time here) and would like to help keep me up to date on what is happening in the world of web apps, design etc as well as send me on some Carsonified workshops, then please add a comment supporting me to that this post. If i win I promise to share my knowledge gained on here.

Also, if you are a blogger yourself and entering this competition, please comment so below and I will return the favour and add a comment to your blog post entry.

Thanks in advance to all those that comment..!

Regards,

Jon