Archive for October, 2005

Regular expressions (how we manage our code)

As any sane programmers we keep all our code in a source control system (in our case it is CVS).

We also use a PHP framework called Nova System that we’ve created specially for use in our products. This framework should obviously be shared between the products, so naturally it lives in its own directory in our CVS repository.

So for Stuffed Tracker we actually have 2 top directories (”tracker” and “system”) which we have to retrieve from the CVS when preparing a new release. This imposes additional challenges for us, but nothing that we couldn’t handle.

As soon as a new release of Stuffed Tracker is ready, we tag it with appropriate version in CVS and then launch a special script that I’ve wrote using Perl that not only retrieves tracker’s files, but also Nova System’s files and tracker’s documentation from a separate location. It then puts everything in the appropriate directories (”system” inside “tracker”), removes CVS service directories and then packs everything in a zip file with a correct name containing the product’s version number.

We then only need to upload this file to our server and that’s all.

Today I’ve also added one nifty feature to this script that removes comments (PHP and HTML) in Russian from the source files before packing them in the zip. We’ve decided that it is not appropriate to keep Russian comments in the source code, since most people viewing the source won’t be able to read them anyway.

Comments are removed with a very complex regular expression, that I’ve partially borrowed from an excellent book called “Mastering Regular Expressions” (by Jeffrey Friedl). I recommend this book to anyone who wants to understand how regular expressions work on the very low level.

This book has a great example of a regular expression that removes C and C++ style comments, even keeping them unchanged if they are inside double or single quotes. I’ve added some of my own logic to this regex. Particularly I wanted to remove the comments that start with “#” as well (they are also used in PHP). And I wanted a string like “// ?>” to work correctly, since in PHP “?>” would not be a part of the comment.

Anyway, I’ve made a slightly complex regex from the book REALLY complex and of course it didn’t work when I first tried it. I had a hard time trying to debug it. And then I’ve found an excellent tool just for my situation. It is called Regex Buddy. They don’t have a trial version available, but I’ve looked at Flash demos and was sold immediately.

It really helped me to make by regex work. I can recommend it to anyone writing at least slightly complex regular expression. Great software!

Our plans for the end of 2005

First of all I am happy to report that we are very pleased with the amount of sales and general interest that we are getting for Stuffed Tracker only a month after it’s initial release. Our hard work and sleepless nights are definitely paying off.

In around a week we will be launching an upgraded version of the product with several new exciting features added. Because of them we will probably even bump the version to 2.1.0 instead of 2.0.3 as originally planned.

We are also trying hard to push our project management software, Factory Nova, towards its release. 90% of all features are ready, but we still have to implement a fantastic new interface that our designer is currently working on, polish the existing features, add the remaining ones, write documentation and do other “release stuff”. We are currently looking at late December/early January release. I will be posting here more news about Factory Nova including screenshots of the new interface as we are moving closer to the launch date.

Maybe a month before the release we plan to launch a private beta for the subscribers of the Factory Nova list (we invite you to subscribe if you are interested)..

Also I would like to announce that in the plans for both of our products is.. a thin client! Soon after the Factory Nova release we will start working on the Windows clients both for Factory Nova and Stuffed Tracker.

We don’t want to do anything big at first. For Stuffed Tracker it will be a simple notifier that will be sitting in your tray. You will be able to configure it to notify you when important events are happening on your site, like a sale, or a particular action, or maybe an arrival of a visitor from a particular referrer or advertising campaign.

For Factory Nova, a windows client will also work as a notifier that will remind you about your tasks, will tell you when new tasks are assigned to you and maybe something else in the same manner. It will also allow you to quickly create new tasks with the convenience of the native Windows interface.

Thin clients will be build upon an XML API that will be added to both products. These APIs will allow anyone to create their own applications (including web based) that will interact with our products and will hopefully do something useful.

I am really excited about our future plans. Hopefully we will have enough time to implement everything we plan.

First snow in Moscow

Yesterday we had the first snow in Moscow. It was snowing the whole day until eventually it turned into the rain closer to the evening (the tempreture was around 0C).

I’ve made some photos while on my way to the office.

First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) Rav4 straight from the California First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005) First Snow in Moscow (2005)

Care about your clients

This is an obvious thing that everyone around tells about. Care about your clients. They are the most valuable asset that your business has.

Well, we take this advice very seriously here. Being a small company allows us to give a lot of attention to everyone who is at least slightly interested in our products or services. And this works very well, I should admit.

For example, we recently had a situation when a person wrote to us to ask about a certain feature of Stuffed Tracker, our web traffic analysis software, which the product didn’t have. The feature was quite specific and we will probably never add it to the standard version of the software.

Someone might think in this situation “I can’t make a sale here. I don’t have what he wants”. And this someone would be wrong. We’ve eventually sold quite an expensive pack of licenses to this person.

There was no magic trick. We’ve just showed that we care about this person’s problem from the very beginning. We’ve offered our help and showed that we have a very good understanding of what has to be done to achieve what this person needed.

And this worked! We were hired to do a customization project based on Stuffed Tracker. And this person bought a Stuffed Tracker license too.

The morale of this story: if someone made the first step and wrote to you with any question, this is always an opportunity. Do anything you can to help that person. Don’t spam him/her with your offerings; just try the best you can to help. This will always pay off in one way or another.

My first Flash movie

Did you know that we’ve actually invented a unique way to work with the stats in Stuffed Tracker? We’ve called it “Reports Constructor” and it is able to generate billions of different report combinations. This number might seem too weird to be true, so we modestly advertise it as “more then 1000″.

We expect that the concept behind the Reports Constructor might be unclear to some of the people working with it for the first time. So I’ve tried to describe it in detail in the FAQ section on our site.

And also yesterday I’ve created my very first Flash movie with an excellent Camtasia Studio. In the movie I did my best to visually explain how thousands of different reports could be produced with the Reports Constructor. Hopefully the video will make this clear.

Different conversion cycles

After 1 week of Stuffed Tracker advertising I’ve realized one thing that might be obvious to someone, but was not that clear to me.

Conversion cycles for different products are completely different.

Take for example hotel bookings (which I am familiar with because Stuffed Guys have developed Twibo). Typical visitor coming from an advertising to a hotel booking site usually books a room within several hours of arrival, very rarely within a day or two (of course if he/she books at all). Thus the conversion cycle for a hotel product is quite short.

On the contrary, if you take a software product, the conversion cycle can be quite long. A visitor arriving from an advertising does not usually buy the software right away. At best he/she downloads a trial version and then works with it for a typical month until the trial expires. Only then this visitor might convert and buy the product.

There are of course exclusions from this rule, but in most cases it works like this.

This imposes additional challenges when tracking the conversion for long cycles.

Full screen in Opera

Opera browser has become completely free not long ago. This is a very nice browser with a great interface and with a very fast rendering engine.

So I’ve started to use Opera occasionally and the single feature that makes me come back to Opera again and again is a full screen mode. It’s hard to invent something new here, right? Well, apparently Opera engineers didn’t think so and they have created the greatest full screen mode I’ve ever seen.

When you hit F11 in Opera, the page that you are currently viewing takes over the whole screen on your monitor. There is absolutely no bars, navigation buttons or anything else from the browser, just a pure web page. This really feels awesome! You should definitely try it yourself.

Of course a screenshot won’t do this feature justice, but still here is our new site in Opera’s full screen mode (this is exactly as I’ve seen this page, I’ve just made a screenshot and decreased its size, the image was not edited in any other way!):

Stuffed Guys in Full Screen on Opera

Our creative power

It has happened so that all of us in Stuffed Guys are Leos (astrologically speaking). And one of the powers that all Leos possess is creativity. I think I can rephrase this and say that the greatest power of Stuffed Guys as a company is creativity.

This is true. We are full of ideas all of the time. And not only about programming and web technologies, Ivan and Shalmoo periodically compose music, for example. I myself am a little creative in everything, including this blog.

So creativity is our main weapon. And we have a top secret plan (just don’t tell anyone, k?) that is making use of our main weapon to smash the competition.

After the initial release of each of our products, we will get so creative with the new versions and will release them so fast that our competition will have a hard time trying to catch up with us. Eventually we will take over the world — all thanks to our extraordinary creative selves.

Nice plan, eh?

PPC frustration

Make’em click!

I originally thought that the main thing you need to worry about with pay per click (PPC) advertising is how to understand which keywords and creative copies bring you quality visitors that eventually convert. You could then keep these quality keywords and even increase maximum bids for them, and dump all the others that do not perform. That’s why we’ve even created our own conversion tracking software.

My latest experience with Google AdWords shows that I was wrong wrong wrong. As it turns out the main problem that you face when starting your first PPC campaign is how to make people click on your adverts at all. That’s right, you don’t have to worry about keywords performance or conversion rates, because you need to make these damn people click at first! No click = no love = no point to measure conversion.

Not so broad

The next thing that came as a surprise to me were “broad matches”. This is a term that Google uses to describe keywords that you can specify in you ad campaign:

If you include general keyword or keyword phrases — such as tennis shoes — in your keyword list, your ads will appear when a user’s query contains tennis and shoes, in any order, and possibly along with other terms. Your ads will also automatically show for expanded matches, including plurals and relevant variations.

The description above is from Google’s own FAQ. What they don’t tell you is that broad matches do not always work as, well.. broad matches. For example, if I will enter “conversion tracking” in the list of keywords, my ad will appear when someone is searching for “conversion tracking”, but nothing is displayed when someone is searching for “conversion tracking software”!

I couldn’t believe this at first, I thought I was doing something wrong. But it appears that this is a normal Google’s behavior. There is an Ads Diagnostic Tool that shows to you the reason why your ad is not displayed for some keywords, so for “conversion tracking software” I got the following response:

Ad not shown. Reason: The clickthrough rate (CTR) for this keyword does not meet the minimum performance requirement.

Yeah, well, whatever (more information about this at webmasterworld.com).

The funny thing is — I can always specify “conversion tracking software” as a new keyword for my ad group and then my ad would display for this keywords too. So what the hell are they talking about with this message about low clickthrough rate for this keyword? I don’t get it.

No redirects allowed on Overture

Finally, as it turns out in Overture redirects are not allowed as target URLs for the ads. They don’t have a specific rule that says this, but they insist that the “Back” button in the visitor’s browser should take the visitor back to the search results after he or she clicks on my ad. Apparently redirect URLs break the “Back” button? Why Google accepts them then?

Anyway, all of my 20 or so new listing on Overture got rejected almost immediately after submission with a remark that the URL is bad. So it seems that it is not possible to use split tests with Overture at all, since redirect URL is a requirement with any split test. Oh well…

Much later: I was wrong. Overture does accept redirect URLs. Read details in the comments.

How we launched Stuffed Tracker

Development of the completely new version of Stuffed Tracker took us almost 9 months. We re-wrote the software from ground up and in a different language (previous version was in Perl, the latest version is in PHP).

The final 2 months before the release was a constant race with time. Everyday during the course of these months it seemed to us that only several days are left before the release. But then new bugs were found and new important features were invented.

I personally have slept around 4-5 hours a day in the last 2 weeks before the release. I was preparing a Complete User Guide for the software. The final version of the Guide has more then 152,000 characters (with spaces) which is my new record for documents in any language (the Guide is in English).

As it turned out, writing complete documentation for a software product is a great way to actually test the software. I’ve found lots of new bugs while writing the Guide. I’ve also found inconsistencies in the interface and in some functionality, which we fixed of course before the release.

Soon, we should repeat this entire “launch nightmare” again with our project management software. I can’t say that I will be happy doing this again, but I definitely like the feeling of polish that Stuffed Tracker now has. I want to feel the same about Factory Nova.