Curl Blog

10 Posts tagged with the programming tag
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
0

Curl Joins Eclipse Foundation

Posted by richard Apr 7, 2008

Today we announced our membership in the Eclipse foundation. We also detailed our plans to base our developer tools on the Eclipse framework. You can read the details of our approach in a note I posted back in February. Our Eclipse based product will be called the Curl Development Tools for Eclipse or CDE and our exiting IDE will be become the Curl Classic IDE.

Out first CDE release which will be available in the summer will include all the functionality of the Curl Classic IDE, including the Curl language sensitive editor, debugger, search, deployment capabilities, Visual Layout Editor and much more. Future releases of the CDE will integrate the Curl Visual Layout Editor into the Eclipse framework as a Design Perspective, and substantially improve other programming productivity features such as error highlighting in the source-code editor, language sensitive navigation, refactoring and code assistance.

0 Comments 0 References Permalink
8

What makes Curl such a great programming platform? Here are seven things.

Single Platform: The Curl RTE is the same on every platform, in any browser. No need to work around browser quirks and bugs.

Security: Curl has a security model that prevents unprivileged applets from doing arbitrary things on your computer. For safety's sake, we think that most applets should be unprivileged. For commonly needed but potentially insecure operations, such as reading or writing a file, the RTE will ask the user for permission before allowing the operation. This is better than always preventing it and also better than not allowing it at all. It is of course possible to grant applets full privileges, but it's not a step to be taken lightly.

Speed: The Curl RTE compiles an applet to machine code so execution is fast. As an applet is downloaded from your web site it is compiled and evaluated incrementally. Any expression that produces output is shown immediately in the web browser. Class definitions, procedures, packages, and so on are compiled and cached, so subsequent downloads are faster than the first one.

Software Engineering: Curl is the kind of language you want if you are serious about software engineering. Strong type checking is enforced, though you can declare a variable to be of type "any". The language supports multiple inheritence. It has parameterized types (generic classes), as well user defined macros. It doesn't force you to put everything into a class. Development is fast too, because of the large number of useful APIs provided and because the compile time type checking helps you eliminate errors early. Plus when debugging, you don't have to "build" anything. Just edit and reload in the browser.

Single Language: The Curl language is suitable for all of the things that go into a modern web application: Classes, algorithms, data, expressions, events and handlers, text, graphics, forms, tables, and everything else can be expressed in the same language. You don't need to use a messy combination of XML, JavaScript, HTML, ActionScript, and various other languages and formats.

Server deployed: A Curl applet is distributed simply by putting it on a web server. It is updated by updating the files on the web server. It can be is as easy as updating a static web site.

Service Oriented: A Curl applet is the ideal consumer for web services and API's. Any SOAP endpoint can be turned into a Curl package and called directly. REST API's can also be easily handled. Both synchronous and asynchronous requests are supported.

We'll be talking more about these and other advantages of the Curl platform over the next few weeks. Let us know if any of them is of particular interest.

If you're a web developer, download the free IDE (which also installs the RTE if needed) and give Curl a try. You can use Curl for any programming project, even if you aren't planning to deploy it on the web. If you need to do any kind of computation and user interaction, Curl makes it easy. There are extensive examples in the Developer's Guide to get you started.

8 Comments 0 References Permalink
0

Thoughts on WEBBuilder2.0

Posted by richard Dec 4, 2007

It's day 2 at the WEBBuilder 2.0 Conference here in Las Vegas. This is our first time at this conference. Compared to the buzz and hype of Web2.0 Summit and Office2.0 this conference is very low key. Attendees are here to learn in detail about how they can improve their on-line properties. Speakers are not the trend setters but the teachers and doers of the web building world. Sitting next to me is Jeanne Morton from Avon who is here to learn how Avon can improve the way they do business with their partners. Much of Avon's systems are old and the company is very conservative and reluctant to open up to Web2.0 technologies and social networking.

Given the audience, Scott Deitzen's first keynote, a sales pitch for Zimbra seemed off the mark. It is interesting that Zimbra struggled to implement their email application in Ajax - some 250,000 lines of code. To handle off-line they wrote a fat client. Isn't this back to a client-server solution.

There must be a lot of companies like Zimbra that think their only option is Ajax and struggle to make that work. We need to be on a mission to explain there are other RIA options like Curl. Hopefully our work with Forrester will help. We'll see today as Jeffrey Hammond is presenting "Technologies of the Future." I sure hope he mentions Curl.

I thought Mark Lucovsky's presentation on "Interactive Search Applications" was on target for the conference audience. Mark's is currently at Google and his background includes more than a decade at Microsoft. Microsoft understands better than any company how to talk to developers and Mark showed that competence in his delivery. Google's view of the lowest level of web developer is "someone that can cut and paste." This is indeed lowering the bar but you can immediately see the power in that paradigm. Mark went through a host of Google Ajax routines that any one can cut and paste into their web page and create sophisticated full function web applications. Google is now creating wizards that prompt you for defining parameters then generates the java code for the function. From there you simply cut and paste and viola - your web mashup! We should look at doing something similar with our Ajax wrapper for Curl functions.

On to Jeffrey's presentation.

Richard


0 Comments 0 References Permalink
0

Ryan Stewart of ZDNet discusses the new Curl 6.0 beta release and likes what he sees. Ryan is a must-follow voice in the Rich Internet Application space. He's been covering RIAs on his personal blog and on The Universal Desktop at ZDnet for quite some time and brings to the discussion his own experience as a Flex developer. Although he's recently joined Adobe as an evangelist for their AIR (Adobe Integrated Runtime) product, Ryan has maintained a unique and independent voice. If you're tracking this market or are actively involved in developing and deploying RIAs, he's an important resource.

Discussing the new skinnable application controls we've incorporated into version 6.0, Ryan writes:

...the biggest thing for me is the new skinning support. Curl now has a skinning application that lets developers make the interfaces look a lot more polished. The new skinning support uses style-sheets so that most designers will be at home in the environment. Because of the enterprise focus, Curl has always been great performance-wise, but the aesthetics left a lot to be desired. With the new support for skinning, people using Curl will be able to make applications that look good as well as run well. Another piece of this is the new rendering APIs. In addition to skinning, Curl now supports alpha blending and antialiasing. This should really help developers create engaging and interesting interfaces.

0 Comments 0 References Permalink
0

An initiative in the Mozilla Labs called Prism seeks to put web applications on the desktop, running in their own application windows and behaving more like a rich client application than when run in the browser chrome. It's an interesting idea from a user experience perspective and we'll be keeping a close eye on this project. Prism was initially available for Windows only but has now been released for the Mac OS X and Linux platforms as well. The Mozilla Labs web site describes Prism like this:

Mozilla Labs is launching a series of experiments to bridge the divide in the user experience between web applications and desktop apps and to explore new usability models as the line between traditional desktop and new web applications continues to blur. \\ Unlike Adobe AIR and Microsoft Silverlight, we're not building a proprietary platform to replace the web. We think the web is a powerful and open platform for this sort of innovation, so our goal is to identify and facilitate the development of enhancements that bring the advantages of desktop apps to the web platform.
A bit further down the page, they add:
Prism isn't a new platform, it's simply the web platform integrated into the desktop experience. Web developers don't have to target it separately, because any application that can run in a modern standards-compliant web browser can run in Prism. Prism is built on Firefox, so it supports rich internet technologies like HTML, JavaScript, CSS, and <canvas> and runs on Windows, Mac OS X, and Linux. And while Prism focuses on how web apps can integrate into the desktop experience, we're also working to increase the capabilities of those apps by adding functionality to the Web itself, such as providing support for offline data storage and access to 3D graphics hardware.

It's an interesting notion and one that has a number of aspects that resonate with the capabilities available today in Curl - from both a development and deployment perspective.

There's some interesting conversation around the announcement already. In an article in the New York Times, Adobe's Mike Chambers, the project manager for AIR (Adobe Integrated Runtime) is quoted (from his personal blog) as taking some umbrage at the way Mozilla is positioning their effort relative to Adobe's (as well as Microsoft's Silverlight).

"The thing I found odd was Mozilla appears to be building something very similar to Adobe AIR (which is fine and cool), but somehow it is inherently good when Mozilla does it, and inherently evil when Adobe does it," Chambers responded. "AIR is built on top of Web standards and can run existing Web applications and content. It runs on Windows and Mac (and soon Linux), and it also provides additional desktop functionality.
"Is the main difference ... that AIR is being primarily developed by a company, and that Prism is being developed by Mozilla?"
ZDnet's Ryan Stewart, who is also an evangelist for Adobe AIR, also has concerns about the way Mozilla is positioning their effort. This should prove to be an interesting conversation to watch develop. Ultimately, all of these efforts have a long way to go before they'll be ready for serious use in the enterprise.

0 Comments 0 References Permalink
2

Will Kraft at Application Development Times took the Curl IDE for a test drive and is favorably impressed with what he discovered.

After installing, I was greeted with a development environment that reminded me of programming IDEs that I have used in the past, such as Visual Basic and Eclipse. Each Curl project is made of several modules containing code or graphical user interface (GUI) elements, with the entire list of modules conveniently available at all times in the IDE.
The GUI editor in particular is quite nice, with many UI control elements such as buttons, menu boxes, etc. available from a toolbar list, with attributes for each element available on another panel. These tools quickly allow a programmer to make a complicated GUI for a project, although doing it entirely from the source code interface is also an option for more advanced users. A project may be tested by clicking a "run" button on the main toolbar, just like in Visual Basic.
Although my knowledge of the Curl programming language was very limited at the beginning, I was able to make and successfully run a "Hello World" program after consulting an online tutorial. The code syntax is somewhat similar to CSS, with the document structure reminding me of LaTeX, although there are differences. The language gets its name from the use of the "{ }" curly brackets that are used to enclose each command in a Curl application.
Kraft's biggest concerns were the lack of a Linux version suitable for deployment on Ubuntu and other distros that do not use RPM packages and the "cost" of installing the RTE before being able to run Curl applications on the client. As he correctly observes, in an enterprise setting, the decision to deploy Curl is one that would necessarily include rolling out the RTE to users' desktops. The architecture of Curl's approach to application delivery and execution is based on the underlying conviction that small application downloads and native hardware performance trump server-side approaches – especially in enterprise application environments. As to the Ubuntu question, what are your thoughts? Should we undertake an effort to package the Curl IDE for use on this popular distro?

2 Comments 0 References Permalink
0

It's a pretty exciting day here at Curl as we launch this all-new Developer Community site. For the past few months, a team of folks at Curl have worked with The Last Mile Group and Jive Software to create this new center designed specifically for developers interested in learning about how Curl can be used to build Richer Internet Applications. We have incorporated a lot of content into this community site to assist those of you who are new to Curl in getting up to speed as quickly as possible and to support experienced Curl developers by providing access to in-depth technical resources.

Our vision for this site is to promote an ongoing conversation among developers - like all communities, the more you contribute, the better the results. You'll be able to exchange ideas with others who are exploring how to take advantage of the web as a platform for delivering highly usable, responsive, and interactive line-of-business and mission critical applications within their organization or innovative new services and capabilities to customers and partners.

When you register as a community member, you'll have full access to all of the features and capabilities this community has been designed to provide including discussions with other community members and the Curl team, access to training and reference materials, code and application samples (including the Curl source code) you can use to demonstrate the capabilities of the Curl language and Run Time Environment (RTE) and put to use in your own projects. We plan to add more content on an ongoing basis ourselves but we believe that the best ideas will come from people like you who are working to develop real-world solutions to the opportunities and challenges facing your organization.

As you may have already seen, we've also announced a new Open Source initiative to put development kits for consuming web services, connecting to database resources, and tools to promote best practices in application development into the hands of the community to extend and enhance. Your contributions to this effort will make it possible for everyone using the Curl language and development tools to produce Richer Internet Applications.


To take full advantage of the Curl Developer Community, you should download and install the Curl RTE (available for Windows, Linux, and Mac OS X). With this runtime environment on your PC, you'll be able to take full advantage of the interactive features we've designed in this community site and can also run the Curl applications we've made available here for download to your local machine.


The next step is to download and install the Curl Integrated Development Environment for Windows or Linux which provides everything you need to build, test, and deploy your own Curl applications. The IDE includes a powerful development environment, a visual layout editor, and unique, interactive documentation that makes it possible for you to explore all of the capabilities of the Curl language in real-time as you explore the many features and capabilities available to you. Both downloads, as well as membership in this Developer Community are free.


We look forward to hearing from you – your suggestions, comments, and contributions to this Developer Community are essential to making this resource as valuable as it can be.

0 Comments 0 References Permalink
0

Jack Germain, writing at Technology News (part of the ECT Network), provides some excellent coverage of Curl's recent announcement of three open source projects. You can learn more about these projects here in the Developer Community and follow links to the code repositories which are hosted at SourceForge. The three projects that are currently underway are the Web Services Development Kit (WSDK), the Curl Data Kit (CDK), and Curl Development Utilities (CDU).

WSDK, originally released in 2004 and updated in 2006, provides tools to develop Curl applications that make use of Web services such as SOAP/WSDL (Service Oriented Architecture Protocol/Web Services Description Language) and an XML (Extensible Markup Language) document model.

CDK is a library that facilitates data-centric application development in Curl. It features support for client-side SQLite databases, which is the same standard supported by Adobe AIR and Google Gears. The CDK library enables a Curl application to store and retrieve data using SQLite and is an important foundation for Curl applications that support occasionally connected computing (OCC) workflows.

CDU provides functions supporting application development, including unit testing and project development. CDU consolidates techniques used in existing projects, as
these infrastructural components are used by both the WSDK and CDK projects.

Describing Curl, Germain writes:

Curl provides a Rich Internet Application platform for building and deploying Web-based applications. RIA-structured applications require complex, highly interactive interfaces that were previously possible only as client-server applications. Using Curl, developers can implement a new class of complex, business-critical, Web-based applications that cannot easily be developed with Ajax or other smart client technologies, said Curl officials. The Curl RIA platform allows corporations with legacy client-server applications to move to Web-based delivery. This can result in increased reach and reduced cost.
David Rubenstein at SD Times also reported on the open source announcement and launch of this Developer Community and nicely captured the essence of the message we've been promoting regarding enterprise adoption of Rich Internet Applications:

Curl, which was acquired in 2000 by the Japanese company Sumisho, has seen a move away from client/server in Asia that is only just getting under way in the United States, according to chief strategy officer Jnan Dash. Business-to-consumer sites that require animation and graphics are driving rich Internet applications, he explained, adding that Adobe's Flash and AJAX are prevalent in those cases. "But nobody's addressing the issue of enterprises that have process-centric apps," he claimed. "The problem is how to take high-cost client/server applications to the Web to take advantage of those benefits."

0 Comments 0 References Permalink
0

Why I Like Curl

Posted by cbarber Aug 20, 2007

This is my first post here, so I should start by introducing myself. I am Christopher Barber, and I have been a software developer/architect here at Curl since 1999. At Curl, I have worked primarily on the compiler for the Curl language and on other internals of the Curl RTE with occasional forays into GUI development (e.g., the Coverage Viewer in the Curl IDE). Prior to joining Curl, I worked on an online brokerage for D.E.Shaw, helped to develop an early web search engine and worked on distributed systems research projects at BBN, and worked on back-office systems for the cellular telephone and credit industries at the company now known as Lightbridge. During my career, I have programmed significantly in COBOL, BASIC, C, C++, Perl, Tcl, Python, and several other languages, but for the last eight years I have been programming almost exclusively in Curl (yes, that's right, Curl is written in Curl!).

In my posts here, I intend to mostly discuss various aspects of programming in the Curl language and runtime environment. Topics will likely include Curl programming idioms, extending the Curl syntax using macros, discussions of open source projects I may be participating in, and "under the hood" examinations of the Curl technology. Today, I thought I would start out by highlighting a few of the attributes of the Curl which most appeal to me as a programmer:


  • immediacy - Programming in Curl has the same experience of immediacy I used to get composing HTML pages. All you need to program in Curl, is the Curl RTE and your favorite web browser and text editor. Just type the applet in the editor, save it in a file with a .curl extension and browse the file to run the applet. The RTE will dynamically compile the code from source directly into machine code and run it. While the IDE is quite useful and highly recommended for serious Curl development, it is not strictly necessary, and I often find myself doing without the IDE for simple projects.
  • speed - Curl is a compiled language and does not suffer from the inherent performance issues of interpreted languages such JavaScript. Furthermore, the RTE will persistently cache previously compiled packages to avoid unnecessary recompilation. While it is not as fast as highly optimized C code, it is fast enough to allow the Curl IDE to be implemented entirely using Curl code that is dynamically compiled on the client, just like a regular Curl applet.
  • markup - Curl is not just a programming language but is also a markup language with all the capabilities of HTML and more. It is easy to write documents in Curl, and in fact all of Curl's documentation is itself written in Curl. Many of our internal design and planning documents are also written in Curl. It is easy to embed executable examples in Curl documentation or write custom table formats and the like. Curl API documentation can be defined directly in the code without having to be hidden in comments using an unrelated syntax such as Javadoc.
  • static/dynamic typing - My years of programming in C/C++ gave me an appreciation of the benefits of static typing, specifically the ability for the compiler to find and report type errors at compile-time and to optimize based on type declarations. Likewise, my experience with Tcl, Perl and Python gave me a great appreciation of the flexibility of dynamic typing. The Curl language is fully statically typed but provides an "out" in the form of the abstract any type. Variables of type any may hold any value and may be used as if they were declared with the proper static type. This allows me to mix static and dynamic typing idioms in my code as desired.
  • extensibility - The Curl language allows you to extend the syntax extensively by means of a powerful procedural macro system. It is possible to define new control flow syntaxes, create shorthand syntaxes for common idioms, and even to embed other programming language syntaxes in Curl code. Curl's macro system provides some access to the compilation environment, making it possible to write macros that can infer types or do conditional compilation. Much of Curl's standard syntax is implemented using macros.
  • multiparadigm - Curl is a language that supports multiple programming paradigms. Programmers are not forced to use an idiom that does not fit either their preferred programming style or the task at hand. In addition to the paradigms already mentioned, Curl supports object-oriented, procedural and functional programming styles. The code underlying the Curl RTE itself is largely object-oriented, but makes use of other styles when appropriate.

Of course, there are many other aspects of the technology and specific features that I like, but I will leave those to future posts.

Christopher

0 Comments 0 References Permalink