MATLAB Community

MATLAB, community & more

15 Questions: John D’Errico 6

Posted by John Kelly,

Our next interview in the MATLAB Central 15th Anniversary series is with John D’Errico.  He is a Community All-Star who actively participates on File Exchange and MATLAB Answers.  He has been using MATLAB for over 30 years.

john-derrico-headshot

John spent much of his career at Eastman Kodak writing toolboxes for mathematics.  He is now retired living in upstate New York.

Thanks to John for agreeing to do this virtual interview.


1. John Kelly: When did you first get exposed to MATLAB and Simulink?

John D’Errico: I recall I had a very early release, going back to somewhere around 1984-85. That was back when my Mac had 128K of RAM, and ran on 3.5 inch floppy drives. At the time, I did not look at MATLAB in too much depth beyond a quick glimpse, as my current clients were all using APL tool sets that I had developed. So my very first exposure to MATLAB was really very brief. I do wish I had kept that original floppy though. It would be an antique now!

2. JK: When did you start actively using MATLAB?

JD: Around 1986-87, I started working more heavily with the color science organizations in Kodak. They had problems that required large scale linear algebra solutions. (In fact, this is when I first developed the ideas on which my File Exchange tool gridfit is based.) So I decided to write the same code in Fortran which took me weeks to write and debug.  Around then, I also began working with Kodak’s ColorSense program, a group who was working entirely with MATLAB. So, naturally, I decided to re-write the tool but do it in MATLAB. The re-write into MATLAB took virtually a single day to get running, and for a given size problem, it ran way faster on my desktop machine in MATLAB than on the mainframe. This was all running version 3.2 or 3.5, just before the sparse matrix capability was even introduced in MATLAB. Anyway, the ease with which I was able to build tools, get them running, and the speed I could do my computations converted me immediately to MATLAB. And of course, when I was able to get those ideas running with sparse matrices, they flew along blindingly fast. We were suddenly able to solve what had been huge problems to us, getting answers in seconds.

3. JK: Sounds like working with Kodak’s ColorSense program had a positive effect on your career.

JD: Our group working on ColorSense was a fun group that taught me a lot. Every Friday afternoon, we had a meeting where we did peer review for any tools we had built that week in MATLAB. Before any code we had written was allowed to be moved into a common area for the rest of the group to use, our code had to pass a scrupulous peer review, both on the numerical aspects as well as the documentation. It could be tough to get your code passed, but when it did pass judgment the code worked perfectly, and the documentation was crystal clear. This may be the reason why I can sometimes appear tough to people who post tools on the File Exchange. I want their code to work well, but also to be usable. You can learn to write great software, but if nobody ever tells you how, that won’t happen.

4. JK: Did you get a reputation as a “MATLAB Fixer” at Kodak? Was that ever a burden?

JD: My entire career at Kodak was that of the guy people came to from anywhere in the company, when they needed to use splines, or optimization problems, etc. And Kodak was a big company back then. Sometimes I’d see an interesting problem that had a nice solution, so I’d write another tool, or a complete toolbox.  The trick is to pass that accumulated knowledge on to others. That is what sites like Answers offers, a way to pass along the knowledge base, building it one question at a time.

5. JK: Tell me about something interesting you have done with MATLAB?

JD: Years ago, our group at work had a weekly football pool. every week you put in a dollar, and marked which team would win their games against the spread. So as the math guy, I decided to build a model every week, that was gradually built up from all statistics I could gather (strength of schedule, home field advantage, etc). The person with the most correct picks won the pot (so maybe $15-$20). By the last week of the season, I had not won a single week, but I had the best record for the season against the spread. My cumulative statistical model was 58% against the spread, but I’d never won a cent. The very last week, I took the picks from the model as it said, except for the Cowboys/Giants game. I was a Cowboys fan at the time, and I simply could not pick the Giants. So I swapped that ONE pick, went against my model prediction. That week I lost again, but had I gone with the prediction made by my model, I would have finally won for the week.

6. JK: When and Why did you first decide to use MATLAB Central?

JD: When I retired from Kodak, I decided that I wanted to do something useful, to do some volunteer work. The logical thing seemed to offer tools for others to use, because I’ve always been a tool-maker at heart. And I’ve been trying to answer questions for many years before Answers existed.

7. JK: What are the greatest benefits you get out of using MATLAB Central?

JD: As in my career as a mathematician, every once in a while a question pops up where it suggests an idea I’d never seen before, to solve some problem I’d never have looked to solve otherwise. Those often innocent questions can be the seeds that give me an idea for a new tool.  Tools like interparc, Surface Fitting using gridfit, distance2curve, fminsearchbnd fminsearchcon, inpaint_nans, Adaptive Robust Numerical Differentiation, nearestSPD, Inverse (integrated) gradient, consolidator, Partitions of an integer, etc.

8. JK: What do you think is the most valuable resource on MATLAB Central?

JD: For me, it is the File Exchange. A beauty of a language like MATLAB is extensibility. Every individual has different problems to solve. And while MATLAB tries to do lots of things, offering large variety of solutions to all sorts of problems, there are limits, things never envisioned. So if someone needs to solve problem X, they can look on the File Exchange, often finding that someone else has already had the same problem.

9. JK: What contribution are you most proud of?

JD: I love to see when someone can take something I’ve posted, and take it a step further, to expand an idea that I found, then improve on it. Because that means I was able to trigger a moment of creative insight by another person. Together we managed to make something that was better than either of us might have made on our own. That is what makes me proud.

10. JK: What’s the number one piece of advice you would give to someone to improve their file?

JD: Look at your software as if you were a completely new user of that code, someone who has no idea how to use the code, what it does, how to run it, what inputs it takes, what does it produce as output. BE UNBIASED. Pretend this is not your work, but that you found it, and now you need to use it. How easy would it be to get running to solve your specific problems?

11. JK: Is there a tool on File Exchange that gives you creative envy?

JD: Chebfun. It is a beautiful idea that allows you to solve a huge set of problems, but under the hood it works in a completely different way compared to some classic solutions to those same problems.

12. JK: What’s the most surprising thing you’ve come across on MATLAB Central?

JD: That so often something someone posted to solve some specific problem, can be used in completely other, unexpected ways. This forces me to build lots of alternative options into the tools I provide, since I know that others will use tools I’ve posted in ways I have not foreseen.

13. JK: What keeps you coming back to MATLAB Central?

JD: I love to see a question on MATLAB Answers that shows a person cares about the answer, about understanding the problem. Every once in a while, I get to see that I was able to trigger an “a-HA!” moment for a person. I also love to hear from someone who may be using one of the tools I’ve posted on the File Exchange in their work, or as some important part of their thesis or a paper.

14. JK: Here is a non-MATLAB related question.  Do you like to travel?

JD: Kathy and I like to stay home. Our problem is, why would we want to go anywhere when this is our sunset? (From our deck.)

sunset

This is one of my all-time favorite sunrises – a winter shot essentially out of the window next to my computer.

winter-sunset

And our little Amy, at the top of the stairs.

amy-the-dog

So we seem to stay home a lot. :)

15. JK: Final Question. What’s one of your favorite non-software non-mathematical things to do?

JD: I love to play bridge (long ago I wrote a bridge hand simulation tool in MATLAB.) I also enjoy woodworking and woodturning. All of the lamps in our house are handmade. I’ve turned bowls, goblets, plates, pens, clocks, tables, etc. Essentially anything out of wood, metal or plastic can be fun to make. But even in my shop, one thing I enjoy doing is making woodturning tools themselves. I’m a toolmaker at heart.

lamp

Thanks to John for taking the time to answer my questions.  It has been a lot of fun interviewing these MATLAB Central All-Stars.  Be sure to check out my other interviews with Chad Greene and Grant Cook III.

15 Year Anniversary

Note

Comments are closed.

6 CommentsOldest to Newest

George replied on : 1 of 6
John, I'm a MathWorker and an avid bridge player! I'd love to see what you've done with MATLAB and bridge if you'd care to share.
Sven replied on : 2 of 6
Questions #3 and #10 say a lot about John's approach and how he consistently makes high quality and highly useful tools. Go to any of his files and you'll see that most of the comments are about how "it just works!" - that doesn't happen by accident. Thanks, Sven.
John D'Errico replied on : 3 of 6
George - Send me an e-mail, and I will send it to you. Long ago, I wrote a function called morel.m. To be honest, it is a testament to MATLAB that the code still works cleanly, as a gui yet! It is a gui that will do hand generation. I believe it is over 20 years old now. I used it pretty heavily when I was developing our precision bidding system - Derision. For example, I had to decide what was the best use for a jump over a strong club, so 1C-2H. While many systems have that as showing a long heart suit with a weak hand, I generated hundreds of hands that fit the pattern, and we could always show those hands easily enough in other ways. Then I chose a variety of other things I might be interested in using the bid to show, generating sample hands for each. Morel does other things, like computing the probability of the West hand having a given number of spades given a known holding for one or more of the other hands.
John D'Errico replied on : 4 of 6
Sven - I tend to be a perfectionist about my code. I recall long ago before I wrote my nonlinear regression tool. This was years before the curve fitting toolbox existed. I had come up with an idea for a gui tool that would allow you to fit a nonlinear model to data, by combining terms, so a point and click interface. If you wanted to add a term to the model, like a constant term, it was just a mouse click. Click on the term, and you could then apply bound constraints to it, or specify starting values. It had a few default models you could specify. A very nice interface, but before I built it, I spent months working on the idea in the back of my head until the workings were all thought out in advance. The code was easy to write then.
Loren replied on : 5 of 6
Hi John, So nice to hear from you again! And very glad to see you still generously helping folks with your wonderful tools. Hope we can find an excuse to meet again (over MATLAB?) sometime! --Loren
Cleve Moler replied on : 6 of 6
Hi John, (and John) -- I really enjoyed the interview. Thanks for all your contributions. -- Cleve