February 20th, 2011
“It seemed like a good idea at the time.” That is how I feel now after just 4 days of investigating WP7 development. After signing up for and following the pre-release of WP7 last year, I got put off pretty early on (can’t remember why anymore) and just ignored it until now.
At first glance WP7 seems solid and a good platform to develop an app for. Until you scratch the surface a bit. Just a few things that left me feeling very negative about continuing, before even writing one line of code:
- Thinking of writing free apps? Only five free app submissions included in your annual subscription fee. If your app fails certification it equals one submission! After five submissions, they’re $19.99 a pop.
- Thinking of monetizing your free app? You’re not in the US? Not with the MS ad framework you don’t.
- Thinking of writing a paid app? You’re not in the US? You have to register with the US IRS as a non-US entity to avoid getting 30% of your income withheld by MS!!! For met that would involve costs of around US$200 to ge a notary to certify my passport, not to mention postage/time cost to get it done. As a single developer with no idea about projected sales performance this is so not going to happen. Who outside the US wants to register with the IRS anyway? Prepare to make a 30% donation on top of the price of my app to the IRS. This is really lame from MS, they have registered business entities in so many countries, but they force developers to go via the US.
- I like how the “Free developer tools” includes “Buy one of the Windows Azure pricing offers” – seriously?
- The development environment has no native database support. Seriously? Most apps requires some kind of database storage. Luckily some 3rd party solutions exist.
- No on-phone timed notification type service available. No 3rd party alarm apps, calendar notifications etc. Sure you could use push notifications, but what happens when you have no connectivity?
- OK so we must use push notifications. Who pays the bill for your server that needs to initiate the push notification via the MS servers. This for me is a flawed business model. Case in point: you write an app that requires push notifications to update your app tile with info. Easily done, but you need a server to receive the phone request and then communicate with the MS server for the notification to be pushed to the phone. Your app revenue is a once-off income when sold while your server is an ongoing expense so what happens when you only sell x number of apps – does that mean you now do a charity service to the x number of users ad infinitum or do you just cut them off?
Notwithstanding all this I’ll still be submitting and app (from outside the US), but it wil not have a “live” updating tile (it’s a shame) and it will not be free and it will cost 30% more than it should.
Hopefully all of these issues will be addressed by MS sooner rather than later. If it does, there may be hope yet for WP7.
Posted in Operating Systems, Programming, Windows Phone 7 | No Comments »
December 28th, 2010
Google recently released the License Verification Library (LVL) for Android to allow licensing of Android apps through the Android Market. One way of using it is to reference it as a library project in your Android application. I make use of an Ant build.xml file to automate my application build. This needed modification in order to build correctly.
My solution is not that elegant and based on Owen’s comment on the very informative Using Ant to Automate Building Android Applications article by Matt Quigley. I’m assuming you already have a working build.xml file going (if not refer to the article). After the initial panic (I know very little about Ant) it was as easy as:
- create a library folder in your application root folder
- copy the LVL library project there (the contents of the library project folder including manifest folders etc.)
- add the following two lines to you build.xml (the first I put at the top and the second with the rest of the keep items):
<property name="android.library.reference.1" value="library"/>
<keep access="public" type="class" name="com.android.vending.licensing.ILicensingService"/>
Note that you don’t need the second line if you don’t use obfuscation.
Posted in Android, Programming | No Comments »
August 26th, 2010
It’s been a week of pondering since my last post on the 650k row table to table update. After a bunch of suggestions SQL Express finally met it’s match in Oracle. Below is the code for the same update using the Oracle MERGE functionality. To me it looks like the equivalent of the SQL Server join-update functionality. The statement executes in under 40 seconds with indexes on both the tag and index fields for both tables.
MERGE into FUNCTIONAL_POINT F
USING
(
select L.FL, L.TAG FROM LOCATION L
INNER JOIN FUNCTIONAL_POINT FP
ON FP.TAG=L.TAG
) L
ON ( F.TAG = L.TAG )
WHEN MATCHED THEN UPDATE SET F.FL = L.FL
WHEN NOT MATCHED THEN INSERT ( F.FL ) VALUES ( L.FL );
--NOT MATCHED is never hit, but required for merge statement
The only caveat is that the join must be on a unique field and produce only one result (thus one unique FL per TAG in the above case).
Granted it may take you a few seconds longer to write and add the table indexes I think it is absolutly worth it. Thanks for my bro for persisting with options to try on Oracle.
Posted in SharePoint | No Comments »
August 19th, 2010
I’m probably going to get flamed for this one, but I just had to tell someone. I recently had to update an Oracle 10g table field value from another table using a common (inner joinable) field. Both tables contains 650,000 odd records. Coming from an MS background I thought it would be easy doing a “join update”. Now I’m the first to admin I’m no Oracle expert, so I did a bit of Googling. Unfortunately I could not find equivalent functionality for Oracle, just Oracle user posts telling SQL Server type guys you can’t do that, it’s not SQL Server, you have to use … (see Oracle syntax below) – which seemed to me a very inefficient way to update a field.
So I ran this on our Oracle 10g development server:
UPDATE FUNCTIONAL_POINT F SET FL=
(SELECT FL FROM LOCATION WHERE TAG=F.TAG)
After 43 minutes I cancelled the query, exported both tables to my desktop SQL Express 2008 and ran this:
UPDATE FP SET FP.FL=F.FL
FROM FUNCTIONAL_POINT FP
INNER JOIN LOCATION F
ON F.TAG=FP.TAG
After 40 seconds I had updated my 650,000+ records with the value from the other table. Note I did not set up any indexes or done any optimizations. I re-imported the table to Oracle, all done in around 5 minutes.
Maybe there is a thousand ways to get this done on Oracle as fast that I don’t know of, but coming from an MS background and always being told of the power of Oracle I was very amused. Now flame away!
Tags: Database, SQL
Posted in SharePoint | No Comments »
August 14th, 2010
I have just updated Au Weather the Australian Android weather app to the Android Market. The latest version is V0.91 beta. Updates include
- tap top of main screen to see station details;
- knots added to wind speed;
- cosmetic updates;
- symbol tweaks;
- AdMob ads (still waiting for Google Australian Android developer support before a paid ad-free version can be developed).
This should be last release for a while. I will monitor the application performance in terms of viability for continued support. The main considerations will be application robustness, server loads & performance and if the ad model will be able to support the infrastructure required to maintain the application.
It’s early days yet. Hopefully the app will get a good following which will help the cause. I already see from the whirlpool forums that some of the established iPhone developers are eyeing an entry into the Android space. I think the lack of support for selling Android apps by Australian developers are holding a lot of them back at the moment. I’m not complaining!
More info on Au Weather and QR code can be found here.
Posted in Android, Au Weather | No Comments »