Mathematica Version 12 Released
blog.stephenwolfram.com
blog.stephenwolfram.com
He might still have that adolescent ego, and in his blog posts he still comes across as self-obsessed; but in his livestreams he comes across as a decent human.
He did live coding for the demos where for any session of similar complexity the speakers just copy-paste pre-written snippets. It shows both his genius as well as the capabilities of Mathematica.
At one point, his code wasn't doing what he thought it should. His reaction was that of a pure engineer, with no trace of masking or downplaying the issue.
He was asked the same usual questions around open-sourcing, et al. His answer was simple and sensible: That what they are doing cannot be done without a commercial setting. He said that he would rather do a better job for the customers than spend time on anything else.
Search for EDID
> for high-profile, high-production-value events, I have a little box that spoofs EDID strings to force my computer to send a specific signal, regardless of what the projector seems to be asking it for.
1) Presenter computer plugged into some sort of video capture hub, connected to computer A with video capture card that would composite camera video with slides. 2) Separate computer B running remote desktop into that computer to broadcast to the web. 3) Another computer C, also with remote desktop, connected to the projectors.
[0] https://www.blackmagicdesign.com/products/atemconstellation
He's definitely the kind of person that wouldn't dare scream at someone in real life, but will gladly tell you how much of a PoS you are in the middle of a meeting with a dozen other people.
My fellow employees (except for the hard core brown-nosers) are the most kind and intelligent people I've had the pleasure of working with. They are the true geniuses being this release. SW is the tyrant that the rest of the company is trying to fight.
Also, one thing that I found a bit troubling is that the employees generally sound terrified, but I've had bosses who were great AND terrifying at the same time, so I have given Wolfram the benefit of the doubt.
> He's definitely the kind of person that wouldn't dare scream at someone in real life.
What do you mean exactly here, given that in the paragraph above you said he screamed at an employee so hard she went into labor?
> He is utterly convinced that everyone around him is an idiot, and that one day the world will realize how wrong they were about his ideology and dedicate museums to his honor, etc.
Is that something that he has said, or is it hyperbole?
I think the people at Wolfram and heavyweight Wolfram Language users use Eclipse - which provides support for debugging. Though running with Eclipse in one window and Notebook in another is a bit of a dogs dinner.
In the Notebook environment I found the current debugging functionality to be pretty terrible. The GUI needs to work much more like a modern IDE, to support easy single stepping, inspection and editing of values, so us mere mortals can figure out what is going wrong when results aren't what you expect (and this is half of what programming is, after all).
In fact it might provide that somewhere among the layers of complexity of its meta-debugging whatnots. But I never figured it out, and really I shouldn't have to be fighting complexity when I'm just trying to find out why my program isn't working.
A decent debugger would help us understand the product better than any number of new documentation functions.
A professional license costs 3500€. Which is probably worth it if you use it every day, but not so much if you just use it just once a month to make a graph or integrate something.
They have a "hobby" license for 350€, which is reasonable, but according to their license it can't be used for anything work related.
I think this is an issue with a lot of professional software. It's priced for heavy users and if you are just an occasional user, you are out of luck.
That is very few people who would use Mathematica, no?
My experience is that they've significantly ratcheted down the amount of compute time per request in recent years. It's become much less useful to me because so many of my requests time out.
However, Mathematica is powerful in a much bigger way than Octave. Mathematica is more like a very successful and commercial lisp in that it has zillions of composable and we'll documented functions for everything. You don't just copy in a link to an image you want to do something with, but can literally copy paste an image into a function and immediately do stuff with it in a way I've never seen before. Recently I wanted to draw up pretty advanced network diagrams using the images our vendor used. I simply copy pasted them in and then used the graph theory primitives to draw a diagram. Then I noticed that I wanted to add a different picture and it didn't match the color scheme of the vendor. No problem...I just passed it to yet another Mathematica primitive to invert the colors. This was all REPL like interactive and easy to do. There are lots of little commands like this. My favorite example is a file open command that works on over 100 file types. The obvious ones like CSV, XML, JSON, .XLS, & TXT are all there, but so are other file formats like .MPS optimization files, common biology file formats, weather forecasting file types. Chaining this together is insanely easy. Suppose you want to solve a linear programming problem and you have a .MPS file. Just open the file and wrap it in the LinearProgram[] command and then wrap in a FileOutput[] command if I want to write to a text file. There's a lot more for Python where I have to import libraries and write loops.
Mathematica ain't perfect though. It has a large runtime and doing more complicated work doesn't scale as well as I would like for writing big programs. Code distribution is also harder. Nobody else on my team is going to want to install the Mathematica runtime to run my code.
Overall it is pretty nice though and I think it would surprise most HN users.
To give an example of a diagram showing love interests you create a variable for each person and set is equal to a picture of them.
Then, you simply create a map that represents each of the relationships like Jerry <-> Alice to show that Jerry and Alice like each other, Jerry->Samantha to show Jerry likes Samantha, but it isn't returned and so forth.
At the end, wrap it all in the command to create the diagram (there are lots of them) and you're done.
Maybe this will happen someday with Maths software.
In spite of not having commercial support and versioning shenangians, people still choose Python over the commercial alternatives.
What's more: the numerics stack in JavaScript is being modeled after the Python style, so when we're all dragged kicking and screaming to node (UMAP is already implemented in js and that came out when?), those who have cut their teeth on numpy and pandas will be a little less stranded.
For all the reasons he says, he could perfectly publish the source code of mathematica (e.g. under the AGPL) but still do not accept external pull requests. There are many successful open-source/closed-development projects out there.
The point he doesn't mention is that it costs money to develop it closed source, and giving away the source (or even the binary) would cut off funding. I'm obliged to agree with him, since there isn't anything free that comes close to Mathematica.
As a matter of fact a large part of the Mathematica codebase is inspectable (the part that is written in Mathematica itself) [1].
Disclaimer: I'm a Wolfram employee, but these are my opinions and any decision on open sourcing the language would be way above my pay grade.
[1] https://mathematica.stackexchange.com/questions/1742/what-is...
But that's still not enough and that's why I still sometimes work on Octave (although I've been semi-inactive for the past few years). Freedom isn't a spectrum; it really is all or nothing. Unless we're all free all the way, none of us is. It's not fair of me to share Matlab or Mathematica source code with people who cannot have access to the software that runs it, especially from a mathematical and scientific point of view where reproducibility in software should allow anyone to acquire that software.
Less excitingly, read its EULA. I can't find a copy of it because they don't publish it, but I do remember a part that allowed you to modify and distribute Mathworks-written m-code to other Matlab license holders.
But I think the open vs. closed source discussion in academic research is not really about that: lots of Mathematica code is fairly concise and highly automated.
Let me make an example: suppose you're minimizing some complicated function and you claim to have found some minimum with Mathematica. Your source code looks like NMinimize[complicatedFunction[x], {x, 0}]. If I wanted to reproduce your result I would not need to use Mathematica, but access to the internals would allow me to see what tricks I need in terms of minimization method used, whether or not extended precision was necessary, etc...
Being able to rerun that black box minimization independently for free is not really reproducing my result, because we might both be observing the same bug in Mathematica.
Where I don't agree with you is that open-source === free and community driven. There are a myriad of hybrid models where a for-profit company releases the code, yet doesn't accept pull requests from the community.
The all-or-nothing attitude that you just showed is actually a very good argument for those who are against open-sourcing within a company like ours. Do you really think a company will go from commercial to GPL in one step because: "freedom is not a spectrum"?
Is all Mathematica source available to licensees? Is there any additional cost for a source code license? I understand that most companies (and sometimes even research groups) need/want to maintain ownership of their software. I'm ok with that. But I'm opposed to licensing schemes like that of Gaussian, Inc. where a source code license costs more than an all-platforms site license.
I've worked with enough non-commercial but restrictively licensed academic software that I'm willing to forgive commercial vendors for similar transgressions, so long as there is full source available to licensees.
Though I admittedly steer clear of restrictively licensed code when at all possible now. I gave up on GAMESS and switched to really open quantum chemistry software because I tired of not having any revision history in the source tarballs, and of having to re-agree to the license every time I wanted an updated version. Also because I want to build software that can be installed in a fully scripted headless manner, and a "fill out the license agreement" step precludes that.
Also, I didn't say that producing free software meant you had to accept patches from anyone or listen to anything they said. All it means is that you no longer forbid your clients from knowing how your code works and you no longer forbid your clients from sharing that knowledge and that software with each other. You don't have to offer extra support or open up a public bug tracker. You don't even have to offer access to your repos; giving your clients the tarballs would be enough.
The GPL isn't anti-commercial, but your job is structured to make you believe it is. It's possible to make a living without forbidding your clients from learning and sharing.
There's a lot of open source tech out there with 90% centralized design and decision making. Most open-source databases. Haskell and OCaml programming languages also have small groups of core devs... I think even Julia development is controlled by a very small group of people.
Open source the core language if you want it to survive, otherwise it will be completely forgotten and lost from history! Closed source programming languages have no chances of survival and increased adoption, even Microsoft and Apple know this now!
(Sure, keep closed the UI + some modules with truly innovative proprietary algorithms, bc most of your paying customers will keep buying your paid versions, you won't loose the revenue stream.)
Anyway, it's too late anyway...
The problem is network effects. The blog post is right that if you are running a large deployment of things like R or Python, you are likely paying vendors and getting support contracts and all these things so that it's not really free-as-in-beer to you. But there are a lot of people not yet at that scale where it is free as in beer to them. An ecosystem based around R or Python has a lot of people who can't afford to pay for Mathematica. Those people are writing blog posts, or answering Stack Overflow questions. If I've just come up with a novel technique and I want to get it out there (either as someone in academia or elsewhere), my broadest reach is going to be to release R or Python code. Everyone with Mathematica can install R if they're curious, people who use R can't just install Mathematica on a whim to look at one research paper. If I'm an employee at a small company that is using Excel for analysis still, it's really easy to smuggle in R or Python and do an ad hoc pilot project that gets adopted, whereas it'll take me six months to get Mathematica through the approval process, and they'll probably tell me no.
So more packages get written for the open source ecosystems, more documentation gets written, I can share my work with more people. Even if R and Python are in every other way worse than Mathematica, over time, the network effects will drive more and more people to R and Python.
I struggle to think of open source end-user product that has:
- technical innovation - polished UI/UX/documentation - a problem domain of moderate to high complexity
Can you name any?
Sympy or Sage are much better examples of open source computer algebra systems, but they lack the pattern-matching weirdly-lispy language design of Mathematica (the Wolfram language, which while certainly weird, is very powerful).
Not sure what else is different, besides using Julia as the glue language, rather than Python/Cython.
1. Horrible REPL experience. Yes, the notebook interface can display graphics, cool. But I would take Emacs with paredit over it any day. After structurally manipulating Clojure code in Emacs with paredit, using the Mathematica interface is like a throwback to the 70s. You mean I need to balance and match my parentheses myself?! Seriously? Debugging larger expressions is like stabbing yourself in the eye with a dull spoon.
2. Badly designed data structures, specifically maps (also known as hashes or associative arrays). This is the most universal data structure, that can be used for almost anything, storing mappings from keys to values. Using maps in Mathematica is awkward and feels like doing precision watchwork in boxing gloves. I don't know why this doesn't get more love, after all if all your data fits in a matrix, Matlab is the competing tool, so better data structures would let Mathematica get a nice competitive advantage.
If these two areas were improved, I would likely subscribe to Mathematica and use it much more.
Many poor people rent furniture rather than buying because it's not feasible to muster the initial investment, and must continue doing it in spite of the long-term loss. The same is true here: not everyone uses Clojure over Mathematica because many cannot find the large chunk of time to learn it, though its use may produce a net gain of time long-term.
> Using maps in Mathematica is awkward and feels like doing precision watchwork in boxing gloves.
Can you elaborate a bit more on this? I haven't used it before.
I use it for math/science stuff and I am delighted every now and then when I figure out how to use mappings in a smart and concise way. My coding style in Python changed quite a bit after learning Mathematica. However, I am not a professional coder so take this comment with a rock of salt.
Moving from Clojure to Mathematica/Wolfram is a huge downgrade as far as data structures are concerned. And associations are a particularly big failure.
I lost interest in reinstalling that stylesheet whenever I had to install Mathematica on a new system and consequently, I lost interest in Mathematica. Wish they'd reintroduce it as an easily selectable default sheet. Jupyter has a much better default stylesheet but Jupyter lacks ease of use and functionality.
Edit: The stylesheet I'm talking about was called NaturalColor and there even is a stackexchange thread about its disappearance. https://mathematica.stackexchange.com/questions/17323/did-ma...
But I'm also regretting that Mathematica is not opensource since I'm convinced this constitutes a great barrier that the vast majority of programmers today will not attempt to cross.
The Unity stuff is kind of unexpected and I’m curious to try that out too.
...Now I just have to see if my student license lets me upgrade...
Cool! I hope people find it useful, that's where most of my past year and a half went :)
I know y'all have lots and lots of database documentation, but I've had trouble commenting from Mathematica to Oracle via ODBC. It's a tad confusing, but I'm sure I'm doing something simple wrong. In R, this was really easy, but surprisingly complicated in Mathematica. Do y'all have any kind of step by step doc in that arena? SQLite was of course easy, but I think Oracle requires the use of JDBC with Mathematica and that's where I get lost.
I wonder how much of actual Mathematica use is outside of mathematics.
The new AsymptoticSum and AsymptoticSolve functions sound useful though!
AsymptoticSum[Binomial[n,k],{k,0,n/3},{n,Infinity,1}]
Will still have to that by hand I guess :(It takes me a few minutes to do it with Python using Chalice and AWS Lambda.
I'm also not a fan of the primitive URL query syntax. Why isn't there a way to generate an OpenAPI? A schema?
What I don't get, is that long term, making Mathematica useful for actual server based production environments would open up an order of magnitude larger revenue stream. Yet all I see is a fragmented, difficult to use/understand/license environment. There seem to be a dozen, slightly different initiatives, some basically unmaintained.
I mean, what the heck is all this?
https://www.wolfram.com/engine/
I should seamlessly be able to prototype something through the notebook interface, and then deploy it, in a standard generic way, and on a server I control, that can be consumed by anyone who can read through a OpenAPI (with auto generated docs and schemas).
Setting Alpha aside, what you seem to offer is a) a prototyping/notebook environment, like Jupyter (yes, I know you came first) b) a programming language tightly coupled with a really nice stdlib
The programming language itself, realistically, has no use outside your libraries. And there seem to be very little third party Mathematica libraries. The notebook environment is only useful for prototyping.
So the market you should want to grow into, is, "How do we allow people to build something really easily, and then deploy really simply, in their own server/DB environment, with reasonably standard API interfaces?".
The attempts to integrate with Python are a good start, but seem to be more focused on the prototyping aspects.
Something like https://www.django-rest-framework.org/ should be built in.
A good full API would let me use a sane interface (see my other comment about the horrible notebook interface experience with more complex expressions), it would let me use Mathematica in server environments, it would let me make use of Mathematica as a service (which I'd like Wolfram to offer).
Related: I always wished for a Mathematica computational service in the cloud, so that I could offload my larger computations right from the interface. Instead of computing that matrix on my crappy local computer, send everything off to a powerful computer and do it there.