Observations from Android Market

The Tombo Edit has spent a little over a month on the market.
It seems to have generated some decent interest with hundreds of downloads.

Few items of interest:

  • Comments are filtered by system language. In development console I see comments in English, Russian, Japanese and Korean, but in the market itself it only shows English to me.
  • There is facility to report errors from devices, but I haven’t gotten any reports.
  • Interesting metric is a number of active installs (as opposed to number of downloads).

The market Web UI has recently significantly improved, and now shows more relevant information.

I was really surprised that there is another application that can read Tombo-encrypted files. It is called ‘miniNoteViewer‘, comes from Japan and does not seem to support russian character encoding. Have I known of its existence, I might have chosen some other area for my Android playground. đŸ™‚

My first app in Android Market

I’ve published the Tombo Edit, my first Android application, in the Android market.
The longest time between debugging and publishing it took to create a decent icon.

I’ve used the BlowFish encryption code directly ported from Tombo Crypt’s C++
It seems that android ndk is usable, but has some ways to go…

NDepend is released

About a year ago I’ve read a book “Agile Software Development, Principles, Patterns, and Practices” by Robert Martin, which have introduced a nice metrics for design quality.
I was eager to write a program which would use .Net reflection and calculate those metrics on existing products, but never got around to do that.
Well, what do you know? Apparently there now is a program, call NDepend, which does just that. Sweet.

XML for Resumes

I just started to use RSS Bandit to get my news, and surely stumbled upon DonXML’s post about HR-XML compliant resume.

I’ve had my resume in HR-XML format since 2001, and could not be happier. I’ve had all those nice ideas about different formatting, and created a handful of xsl stylesheets to convert my resume into html, word documents and plain text.

Here they are in no particular order:
Main Template.
Use Main Template to generate short HTML version
Use Main Template to generate short Word version
Use Main Template to generate extended Word version
Separate Template for Plain Text version
JavaScript to format resume and use Word to save it as Word document.

Pretty nasty bug in interaction between Oracle, ODBC and COM+

It happens, if we are accessing more then one database in one COM+ transaction. We are relying on ODBC connection pooling, so we typically open a connection to one database, run some queries, close the connection, then open connection to another database, run some queries, etc. It used to work nicely with MTS.
Behind the scene, after ODBC method ::SQLDisconnect is called, connection to Oracle is not broken, because transaction still continues, so Oracle needs to be notified of its final outcome.
Unfortunately second call to ODBC method ::SQLConnect returns the very same open connection, that was used before, even if DSN, User name and password are different. That is clearly a bug.
If first connection is kept open during transaction, then everything works correctly. Also everything works correctly, if databases are accessed from different COM+ applications, because they don’t share connection pool.
I’ve come up with small test program, that reproduces the bug.
I also enclosed source code for the COM+ component, and MTS package, if anyone wants to try it on NT (I’ve done that).
I don’t know, if it happens with any database, other then Oracle, but I’ve tried different MDAC versions, and they seem to behave consistently.
There seem to be no good work around. We’ve implemented fair workaround, which uses SQLGetInfo function right after SQLConnect, to verify, that database user is indeed the same, as program has asked for. Obviously it means performance hit, so any other clever ideas are very welcome.
1. Install enclosed odbc_test_app_win2k.MSI package, that contains ODBC_TEST_APP COM+ library application, that requires transactions.
2. Modify enclosed odbc_test.js script to specify your connection parameters and sql statement.
3. Run odbc_test.js and check, if it encounters problems in any tests