A little thought on marketing

Sometimes, it feels like marketing is the hype of the millenium.  Or a decade at least.  There are marketeers, marketing divisions, online marketing, marketing this and marketing that.  But what the heck is this marketing thing after all?  Can we have it in simple terms?

Well, either I don’t understand a lot (and I don’t claim that I do), or I haven’t met with the right marketing people, or both, or something else, but what I am thinking is that marketing on its own is nothing.  Nada.  Not at all.

Before you eat me and my old shoes, let me explain.  Marketing is that thing that supposedely helps the product (or service for that matter) reach the customer.  Or the other way around.  And then maybe even convince the customer that he is actually satisfied by what he got.  Or maybe I am way off already.

Anyway.  To do that (connect the customer with the product or service), marketing people need to know three things.  First is the product or service – the destination.  Second is the customer – the source.  And third is, well, marketing – the path or possible pathes between the two.  Am I even remotely right ono this?  If I am, then let me tell you something – this doesn’t work.  How about that, eh?

Marketing on its own doesn’t work for exactly the same reasons that MIS doesn’t work.  MIS is this gray area between Information Technology and Business Administration.  It’s supposed to help them communicate with each other.  But because MIS never (or almost never, or extremely rarely) truly understands both the business side and the technical side, it only makes things worse.  Instead of having two languages – one very technical with lots of terminology and precise definitions, and another one business – with lots of money and people-related processes – the company now has to speak three languages, with the third one being a weird dialect combined and distored from the other two.

The product and the customer are like two magnets.  When connecting them, they will either be of opposite polarity and will hurry towards each other and live happily ever after, or they will resist each other as much as they can.  Is it possible to bring two magnets of the same polarity to each other?  Yes.  If the magnets are small and you hands are strong, you can pull them together.  That’s marketing for you.  Let it go and both magnets would be much happier.  And if they were of the different polarity?  Guess what?  You don’t need much force to put them together.

Back from the abstract world.  I think marketing makes sense on the secondary level.  That is, everyone should have a bit of marketing knowledge – from sysadmins and programmers to accountants and managers.  But marketing shouldn’t stand on its own.  In fact, if marketing is taught to everyone, then it can be that common language for everyone to help to understand each other.  The one that MIS so miserably failed to be.

Those who are at the top, they want to grow, increase, make more and better.  Those are down below, actually doing things, really know how to make things better or faster.  The problem is that they can’t communicate with each other usually.  So what they need is a little help in this area.  Not someone else who neither understands what is possible or not or how big or fast things can go.

That’s about it, minus a few disclaimers.

Disclaimer #1: all my knowledge of marketing came from working at or talking with people who are working at small or medium companies, the majority of which deal with information and technology.

Disclaimer #2: I was thrown off balance by a some marketing types recently.

Disclaimer #3: I had a few pints of a lovely Guiness draught before I typed this whole post in.

mp3 collection maintenance

I have a rather large MP3 collection.  The directories and files are named correctly more or less, but ID3 tags used to be a mess until very recently.  Two applications helped me to bring some order in that mess.

EasyTag, a GUI application, that helped me to fix lots of broken and add lots of missing comments to my MP3 files.  The smart thing about this program is that it can figure out a lot of data from the names of the files and directories, and that it can grab and replicate partial data from within the albums.

The second program that I wanted to mention, I just found out about today (thanks to Michael Stepanov’s delicious bookmarks).  It’s called tag2utf.  It’s a little Python script that converts the encoding of ID3 tags from koi8 or cp1251 (two most widely used Russian encodings) to utf8.  It’s very easy to install (the only requirement my system needed was python-eye3d library, which exists in Fedora repository) and use.  Just run it from the command line with no parameters and it will recursively look in the current directory for any files that have ID3 tags in non-utf8 encoding.  It will then give you a choice of two encodings to select from (koi8 or cp1251), a “skip” option, and a “manual” option.  All you will have to do is take a quick look at the files, and chose to either convert them from one of the two options, skip them or convert manually one by one.  You will have to make this choice for every directory with non-utf8 files.  Optionally, you can specify on the command line which directories to scan.  In case you need to convert from some other non-Russian encoding to utf8, the script is trivial to modify.

Both tools are excellent pieces of software.  It took me practically no time at all to fix my mp3 collection.  Now I can search it better, and all files display nicely in any mp3 player.  Brilliant stuff!

Russian web shoppers : the relative absolutes

Quintura blog has this nice post with some statistics of Russian online shoppers – how often they buy, what they buy, and how they pay.  As any other bit of statistics, it’s rather interesting.  However, I think there is more to it than the article covers.  Here are my random thoughts in a bullet list format.

  • “85% of Russian Internet users shop online”.  It would be extremely interesting to see at least some approximation of country population to its Internet users.  According to Wikipedia, Russian population is about 142,000,000 people.  How many of these are online?  According to some resources, such as, for example, Public Opinion Foundation Database, it’s somewhere between 18% and 25%.  And then again, it’s depends a lot on where you are looking at.  Moscow and surrounding areas have a much higher Intenret penetration than Central and Eastern Russia.  Moscow can have as much as 56% of its population online, while less than 20% of the Urals and the Siberia population are connected.
  • “The Russian e-commerce market has doubled to $3.2 billion in 2007”. Sounds huge, doesn’t it.  But let’s see. I’ll pick 28,000,000 people or 25% of connected population as per Public Opinion Foundation Database for the calculations.  85% of these are shopping online.  That’s about 23,800,000 people.  $3.2 billion market devided equally between all those people comes down to $135.  So, the market is huge, rather because there are so many people around, as opposed to how much those people buy. If you need more numbers to explain you the situation, have a look at the state of the Russian economy at Wikipedia.
  • “However, it’s yet to become a habit because only 16% of users shop online once a month”. Sounds like the other 84% shop less than once a month.  Why?  Maybe because it isn’t so easy to find a few people to batch into a single order.  Or maybe they just don’t have time to, between the two jobs or something.
  • “Most of the shoppers or 70% paid for online goods in cash upon delivery while only 12% of responders used bank cards in online transactions and another 10% used online payment systems”.  Internationally recognized credit cards, like Visa or MasterCard, are probably either expensive to have or difficult to get or both.  Personally, I don’t have much experience in this area, but I’ve heard a few of my Russian friends complaining about the state of the banking system in the country.  Also, there is another thing to remember – language.  I don’t have any numbers at hand, but I’d say that people who can at least read and understand at least one foreign language are a minority in Russia.  With no credit card and foreign language knowledge, most of the purchasing activity would stay within the country.
  • “The most popular shopping items included books (51% of responders), computers (43%), home appliances (42%), software (31%), movies (26%), beauty products (25%), and music (23%)”.  It looks like the majority of Russian online shoppers are rather young, tech-savvy people.
  • All of the above make it sound like a lot of marketing opportunities – large number of people, who are roughly in the same age group, with somewhat poor geographic distribution and limited access to credit cards… And with that, it’s interesting to see at the advertising channels.  TV, radio, Internet itself.  And then, which Russian sites with some sort of ad campaigns are the most visited?

Feel free to throw in your thoughts and more numbers via comments.

Google Reader recommends

Imagine my surprise when I looked at “Top Recommendations” area of my Google Reader today and found … my own blog over there.

Yes, I know that these recommendations are based on the feeds that I read.  But still!  Is it the time to celebrate the recommendations technology, which recommended me to me over a gadzillion of other blogs?  Or maybe this is a day of Ultimate Technological Silliness, when Google, a search company that forgets nothing, somehow arrived to the conclusion that I might not be reading my own blog?  These questions remind me of a “half-empty or half-full glass of water“.  I guess a lot depends on the personal perspective…

Firefox extensions

Yesterday was a somewhat slow day, so I spent some time on the housekeeping of my Firefox browser.  Somehow I managed to accumulate a lot of extensions, themes, plugins, bookmarks, bookmarklets, and what not.  It felt like a good time to clean the mess up a bit.

I spent about two hours going through the list of all installed pieces, upgrading outdated versions, changing old solutions to the modern alternatives, getting new tools, and so on.   I have to say that after that effort my Firefox works faster, and it suits me better now.  One of the biggest changes from my previous setup became the use of Tab Kit extension.  Among its many features, it has the one that I’ve been passively looking for for a long time now – tab bar on the right side, instead of top, but not as a part of the sidebar, and with a tree view.  Combined with Aging Tabs extension, the result is exactly the way I wanted it.

(it is better in real life than it is on the screenshot)

Now when I open links from the site in the new tabs, these new tabs are organized in a tree like structure.  Tabs that I haven’t yet visited are highlighted in green.  Current tab is highlighted in blue, as usual.  And the rest of the tabs are coloured in different shades of grey, depending on how long ago I last viewed them.  Also, because the tab bar is separate from the sidebar, I can get an additional panel on demand, with an application that I need the most at the moment, without sacrificing my precious tabs.

And just in case you are wondering which other extensions I am using, continue reading for the list of all extensions, which was generated by one of the extensions on that list.

Continue reading “Firefox extensions”

SugarCRM deployment efforts

Since we started working on SugarCRM in the office, one of the hardest tasks that we had was solving the deployment issue.  On one hand, SugarCRM comes with some really nice GUI tools, such Studio and Module Builder.  On the other hand, the system is large and complex and should be developed and tested in a separate, non-production environment.

We’ve spent a lot of effort over the last couple of month trying to solve the puzzle.  The problem is that there is a tricky combination of files updates and database changes, some of which can be just copied over while others have to be executed from the destination machine’s administration.

So, what we did first was complete separation of environments.  Each developer had his own machine on which he could install and configure as many instances of SugarCRM as he saw fit.  Also, each developer had a separate branch in the Subversion, so that he could work on his own stuff without being afraid to run into conflict with anyone.

After that, we created a development server with a checkout of common trunk.  For extra insurance, we did a checkout from a system user, who does not have any write permissions in the repository.  In this case, even if someone will accidentally try to commit from the development server, we would be sure that it fails.

Now, each developer had to merge his changes into trunk, and then test them on the development server.  This procedure is very similar to the production deployment and consisted of two parts.  Firts part was updating all the relevant files (a bit more on this in a moment) with svn update.  Second part was logging into SugarCRM and doing Admin -> Repair -> Quick Repair and Rebuild.

The graphical tools that come with SugarCRM are powerful, but a bit confusing.  The biggest confusion for me was (and maybe still is) between Module Builder and Studio.  Studio can be used to customize core modules that are shipped with SugarCRM.  The results of these customizations are stored in custom/modules directory, and when loaded into the database, can be observed in _cstm tables (for example, accounts_cstm).  This is where new custom fields and things like that are going.  Module Builder is a tool which can help you customize existing modules or build the new ones. The confusion here is because both of these tools can be used to do the same things.  But with Module Builder you’d be working closer to the core system and modifying “original” functionality.  You can build your own modules too, by the way.  The results of the Module Builder work with go into modules/ directory, and changes in the database will take place in the original tables.  One thing to remember though, is that you’ll need to push Save & Deploy button every time you are finished with changes in Module Builder.  This is like compiling and building a module.  If you forget this step, then your module will hang in its source somewhere around custom/modulebuilder directory.

Another thing to keep in mind is the sillyness of the machine trying to figure out another machine.  Meaning that Subversion will often have issues trying to figure out the changes from the last commit, and these issues would be often caused by a lot of automatically generated code by SugarCRM.  In most of these problematic cases, Subversion will just merge the changes, and this would often result in a broken system.  I’ve found at least two reasons behind these: small context size that Subversion uses (3 lines or so) confuses it sometimes, bringing it to a wrong place in the file to do the merging; and rather messy automatically generated stuff by SugarCRM – unnecessary reordering and mixed (DOS and UNIX) ends of lines in a single file.  These problems are mostly related to vardef files (vardef.php and anything *def.php) and language dictionaries (anything with *en_us*php, or whatever your locale is).  The solution we are using at the moment is simple, although a bit heavy on the manual work – instead of merging the changes and checking them every time we simply remove old versions of files and add the new ones in two separate commits.  These way Subversion treats the files as completely different ones and real removes and re-creates them instead of trying to merge.

We follow exactly the same procedure now to deploy to the production server.  We just merge code from trunk/ to branches/stable , commit, then update the files on the production server, and then do the Quick Repair and Rebuild.

The thing about Quick Repair and Rebuild is that it takes the update definitions of your forms and layouts and rebuilds compiled templates.  It also compares the structure of the database with the update definitions in the files and, if needed, updates the database scheme too.  Sometimes you’d get an error of missing table (usually custom tables with _cstm suffix) – just create an empty table manually.  Put a couple of standard fields like id_c, date_modified, and date_entered.  After that, field modifications should be OK.  In case you run into a problem with updates to several fields at once, make sure that SugarCRM put a semicolon (;) at the end of each SQL statement that it shows you in a popup window.  For some weird reason, sometimes it just works, and sometimes it tries to execute several queries without separating them one from another.

So far the setup seems to be working for us just fine, but I’m sure that we’ll have a few changes here and there.  I’ll let you know once we find any better way of doing things.  In the meantime, here are some links that might help your development efforts:

Tonight in Cyprus : partial Lunar eclipse

Famagusta Gazette reports that a partial Lunar eclipse will be visible from Cyprus tonight.  For the photography fans among you, it’s probably a good time to review moon photography tips.  The thing to remember is that even though shooting at night, the moon is lit by the sun, which means you’ll need to use pretty much the same settings as for the bright daylight – tele-zoom lens, tripod, f/16, 1/80 – 1/100.  Good luck, and don’t forget to share your pictures after!

Be Kind Rewind

These days there isn’t much choice of what to watch in the movies. So I ended up at “Be Kind Rewind“.  It’s a comedy with Jack Black and Mos Def, both of who are often funny.  Also, I wanted to see how Danny Glover is doing these days, since the last time I saw him was in “Lethal Weapon 4” or so.

“Be Kind Rewind” is a bit of an akward film.  It’s funny, it’s sad, it’s cheap, and it’s kind.  Some parts of it are so hilarious that I was laughing out loud.  Yet other parsts of it don’t make any sense at all.  Some scenes follow each other naturally, yet some other feel like they were glued together very roughly.

Overall, I’ll give it a 6 out of 10.  Not something that I would strongly recommend, but not your regular movie experience either.

Zoomii.com – The “Real” Online Bookstore

Via this CyberNet News post I got to Zoomii.com.  There is a saying about all new being well forgotten old.  And that’s exactly what Zoomii.com is about.

There is something magical about walking through a bookshop – touching books, flipping pages.  Especially, when you don’t know exactly what are you looking for.  Amazon has sort of taken it away.  You get in, get your stuff, maybe grab something that is recommended nearby, and leave.   Zoomii.com combines the best of both worlds.  You can still get stuff from Amazon shop at Amazon prices, but instead of visiting a rather cumbersome interface of their site, you can browse through a familiar bookshelf area.

The combination of a good design with intuitive interface makes it almost a “Wow!” site fo me.  It took me exactly three seconds to figure out how to use it.  And even if I wasn’t tech savvy, there is a little friendly popup that appears when entering the site, which tells briefly how to navigate around.  The control panel on the left is small, and has only the things that I care about – navigation, category selector, and information about my cart.  Brilliant.

The only thing that I wish Zoomii.com had that it doesn’t have (or at least I couldn’t find) is the option of choosing which Amazon shop to buy from.  If I could buy directly from Amazon.co.uk, it would be a 10 of 10 web site.  Hope, they will add this option later.

Sites like this should be taught to web designers and developers.  This is how the web should be – clean, simple, efficient, and intuitive.

InnoDB is better for SugarCRM

After SugarCRM was deployed, we were experiencing some lock ups.  Not frequent or dangerous, but annoying.  About once a week or every ten days or so, SugarCRM would lock up and won’t answer any queries at all.  Not even the login was possible.  A brief investigation showed that somehow it was locking up the MySQL database – about 15 processes (using “show full processlist”) in Locked state, with no data being sent back or forth.  All locked queries were rather complex, with several JOINs.  The load on the system was somewhat high, since we have about a few dozen operators working on it at the same time.

A similarly brief Google search suggested (see here and here) and explained converting MySQL tables from MyISAM to InnoDB.  A test has been performed and everything went OK.  Our SugarCRM database is about 600 MBytes and it was converted from MyISAM to InnoDB in under 20 minutes.  The best part is that it takes even less to convert back to MyISAM, in case you change your mind.

It’s been a few days now since we did the conversion and it looks OK.  Also, the CRM itself feels a bit faster.