File Exchange developer Randy Souza (you've heard of Souza's Law
, right?) was looking at some file updates coming through the other day, and he noticed something remarkable. Erik Johnson's arrow contribution
was being updated. We always love to see updates, but this one was special because the file was originally contributed back in 2003.
This one file may be older than many of the people who use the File Exchange! In addition to its longevity, the arrow file has a number of accolades to brag about. It was a File Exchange Pick of the Week way back in 2009
, and it was a Popular File of the Year in 2013 and 2014.
Just look at the beautiful ASCII art on that help entry! You don't see quality craftsmanship like that anymore.
The Hall of Update Heroes
All this got me thinking: how many files can boast of that kind of legacy? I asked to Randy to pull up a list of files that were contributed in the first five years of the File Exchange (2001-2006) and that were also updated in the most recent five years (2016-2021). Here's what he found.
t = readtable("files.xlsx")
Here's the same list with the hyperlinks in place so you can visit them more easily.
Let's do a visualization of when those files were first created.
[~,ix] = sort([t.First]);
line([t.First(i) t.Latest(i)],i*[1 1], ...
XLim=[datetime(1995,1,1) datetime(2025,1,1)], ...
YLim=[0 height(t)+1], ...
title("Update Heros from First Entry to Latest Update")
fxlaunch = datetime(2001,9,11);
line([fxlaunch fxlaunch],[0 28],Color="red")
Whoa! The red line indicates when the File Exchange launched. Two of our Update Heroes originated Before the Dawn of Time. How is that possible? When we launched MATLAB Central back in September of 2001, there was already an Anonymous FTP server
(remember those?) that lived at MathWorks. It functioned as a crude forerunner to the File Exchange, allowing people to upload and download files. Two of the files on our list come from that ancient era.
Contrary to current belief, there were NO dinosaurs walking around at this time.
dur = t.Latest(i) - t.First(i);
fprintf("The %s file has been maintained for %d years and %d days\n", ...
To bring this all together, I decided to download both arrow and ellipse.m and make a little composition. Here is the result. They stand up pretty well, eh?
line([0 ra*cos(theta)],[0 ra*sin(theta)], ...
line([0 rb*cos(theta+pi/2)],[0 rb*sin(theta+pi/2)], ...
arrow([-2 2.5],[1.5 1.5])
text(-2,2.5,"semi-major axis ", ...
text(-3,-1.25,"semi-minor axis", ...
title("Two Titans from the File Exchange: Ellipse Meets Arrow")
Of course, I'm only showing you the simplest instances of these functions. Both are extremely parameterizable.
So hats off and many thanks from us here at File Exchange Global Headquarters to all of the authors who have kept their files current across ten years or more!