Wow. I am impressed not only by the new features, but also by that blog post. That was some really effective marketing!
I'm particularly pleased by the addition of units. I can't count the number of times I've done some symbolic work in Mathematica, copied the results, pasted them into WolframAlpha, added numeric values and units, and then computed the value there. It's become a common refrain in my workflow and a rather annoying one at that, so I'm really glad they're integrating things from WA into real Mathematica.
A lot of the new features fall short for me, e.g. face detection. Sure, it's nice to have over not having it at all, but when alternatives like OpenCV offer so much more functionality, why bother? I was trying to find an easy way to do facial landmark detection recently. If Mathematica included that by default, now that'd be a selling point.
Also misleading is their new "audio spectrogram" feature. Wasn't this already available with their FFT functions? An actual useful feature would be, e.g., automatic formant detection from voice files.
Often times, their new features list are just more nicely-packaged versions of existing features that in practice just save a line or two of code, rather than an feature that didn't exist at all before.
If you read the blog post you'll see that the units support before 9 was 'tacked on' as a separate package. The units in 9 are much more extensive and flexible, and more importantly are integrated with other functions at a deep level. To give an example, if you find a solution to an equation that involves units, the solution will possess the correct units (and so on for curve fitting, etc..).
> Face detection
Having used both Mathematica and OpenCV for image processing, I challenge you to explain exactly how OpenCV goes "far beyond" Mathematica. Particularly in morphological processing and image component measurements, Mathematica is quite far ahead of OpenCV (in fact, Mathematica bundles OpenCV to do some of its image processing). However, OpenCV does expose more lower level stuff, and comes with some ML and object detection routines that Mathematica doesn't yet have. But the maximum speed at which you can prototype new algorithms in OpenCV is pretty darn painful.
> Spectrogram
The audio spectrogram is certainly not tacked on. Even doing a Short Time Fourier Transform yourself is far from easy (it is not equivalent to an ordinary FFT). Making it performant on large audio samples also requires some subsampling smarts. And doing a correct wavelet spectrogram is highly non-trivial, because the feature size depends on the frequency -- i.e. low frequencies have lower time resolution than higher frequencies.
There's a massive amount of new algorithmic content there. You can't seriously claim that, say, symbolic calculation of antisymmetric tensors and continuous Markov processes are 'just convenient wrapping'.
Disclosure: I work at WRI, and love using Mathematica.
As someone who I assume has a deep understanding of Mathematica, any chance you can recommend the best tutorial/resource to get going with effective Mathematica use?
I've been trying to plug Mathematica into my workflow in place of a number of tools I'm more familiar with and I keep running into issues where I either try to do things in a very un-Mathematica way or the default behaviors I assume of the program are wildly incorrect (e.g. Thread operates in the reverse order I would expect, importing an extracting a column from a csv file seems clunky, wrote up a worksheet with a number of E variables with subscripts only to find out its treated like Exp[], etc.)
There seems to be a wonderfully large amount of available training and tutorials all over the web but I don't know where to start to most effectively acclimate to Mathematica.
The help is voluminous and really quite wonderful (all the examples are executable). Just go to the documentation center and explore until you get tired. And repeat a couple hundred times. It's like reading Wikipedia.
I didn't say that. For the record, I use Mathematica too, and while I find it useful I'm more often that not left frustrated.
Clearly they've improved these features, they just haven't improved them enough for my uses. I've personally used the Units package before and made audio spectrograms, without much issue but without much success either. I always had to turn to other tools to get the result I need, and this is still the case with Mathematica 9. The improvements aren't sufficient to make Mathematica useful for my particular uses. Let's take face detection as an example:
Do we know how it finds the faces? What if we want it to find other facial features, or train it with another data set? With OpenCV, I can tell it to use a custom Haar cascade. The only options Mathematica exposes are face size!
Having a feature in a bullet point isn't sufficient if the feature isn't fleshed-out enough to be useful.
More generally, I find myself using Matlab more often even though it doesn't work quite as well for my purposes. And why? Because it has easily readable source files, more in-depth documentation that tells you how its algorithms work, it has an open-source alternative that's more or less source-compatible (Octave; Matlab gives me a nice GUI and a pleasant working environment, but a colleague can run my files) and also uses open source software in a lot of cases so its output can be independently verified. It's that kind of thing that Mathematica needs to work on, not surface level features that probably aren't going to be useful for people who actually need them. If someone's project relies on good face detection I doubt very much they'd find FindFaces[] sufficient. Which is not to say Mathematica isn't better for having it than not having it at all, and I am sympathetic that they have to start somewhere...
Edit: I just want to add thatI have no doubt a lot of very smart people are working at Wolfram, and a lot of these features are great. I just can't help but think that developer effort is somewhat misplaced. The graph in the blog post of number of functions against time only goes to highlight that. When you see the number of people clamouring for undo support, or a better GUI, or existing features being better-explained or more fleshed out, I think that's what they should be concentrating on rather than adding new features to the list. Though the new Tensor functions are pretty cool..
Yup... FindFaces is somewhat of a surface feature.
The image processing group thought about allowing you to use custom Haar cascades with FindFaces, and decided instead to wait another version and do a proper Viola-Jones detection function + training framework.
The thinking was that enough people will find some basic face detection useful to justify the early release of this particular facet of the whole object detection/recognition problem.
But, you are right. There is definitely a balance between 'solving' an entire domain at once or expanding the frontier to new domains. I think the Mathematica team is navigating that balance pretty well, though. My most common reaction when seeing new M functionality is 'wow, this is amazingly deep', not 'gee, this is a gimmick'.
That's fair. I hope my comment didn't come across as too critical. It's precisely because I see the potential and the power of Mathematica that I often get so frustrated with it. I look forward to see what you guys come up with next at any rate.
Yeah, M is ripe for it. The graph theory is already there, along with symbolic stat distributions. We should be able to do some pretty powerful inference, perhaps even on generalized box-plate diagrams.
I'm particularly pleased by the addition of units. I can't count the number of times I've done some symbolic work in Mathematica, copied the results, pasted them into WolframAlpha, added numeric values and units, and then computed the value there. It's become a common refrain in my workflow and a rather annoying one at that, so I'm really glad they're integrating things from WA into real Mathematica.