Two weeks ago we made a major announcement: building on technology that we’ve been developing for more than 20 years, we released Computable Document Format (CDF). I think CDF is going to have a big effect on the way all sorts of things can be communicated. Because for the first time it makes it practical to include live computation as a routine part of a document.
There are many important applications of CDF that we’ll no doubt be seeing over the months and years to come. But today I’m pleased to announce an experimental one from us: Wolfram|Alpha with CDF.
Starting today, as soon as you have the free CDF plugin installed (or if you have Mathematica 8 on your system) you can go to the top right-hand corner of the Wolfram|Alpha website, and set CDF on, with the result that Wolfram|Alpha will generate not just a static web page, but instead full CDF output—that you can directly interact and compute with.
There are some immediate consequences—like rotating 3D graphics, interactively reading off values in plots, and resizing graphics inline.
But where Wolfram|Alpha with CDF really starts to get exciting is in letting you interactively manipulate parameters—and actually do computations right inside your browser. Wolfram|Alpha without CDF might just give you one particular plot. Wolfram|Alpha with CDF will automatically sprout sliders or other controls that let you immediately change parameters, and continuously update the plot.
Sometimes being able to change parameters dynamically just enriches what is already rather complete output. But often, it’s what really makes the output meaningful. Like when Wolfram|Alpha with CDF gives you controls for image processing, that let you interactively pick different features in an image.
Or when Wolfram|Alpha with CDF dynamically shows you the behavior of some simulated system.
Usually Wolfram|Alpha with CDF will start off by showing you a fairly simple set of controls. But often there’s a + you can press to open up a much more sophisticated “control panel” that allows you to change all sorts of features and parameters in a computation.
Some of what Wolfram|Alpha with CDF does is to give enhanced interactive versions of results you’d already see some version of even without CDF. But we’re experimenting with all sorts of completely new kinds of results that only exist in interactive CDF form.
So how does Wolfram|Alpha with CDF work? What’s happening is that instead of the Wolfram|Alpha servers sending you HTML to be rendered by your web browser, they’re sending CDF, which in effect contains dynamically generated programs to be executed by your CDF plugin.
It’s an interesting and powerful technology stack—all ultimately based on the Mathematica language. Your query comes in to the Wolfram|Alpha servers, where it’s processed using lots of Mathematica code—that ultimately generates a result consisting of a chunk of CDF. Then that CDF is sent to your computer, where it runs using the Mathematica kernel—but now under your control, locally inside your CDF plugin.
The result of this is that you get the best of both worlds. You have access to both large-scale computational power and stored knowledge in the main Wolfram|Alpha servers, and you get highly responsive interaction from local computations on your computer.
And what makes this possible is that by being based on the Mathematica language, CDF is able to describe high-level algorithmic processes in a standard way that can readily be delivered to your computer.
If one looks at different applications of CDF, some typically involve human authoring of CDF—say to create interactive Demonstrations of the kind in the Wolfram Demonstrations Project. But other applications involve automatic generation of CDF—say in producing interactive reports.
And in a sense, Wolfram|Alpha with CDF is the beginning of the ultimate kind of automatic CDF generation. You start from simple free-form linguistics, and Wolfram|Alpha automatically generates CDF for whatever you describe.
We’re only at the early stages of this right now. But already what we have is very useful—if nothing else in producing the core of what’s needed for a particular interactive CDF document.
I don’t want to confuse the technology stack even further—but there’s a case of Wolfram|Alpha with CDF that is in some ways even more powerful: Wolfram|Alpha with CDF not in a web browser, but inside Mathematica.
In a sense, this is an extension of the free-form linguistic programming that we introduced last year with Mathematica 8. But what’s new is that one’s now starting to be able to go directly from free-form linguistics to complete interactive Mathematica programs that involve constructs like Manipulate.
For me, it’s fascinating and exciting to see these kinds of unifications in these different forms of technology that we’ve been developing for so long. And every time we do such a unification, it opens up all sorts of new possibilities that we could barely imagine before. But today’s Wolfram|Alpha with CDF is just the beginning. Over the next several months, we’ll be introducing all sorts of enhancements.
For example, as of now you have to choose to get either all-HTML output from Wolfram|Alpha or all CDF. If you choose HTML, you get to make use of the full range of optimizations in your web browser. If you choose CDF, you get to have computable CDF output that you can interact with. In the future, CDF will automatically be interspersed with HTML, so you can get the best of both worlds.
And right now, there are only particular kinds of Wolfram|Alpha output that use dynamic interactivity with CDF. In the future, there’ll be broader coverage—so that absolutely anything that could reasonably be interactive will automatically be so.
But already today it’s exciting to see Wolfram|Alpha begin to come alive with interactive CDF output. Let us know what you think of it!