The other day my laptop told me Firefox wanted to be updated to version 15.01. Go ahead, I said, and a few minutes later it was done. Firefox is updating itself all the time now, a new one major release every six weeks, which let me tell you doesn't fit well with the way public-access computers are managed at the library where I work. The reference desk computer was still using version 3 or 6 or something until they had to update it because of that Java bug.
Speaking of version numbers, I'm waiting for Ubuntu 12.10 to come out in October because it will have Emacs 24.2 on it, the latest version of my favourite editor. I'm running 23.3 right now but there are a few things in 24 that I want to use, though I can't be bothered to compile it from source or use a version from some dude's repository.
Firefox 15 ... Emacs 24 ... Firefox is a fairly new program, but Emacs has been around since the 1970s ... when will Firefox overtake Emacs? This sounded like a job for R.
First, using Wikipedia's Firefox release history and Emacs pages, and Jamie Zawinski's Emacs timeline, I put together a CSV file of versions and dates. Then I fired up R and ran the following:
> library(ggplot2) > programs <- read.csv("http://www.miskatonic.org/files/se-program-versions.csv") > programs$Date <- as.Date(programs$Date, format="%B %d, %Y") > head(programs) Program Version Date 1 Emacs 24.1 2012-06-10 2 Emacs 23.4 2012-01-29 3 Emacs 23.3 2011-03-10 4 Emacs 23.2 2010-05-08 5 Emacs 23.1 2009-07-29 6 Emacs 22.3 2008-09-05 > head(subset(programs, Program == "Firefox")) Program Version Date 18 Firefox 16 2012-10-09 19 Firefox 15 2012-08-28 20 Firefox 14 2012-06-26 21 Firefox 13 2012-06-15 22 Firefox 12 2012-04-24 23 Firefox 11 2012-03-13 > ggplot(programs, aes(y = Version, x = Date, colour = Program)) + geom_point() + geom_smooth(span = 0.5, fill = NA)
That looks like this:
But when will the line meet? When will Firefox overtake Emacs? I had no idea how to do this so I asked on Cross Validated, the statistics Stack Exchange site: How to predict or extend regression lines in ggplot2?
As you can see, I got an answer, and with a bit of fiddling and leaving out early Firefox versions before they went on their rigid schedule I did this:
ggplot(subset(programs, !(Program == "Firefox" & Version < 4)), aes(y = Version, x = Date, colour = Program)) + geom_point() + ylim(0,30) + xlim(as.Date("1985-01-01"), as.Date("2015-01-01")) + stat_smooth(method = lm, fullrange = TRUE)
which gives this chart:
I don't know how to extract the range where the lines collide, but it looks like in late 2013 Firefox will overtake Emacs with a version number at or under 25. You heard it here first.