Category Archives: news

Shareware is dead – long live shareware!

The Association of Shareware Professionals has renamed itself today to the Association of Software Professionals. I have written a guest post over on the ASP blog putting this name change into context. The article includes reactions from quite a few shareware industry veterans.

Read the article

New Software Marketing Facebook group

Alwin Hoogerdijk has created a ‘Software marketing’ Facebook discussion group. Personally I’m not a fan of Facebook, as will be obvious to anyone that checks out the howling void that is my Facebook account. But Alwin is a very smart online marketer, so I have tried to overcome my aversion to Facebook and joined the group. Just don’t expect me to care how you are doing at Farmville …

StartupToDo.com

startuptodoBob Walsh has finally broken cover on his latest project and announced StartupToDo.com, an online community/web app for fledgling microISVs and web start-ups.

Starting a software business is a daunting prospect – you have a vast number of tasks to perform and decisions to make with limited time and resources. StartupToDo aims to speed up that process by providing a range of community requested/rated guides, community feedback on your website, a progress tracker,  focussed discussion groups and more. Bob has put a huge amount of work into this and I wish him every success with it. A subscription is just $15 per month, if you pay annually.

Getting ready for Windows 7

windows-7I am currently downloading the new Windows 7 release candiate. It is 2.36 GB and the ActiveX download control predicts it will take around 10 hours in total (NB I am also doing a large FTP upload, which is probably slowing it down considerably). Once the download is complete I intend to install it in a VM to test my table planning software.

You can download the latest Windows 7 release candidate here. It is free to download and use, but  it expires on 01-June-2010 and will shutdown every 2 hours starting on 01-March-2010 (insert your own joke here). A couple of points to note from the Windows 7 FAQ:

While the RC is stable and has been thoroughly tested, it’s not the finished product. Your computer could crash and you could lose important files. So please back up your data and please don’t test the RC on your primary home or business PC.

When you use the RC, your PC sends information to our engineers to help them check the fixes and changes they made based on Beta tests.

Microsoft hasn’t officially announced when Windows 7 will be for sale. But there are rumours that it is planned for October 2009. Will you be ready?

Digital River up to their old tricks?

Popular blog BoingBoing have reported on esellerate trying to sneak worthless and unwanted extras into their shopping cart. Some of the commenters on the post seem to think this could be an honest programming mistake. Given that esellerate’s parent Digital River is widely known and reviled for dubious upsells, I doubt it. Any vendor that chooses to use a Digital River subsidiary for their ecommerce has only themself to blame if Digital River does the same to their customers. Have you checked your shopping cart recently?

GoogleCheckout price increase

googlecheckoutIt was always on the cards that Google was going to raise the prices of their payment processing service, GoogleCheckout. Up till now I had effectively used GoogleCheckout for free, as they offset their 1.5% + £0.15 processing fee against my Adwords spending. But they are dropping the Adwords offsetting and introducing a new tiered pricing structure.

As I put most of my payments through PayPal I will probably be on the highest price tier of 3.4% + £0.20 per transaction. This means that a £19.95 sale will cost me £0.88 (4.4%) through GoogleCheckout as opposed to the £0.68 (3.4%) I pay through PayPal. I wouldn’t mind the higher fees if I got a better service than PayPal. Unfortunately GoogleCheckout still has all the flaws I commented on back in April 2007, namely:

  • Google still don’t accept payments in more than one currency (e.g. as a UK resident I can only accept payments in £). Expecting anyone outside the UK to pay in £ is a very bad idea.
  • Delays between customer purchase and payment clearance result in angry and/or confused emails from customers wondering why their licence key hasn’t arrived. This has improved since the early days of GoogleCheckout, but it is still an issue.
  • Google’s option to anonymise the customer email address is a royal pain in the backside for the vendor.  It causes me of lots of wasted time and unecessary emails.
  • The customer *has* to sign up for a GoogleCheckout account (unlike PayPal).
  • There is a £7 chargeback fee (PayPal don’t charge a chargeback fee).
  • Customers prefer PayPal.

About the only advantage of GoogleCheckout is the GoogleCheckout badge that appears alongside your Google Adwords ad. In their email to me explaining the price rise Google claim:

Advertisers who use Checkout have the opportunity to display the Checkout badge on their ads, which has proven to  be an effective way to differentiate ads and attract user interest. Checkout users click on ads 10% more when the ad displays the Checkout badge and convert 40% more than shoppers who have not used Checkout in the past.

My own measurements showed a worthwhile effect from the GoogleCheckout badge, but I am not convinced it is worth the additional problems and expense of GoogleCheckout just to get the badge.

I already push PayPal more than GoogleCheckout (e.g. you have to click a link from my US dollar payment page to see a GoogleCheckout button). The price increases will probably result in GoogleCheckout being pushed further into the background for use just as an alternative for those that don’t like PayPal. I don’t know if Google will punish me by removing my Adwords badge.

Note, in order to continue to use GoogleCheckout from 5 May 2009 onwards, you must login to your account and accept the new Terms of Service between 18 March and 4 May.

Qt to be available for free under LGPL

qtToday Nokia announced that the cross-platform Qt framework is to be released under the LGPL, with no developer licensing fees or royalties. As someone who has been using Qt continuously for the last 9 years, this is of particular interest to me. Especially since the hefty annual renewal fee for my commercial Qt licence is due in a few months.

Here is the email I received from Nokia:

Dear Qt User:

Nokia is pleased to announce that with the release of Qt 4.5 you will be able to use Qt under the Lesser General Public License (LGPL) version 2.1 terms. When released in March 2009, Qt will be made available under three licensing options: Commercial, LGPL and GPL. Prior versions of Qt are not impacted by this announcement.

Nokia is committed to Qt and its continued development. By offering Qt under LGPL version 2.1 license terms alongside today’s licensing options Nokia hopes to:

- facilitate wider adoption of Qt across industries, desktop, web and embedded platforms.

- establish Qt as a de facto standard for application development.

- receive more valuable feedback and increased user contributions to ensure that Qt remains the best-in-class, cross-platform framework.

- extend Nokia’s existing platform commitment to the open source community.

By offering a cost-free LGPL license as well as commercial and GPL licenses to Qt, you can choose the license model that best fits your development requirements.

Irrespective of which license model you choose:

- Qt Software is committed to continuing to provide our customers with the same level of professional support, services and regular releases you have come to expect of Qt Software.

- We will continue to actively develop Qt, and with a greater degree of cooperation with the community through a new contribution model, we hope to make Qt even more valuable to our users.

For more information on the introduction of the LGPL license and what this means for you, please consult the Frequently Asked Questions section on http://www.qtsoftware.com.

Best regards

Tom Miller

Director of Sales

Nokia, Qt Software

I am a big fan of QT. Over the years it has evolved into an extremely polished and comprehensive framework, with: impressive cross-platform capabilities across a wide range of desktop OSs and embedded devices; C++ and Java APIs; excellent documentation and  a wide range of supporting tools (there is now even a cross-platform Qt IDE). The introduction of WebKit also takes Qt some way towards bridging the desktop/web divide. Widely admired by developers, the main stumbling block to Qt’s wider adoption has been the relatively high cost of commercial development licences.

Qt has been available for a while with both commercial and GPL licensing. The commercial version is expensive and the GPL version is free. However, using the GPL means you have to release the source of your own application, which is enough to make it unattractive to the vast majority of commercial software vendors. With the LGPL you can use the Qt libraries for free while keeping your own code proprietary.

So why would Nokia licence Qt under the LGPL? They even have a page on their site saying why they don’t think the LGPL is a good fit for Qt. A commercial licence for Qt is expensive, both in initial purchase costs and annual maintenance. Why is Nokia giving up a fat revenue stream? I am too cynical to believe that it is pure altruism. I guess the Qt licence fees are fairly insignificant to their new owner, Nokia, and they see it as an important strategic step to allow their mobile devices to compete against the free iPhone and Android APIs. Feel free to speculate on alternative motivations in the comments below.

As a commercial Qt licencee I am still working out the full implications of switching to LGPL Qt.

  • Including a copyright notice, the licence agreement and a link to the downloadable Qt source shouldn’t be a problem.
  • Shipping a linker and object files isn’t realistic, so I would probably have to dynamically link Qt. I much prefer static linking to avoid ‘DLL hell’ issues.
  • It isn’t clear whether all the Qt classes and widgets available in the commercial version are available in the LGPL version. Does it include the Qt 3 -> Qt 4 backward compatibility layer?
  • Will I still be able to get decent technical support, or will I need to buy a support contract?

I haven’t had time to assimilate it all yet. But I think a number of trends could make the free LGPL Qt into a big player in the future:

  • The increasing interest in cross-platform tools due to the growing Mac market share and an increasing numbers of mobile devices.
  • The neverending uncertainties about the future of Delphi.
  • The shortcomings of .Net for some types of development, e.g. ‘shrinkwrap’ software.
  • Microsoft’s apparent lack of enthusiasm for MFC and Windows Forms.
  • The many technical strengths of Qt.

It certainly looks like very bad news for directly competing cross-platform technologies such RealBasic and WxWidgets.

Further reading:

PS/ Thanks Nokia (I think)!

Yahoo can modify your PPC campaign without your permission

I tried Yahoo pay-per-click a few years ago, but gave up due to low traffic, high minimum bid prices and a horrible user interface. I am glad I did. Apparently Yahoo Search Marketing have given themselves permission to:

  • create ads
  • add and/or remove keywords
  • optimize your account(s)

for US advertisers, without asking their permission first. One can only wonder what ‘optimize’ means – double your bid price? You can revert their changes, but you are still liable for any costs their changes incur. Isn’t this a bit like the phone company deciding you aren’t making enough calls and phoning people on your behalf? There doesn’t even appear to be an opt-out. Yahoo must be getting pretty desperate. Let’s hope they are better at picking new keywords than Microsoft Advertising.

More details here:

If you have a Yahoo PPC campaign you might want to think about cancelling it. Or at least keep a very close eye on it. If you have actually experienced Yahoo making changes to your campaigns please post details in the comments.

(via Adriana Iordan of Avanagate)

C++ for the next decade

C++

Although some people regard C++ as the COBOL of the 21st century, it remains a force to be reckoned with in commercial development. For example it is currently ranked fourth in the language related tags on stackoverflow.com (despite the apparent biases of Stackoverflow owners Jeff Atwood and Joel Spolsky towards web and .Net oriented languages):

Rank Language Tagged questions
1 C# 4681
2 Java 2903
3 ASP.Net 2334
4 C++ 2040
5 Javascript 1677
6 PHP 1505
7 Python 1397
8 C 851
9 Ruby 719
10 VB.Net 548

C++ has been one of the top commercial languages for a long time. But the world of computer software and hardware is changing fast and languages have to evolve to stay relevant. The first major revision to the C++ standard in a decade, known as C++ 0x, is expected be finalised in 2009 (otherwise the x will have to be hex). The draft standard includes lots of additions to the language and standard libraries, including: lambdas; closures; static (compile time) asserts; concepts; automatic types; variadic templates; a regular expressions library and improved threading support. Automatic garbage collection is notable by its absence.

For working C++ developers the new standard only really becomes important when it becomes available in mainstream compilers such as Visual C++ and Gnu C++. As Gnu C++ already has experimental support for C++ 0x and Microsoft released a preview of Visual Studio 2010 at PDC last month with support for some of new features it might be a good time to start paying attention to the new standard. You don’t want to look like an idiot next time one your colleagues starts talking about ‘lambdas’, do you?

I illustrate a few of the new features below. I have done this mainly as a way of understanding them better myself, not because I claim any sort of expertise on the new standard.

Lambdas and closures

A ‘lambda’ is an unnamed function, for example:

std::vector<int> values = getValues();
std::for_each( values.begin(), values.end(), [](int n) { cout << n << std::endl; } );

Lambdas can reference in-scope variables, for example:

std::vector<int> values = getValues();
int total = 0;
std::for_each( values.begin(), values.end(), [&total](int n) { total += n } );

This is known as a ‘closure’. Of course, all of this can be done with standard function calls, but lambdas are undoubtedly more compact and elegant. I am not convinced that they will make code any clearer or easier to debug or maintain however.

Automatic types

Automatic typing allows the compiler to infer a type. For example:

std::vector<int> values = getValues();
for ( std::vector<int>::const_iterator it = values.begin(); it != values.end(); ++it ) { f( it ); }

Can be re-written as:

auto values = getValues();
for ( auto it = values.begin(); it != values.end(); ++it ) { f( it ); }

Automatic types seem like an excellent way to let the compiler take some of the drudgery out of programming.

Concepts

Template error messages have improved over the years, but they can still be obscure. A ‘concept’ is a way to clearly define what types a templated class or function will accept. For example:

template<typename T> requires LessThanComparable<T>
const T& min(const T &x, const T &y)
{
return y < x ? y : x;
}

Specifies that min() will only accept types that support the concept LessThanComparable.  LessThanComparable can then be defined so that the type must support the < operator:

auto concept LessThanComparable<typename T>
{
bool operator<(T, T);
}

Hopefully concepts will allow better defined template interfaces and clearer error messages.

Concurrency

The current C++ standard makes no real allowances for concurrency. This is a major problem in a world where multi-core CPUs are standard. The new standard will introduce a memory model that supports threading and a standard threading library.

Summary

C++ has many strengths. It scores quite highly on performance, expressiveness and portability, has an extensive tool and library ‘ecosystem’ and a proven track record in large scale system development. But it is also a sprawling and complex language, hobbled by many shortcomings inherited from its progenitor C (a language dating back to the early seventies). It isn’t clear to me whether the new standard will add enough features to keep C++ competitive as a commercial language for another decade. Or whether C++ will be regarded as a legacy language, too bloated and complex to attract new developers given the choice of simpler and more elegant languages. Time will tell.

Further reading:

C++ 0x article on wikipedia