Wolfram|Alpha Comes Alive with CDF

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.

sin(|x|)^|x|

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.

y'' - cosx y = x

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.

Edge detect Abraham Lincoln image with radius x

Or when Wolfram|Alpha with CDF dynamically shows you the behavior of some simulated system.

Double pendulum

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.

sin(z) + 1/2 sin(2z)

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.

sin(z)

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.

All visible satellites

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.

vary c in cos(cx)=x

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!

14 comments

  1. This is amazing, thank you for making the internet and me smarter 🙂
    I love Wolfram Alpha!

  2. This is amazing! Great work, this is really exciting. I think this has so much potential to help students intuitively understand certain mathematical operations and functions, in a way that was previously very difficult. Applying it that way reminds me a bit of the Kill Math project (http://worrydream.com/KillMath/) (no affiliation). Anyway, thanks for the great work – I’ll be sure to play around with this.

  3. Wow!!! This is just what was needed!
    I’ll start using this today.

  4. As Stephen notes above, Mathematica 8 makes free-form linguistics an integral part of longer computations inside Mathematica notebooks, see also http://blog.stephenwolfram.com/2010/11/the-free-form-linguistics-revolution-in-mathematica/ . The Wolfram|Alpha-CDF unification may effectively permit free-form linguistic input to CDF documents outside of Mathematica. As a rather contrived though perhaps instructive example, a text editor could be created by inputing text into Wolfram|Alpha, which outputs a CDF, manipulating CDF locators to move words around, and feeding the CDF back into Wolfram|Alpha along with text additions, which outputs an updated CDF, and so forth cycling through Wolfram|Alpha input, CDF output, CDF manipulation, and re-input to Wolfram|Alpha. Even without this fancy stuff, free access to the unified Wolfram|Alpha input and CDF output adds the enormous appeal of free-form linguistics to CDF document applications. This new unified Wolfram|Alpha-CDF interface will surely help popularize CDF and build business for free-form linguistic input in Mathematica notebooks, which underlie CDF technology.

  5. Single execuable(.exe) – All Languages Support for Content
    ————————————————————————

    In a single Mathematica ver 8.0 Software Application (.exe) giving a choice of selecting Languages in drop down list.

    Drop down list i mean is a combo box giving choice of selecting Languages which is the first form – Startup (Similar to a Home Page in Web site) while running the executable (.exe).
    The default content for selecting a choice of language will be English.

    For example if the end user selects English from drop down list, the user will be redirected to English version and the subsequent forms will be English content

    For example if the end user selects French from drop down list, the user will be redirected to French version and the subsequent forms will be French content

    For example if the end user selects German from drop down list, the user will be redirected to German version and the subsequent forms will be German content

    and so on for different languages …..

    Thanks & Regards,
    Prashant S Akerkar.

  6. How did we live in the past?

  7. Mathematica blows my mind. There should be a Nobel Prize for the whole company. This is the future of textbooks.

  8. OMG. You guys are so awesome. You guys made a guys dream come to life.

  9. Wow, i officially fell in love. Thank you!

  10. Thank you so much, you’re helping bring us closer to the eschaton. I’m very excited to see what breath-taking revelations the future holds.

  11. wooooo! amazing!!!! Guys! you’re crazy!!! I love your cool stuff! and the CDF plugin idea rocks! 🙂

    Good luck Wolfram team and keep up the good work!!!! 😛

  12. Thank you very, very, very much for developing this milestone in human evolution.

  13. hello

    i know how much I sleeb and how healthy I am. Do I really need a graphic who tells me how fit I am?

    but interesting anyway 🙂

  14. Wolfram/Alpha currently works on its own database of curated information. I can’t wait for the day when you can apply your technology to the entire uncurated database that is the Internet.