logosLooks like I just passed a 5 year anniversary of my last post. I could just scrap this blog and start a new one, pretending I never got lazy, but that would be just dishonest.

In the meanwhile I’ve moved on from my director job at Salesforce. I’ve been leading test automation organizations first at Marin Software and  now at Vlocity, and spending a lot of time figuring out how to design and write scalable and maintainable test automation frameworks for enterprise scale web services.

I was lucky to work with some amazing engineers who helped me to reboot my long-forgotten SW development skills. And I was lucky that my employers let me focus on technical challenges in addition to managing my department.

I feel like I’ve learned more in the past 5 years of my career than the previous 15 years combined. I will try to commit most interesting of these lessons in articles over the next few months.

The most important lessons is this: It’s never too late to go back to your technical roots. Many good engineers become managers due to circumstances or misguided belief in that it’s what one has to do in order to progress in their careers. After few years of hiring, firing and overall managing you forget the kick-ass programming skills that made you successful in the first place. You start to feel like there is no going back.

Hogwash. I was out of the game for over 10 years and here I am, writing code and sketching designs just like in the good old days. Actually better, the intervening years have given me an incredible wealth of second hand experience on what works and what doesn’t. All I needed was a solid year of work to dust off my rusty skills and get familiar with the latest tools, technologies and trends.

Anyone can do it.



If at first you don’t succeed…

So apparently online jewelry business is one of the hardest businesses to get up and running unless you find a nice niche. After running at loss for a while and struggling to make any sales we decided that the lessons have been learned and it’s time to close the business.

It was definitely fun! I’ve tried to collect some useful experiences from this round:

  • Know your market. So obviously low-end jewelry market has heavy competition, and the race for the bottom price is tough. Buying cheap trinkets from China by the shipping container and selling them at bulk rates makes for a good volume business, but that’s not something we wanted to do. So we put price point higher and ordered hand-picked jewelry from Thailand. Unfortunately…

  •  In the internet, no-one knows you. We had no brand, no references, no credibility and thus no trust. No-one wants to buy a $50 silver earring from a fly-by-night website when dozen other similar websites are selling similar-if-not-quite-as-good earrings for $5. People can buy the $5 earring at risk, but not the $50 one.
  • It’s not enough to be prettyWe invested a lot of time into making our website look professional and polished. Compared to our small competitors, I can easily say that we were in the top 20% if not better. In usability, attractiveness, ease-of-use and just plain prettiness. Unfortunately the point about trust still holds, and because of our price point we were competing with Kay, Zale etc. and besides having better trust factor, they were even more professional, usable and pretty.
  • Find your niche. “Silver jewelry” is no niche. It’s a category, and a big one at that. “Organic spider repellent” is a niche.
  • Sell just one or two items. Or sell at least hundred. Either specialize (“organic spider repellent”?) or go for wide selection. Offering five types of jewelry with 3-4 different items from each category is annoying to maintain, but looks anemic compared to the big competitors. It looks like you tried, but didn’t quite make it.
  • Be pretty. It might not be enough, but it’s still important. Good photos, professional writing, clear graphics, harmonic colors make the store look like a reputable business.
  • Outsource. I cannot draw for the life of me, so I used Elance to get graphic designers for cheap. Just don’t go for the cheapest one, and know what you want in advance. Same goes for writing good copy. I’m not native English speaker, and while I can write, it shows.

… and many more, but I felt those were the most important ones. RIP Silverfire Jewelry.




A/B testing Facebook ads

Everyone tells you that you need to test test test your advertisements. Keep on changing small things, let them run and compare results. Makes sense, right? But it was surprisingly hard to find information on how exactly you should DO this — seems like everyone writing about split testing assumes that of course you know how to do it already.

I had one ad running in my Facebook campaign, with some 30,000 impressions and 20 clicks on it. I created 3 variations on it, changing the picture and the ‘call to action’. So now I had four ads:

  1. Picture with white background, “Upgrade your style now!” (the original)
  2. Picture with white background, “Free shipping!”
  3. Picture with black background, “Upgrade your style now!”
  4. Picture with black background, “Free shipping!”

All ads with the same CPC bid, same demographic targeting. Submit the 3 new ones, wait them to be approved and then wait for few days to check results.

Results — none of the new ads were getting any impressions at all, or just few hundreds of them. Meanwhile the original ad kept showing 5,000 – 10,000 times a day. What gives?

Looks like Facebook does the same thing as Google by  default — ads with better historical performance are shown more often. From their documentation: “This means that if your ad has performed well in the past, it has a better chance of showing up in the future.”

Sucks for split testing. I changed the bidding on all ads to be based on impressions, not on clicks, and this helped, all ads were now showing. The impression count is still a bit off, with the best performing ad (most clicks) getting 33,00 impressions in a week and the worst performing getting just 26,500. So the ‘performance drift’ hits you even over just few days.

Now it was time to read the documentation. Oops. Looks like Facebook has an article about ad testing:

So in summary:

  • Create each ad variation in a separate campaign to ensure even distribution of impressions.
  • Only change one thing at a time in the ads (image, one line of text etc).
  • Be sure to have same bid on all ads. Bidding on impressions seems to be cheaper on new ads.

Kai vs. FBML, Round 1

As I mentioned in my previous post, you really need to have a static landing page on your company Facebook Page. I started reading about FBML markup language and soon got lost in all the details about how to access the Facebook ‘social objects’, user information etc. Until someone, somewhere mentioned that you can just write regular HTML and ignore all the Facebook specific tags unless you need them. D’oh.

Now it’s not quite as simple as that. There are few special cases I had to cover (and learn the hard way) before the landing page was all ok.

1. Image caching

The Accepted Way of handling images is to host them externally and access them with the full URL in IMG tags on your FBML page. No problem, I uploaded all my images to the BigCommerce server hosting my storefront and I was good to go. Worked like a charm.

Now, Facebook caches the images, which I noticed when I went and updated it on my hosting server and nothing changed in Facebook. What you have to do is to add a dummy parameter at the end of the image URL and change it every time you update the image. This makes Facebook think the image URL has changed (well, technically it has changed even though it is still pointing to the same image file) and will re-cache it.

It doesn’t matter what you put in as the parameter, it is not used for anything. I used date as the dummy parameter like this:

<img src=”“>

Now every time you update the image file on your server, you need to remember to go and change the parameter value. Annoying, but it works.

2. CSS circus

You can not link to external CSS sheets from your FBML code. Oops, Facebook changed their implementation and now you can. Oops, now it doesn’t work with Internet Explorer. Oh, now they fixed it and it works with everything. Oh, Internet Explorer does not read the internal CSS in your FBML document anymore?

So this is another annoying ‘feature’ — how Facebook handles CSS seems to change every now and then. Only sure-fire way of ensuring your CSS is always read is to use inline CSS, i.e. embedding your style definitions in your HTML tags like this:

<div id=”textbox” style=”width: 480px; height: 130px;”>

This is not very maintainable and really works only for small pages. As of this writing FBML seems to play nice with external stylesheets with every browser, but this can change in the future (and has changed in the past). See this article for a very good summary of the situation.

As with the images, host the stylesheet on your web server and link to it from your FBML document like this:

css?ver=20101029″ rel=”stylesheet” type=”text/css” />

Note that you’ll need to use the same dummy parameter as with the image files, as Facebook does cache the style file too.

Creating Facebook Page for your online business

So it’s 2010 now and no business should be without Facebook presence. Right? So what does this mean in practise? You’ll need:

  1. Facebook Page (not Group!)
  2. Landing page using FBML application and with link to your online business pages
  3. At least 25 ‘likes’ so you can get  short URL for the page
  4. Advertisements
  5. Regular updates on your wall

To go into more detail on these, and some pitfalls I encountered doing this for the first time.

1. Facebook Page

You can not create a Facebook username for your business — Facebook specifically forbids this. Facebook users have to real, breathing human beings, not faceless corporations. What you can create for your business is something that Facebook calls a ‘Page’.

Log in to your own Facebook account (you’ll need one, sorry, no way around it) and in the left sidebar click on “Ads and Pages” and navigate to the Create Page view. The first important selection is the page type. Community Pages are meant as fan pages, for people who don’t own the business. You don’t want that.

On the other side you have Official Pages for business owners. Selecting the right type of business is important because it impacts on the page style and type of information presented on the pages. If you select the wrong type, you can not change it later — you’ll need to delete the page and create a new one instead.

If your business is a real brick-and-mortars business with a place people can walk in to, go ahead and select the “Local business” type. This requires you to enter the business address and the Facebook page will show this address. If you’re setting up the page for an online business (like I did), select “Brand, product, or organization” and from the drop-down list select “Online Store”.

Fill in the rest, and you’re all set!

2. Landing page

Pretty much every company Page on Facebook has a static landing page, created using  FBML markup language. It makes sense, you’re doing marketing after all and you’ll want the people coming to your page to have a good idea what they’re dealing with. There are some good write-ups on FBML the internets, I found this to be pretty good when I created my landing page.

3. Short URL for the page

By default the URL for your Page is something not-so-easy to remember, like

You can select a ‘username’ once you have 25 fans, i.e. people who have ‘liked’ your Page. This would make your Page URL something easier to remember, such as

4. Advertisements

To get those 25  fans, you need to make people aware of your Page. Asking all your friends to ‘like’ your Page is good first step, but you need to do some real advertising to get the Great Public to notice you.

Facebook advertisements work pretty much the same way as the Google AdWords, except that you can add a picture and there are more options to target your add to small subset of Facebook users:

  1. Create an ad containing a Subject line, small image (110 x 80 pixels) and two lines of text.
  2. Select demographics to target (geographical area, age, sex, interests, school, employment etc).
  3. Decide how much to bid per click or per thousand impressions.
  4. Select your daily or overall budget

You can create the ads from a button on your Page (when you’re logged in as the administrator) or from your own Facebook page in the left sidebar by clicking on “Ads and Pages”. Note that at least as of this writing the ad editor seems to have some issues with Chrome on my Windows 7 machine — it works on some other computers, but not all. Just use Firefox or IE instead.

5. Regular updates on your wall

Once you have fans, you need to keep them engaged! Post updates at least few times a week. Keep them interesting and relevant so people will ‘like’ them. Posting links gives your postings more prominence on people’s walls. Posting Facebook-only specials (“25% off today for FB users only!”) keeps people following your pages and recommending them to their friends.

Don’t post too much and don’t post completely unrelated content. Hiding your posts or ‘unliking’ you takes just one mouse click.

I will not use broad match … I will not use broad match…

Everyone knows that you shouldn’t use ‘broad match’ type in your Google AdWords campaign unless you really really need to, right? Right? Because with broad match you’re going to be getting all these unintentional impressions for silver polisher and insulation rings when you are bidding on “silver ring”.

After wondering for 20 minutes why Google complains of duplicate keywords when I surely don’t have any I saw the missing quotation marks around all 250 of my keywords.

Clicking through all those keywords and selecting the ‘phrase match’ type was very educational. Almost like Bart Simpson writing “I will not trade pants with others”…

So why does Google default to ‘broad match’? Easy, more revenue to them. Google doesn’t care about your conversion ratio. They get paid every time your ad is clicked, and more often it is shown, more often it will be clicked.

So repeat after me, two hundred and fifty times: “I will not use broad match”.

Laundry List

So we’ve come up with out business idea — selling modern, reasonably priced but not cheap silver jewelry. We have wholesale providers lined up, but haven’t actually seen any products yet. We don’t yet know what we don’t know, but we need to get started. How? I think this is pretty reasonable list to start with:

  1. Register domain name and get a hosting company.
  2. Create simple mock-up web pages of your future storefront.
  3. Create a simple Google Adwords marketing campaign to gauge customer interest.
  4. Order samples from the wholesalers to verify quality.
  5. Decide on a storefront software or hosting service.
  6. Analyze competition.
  7. Draft a business plan and marketing plan.
  8. Create the final storefront.
  9. Create marketing campaign.
  10. Launch it all.

Looks simple, right? Somehow I’ve got a feeling that this simple 10-item list is going to be closer to 100 items before all is done…