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")
t = 27×5 table
|
Name |
ShortName |
Link |
First |
Latest |
1 |
'ellipse.m' |
'ellipse.m' |
'https://www.mathworks.com/matlabcentral/fileexchange/289' |
09-Oct-1998 |
16-Mar-2021 |
2 |
'mixed' |
'mixed' |
'https://www.mathworks.com/matlabcentral/fileexchange/200' |
08-Sep-2000 |
20-Nov-2020 |
3 |
'arrow' |
'arrow' |
'https://www.mathworks.com/matlabcentral/fileexchange/278' |
15-Jan-2003 |
13-May-2021 |
4 |
'Calculates inverse Z-transform by long division' |
'Inverse Z-transform' |
'https://www.mathworks.com/matlabcentral/fileexchange/1752' |
30-May-2002 |
11-Jul-2020 |
5 |
'Reshape triggered data acquisition analog input data' |
'Reshape triggered data' |
'https://www.mathworks.com/matlabcentral/fileexchange/2184' |
22-Aug-2002 |
04-Dec-2019 |
6 |
'lombscargle.m' |
'lombscargle.m' |
'https://www.mathworks.com/matlabcentral/fileexchange/993' |
09-Apr-2003 |
17-Jul-2020 |
7 |
'Useful Figure Management Utilities' |
'Figure Management Utilities' |
'https://www.mathworks.com/matlabcentral/fileexchange/3162' |
25-Mar-2003 |
04-Dec-2019 |
8 |
'RLS Algorithm Demo' |
'RLS Algorithm Demo' |
'https://www.mathworks.com/matlabcentral/fileexchange/1753' |
31-Oct-2003 |
11-Jul-2020 |
9 |
'Adaptive Filtering' |
'Adaptive Filtering' |
'https://www.mathworks.com/matlabcentral/fileexchange/3582' |
13-Jun-2003 |
18-Feb-2020 |
10 |
'Hatched Fill Patterns' |
'Hatched Fill Patterns' |
'https://www.mathworks.com/matlabcentral/fileexchange/1736' |
28-May-2002 |
29-Dec-2018 |
11 |
'linelabel' |
'linelabel' |
'https://www.mathworks.com/matlabcentral/fileexchange/2383' |
06-Jun-2003 |
26-Nov-2019 |
12 |
'Time Series Viewer' |
'Time Series Viewer' |
'https://www.mathworks.com/matlabcentral/fileexchange/4288' |
23-Dec-2003 |
04-Dec-2019 |
13 |
'timetick - legacy' |
'timetick - legacy' |
'https://www.mathworks.com/matlabcentral/fileexchange/4300' |
24-Dec-2003 |
04-Dec-2019 |
14 |
'timestr' |
'timestr' |
'https://www.mathworks.com/matlabcentral/fileexchange/4299' |
24-Dec-2003 |
04-Dec-2019 |
⋮ |
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], ...
set(gca,YDir="reverse", ...
XLim=[datetime(1995,1,1) datetime(2025,1,1)], ...
YLim=[0 height(t)+1], ...
YTickLabel=[t.ShortName])
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.
Ellipse.m
dur = t.Latest(i) - t.First(i);
fprintf("The %s file has been maintained for %d years and %d days\n", ...
t.ShortName{i},y,floor(days(dur-years(y))))
The ellipse.m file has been maintained for 22 years and 158 days
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)], ...
LineWidth=2,Color="red", ...
Marker=".",MarkerSize=18)
line([0 rb*cos(theta+pi/2)],[0 rb*sin(theta+pi/2)], ...
LineWidth=2,Color="red", ...
Marker=".",MarkerSize=18)
arrow([-2 2.5],[1.5 1.5])
text(-2,2.5,"semi-major axis ", ...
HorizontalAlignment="right")
text(-3,-1.25,"semi-minor axis", ...
HorizontalAlignment="left")
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!
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.