Archive for the ‘Business’ Category

Free proprietary license for XSD and XSD/e

Tuesday, August 3rd, 2010

Today we introduced a free proprietary license for CodeSynthesis XSD and XSD/e. The new license allows you to handle small XML vocabularies (less than 10,000 lines of generated code) in proprietary/closed-source applications free of charge and without any of the GPL restrictions such as having to publish your source code.

What were the reasons for offering such a license? After all, it seems like we will just loose money on this deal. We often get requests for our commercial proprietary license from developers that have a fairly small XML vocabulary. Typically a configuration file or a small communication protocol for their application. While the XML documents are quite simple and it wouldn’t be very hard to parse them using DOM or SAX, the developers would still prefer to handle this task using our tools. After all, spending a few days writing mind-numbing code is still worse than generating the same code in a few seconds.

However, the administrative burdens and delays involved in such a purchase (getting approval from management, contacting the purchasing department, purchasing via PO or credit card, etc.) are often hard to justify considering such simple XML processing needs. The administrative overheads on our side (processing the PO or credit card, delivering the license, issuing the invoice, etc.) also force us to set a minimum limit on the license size and price that we can offer.

All this usually leads to either the license being too expensive for the task at hand or the understandable unwillingness of the developers to endure the purchasing process. As a result we have decided to spare the developers the agony of using inferior products and/or raw XML processing APIs and offer this license for free.

How much is 10,000 lines of code? While it depends on the optional XSD and XSD/e compiler features that you use (e.g., support for XML serialization, polymorphism, comparison and printing operators, as well as XML Schema validation in case of XSD/e), as a rule of thumb, 10,000 lines of code are roughly equivalent to 40-50 local element/attribute definitions in the schema. This should be sufficient to handle small and and even some medium-sized XML vocabularies. Also, if you have your schemas ready, you can quickly check how much generated code they require by downloading XSD or XSD/e and passing the --show-sloc option when compiling the schemas.

For more information on the new license as well as for answers to other common questions, see the following pages:

Why develop new products during a recession

Monday, November 10th, 2008

For the past year and a half I’ve been driving past a new BMW dealership as it is being built. The project started just before the beginning of the sub-prime saga when the economy was still good, credit was easy, and people were lining up to buy new cars. Now the new building is almost ready, the economy is in a bad shape, and dealerships are struggling to stay afloat.

A number of prominent VCs published letters they sent to their companies on how to survive the downturn. The standard advice includes not hiring, shutting down or cutting R&D, and making everyone, including receptionists, sell. This approach, which boils down to getting as much cash in and as little out, sounds logical, especially for a startup strapped for cash. But what if a company has cash reserves sufficient to last several years even if the sales dried up completely? Is there a better strategy than hibernating until the economic sprint comes back?

A company that operates in the survival mode during downturns ramps up new product development during boom times. In a good economy financing is easy and, as a result, many new companies are being started. There is an increasing demand for engineers and there is a lot of noise from all the new products being introduced into the market.

During a downturn, such a company concentrates on sales which are harder and harder to get (unless the company is selling something that is in demand during a recession). Sales people, at least the good ones, would be let go as the last resort. Since the majority of companies tend to operate in the survival mode, there is not much opportunity to improve the quality of the sales team, at least not until later when companies start running out of cash. This company got an uphill battle in both good and bad economic conditions.

Let’s now examine how the contrarian approach works, assuming the company has enough cash to survive several years with significantly reduced sales. Such a company would ramp up new product development during the downturn and slash down the sales effort, perhaps even purging the sales team. At this time it should be easier and cheaper to pick up quality engineers since there are more of them on the market and there is less competition from other companies. It is also easier to introduce new products and appear as a market leader during a recession.

Towards the end of the downturn the company can try to improve the quality of its sales team by hiring people from failed companies. As boom times come back, the contrarian approach yields new products ready for the market and the sales team ready for the renewed interest. At this point the company becomes cautious of any aggressive expansions as costs increase. Instead, it concentrates on accumulating enough cash to repeat the cycle when the economy turns bad again.

During boom times companies rush to get to market as quickly as possible in order not to miss opportunities. A downturn, therefore, could be a perfect time to develop and introduce radical and unproven new technology that can take years to get right.

The contrarian approach is logical for a bootstrapped or established business that got a chance to accumulate substantial cash reserves during a boom. It is the way investing, especially the VC type, works that forces companies into the survival mode. Raising venture capital in a good economy is a lot easier than during a downturn. It is also easier to get investment for an idea that is in a “hot” market such as e-commerce during the dot-com boom and social networks more recently. VCs also expect their companies to expand rapidly. This makes a VC-funded company burn cash by rapidly growing in a crowded and noisy field with expensive and scarce engineers.

There are other advantages of expanding during a recession. Office space becomes cheaper as the demand slows. It is easier to negotiate better deals with suppliers and partners as they become dependent on the revenue your business brings. Tax incentives for R&D, starting new businesses, and hiring people are often introduced during recessions to revive the economy. It is also well known that teams become more focused and work harder in the face of a powerful enemy. Recession can be such an enemy. Boom times have the excitement of the overall activity in the field as well as easy sales. But excitement is fleeting while the resolve to outlast a recession stays.

The contrarian approach is not without risks, the biggest of which is running out of cash before the downturn ends. The other problem is finding early customers to use your product and provide feedback. However, one can offer the initial version for free or at a significant discount which may work rather well during a recession when customers presumably need your product but simply cannot afford to pay the full price at the moment.

The survival approach is not without risks either. The biggest of which is expanding into a recession, as the BMW dealership example above illustrates. As with the contrarian approach, there is also the possibility of failing to preserve enough cash and generate enough sales to weather a recession.

How to market to smart people

Tuesday, January 30th, 2007

It should be pretty obvious, but a lot of people forget this important first step: your product shouldn’t suck. Otherwise you are wasting your time. For smart people the product should be at least good, better yet—great. It should be deep and flexible. When you plan to implement a feature, don’t just cover use-cases that you’ve managed to come up with; make it flexible so if a smart person thought of a new scenario, it will still be covered.

But don’t make it everything for all people. The product should be focused and simple enough so that the development converges and you can spend time polishing and perfecting it.

Assuming you have a product you feel proud about, how do you market it to smart people? Let’s first consider a few intrinsic properties that make your product more attractive to smart people.

Make it open. Make your product as open as you possibly can, the ideal being open-source. Publish protocols and provide SDKs. Allow smart people to use your product in ways you haven’t thought of. Another important thing is to make your support system open as well. This will allow prospective customers to see what kind of problems others are having with your product and how you handle them.

Facilitate test-driving. Make it as easy as possible to try your product. That means no crippled evaluation versions or long online registration forms. The reality is that most of today’s products suck, and that’s what a smart person will assume about your product until proven otherwise. The ideal is a direct link to the package: just install using your platform’s native method and you are all set. Now we can move to the marketing part.

Don’t deliver – allow discovery. Don’t force information on smart people. Instead publish it in relevant places and allow smart people to find it when they need a product like yours. This approach has an advantage of also covering search engines. When you do the right thing everything falls into place.

Don’t hype. The information you provide should be useful. Present honest differentiation of your product compared to alternatives. Don’t use meaningless terms like fast, scalable, reliable, or easy to use unless it is clear (e.g., a well know fact or from your competitor’s website) that the alternatives are slow, do not scale, unreliable or hard to use. Things like open source and cross-platform are good differentiators if you are competing against proprietary products that work only on Windows.

Scrap online advertising. Online advertising has discredited itself to the point that most smart people automatically block or ignore ads.

Don’t bash competition, especially on their turf. It is your word versus theirs. Bashing competition on their own turf (forums, mailing lists, etc.) is especially ill-advised because you are telling people who are already invested in your competitor’s product that they’ve made a mistake.

Prove your product is great. The only way you can do this is with real customer case studies and testimonials. Don’t just list your customer names. Tell how they use your product and how it helped them solve their problems. The best testimonials are the ones that have extra credibility of a voluntary post on a mailing list or a forum.

Prove you are the best. You need to have a great reputation besides a great product. Publishing quality articles that share your knowledge and wisdom. This will position you as an expert in the field. But don’t try to make it a “big ad” for your product. Instead concentrate on how the overall technology will help smart people, whether they choose your product or your competitor’s.