Rule #1: Never Keep A Customer Waiting
Posted by James Shaw at 6:52pm
Last Saturday, March 26th
Sales are up, up, up this month, but I made a n00b mistake this week. On the day before a new release I told a new customer that he might as well wait until tomorrow before downloading and installing the software.
I really do know better, I just forget sometimes.
To understand why this is so silly, you have to have been through the design, develop, test, release cycle a few thousand times and begin to gather enough data to prove, without a doubt, that the chances of releasing on time are directly related to the number (and importance) of people you have told the proposed date.
So, of course, having told a new customer (Enterprise Edition no less) that there would be a new release within 24 hours, the whole release went pear shaped, tits up, or if those metaphors don't work for you, basically turned to shit. Sorry Mum.
(sidenote: Mum == Mom. Now everyone who didn't know before, now knows that I am one of those strange English people, even though I live stateside)
Anyway, the 2.2.1 release will be forever remembered here as the 3 day release from hell. I mean, take a look, we didn't do much in the release after all.
But the one big thing was to change obfuscators (an update to the latest version, really). Now, understand that XenoCode 2005 seriously rocks. I thought 2004 was the best on the market, but 2005 just makes it look a little silly, and it has one feature that everyone should know about, but may as well have been designed for Dozing Dogs sole use.
You can merge the obfuscated assemblies into one large assembly.
For me, that is HUGE. You see, we have OEM redistributable licenses for many #1 best-in-class components, and we distribute these free with our CMS for you to use with our CMS.
It is extremely important morally, ethically and legally that people don't use these components outside our CMS, because then the vendors are losing real sales on account of our product. I know many of these people personally and I don't want Dave or Ollie to get upset with me.
So you see, XenoCode's new option is very cool. I have now merged all the 3rd party components into my Licensing assembly, making a lot more work for the likes of Jack Dawkins and Master Charley Bates to 'alf inch.
But whenever you touch obfuscation, especially when merging assemblies too, you get some "issues" crop up. Like one assembly suddenly doesn't verify with PEverify.
Does that matter? Maybe seems the best answer. Everyone says that unverifiable assemblies won't run on many web hosts because they lock down their servers and run in partial trust...but then I checked my previous builds and found the same assembly has never verified. 24 hours wasted.
Then, you have to run every page and every user control to make sure that no protected methods have been obfuscated and make ASP.NET very unhappy. 12 hours.
During that process you find that because you chose the wrong obfuscation method you deleted all the embedded resources. Oops. 8 hours.
In the end, when all is said and done the release was only a day late, but it felt much worse. My customer didn't seem to mind, but you can bet that their next email gets answered within 15 minutes.
Public source VS Obfuscation
Posted by James Shaw at 9:31pm
Thursday, March 10th
I found a great solution today to the problem some of my CMS clients are having;
namely, how to integrate other products and pages into the CMS.
The Personal and Professional Editions are, you see, shipped as obfuscated assemblies and aspx/ascx files, and hence they are not easy to modify extensively. Non-developer customers are happy already, they can specify a lot of options in the aspx/ascx files, but developers creating more complex sites want much more flexibility.
So, from v2.2 (the next release scheduled for March 21) the source code for the web project will be included with all Editions!
This of course makes it a lot easier to answer those questions that I have always been forced to answer "umm, not really". I hate those questions; above all, I want my CMS to be useful to people.
(Over the last 5 months the product has certainly evolved quickly thanks to the great feedback I've been lucky enough to receive. The new admin panel and menus are huge, but this source idea may just top it)
But this blog isn't just trumpet-blowing. There's a problem.
As I talked about before, obfuscating web applications has some issues. You need to leave any public methods used from the aspx/ascx unobfuscated. In fact, me and my web-source-code idea has just made that much, much worse.
You see, the web project calls a LOT of methods in the library assemblies, far more than the aspx/ascx do directly. And in order for the web source to compile every one of those methods cannot be obfuscated! Sooooo, umm, that kinda leaves all my libraries unobfuscated. To be honest, that's not a huge deal breaker to me - mean people will be able to decompile the code easily, but you know these people would find a way anyway.
After all, my first Enterprise Edition (with full source code) was sent to someone buying it with a stolen credit card. So it could already be on some $10 Taiwanese DVD.
Anyway, I've asked my chosen obfuscation experts xenocode to find out what they can do, and I'll let you know. Perhaps there is a way to leave the API alone but obfuscate the code inside them enough to be worthwhile?
What's in a name?Posted by James Shaw at 9:54pm
Monday, February 28th
We've had a lot of people comment on the "Dozing Dogs" name - blank looks are common, but most people smile and tell us they like it. But what does it mean?
First, the Dogs part
I have read a lot of marketing books over the years, and a universal theme is that everyone recommends staying away from the "technical jargon soup" that many companies use. Without offending anyone, who is "Ace Computer Services" or "Expert CMS"?
The point is, there are thousands of companies using combinations of "expert", "super", "ace", "services", etc. And the odds are good that you won't remember any of them tomorrow.
So, rule #1 is "don't use jargon; be the 'Amazon' or 'eBay' of your field". So, my first thought was to use an animal because they're fun. From there it was a short jump to dogs since they are my favorite animal.
So, why on earth use Dozing?!
So, you know I love dogs. Two separate events led to the Dozing part:
So, I was looking for a word that started with D-O, and I had a dog called Dozer. Mmmm. In fact I registered the following domain names (I collect them like some people collect baseball cards and have hundreds to my name)..
DAWNDOGS.NET, DOZENDOG.NET, DAWNDOG.NET, DOZENDOGS.NET, DEVELOPERDOG.NET, DEVELOPERDOGS.NET, DEVELOPERDOGS.COM, DOZENDOGS.COM, DAWNDOG.COM, DEVELOPERDOG.COM, DOZENDOG.COM, DAWNDOGS.COM, DOZERDOGS.COM, DOZERDOGS.NET, DOZERDOG.NET
..before finally choosing DOZINGDOGS.COM. It means nothing of course, but is memorable. Hopefully.
Relax? Now comes the manual..
Posted by James Shaw at 7:35pm
Friday, January 14th
Over at Dozing Dogs, v2.1 is out the door. It was a longer and more painful release than I like, but some radical changes had to made, and the sooner the better - less customers to inconvenience.
No relaxing though; I've vowed to concentrate all our resources on writing a manual now; one you can download and read from cover-to-cover. Yes, just like a real manual.
I'm sure I'm not the first or last to underestimate how much time the documentation will take. Although I'm pleased with the foundation that I set up, there are a lot of holes to fill in.
There has been some amazing responses from our early-adopter customers and beta testers - I've had offers of help in writing articles and was even sent a draft of what a customer expected in the Contents section. There really are some kind people in the world still.