Curl Blog : May 2008

Previous Next
2

Recently we wrote about some performance measurements showing Curl to be an order of magnitude faster than ActionScript 3 when executing a JPEG encoding algorithm. Our report hit a nerve with Ted Patrick at Adobe, causing him to question

  1. Who cares about JPEG encoding performance in an RIA anyhow? Is there a single mainstream RIA that uses it?
  2. Are the results of any performance benchmark really meaningful? and
  3. Which is more important anyway, performance or wide deployment?

I'd like to address these points. First, JPEG encoding is important in some of Adobe's own applications. The Adobe AIR Salesbuilder application has a feature that can save a snapshot of your dashboard as a JPEG file on your desktop. The Salesbuilder demo script warns that this operation "can take a few seconds." This usability glitch is directly a function of the JPEG encoding speed that we studied. For a more compelling example, consider the recently launched Adobe Photoshop Express service. It can only run in on-line mode, and processing-intensive operations such as JPEG encoding are handled on the server, but if you ever wanted to create an offline, Adobe AIR style of application like this, JPEG encoding speed would absolutely matter. Given the importance of photo sharing and processing in the Web economy, can we really say that this task is not significant?

But for us, JPEG encoding is just a representative of a much larger set of tasks that a truly powerful RIA will have to do, which require application-specific coding in the inner loops. These tasks cannot be structured as just a series of calls from a scripting language to a set of predefined, pre-optimized modules that are bundled into the RIA plugin. For example, a typical requirement for enterprise dashboard applications is to handle a "data cube" model with thousands of data points in it. (See the Curl Business Intelligence Demonstration on our enterprise demos page for one example.) No RIA platform includes data cubes as a primitive data type, so even the inner loops of the code that distills information from the data cube to the presentation have to be written as part of the RIA application, where they are subject to the same performance laws as our JPEG encoding case study.

Regarding question (2), we think our benchmark test was pretty fair because we just used the same coding structure that is used in Adobe's own code. However, we would welcome any interest from Adobe in improving their ActionScript for JPEG encoding and reporting on the results!

Finally, the value of wide deployment over performance varies a lot depending on your situation. In many scenarios, wide deployment is very important. Heck, we use Flash ourselves to add some visual punch to our corporate home page that all comers can enjoy! For this kind of application, wide deployment often trumps performance and you adjust your ambitions, if necessary, to fit the constraints of the platform.

But Curl has excelled for enterprise applications and is already in use by more than 300 companies, many of them household names, for mission-critical applications. These applications aren't too visible because most of them exist entirely behind corporate firewalls, but they testify that Curl is in fact a trustworthy, industrial-strength platform. For this type of customer, breadth of deployment on the Internet is absolutely not the issue; the capability of the platform to host powerful, responsive applications is.

2 Comments 0 References Permalink
2

This note is to announce, belatedly, that Friedger, our first Curl developer community MVP, has joined the Curl Development Utilites (CDU) Open Source project.

Friedger has offered to contribute some of his IDE extensions to open source. The CDU project is the natural place for those to be made available, as its aim is to consolidate useful development techniques.

The CDU originated as internal tools supporting development of external libraries like the WSDK. It provides a test framework, and build drivers. That functionality is now used by both WSDK and CDK open source projects.

Welcome to the project, Friedger!

2 Comments 0 References Permalink
0

For Curl, Security is Job #1

Posted by RMH May 29, 2008

It's interesting to look at technologies that have disrupted incumbents in the technology arena. One thing I have noticed is that a disrupter is designed from the ground up to address a new paradigm while incumbents tend to fail because they were designed for a different paradigm.

Take Microsoft Windows, which has dominated the desktop for more than 20 years. It was never intended to be used on the wild west of the Internet and as a result it has fallen prey to innumerable viruses, worms, and so on. Compare that to Mac OS X, which is built on a Unix variant that was designed from the ground up for wide-area networks like the Internet. You don’t hear about Mac exploits very often because the Mac operating system has made security a part of its primary focus since the beginning. The result, Mac OS X is gaining on the incumbent Windows platform and will likely eat away at its market share until Windows no longer dominates the desktop.

The same can be said for RIA technologies. Take a look at Flash, which was not designed as a RIA and was not focused on security issues from the start. Flash evolved from an animation player called Shockwave. Compare that to Curl, which was developed from Day 1, over 10 years ago, as a RIA solution that specifically addresses security issues associated with the Internet. While Flash has suffered from numerous exploits (see here and here) over the years, an exploit against the Curl platform has never been discovered1. While Flash is the market leader in mass consumer applications, Curl is the market leader in enterprise deployments (for years we’ve been used by many of the largest companies in the world).

The security issue is going to haunt Flash just as it has Windows and I expect that platforms like Curl, which were designed from the ground up to address security in the wild west of the Internet will gain market share and eventually usurp Flash as king of the RIA platforms.

+1. Exploits for the open source project cURL have been reported but there is no relationship between cURL the open source project and Curl the RIA platform other than similar names. +

0 Comments 0 References Permalink
0

Web2.0 and Desktop Convergence

Posted by richard May 27, 2008

Richard Monson-Haefel in a recent article "AJAX RIA World - The Tale of Two Webs" challenges the assumption that all web applications must be browser based to be considered real web applications. Indeed with advent of more sophisticated RIA platforms like Adobe's AIR and Curl's Nitro the line between client server and web applications is blurring.

Both AIR and Nito applications can be delivered over the web, installed on the desktop, executed outside the browser and run off-line. These application behave like desktop applications but have the TCO attributes of web applications. They have the best attributes of both client-server and web applications. At Curl we've been referring to this new class of applications as "Fit Clients." They're not FAT or THIN but FIT. We've been using the following graphic to explain the convergence of applications types into this new class.

Desktop Convergence

While both client-server and browser-based thin clients have been with us for some time, Web2.0 technologies like Ajax and desktop widgets (client-installed and web-based) are creating the realization that it's no longer either or. I think within a year we'll start to see broad deployment of these Fit client applications as more and more enterprise users will expect the benefits of both and the world of two webs will start to look like one again.

This trend will clearly disadvantage Ajax based applications as they lack the key features of Fit clients including desktop installation and off-line execution. Already many (see here and here) are recognizing the limitations of Ajax for implementing enterprise applications and I expect this realization to continue to erode Ajax's use in the enterprise.

0 Comments 0 References Permalink
0

I've posted a timeline viewer as an example Curl Nitro desktop application. You can check it out at

Curl Nitro Sample Application: Timeline Viewer

in our Widgets/Gadgets/Curlets section. This is the same application that we used as a demo at the Web 2.0 Expo last month. The application installs an entry on your Start menu and can also install a desktop icon so you can easily start it up. It can run online or offline and it runs in safe mode inside the Curl sandbox, so you don't have to give it full access to your machine.

I've also posted the full source code for the application so you can see how to build your own Nitro desktop applications.

0 Comments 0 References Permalink
4

"CIO Insight" magazine did a recent survey of 240 CIO's on which new technologies will boost revenue for their companies.

And guess what? Rich Internet Applications(RIA) ranked as Number 2 (23.6%), right after SOA (23.9%).

Last year, I had mentioned in an interview with Dr. Dobbs about RIA as the low hanging fruit for the enterprises to embrace Web 2.0 for business benefits. Jeffrey Hammond of Forrester Research mentioned in a keynote address at WebBuilder 2.0 last December that for enterprises to endorse Web 2.0, the future is now. He also mentioned that 32% of the enterprises surveyed by Forrester were using or considering RIA. Therefore, the CIO Insight survey showing RIA as second highest in priority to boost revenue does not come as a surprise.


Curl's RIA Platform has been used by over 300 enterprises and many have shown quantitative benefits to their business, over the client-server applications. The requirements to use RIA at the enterprise level is very different and much more stringent. They are looking for industrial-strength attributes such as high performance, extreme reliability, very high security, and big-time scalability. I recently blogged about what questions companies need to ask RIA vendors. Just getting a Flash video stream is not good enough for business-critical applications.

Earlier this year, Curl was awarded the best RIA Platform by InfoWorld. The proof is always with real deployment and benefits by customers.

Mike Vizard of eWeek refers to this survey in his recent blog. He covered the importance of RIA and mentioned Curl as a vendor to watch last December.
When it comes to Enterprise RIA, Curl clearly is the defacto leader.

4 Comments 0 References Permalink
1

Curl on Sys-Con TV!

Posted by RMH May 21, 2008

Back in March of this year Jnan Dash and Bert Halstead of Curl went out to AjaxWorld in New York to give a presentation on Curl (Bert) and sit on a panel (Jnan) discussing the RIA industry. Both the presentation and the panel discussion was a great success. At the reception party after the panel discussion Jnan and Bert spent a couple hours talking to individuals attending the conference about Curl.

Jeremy Geelan of Sys-Con TV interviewed Jnan and Bert to get the inside scoop on the Curl development platform. It’s an excellent interview that highlights both the history of the platform as well as the strengths of Curl as a RIA solution for the Enterprise.

You can see the interview here.

1 Comments 0 References Permalink
2

Questions to ask your RIA Vendor

Posted by jnan May 20, 2008

Enterprises are looking to exploit the web as a platform for their business applications. This will be a natural progression from the client-server model, the dominant architecture for last 15 years or so. There are two reasons behind this trend.

- First, the web as an ubiquitous platform has seen a lot of activity in the consumer space, with the success of Google applications, Google Maps, Flickr, Youtube, etc. Industry experts call this Web 2.0. It's natural for enterprises to explore how such technologies can be adopted for the enterprise.

- Second, use of the web platform over client-server has great economic advantages. It lowers the TCO (Total Cost of Ownership). It seems clear that one immediate area to bring Web 2.0 to the enterprise is the RIA - improve the user experience and lower the cost. This is proven by numerous examples of Curl's wide use in Japan.

So, in order to evaluate RIA technology, what questions should companies ask the RIA vendor? Here are just ten such sample questions. There are more.

1. Do you have enough functionality for creating dashboards for BI applications?

2. Can you construct transactional stateful applications, much like what we have in client-server today?

3. Do you provide functions such as drill-down, mouse-over pop-ups, and rich library of charts and graphs?

4. Do you have just-in-time compilation at the client for super-fast performance? Otherwise, how do you minimize latency from the roundtrip's?

5. Can you run these applications offline, for subsequent sync. when connected? What's your data-persistence approach at the client?

6. Do you have high-class IDE support for fast programmer productivity?

7. Do you provide scalability (no performance degradation with growth in users and workload)?

8. Do you provide enterprise-class security (sandbox, secure access to resources,...)?

9. Can you handle large volume of data with good performance (100K records processed at the client-side)?

10. Can you fit into the back-end ecosystem such as J2EE, Oracle, DB2, Weblogic, Websphere, etc.?


Answers to such questions will be critical for enterprises to pick the right vendor.

2 Comments 0 References Permalink
2

Curl Code Search

Posted by cbarber May 14, 2008

There now appear to be quite a number of different search engines on the internet now that index open source code repositories and allow you to search them. Some of the more popular engines are Google code search, Koders, and Krugle. Unfortunately, non of these engines list Curl as a supported language or index any of the recent open source Curl projects. Update: Google Code does now appear to index Curl code, but still does not include it in their list of languages. You can restrict your search to Curl files by including the following in your query: file:\.[dmsx]?curl$

The best ways to change this situation are to make more user requests to those sites asking to support Curl and to create more open source Curl projects to index. So if this feature is important to you, consider visiting one or more of those sites (or if there is some other site you prefer, let us know in a comment) and request Curl support (or second an existing request). Here are some links:

Google Code Group
Koders feedback form
Krugle Forum: Feature Requests

And if you have some Curl coding projects sitting on your computer, why not go ahead and create an open source project so others can see what you are up to? If you do, we have found that both SourceForge and Google Code are good choices for free project hosting. SourceForge has been around a lot longer and is more fully featured, but makes you jump through more hoops. My own Zuzu project is hosted at Google, and I have been happy enough with it so far.

Update: since Google does appear to index Curl files, you should probably explicitly submit your repository to Google for indexing if you want it to show up:

http://www.google.com/codesearch/addcode

2 Comments 0 References Permalink
10

Sreenu Kaimal is an MVP!

Posted by RMH May 12, 2008

I'm very proud to announce that Sreenu Kaimal (picture attached), a software developer in India, has been nominated and been awarded the status of Most Valuable Professional (MVP) in the Curl community. Sreenu is our third community member ever be awarded the status of MVP. She has good company with Robert Shiplett of the US and Friedger Müffke of Belgium as the other two MVPs.

Sreenu graduated with a Bachelors degree in Electrical Engineering. Over the past 7 years she has worked on quite a few technologies including C, C++, C#, .Net Compact Framework, PocketPC, Windows Mobile applications, device drivers, etc. Sreenu's acquaintance with Curl began with an evaluation project done on RIA technologies. Sreenu says, "I was impressed with Curl GUI Toolkit (even though not flashy like others), customizable layouts, controls, which are superior to other similar languages. Ease of learning, even to a beginner, is what attracted me the most." However, as is true with any good MVP Sreenu is interstined in making Curl an even better platform. Sreenu told me, "There are a few areas where there is scope for improvement for Curl. For eg. "search" in the documentation. If you type in more than a word to search, results are zero!! Maybe as a Curl MVP, I can contribute a bit towards closing those gaps."

We are taking Sreenu's advice seriously and looking into ways to improve search capabilities. This is the type of proactive engagement we love to see from our community. Sreenu is going to make an excellent MVP and ambassador for Curl. She is also applying her expertise in the Curl platform to help other developers on our forum. Please join me in extending a warm congratulations to our latest MVP, Sreenu Kaimal of India!

Congratulations Sreenu!

10 Comments 0 References Permalink
11

Curl outperforms ActionScript by a factor of 8 to 10


Curl was designed from the beginning so that Curl programs could be compiled to very high quality native code. We have always been proud of the performance of Curl programs, and have made claims of "unmatched performance".

Performance claims should be substantiated by repeatable tests. So we decided to do a performance comparison to quantify how two platforms compare when executing some computationally demanding code.

One of the new components in the Flex 3 Framework is the JPEGEncoder class. That functionality is used to good effect in the AIR SalesBuilder demo to drop a "snapshot" of the dashboard display onto the users desktop. However, the Salesbuilder demo script does warn about a delay when you start dragging.

JPEG encoding seems like an ideal test case since it's a computation that many people do all the time, which makes this computation more interesting than any synthetic benchmark. At the same time, this computation really measures the inherent performance of the language that the algorithm is written in, because even the inner loops are all written in the same language: there is no escape to library routines that might be written in a different language with different performance properties.

In fact, the original motivation for implementing a JPEG encoding algorithm in ActionScript was to illustrate the substantial performance improvements achieved in ActionScript 3 compared to earlier versions.

So we translated this ActionScript program to Curl in the straightforward way and compared the resulting performance for three images ranging from small to moderately large. These are the results that we observed:

  Curl time Flex time Image size Megapixels Output file size
Small image 0.16 seconds 1.72 seconds 700 x 933 0.65 72 kB
Medium image 0.46 4.43 1170 x 1560 1.83 195 kB
Large image 1.36 11.69 2560 x 1920 4.92 511 kB


The performance comparisons were done between Curl version 6.0 and Flex 3, running on a Dell XPS M170 computer (2.26 GHz, 2 GB RAM, Windows XP SP2).

These results show that Curl retains a substantial advantage in raw execution speed, by a factor of about 8 to 10. We attribute this mainly to the fact that ActionScript is derived from a language that was not architected to be able to be compiled to efficient code, while the Curl language was.

This difference will be important in any application that needs to do data processing or visualization specified by logic in the application itself, which cannot be delegated to predefined, optimized libraries that are already included in the underlying platform.

From the viewpoint of programmer productivity, it is also interesting to note that compiling the JPEG encoder (only about 600 lines of code) took about 8 seconds for the ActionScript implementation using the Flex 3 SDK, and produced a 170 kB SWF file. The Curl implementation requires no compilation step before the 22 kB Curl file is deployed to a Web site, and the just-in-time compilation that occurs when the Curl application is used took less than a quarter of a second.

We've attached the Curl and Flex sources so you can see the exact source code that we compared, if you are curious.

We look forward to your feedback and to any suggestions how this comparison study can be improved.

References


The JPEGEncoder is now part of the Flex 3 framework. The SalesBuilder demo uses an earlier, open source version, from the as3corelib project. The Curl code was transliterated from as3corelib; the reported Flex timings used the Flex3 framework.

The as3corelib code originated in an internal experiment intended to illustrate the performance advantage of the (then, new) AS3 virtual machine. That experiment adapted a free C implementation written by a Rumanian student, Cristi Cuturicu. In fact, the Flex 3 documentation references his paper about the JPEG algorithm.


Flex 3: http://livedocs.adobe.com/flex/3/langref/mx/graphics/codec/JPEGEncoder.html
as3corelib: http://code.google.com/p/as3corelib/source/browse/trunk/src/com/adobe/images/JPGEncoder.as
Original Actionscript: http://www.kaourantin.net/2005/10/more-fun-with-image-formats-in-as3.html
Original C: http://www.yov408.com/html/codespot.php?gg=47
Salesbuilder: http://coenraets.org/air/salesbuilder/salesbuilder_script.pdf

11 Comments 0 References Permalink
0

Reporting problems with Nitro Beta

Posted by RMH May 5, 2008

Hi Everyone,

For those of you working with the Curl Nitro beta we have set up an email address so that you can report any bugs directly to our engineers. Here is the email address (written in english to avoid spam):

nitro hyphen beta at curl dot com

We are eager to hear your feedback! Of course you are welcome to discuss recommendations and ideas right here on the forum - we love that! But if you discover a bug please also send an email to the above address. Our engineers will not be using this forum for tracking bugs.

All the best,

Richard

0 Comments 0 References Permalink
0

Web 2.0 Expo - April 22-25, 2008

Posted by jnan May 3, 2008

I had briefly reported from the Web 2.0 Expo last week. Here is an overall summary of the event.

I have been going to all the Web 2.0 events since they started back in 2005. It's quite remarkable how fast the attendance has grown. There used be just one conference in November. Due to its popularity they made it into two events - We 2.0 Expo in April and Web 2.0 Summit in October. The one in the fall tends to be much more technical. The expo is broader and the attendance is much larger. The success of this event has prompted the organizers (O'Reilly & company) to have similar events in New York, Tokyo, and Europe since 2007.


For those who are confused by the term Web 2.0, you are in good company of many. Ambiguity is the name of the game here. The phrase Web 2.0 was coined to explain the evolution of the Web to being a serious platform for the future applications, as opposed to the first phase (Web 1.0) where static pages were delivered and user-interactivity was quite limited. Also it was architecturally poor and slow to perform with all the page refreshes. Web 2.0 deals with asynchronous access to servers, polling data to the client cache for continuous feeding (e.g. Google Maps), hence it feels like a local desktop application. The phrase Ajax was coined 2 years ago to highlight the asynchronous aspects, even though the underlying technology remains the same - HTML, Javascript, CSS, DOM, XML,..


During 2005 and 2006, almost all the attendees at the Web 2.0 events were young kids working on start-ups like Flickr, YouTube, MySpace, etc. During last year's Web 2.0 Summit, the first session was with Marc Zuckerberg, the 23 year old who founded Facebook. The same night, the dinner guest was the 73-year old Rupert Murdoch, head of News Corporation and owner of MySpace. During my first attendance back in 2005 Fall, I felt like a fish out of water. There were no large enterprises including my former employers like IBM or Oracle. I could not recognize anyone from my generation. No gray hair from the client-server era. But it was lots of fun watching the kids re-invent the same issues some of us had worked on years back. Topics like stateful applications, transactional integrity, secure commits to the database, good scalability when numbers rise fast, were all being revisited. I call this "Back to the Future". So all the discussions centered around the "consumer space". It's like the boom-years of 1997-2000 when Jeff Bozos of Amazon said, "profit,? I spell that as Prophet." People started talking about another "bubble" around Web 2.0. No one seemed to care about "monetization" or "business value".


Zimbra got a standing ovation in the fall of 2005 when it displayed its email with pop-ups as you mouse thru the content. Yahoo bought Zimbra for $300m, but its future inside Yahoo is clouded as much as Yahoo's own future. This year, I noticed a remarkable shift. Suddenly large enterprises are everywhere. IBM had a big booth. So did Oracle. Juniper networks, HCL, Nokia, all had large booths. Even the sessions were full of speakers from large corporations. The classic "social-networking-is-the-future" crowd was also there, but they seemed less in number.


This is good for us at Curl, as we position our solution for the enterprise, serious to deploy the business-critical applications on the new web platform. We gave over 120 demos to visitors in our booth. Many of the visitors asked serious questions this time. Some have tried to implement complex visualization apps. via Adobe Flash, or via one of many Ajax frameworks, but were highly disappointed with scalability and functions. Programmer productivity is a key factor. Rapid prototyping is also crucial for creating proof points. Gone are the days of long development cycle. Getting users involved during the design process is key to success. Cul renders itself well to these approaches. We need to continue aggressively with our "awareness campaign" for the enterprise crowd.


In summary, I was not that surprised with the evolution of Web 2.0 towards more "enterprise focus". The same phenomenon was also visible at the AjaxWorld in New York during March. There were more discussions on "building RIA outside Ajax", as people realize the deficiencies of Ajax frameworks.

0 Comments 0 References Permalink
0

What belt are you?

Posted by RMH May 2, 2008

You may have noticed that every community member has a two images associated with their names. A picture of themselves and a little icon. Historically we've been using Icons that look like stars - similar to the icons for book rankings on Amazon.com. These icons are "status level" icons; they indicate how active a community member is. The more posts you make and the more people you help the higher your status and the more stars you get.

Yesterday I replaced the star icons with martial arts belts. I've taken martial arts on and off for most of my life and each style and studio has its own system of belts (or no belts at all). Usually everyone starts out with no-belt or with a white belt. The same is true for new members of the Curl community. As you post questions and help other people to answer their questions your status will improve and you'll advance in belts.

Points are awarded for participation according to the following rules:

Posting or responding to a forum thread: 1 pt
Correctly answered Forum thread questions: 5pts
Helpful responses to forum thread questions: 3pts

When you post a new question to the forum, "Ask-the-Expert", people will respond. If someone posts a response that answers your question you can mark the question answered and award that person 5 pts by clicking "Correct Answer" on their post. If someone provides you with helpful information but not necessarly the answer to your question you can mark award them 3 pts by clicking on the "Helpful Answer" button on their post. Only the person who started a thread on a forum can determine who was helpful or who provided an answer. You can mark several people as helpful.

The belt system works on points stating with white belt and advancing to black belt. Here is the correlation between points earned and belts won.

White Belt (Level 1), <= 20 pts
Yellow Belt (Level 2), 21 - 40 pts
Gold Belt (Level 3), 41 - 60 pts
Green Belt (Level 4), 61 - 80 pts
Blue Belt (Level 5), 81 - 100 pts
Purple Belt (Level 6), 101 - 150 pts
Red Belt (Level 7), 151 - 200 pts
Black Belt (Level 8) >= 201 pts

MVP (Most Valued Professionals) is a status awarded to only a few community members each year for making significant contributions to the Curl community both in our forums and outside (e.g. public speaking, writing, user group leardership, etc.). MVPs are awarded by vote from existing MVPs. The MVPs have a special belt which is black with red ques or marks at the end. This is the highest status any community member can achieve.

It's my hope that this system will prove to be fun, helpful, and inspiring to Curl community members. It's designed to recognize those folks who contribute to our community based on participation. You don't have to be an expert Curl developer to be awarded a black belt - you have to be a big contributer to our community in the form of questions and answers. If you stay really involved in our community you'll move up through the belts and gain expertise naturally.

All the best,

Richard

0 Comments 0 References Permalink