Saturday, May 21, 2011

Windows Registry API for Windows (plus 64-bit)

Lately I was required to provide a solution that needs access to the Windows Registry Keys. I could easily use the command line tools for this end (reg export or something like this). For some reason I found several glitches with this method, mainly around performance and parsing incompatibilities. So I decided to use this library JNIRegistry - "Windows Registry API Native Interface" (http://www.trustice.com/java/jnireg/index.shtml).

Problem is that it is only compatible with 32 bit and if you are under 64 bit Java, it won't be any good for you. So I had to compile this JNIRegistry library for 64bit. I used Visual Studio 2010 with the Microsoft SDKs 7.1 to compile it with x86_64 compiler. It was a damn nice adventure...

So if you get this error message "ICE_JNIRegistry.dll: Can't load IA 32-bit .dll on a AMD 64-bit platform" you should probably use the second one here:

1. ICE_JNIRegistry.dll for 32 bit

2. ICE_JNIRegistry for 64bit

3. The JNIRegistry library jar

Enjoy ;)


EDIT: one thing I found while using this library under 64bit. you will need to add the "WOW6432node" child if you look for a software-type key. See this article from MS http://support.microsoft.com/kb/896459.

Tuesday, May 03, 2011

Project Planning Thoughts on Flash Builder for PHP 4.5

Wow! it was a real pleasure to take part in and lead the release of Adobe Flash Builder for PHP product. FBPHP is actually an Eclipse-based product that includes both Flash Builder and Zend Studio components and supports the development process of Web and Mobile applications that require server/client communication. It can be a real time saver for startups and large scale companies as it streamlines the process of designers, interactive designers and server side developers in a joint product by Adobe and Zend.

The following two tutorials provide a great overview of how much this product is useful and fun:
I would like to give a quick glance on what was required and achieved during the last 4 months, the team obstacles and some tasks repository analysis.

Project Goals

  • Provide an integrated solution to speed the development of Flex and PHP applications for the web or for mobile
  • Lower the barrier to entry for getting set up to use Flash Builder and Zend Studio together via an easy installation process
  • Streamline the process for creating Flex and PHP projects that are related to one another
  • Improve the data connectivity workflow for connecting Flex apps to PHP services
  • Enable developers to debug client-side Flex code and server-side PHP code simultaneously
  • Meet a tight schedule and integration deadlines for both Adobe Flash Builder and Zend Studio teams.

Quality

  • Features tested – Installation, Serialization, Flex Web/PHP Applications incl. run/debug, Flex Mobile/PHP Application incl. run/debug, Introspection, Remote PHP Server Support, Zend Studio regression
  • Platforms tested – Windows 7 32/64 bit , Vista 32/64 bit , Windows XP SP3 , MAC OSX 10.6
  • PHP Servers tested – Zend Server v5.1, MAMP and XAMP
  • Browsers tested – Firefox , Internet Explorer , Safari, Chrome
  • Devices tested – Motorola Droid 2, Samsung Galaxy S

Bug Repository Analysis

Powered by 6 developers and 4 quality engineers this project had an overall of 700 issues in the system including tasks, sub tasks, bugs, features and improvements. We had to go through a triage and privatization process on a daily basis and create a weekly process which enables short DEV2QA cycles. The result (below) shows that we had an intense two months of development and 2 months of quality work until we actually started the release cycle that took about a month. The release cycle gave us the ability to stabilize our product quality and make sure we have no misunderstanding with the integration level with Adobe and with the product managers of the product.

Created vs. Resolved

Pre-release Advisory Team

  • 177 registered participants, 10-12 very active forum-posters.
  • > 400 posts to prerelease forums.
  • > 25 good quality bugs logged.
  • Most issues either fixed or had a workaround and a few enhancements suggested for future releases

Takeaways

  • Write your requirements and invest time in polishing and updating the docs - it's not a waste of time. It can take a month and people can start building the building blocks, but to have the solution ready on time you must have a document that represents what you are going to implement from beginning to the end.
  • Plan a one month quality term, this will significantly improve your predication to deliver a high-quality product. It will not reduce the stress around release cycle but it will reduce the risk in hitting the final date. During this month, developers are not allowed to contribute code to the project unless there is a specific requirement for that.
  • Our advisory team was very helpful, it is more than important to be responsive and just listen to what they are saying. You are not smarter than they are.
  • Create a positive spirit in the team and set goals that makes sense to all people.
Thanks to Adobe Flash Builder teams that was very communicative and helpful and showed us the way when integration failed.