Open Source


29 Sep 2008 06:16 pm

dddIt’s been awhile since I last Blogged on rockstarapps.com.  In between my last Blog on May 26th and Today, I have been spending much of my time working on building the dojo.E library and traveling around the world (Koren, San Fransisco).  This week is the Ajax Experience Conference, which is one of my favorite conferences and one I have attended three times and talked at twice.  In coordination with the conference were two dojo developer day meetings.

Each day was filled with great information and a lot of cool demos. I was extremely impressed with what I saw. The things people are doing are way more advanced then simple Ajax enhancements. The are truly pushing the Browser, DOM, JavaScript to the edge. I saw fully native and cross browser charting and graphics; get these features right will mean Ajax over the next several years will be able to compete with the plugins (once IE6 is put to pasture).

Below are my take-a-ways from the two days listening to Dojo talks.

Read more…

22 Apr 2008 07:54 pm

There has been quite a bit of chatter lately on the change to Ext JS licensing. Working for a Ajax library/framework/platform vendor myself, I thought I would review the GPL and see how it would relate to an Ajax library. The GPL license was interesting and long. One thing with all licenses is that depending on what you are doing they apply differently.� GPL makes sense for lots of software, MySQL uses the license, the Java source is also GPL. Ajax is slightly different than either of those two products because of how the user interacts with the application.

Open Source licenses are definitely not my Bailiwick. This entry is more to understand and to prompt discussion.

I have updated the blog after more thought and some more reading.

Read more…

10 Jan 2008 09:30 pm

First, let me thank everyone that commented and read the last blog, “How do you store a tree in a database table?” The feedback was great and helpful for everyone including myself. Probably one of the best interactions between the readers I have seen. I am working on a summary of the interactions and solutions proposed and will get that online as a blog and new sample application.

This blog is all about feedback! I am interested in getting everyones input on a project I have been working on. It started out as a plugin for jQuery that uses a markup language that makes modification possible without any javascript. It works by allowing the server to output the markup as the response to a request, the library processes the response and performs the instructions. There are a couple samples have been put together that demonstrate this. Read more…

01 Mar 2007 08:30 pm

ANNOUNCEMENT:

The Apache XAP Team is pleased to announce the release of the 0.3.0 of its Declarative Ajax toolkit. Downloads of the project can be found at http://incubator.apache.org/xap/download.html

Project Overview

—————–
XAP provides Ajax developers with an extensible declarative toolkit for developing applications. Developers can define; user interface, event handling and data-binding in a simple to use Markup Language reducing the amount of code needed to create an application. By concentrating the developers coding effort to their application business logic, XAP reduces application complexity considerably.

The Dojo Toolkit is used to as the underlying widget and building system for the XAP project. The inclusion of Dojo means that developers using XAP have full access to the great functionality provided in the Dojo Toolkit.

Read more…

07 Jan 2007 04:11 pm

I have create a short synopsis of the jsLex project and how it works.
Injection Engine:

Most of the code that does the injection is based on the Rhino JavaScript Engine. Goto http://www.mozilla.org/rhino/ for more information. After looking into numerous ways to reliably inject the profiling code. I am came to the conclusion writing my own JavaScript parser would have lots of problems and take way to long. So after looking at the dojo compression code, I took the same approach. The code is actually quite simple; the real value comes in the technique of how to put it together. Below is a flow diagraph of how the injection engine works.

At a high level an Ant task loads up the modified Rhino engine, based on the fileset given to the ant task, each of the file in the set are loaded and compiled by Rhino. At this point each file is decompiled with the metrics being injected at the start and end points of each function. The code also keeps track of addition information such as the name of the function and the overall index. After the file is decompiled the Ant task keeps track of the function indexes, names, and files, when the whole fileset has been injected, an addition file is saved that contains a mapping of the function index, with its name.
jslex.jpg

Index Mapping File:

What is the purpose of this file? Well, in order to consume as little time as possible have the collector can only worry about the index. This file contains the other information only needed during visualization. Slim and trim.
Metrics Collector:

The collector is a JavaScript file that is loaded by the browser before any of the code that is being profiled is called. jsLex.js contains everything need to keep track of counter and timing information. As the code is running, each function will call one of the jsLex tracking functions at the start and end of the function.

jsLex.incProfile(index)
jsLex.enterProfile(index)
jsLex.exitProfile(index)
jsLex.enterFunctionGraph(index)
jsLex.exitFunctionGraph(index)

Each call takes a single parameter that is the unique index of the function in the code base. It is the responsibility of these functions to calculate and accumulate the information. The code itself is not responsible for visualization. This is the responsibility of the last piece of software used to create the project.

Visualization Application:

In order to affect the performance of the running application as little as possible, information collected is not displayed in real-time. The visualization application is responsible for correlating the metric information with the index mapping file. When the user requests the capture of metrics the application retrieve the metrics from the browser running the application. The information is then matched with the information with the profiling file. In additions to the information collected by the Metrics Collector, the visualization app calculates additional information such as; average times, difference counts. There are many screen shots of the visulation engine.
The application itself is built using the Nexaweb Universal Client Framework. I choose this for one, I work there, so promoting the company is a good thing, but more importantly it gave me a lot of functionality out of the box to make it easy to visualize the data.


Wrapping it up:

That’s about it, one, two and three. The source code for the Injection Engine has been made available at http://code.google.com/p/jslex/. Each piece of the project is pretty atomic, so anyone can switch out any piece they want, if a new visualization application is needed anyone should be able to create this application.

To download:

Go to -> http://www.rockstarapps.com/pmwiki/pmwiki.php?n=JsLex.Download

29 Oct 2006 06:43 pm

Today is the day to start thinking about future proofing your Ajax strategy!

Everyone is looking at Ajax as way to bring life to their web application, replace desktop applications, and deliver upon the promise of the web as an application development platform. You and your company should be diving right in and taking advantage of Ajax where and when you can.
Being that Ajax not only builds on top of current web application infrastructure but also is a complete paradigm shift in application development. This means even though developers can utilize web development strategies already in place, such as; J2EE, HTML, etc…, developers will need to built their own Ajax frameworks or rely on 3rdpartys. In this day and age building your own may be necessary but for most people the use of a 3rdparty framework will be appropriate.

Read more…

Next Page »