Monday Aug 10, 2009

Earlier today, we deployed build #79 of the Sun Software Library into production, enhancing the library functionality in the following areas:

  • Most viewed date range: You can now select which time period should be displayed in the "most viewed" area of our home page, so you can see what's popular over different date ranges. 

    library most viewed date selector

    The default setting is "all time", so you'll see what's popular since the beginning of the Sun Software Library, since this is the view that was presented all along.  If you want to see a different date range, simply change the setting.

    There are two aspects of this date range that are worth noting:
    • The data for this is updated once a day.  Our "most viewed" data does not change all that often, and we didn't think it warranted the extra processing required to make this more real time.  If you disagree, tell us.
    • We keep the data for month boundaries only, so when you select "Current Month", you'll be seeing the "most viewed" entries for the current calendar month, not the past 30 days.  For example, if you select "Current Month" on August 10th, you'll see the most popular entries for the month of August (e.g. the last 10 days only).
  • Upgraded our Web UI to ExtJS 3.0: As mentioned elsewhere in this blog, we use the Ext JS Cross-Browser Rich Internet Application Framework widget set for developing our Web UI.  Ext JS recently released version 3.0 of their library.  We upgraded our Web UI to this new version, found some bugs along the way.  The new library enabled us to support more browser types.
  • Support for IE8 & Chrome: We now officially test and support Internet Explorer 8 and Google Chrome browsers for our web site.  IE8 has some significant improvements for JavaScript developers, to quote Joe Hewitt (creator of Firebug): "I couldn't be happier that Microsoft completely copied Firebug for IE8."  We agree, debugging JavaScript on IE8 is finally reasonable.
  • JSLint: We have incorporated JSLint, the JavaScript code quality tool written by Douglas Crockford, into our NetBeans and Hudson based development process, as described in Ari Shamash's blog.  I typically agree w/Douglas Crockford, but JSLint did not hurt our feelingsWe are human after all, we welcome tools that make our lives better and our development more efficient, as I've mentioned several times in this blog....
  • Lots of bug fixes, as always.
There are more improvements in store, keep the feedback coming!

Monday Jun 29, 2009

Earlier today, we deployed build #76 to the Sun Software Library.  For those of you keep up with our numbering scheme, you'll notice a jump in our build numbers.  We were occupied with a side project, one that hopefully we'll be able to show at some point, but since JavaOne, we've been back working on improving the Sun Software Library full time.

Here is what we added:

  • Browser Based WYSIWYG editor for descriptions & reviews: we've finally joined the 21st century in implementing this functionality.  To prevent various cross-site scripting security issues, we only support a subset of HTML for the description field:

    Browser based WYSIWYG Editor

    Formatted reviews can easily be created:

    Browser based WYSIWYG Editor

    For those of you that want to still edit the HTML, you can easily switch back to that mode using the rightmost button in the editor toolbar.  As an aside, we also fixed a bug in the logo preview section of the "Basic Information" tab.  Previously, under certain circumstances, the log was being distorted.

  • Tag Management improvements:  Tagging entries with the right tags in the Sun Software Library will make the entries easier to find and use.  Based on user feedback, we've revisited the "Add Tags" section of our Web UI and improved it as follows:
    • You can now add a "most used' tag directly to your page:



    • The "other tag" field is now easier to navigate, as the search results all show up in one list:



  • Most Recently Updated section of the home page is now more accurate.  Previously, an entry was considered "most recently updated" only if the entry itself was updated (e.g. the description field was updated, or the name was updated, etc.)  Now, an entry is considered "updated" if it or any of its associated data is updated.  For example, if somebody adds a software version to a software record, or if somebody writes a review, that entry will be considered "updated".  Kudos to the "Tech Tracker" team for making this request.



  • Help Center UI improvements: Our help center finally got a much needed face lift, including styling to make it look like our primary site, as well as an embedded screencast orienting new users to our app.



We've also fixed numerous bugs, etc.  There are more improvements in store, keep the feedback coming!

Monday Jun 01, 2009

Write reviews for your favorite applications in the Sun Software Library and get a free t-shirt*.

For details on this promotion see:  http://developers.sun.com/community/softwarelibrarycontest/

 *** Please note that writing a commnet to his blog entry does NOT qualify you for a free t-shirt. Please read the instructions provided in the link above carefully.

Wednesday Apr 01, 2009

As you know by reading earlier posts on this blog, we have been working on improving the performance of our Web UI. The authentication user interaction is tightly integrated with rest of the Web UI to provide seamless experience in the rich Web UI. Combining this with the requirement to encrypt user names and passwords, we initially run the entire application under SSL. Ideally, we'd figure out a way to use SSL only for the parts of the communication that require encryption, and regular HTTP traffic for all other aspects of our application (e.g. search results, images, etc.) 

We are experimenting with a new feature that enables the web UI to interact with both SSL based web services and non-SSL based web services within the same browser page. This is one optimization that can help the web site to better scale with increasing traffic.

One technique is the use of iframes with fragment identifiers (text after the hash character in an URL, i.e. http://domain.com/page.html#tragment_identifier). This combination enables the web UI to establish a communication channel needed to pass small amount of information needed between iframes to interact with both SSL and non-SSL service points. For further explanation and a working example, please see this blog post for more information.

This use of fragment identifiers as a cross-domain communication channel is in direct overlap with popular practices for history management, which also use fragment identifiers to store page rendering state. Here is a sample page that shows how this feature works.

This leaves us with a potential situation when a page's rendering state can be wiped out whenever iframes use the same fragment identifiers to pass messages among them. In our particular use case, this is not a problem when the message actually leads to a new page state. If this is not the case, then it may lead to an inconsistent state between the representation in the URL and what's displayed on the page. One work around is to reset or synchronize the page state for such scenarios, which is a minor de-optimization that can generate repeat AJAX calls. This will be an interesting challenge to integrate conflicting features. Look for this performance improvement in an upcoming release

Wednesday Feb 11, 2009

Sun Software API changes for authentication and batch tagging.[Read More]

Tuesday Jan 06, 2009

There is a tremendous amount of data on the web about software. This data is often not structured and or categorized, that is there is no structured interface to it. The library at network.com provides such an interface and relies primarily on manual data entry, which is often the highest quality data when compared to other approaches. We are running some experiments to measure what type of information can be extracted from various other sources using automation. This approach is described in my blog

Sunday Dec 21, 2008

I would like to share with you a couple of diagrams that describe the activity flow on the development iteration and the development build infrastructure and QA testing model.   As i always say,  a picture worth a thousand words.

swimLane



Tuesday Dec 09, 2008

As a followup to all the work that Rinaldo Di Giorgio did (see this blog entry), I was able to trivially embed the Zembly SearchSoftware widget into this blog. 

Try typing "sun" into the widget below, that will search for all entries in the Sun Software Library that start with "sun", and present them in a summary list below the widget.  If you select one of the items in the summary list, your browser will open up a new tab with the details for that particular entry.

The implementation for this is still rough around the edges - the search summary list could be made more intuitive - but the idea is very powerful. We can build powerful widgets using Zembly, you can embed them into your web pages (blogs, web sites, etc.)

the HTML code for embedding this widget into this blog entry is trivial.  This HTML snippet can be embedded into any web site, or you can navigate to the URL directly in your web browser:

<iframe src="http://4892f13c17df474aa6c3a9eb6eb71fe1.zembly.com/things/4892f13c17df474aa6c3a9eb6eb71fe1/21;iframe"> 
  Text to display if browser does not support iframes
</iframe>

Are there specific widgets you want to see? Tell us.

zembly provides an environment for development and deployment of widgets, services and apis in your browser. I created a simple interface to https://library.network.com.  We will be extending the current interface, we have defined two things for you to get started.

  • A service called SearchSoftware that provides a simple searchall api to start with
  • An example widget built with extjs, you can try the widget out here.

zembly allows you to use this code easily with other applications, in fact you could use this widget and service as a starting point to put library services into other sites supported by zembly like Facebook and Myspace or develop an app for your iPhone.

Some notes on the development. I have been using OO languages for close to 20  years, starting wih ADA, then C++ and then Java. I had been avoiding Javascript's horrible syntax and not well thought out approach to classes and scoping.  I have been using Javascript like C, when it came to classes and extensions. In order to interface to extjs correctly, I have to give Javascript more respect. The correct way to interface to extjs is via a ZemblyProxy class. I have started work on that class and will attempt to provide an implementation in the future, or talk someone else into doing it.

The next example at zembly.com will provide an example using a linked data view of http://library.network.com by Henry Story


This blog copyright 2009 by Ari Shamash