JacquesC

Prof. Jacques Carette

2401 Reputation

17 Badges

20 years, 84 days
McMaster University
Professor or university staff
Hamilton, Ontario, Canada

Social Networks and Content at Maplesoft.com

From a Maple perspective: I first started using it in 1985 (it was Maple 4.0, but I still have a Maple 3.3 manual!). Worked as a Maple tutor in 1987. Joined the company in 1991 as the sole GUI developer and wrote the first Windows version of Maple (for Windows 3.0). Founded the Math group in 1992. Worked remotely from France (still in Math, hosted by the ALGO project) from fall 1993 to summer 1996 where I did my PhD in complex dynamics in Orsay. Soon after I returned to Ontario, I became the Manager of the Math Group, which I grew from 2 people to 12 in 2.5 years. Got "promoted" into project management (for Maple 6, the last of the releases which allowed a lot of backward incompatibilities, aka the last time that design mistakes from the past were allowed to be fixed), and then moved on to an ill-fated web project (it was 1999 after all). After that, worked on coordinating the output from the (many!) research labs Maplesoft then worked with, as well as some Maple design and coding (inert form, the box model for Maplets, some aspects of MathML, context menus, a prototype compiler, and more), as well as some of the initial work on MapleNet. In 2002, an opportunity came up for a faculty position, which I took. After many years of being confronted with Maple weaknesses, I got a number of ideas of how I would go about 'doing better' -- but these ideas required a radical change of architecture, which I could not do within Maplesoft. I have been working on producing a 'better' system ever since.

MaplePrimes Activity


These are replies submitted by JacquesC

I do believe that it is rather rude to keep making small changes to your old posts for no other apparent reason than to have your posts show up on the "Recent comments" section. Along the same lines, having 4 lines of content to 6 lines of self-advertising is not very friendly either.
The price changes - but that has been true for a very long time. It's one of those fascinating thing that, for software (not just Maple, by any means), it is possible to segment the population and ask for vastly different prices for exactly the same thing. Actually, hardware vendors do it too, to a certain extent. Hal Varian's online The Information Economy makes for rather good reading on this topic. His book Information Rules also makes a similar point. As long as the market bears it, vendors will continue to leverage it. Fascinating stuff.
The price changes - but that has been true for a very long time. It's one of those fascinating thing that, for software (not just Maple, by any means), it is possible to segment the population and ask for vastly different prices for exactly the same thing. Actually, hardware vendors do it too, to a certain extent. Hal Varian's online The Information Economy makes for rather good reading on this topic. His book Information Rules also makes a similar point. As long as the market bears it, vendors will continue to leverage it. Fascinating stuff.
As far as I can tell, your code would never end up in ToInert/FromInert. The only (reasonable) way that could happen is if you use codegen, CodeGeneration, Compile, etc. Is this what you are trying?
As far as I can tell, your code would never end up in ToInert/FromInert. The only (reasonable) way that could happen is if you use codegen, CodeGeneration, Compile, etc. Is this what you are trying?
Very nice, thank you.
I had already scavenged the code from my Partial Evaluator for Maple which contains a GE. I have had a bit of a fascination with GE of late (it has shown up in 6 of my papers in the last 3 years!). However, your version is just different enough than mine that I will add it to my test suite, thanks.
Maple has different algorithms for computing eigenvalues, and each gives a definite ordering to the eigenvalues/eigenvectors it produces [but the ordering is not the same amongst all the algorithms, as that could impede their efficiency!]. In particular, if you tell Maple that your matrix has a particular structure, special algorithms will be used which have very predictable behaviour on the order of their output. In the most general cases, a little bit of numerical noise can cause ordering differences. In other words, without seeing fairly exact details of your matrices, it will be hard to tell you exactly what the ordering guarantees will/will not be.
Your re-creation of getenv would be perfectly allowable. If I were given the source code to fclose as part of the processing, then it would be allowable at the 0-functions stage. It will become fine at the 1-functions stage. Another way I could go about this would be to hand-build a list of "safe" library routines, which are known to be (eventually) kernel bound at a specific 'depth', so that one could get a hard limit on the analysis. The limits are so that I don't try to analyze things like solve, which not only is extremely complex, it is also recursive in complex ways. So I want to be sure I can analyze the simple stuff 100% correctly before moving on up to the more interesting functions.
Here is a test you can run to know if no (extra) library functions have been used. First, create an empty foo.mpl and run maple -L log1 foo.mpl Now take the code you are interested in, and some test cases for good coverage, in bar.mpl and also do maple -L log2 bar.mpl I am interested in your code if log1=log2. So it can call kernel built-in functions (op, nops, polynomial arithmetic, mod, even diff on polynomials), but cannot read in anything new from the library. Stuff that compiles to C programs is close indeed, but transcendental functions are out.
Good point about preprocessor macros, I should add them in. They do have their uses, and should be known. I'll see if I can add it to the page without wrecking it. maptype may not be used in the library because of misplaced worries about efficiency. It does cost you an extra function call and a type check. But generally, that will get lost in the noise of everything else that makes maple sub-optimal on time/space efficiency. It purpose is to replace a common idiom with something shorter. There is a lot of code in Maple's library that looks like if type(foo, 'bar') then     toto := map(qqq, foo) else     toto := qqq(foo) end if; This takes up 5 lines for something that is so common, it should be abstracted out, to simply toto := maptype('bar', qqq, foo) More to the point, maptype was meant to make it easy to fix buggy code that expected a polynomial but in fact got a monomial and then was incorrect in that case. map's polymorphism can be a double-edged sword. And there were enough cases where such degenerate cases occur, and bugs can creep in. So maptype concisely captures that idiom. I hope it's OK by Maplesoft that I reveal some of this old history. [The only design history of this kind that I will reveal is at least 7 years old, and will be 'positive' in character]. Posts by current employees, revealing much more recent design stories, makes me believe so.
As can be seen from my frequent posts, I really like MaplePrimes. It "works" well on two fronts: the technology is smooth, and the user-to-user interactions are really good. The site seems to have developed a certain style, where people are helpful and polite. But the site is also not a mouth-piece, which I think has greatly contributed to its (relative) success. It is too bad that the activity (from the community) on the site isn't a bit higher. Perhaps it would be worth asking those people who once were fairly active on Primes, why they decided to leave.
Maple 11 will ship without Vista support?! Wow. I am speechless. [And that doesn't happen often].
On the right hand toolbar, there are nice sections for tracking recent activity in the forums, blogs and comments, but not the books! So unless people use the recent posts feature, this kind of activity is likely to go unseen. This is particularly sad since the book posts seem to be of very high quality, and thus should get more exposure. Suggestion: put a tracker for that between Announcements and Active forum topics. Certainly it should go before Recent blog posts.
I went to the source, and it says that blockquote is for long quotations while the 'q' tag is for short, inline quotations. So maybe 'q' should be what is inserted? cite on the other hand is a 'phrase element' (details), so it is inline. Looking at that html4 page, I think there are a number of other elements that could safely be allowed through, and could be quite useful to format posts nicely.
First 108 109 110 111 112 113 114 Last Page 110 of 119