Update Heroes: Evergreen Contributions to the File Exchange
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.
Erik Johnson is on the faculty of the Civil Engineering Department at the University of Southern California, where he's been teaching for as long as arrow has been on the File Exchange. Thank you, Dr. Johnson, for keeping your little hero moving with the times.
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.
- ellipse.m
- mixed
- arrow
- Calculates inverse Z-transform by long division
- Reshape triggered data acquisition analog input data
- lombscargle.m
- Useful Figure Management Utilities
- RLS Algorithm Demo
- Adaptive Filtering
- Hatched Fill Patterns
- linelabel
- Time Series Viewer
- timetick - legacy
- timestr
- TDIST
- Scrollsubplot
- trimmod
- RAW Camera File Reader
- Simulink 5: Fundamentos
- Sensitivity Analysis for ODEs and DAEs
- Catman File Importer
- sacsun2mat/sacpc2mat
- getkeywait
- countmember
- suplabel
- polarLabels
- 3DScope
Let's do a visualization of when those files were first created.
[~,ix] = sort([t.First]);
t = t(ix,:);
clf
for i = 1:height(t)
line([t.First(i) t.Latest(i)],i*[1 1], ...
Marker="|", ...
LineWidth=2)
end
set(gca,YDir="reverse", ...
Box="on", ...
XGrid="on", ...
YGrid="on", ...
XLim=[datetime(1995,1,1) datetime(2025,1,1)], ...
YLim=[0 height(t)+1], ...
YTick=1:height(t), ...
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
So what is this oldest-still-maintained file? The prize goes to David Long and his ellipse.m file. He is on the faculty of the EE Department at Brigham Young University in Provo, Utah. Thank you, Dr. Long, for maintaining ellipse across the decades!
i = 1;
dur = t.Latest(i) - t.First(i);
y = floor(years(dur));
fprintf("The %s file has been maintained for %d years and %d days\n", ...
t.ShortName{i},y,floor(days(dur-years(y))))
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?
clf
ra = 5;
rb = 2;
theta = pi/6;
ellipse(ra,rb,theta)
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")
arrow([-2 -1],[-1 0.5])
text(-3,-1.25,"semi-minor axis", ...
HorizontalAlignment="left")
box on
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.