Talks

My Rails App is Old Enough to Drink: Over Two Decades with One App

My Rails App is Old Enough to Drink: Over Two Decades with One App

by John Paul Ashenfelter

In his talk titled "My Rails App is Old Enough to Drink: Over Two Decades with One App" at Blue Ridge Ruby 2024, John Paul Ashenfelter shares his journey of developing and maintaining a Rails application over the past 24 years. The key theme revolves around the evolution of his Rails app amidst changes in technology and the developer community. He provides a historical overview that contrasts the early challenges of web development with the advancements brought about by Ruby on Rails.

Key Points Discussed:
- Early Challenges of Web Development (Pre-Rails): In the early 2000s, developers had to choose from various complex and costly technologies for web applications, often leading to inefficient and fragmented solutions. ColdFusion and intricate Java frameworks presented high costs and significant barriers to effective development.
- Introduction to Rails (2005): The arrival of Rails simplified web development by promoting convention over configuration, making it faster and more cost-effective to build applications. Rails provided built-in features such as Active Record for database interaction and testing as a central aspect of development.
- Transition from ColdFusion to Rails: Ashenfelter recounts how he transitioned to Rails while teaching data warehousing, highlighting benefits like reduced costs and better developer experiences, which convinced him to adopt Rails for building applications.
- Evolution of the Rails Framework: Over the years, Rails has introduced numerous updates and improvements, including better developer documentation, support for testing frameworks, and community-driven advancements such as Heroku, which promoted the use of PostgreSQL, and features improving flexibility and reliability.
- Community Growth: The Ruby and Rails communities have evolved significantly, with conferences and educational boot camps fostering a supportive environment for new developers and encouraging broader participation in the open-source movement.
- Current State of the App: Ashenfelter explains that his app is now built using Ruby 3.2 and Rails 7.1, still utilizing MySQL and modern deployment frameworks, reflecting the changes in developer tools and practices over time.

Conclusion and Takeaways:
The journey of maintaining a Rails application illustrates the importance of adaptability in technology and developer skills. Key takeaways include:
- The significance of a supportive developer community.
- The necessity to embrace evolution and change in technologies.
- A reminder that foundational database choices often endure throughout the life of an application.

Ashenfelter’s insights highlight the ongoing relevance of Rails and its impact on web development, showcasing how a powerful tool can sustain an application through two decades of rapid technological advancement.

00:00:11.679 All right, so next up we have John Paul Ashenfelter. He is a longtime Rails developer who saw the birth of the web browser at NCSA in the mid-1990s and never looked back. He has built dozens of Rails applications over the years, started companies, joined startups, and managed the API team that builds the open-source Rails application that runs va.org. He has worked with more tech education and boot camps than he can count.
00:00:22.040 He's taken the time to do a retreat at the Recurse Center, written a few books a long time ago, and worked with many outstanding developers over the years. He has founded a food co-op, which has nothing to do with Rails development, but is still a pretty cool fact. He's an avid hiker and traveler of the Blue Ridge and beyond, with a strong affinity for New Orleans. He loves music of all kinds and enjoys reading sci-fi. He's failed to earn a PhD three times across two disciplines but has never second-guessed the now smooth and sensible-looking path that took him from Visual Basic and an academic career through the startup world to here.
00:01:16.400 Welcome to Transition Point! I built an equity partner consulting company; we call that a venture studio today, and we started serving that first wave of internet excitement. At Transition Point, we did all the things you'd expect in the 2000s: we built a leisure travel company, supported another game studio, and built a warehouse logistics company. We hosted a project that ran during a Super Bowl ad, which was exciting, and somehow we ended up hosting the real site for the incumbent president of Nigeria at one point, on purpose.
00:01:41.720 A couple of months into this journey, Kai walks into my office. He owns and runs a second-generation family business that works with newspapers—hundreds of them around the country. Every week, more or less, they send out a religious feature on the religion page of that paper; this app still runs Mother’s Day this year. But when they send it out—remember, this is 2000 and we’re just through the Y2K apocalypse—they send it out on CD-ROMs, their EPS and TIFF files. We hadn't even gotten to PDFs yet. They put it in an envelope and mailed it.
00:02:07.560 Kai's calendar looks something like this: every one of the 460-plus newspapers has a different publication number of days they want to get it in advance. So, he comes with this problem. We decide that we could do a better job of delivering this feature, so we signed a contract, built a proof of concept, and pulled out our handy tools of choice for web development—all air, ColdFusion and an open-source convention over configuration framework called Fusebox. Rails wasn't the first; people.
00:02:31.560 A few weeks later, we launched the production application. We started distributing those TIFF files and EPS images through email and launched a client download site along with an admin application, integrating it with his bespoke billing system, which was written in Microsoft Access. We really had succeeded! So why am I telling you this? We’re at a Ruby conference, right? So I’m talking about ColdFusion at a Ruby conference. Well, I’ve done the opposite too, so it balances out: I talked about Ruby a lot at ColdFusion conferences.
00:03:01.040 But I’m going to fast forward to the year 2005—five years forward. I am in Portland, at the O'Reilly Open Source Convention. I had just finished doing yet another one of my careers: I was teaching a class on data warehousing with MySQL. I see my friend Eric, who’s a prolific open-source contributor to Java—this was what he was contributing to in 2005. We are waiting in line at this trendy restaurant up in the Pearl District of Portland when someone notices Eric and says, "Hey Eric, come join us." Then the magic words, "We're billing dinner to the client who’s at dinner!"
00:03:37.680 Well, the guy who invited us over was James Duncan Davidson. Does that name mean anything to anybody here? Okay, yeah, enough people. He wrote little things like Tomcat, which was the server you used when you were deploying Java applications back in the day. Again, we’re in 2005. He wrote Ant, which was the original automation software. Now, he is Toby’s adviser at Shopify and a photographer, so he’s kind of gone full scope here.
00:04:01.680 Also at this table was a guy named Glenn Vanderburg, who was just like this titan of the free and open-source Java world. Glenn Vanderburg was there. Rich Kilmer was there. Rich Kilmer was one of the first people in this entire country to really do anything with Ruby, and he did it of all places at DARPA for the federal government. There are fascinating stories in there. But there’s this guy sitting at the table who some of you may have heard of: Dave Thomas. He founded a company called The Pragmatic Programmer; maybe you’ve seen them.
00:04:23.440 So what are they celebrating and billing the client for? Well, they are having a few drinks and they’re very excited because the two Davids had just gotten the first proofs of a book. This book had literally been delivered straight to them, so they had a copy of this book. "What’s Rails?" I ask. Let’s go back to what the Rails world looked like in 2005. You had a few broad choices for building web apps: you could use PHP, Perl, maybe a shell script through CGI. This was like complete and utter spaghetti, because you had a language, not a framework. Every team had to figure out everything from scratch. You had to come up with your routing conventions, how you were going to access data. Forget about having any good deployment tooling or secret management. Heck, even naming conventions were something you had arguments about.
00:04:56.000 Batteries were not included with anything. You always did everything from scratch; this was really hard. And even once you figured it out, you had to keep enforcing it across all of these developers as you scaled to have them all keep a green, not just in principle but in fact. And then you know, like you were done. You had your version of spaghetti that would somehow work for building web applications. You had one other option. At least one other option: you could let the collective assimilate you. Web Objects from Apple was an option, like one person chose at some time. Web Objects was $50,000 back in those days.
00:05:29.760 I kid you not! $50,000 for WebObjects. You could get Microsoft ASP for free with which meant you’re running Windows servers. Netscape had, wait for it, server-side JavaScript with LiveWire. It’s not a new thing; server-side JavaScript is an old thing. You could actually do JScript and ASP in 2000 if you were a person that did that. So server-side JavaScript’s not new. Macromedia had this thing called Spectra Tango. Anybody use Tango? Lasso with FileMaker Pro—so many options. But there was one other thought: you could do open-source Java.
00:06:00.120 This was a world many of us lived in. It was a world of pain and suffering. You opened the box and this is where you ended up. And who was looking at you? You had XML, you had object hierarchies, you had J2EE, you had server beans, you had JAR files and WAR files. This was not a world many of us wanted to live in. All of a sudden, there was one other person you could choose—this guy. Because of this announcement, I’ll let you spend a second reading it. This was the very first public announcement of Rails.
00:06:35.560 What did Rails look like? This was on July 25th. The 25th is a great numerical number in the Ruby on Rails world. This was about a year before that dinner. Rails was this: it was a gem called Rails, a gem called Action Pack for doing request and response, a gem called Active Record. None of them, by the way, had the same version number; they were just like random libraries that worked together. Random, but they worked together! So this is what we had. I knew what Rails was. What did I do with Rails?
00:07:13.679 My entire software development career at this point had been focused on getting databases onto the web as fast as possible. ColdFusion had been the best way to do that, no joke. But Rails changed the game. I was already using a convention over configuration framework, so I was pretty comfortable with the idea of Rails. But here are some of the things that were different. Rails, among many other things, was free as in beer. ColdFusion license was a thousand bucks, and $5,000 for ColdFusion Enterprise. IIS had its own costs. If you wanted to run J2EE servers, you were likely buying WebSphere from IBM.
00:07:43.760 This was not a world a lot of people in this room probably remember how it was, but it was a big deal. I was saving $1,000 to $5,000 per server per project by moving over to Rails. The numbers made sense. It was object-oriented instead of the spaghetti we were looking at a minute ago. It treated testing as a fundamental idea that was important, and it included Active Record, which solved the problem of mapping database records to objects.
00:08:10.600 And you’d think that’s not such a big deal, and you think, oh, Active Record’s not the best pattern. I vividly remember one company we paid for TopLink for Java. We paid a $50,000 a year license—again, a number that keeps popping up in this world—for basically Active Record, except in Java with J2EE and all that enterprise stuff. So things were really changing. In this world, I came back from OSCON and started to experiment with Rails. I got better at testing, learned Selenium, and just jumped straight in with it. I did a few applications.
00:08:46.960 Then I thought, you know, Kai’s application is only a few thousand lines of code. This is a big rewrite that could work. A few thousand lines was no big deal! So I had Selenium tests, so I could AB the web side of both of them: Rails and not Rails. By the fall of 2005, I had decided that this was something I could do. I shipped one of the apps, then I shipped two more of his apps because he had a couple of little side apps that we had built. By the end of 2005, the reverse of this was that I was teaching Ruby on Rails at ColdFusion conferences.
00:09:14.440 I didn’t get everything right, because I was also teaching classes on XML, XSLT, and XQuery, which are technologies if you’ve never heard of, it’s just as well; they died a death they should have. By 2006, I was leading workshops and giving conference presentations on testing tools and frameworks for web development. I had completely converted. This is what we started with when we were building the app: a Dell Latitude D600 that I pulled off of CNET's review from ancient, ancient times.
00:09:45.440 This was the world we lived in. You looked around a room like this at a conference; they were all Dells, HPs, a couple of folks had Gateways, and the corporate types had IBMs. You were running Windows, full stop. That’s what the development world looked like. Also, we had heavy laptops; the amount of time and weight were pretty much equivalent: 5-hour battery, 5 lbs of weight, 6-hour battery, 6 lbs of weight, and two batteries—10 lbs. I had an 11-lb laptop at one point, I kid you not! But batteries could burst into flames, so it was a different world.
00:10:20.240 In those days, you bought your editor one way or another. You bought it; you subscribed to an ecosystem like Microsoft Developer Network or Sun Java Developer Network or ColdFusion Partner Developer Network or Red Hat or whatever. You paid for your tools—I mean, what a world this was! Fancy people bought Dreamweaver or WebSphere Application Developer. People who loved tables bought NetObjects Fusion. Some of us used HomeSite, which was a beautiful tool that later Macromedia bought and turned into ColdFusion Studio because it was a great tool.
00:10:58.680 Early Mac users used BBEdit—1992 folks, BBEdit 1992! It's probably older than some of you all. And if you wanted a free editor and you were in Java, which probably meant both things, you used Eclipse. We used version control; swear to whoever you want to swear to—we would argue whether you needed version control even in 2005. I kid you not, for the web, we would have discussions about if you needed it. The difference between then and now is we could say, "And which tool do you choose?"
00:11:30.080 How many people have ever used something other than Git? Sorry, I should have said for version control! Of course, right? Yeah, right. There were a lot of choices back in those days, but Subversion was the one most people were moving towards. Subversion 1.2, which was the big release, came out in 2005. Again, a magical year; 2005, Git comes out, the first release—magical! You shipped on MySQL, full stop. PostgreSQL was hard to use; it didn’t run on Windows.
00:12:01.240 Remember, we’re in a Windows world. Running PostgreSQL 8 under Wine was not something you could do for web development, let alone for shipping. Many people used SQL Server, too; an entirely different discussion. MySQL, though, was what most people especially used when building web applications. Can you name the other database that was used a lot during the early 2000s?
00:12:30.200 Okay, those are all nice answers. This database was used everywhere. I kind of gave you the idea earlier: those are correct answers too—Oracle, DB2, Informix, all those other ones. And then when you wanted to deploy your app, you had to buy stuff to deploy it on physical hardware. We had an office with a Windows server and a T1 line, and then we moved the same box, like put it on a shelf in a Colo, and then later on we got this sexy little Cobalt box.
00:12:48.520 Which was sort of like a Plek device all put together with everything just working. They were beautiful! You could put—they were half-size, so you could put them front and back in racks; it had 42 slots, so you could put 84 of these in and run the cables down the middle. I didn’t have 84 of them; I had two, but it was really fun to be able to work with those. But that’s what the web looked like. We used all of that technology to build the new Railspace website; it looked like this.
00:13:19.919 That’s exactly the same as it was before, because everything that changed was on the inside. We shipped it on Rails 4, which was really a 10 release candidate. The way we deployed it usually was we checked it out from Subversion on the server. Any of you used Capistrano? Capistrano was kind of just doing how development happened in those days anyhow.
00:13:45.920 So how did things change really, for me, over those five years where I changed from ColdFusion to Rails? Between then and now, it’s been a lot of years. This Rails app is 24 years old, so the changes in the app are exactly the same changes you saw in the Ruby ecosystem. One of the biggest changes of all was developer experience. That was the single best thing about Rails. Well, it wasn’t the single best—I’m going to give you three; it’s one of the single best things about Rails. The early releases of Rails: I’m going to go through these quickly, but one thing that’s fascinating about this is the official documentation only goes back to 2.3.
00:14:32.960 I had to dig around in a surprisingly weird set of places, like the Wayback Machine, weird mailing lists, stuff to pull this. I’m skipping all the point releases leading up to rails, but we got Scriptaculous in the beginning! Oh my gosh! JSUI sugar for nothing—it took nothing to do this! Then we made Ajax easier, and then we got XML, which you might roll your eyes at, but we did a lot of XML back in those days. That let us integrate with Java applications.
00:15:02.320 We had polymorphic joins in ’06, and then Heroku launched. Heroku made dev hops easy, and your price was switching to PostgreSQL. That was like a watershed inflection point in the Rails world. Suddenly, after Heroku became kind of mainstream, you used PostgreSQL! All these Idiots who were using MySQL—why aren’t they using PostgreSQL? Well, the idiots using MySQL built their app before 2007 or not long thereafter.
00:15:24.679 Like the arguments about how to do controller methods became so much easier. We got UTF-8, which meant emoji; then the Mac suddenly includes Ruby on Rails as the default stack in Leopard. Now everybody starts to buy a Mac to replace those IBM and Dell Latitudes and all those things we get Action Pack, with all those controller things and convenience methods that you love. Then 2.2, I’m going to stop just a second to really call out JRuby.
00:15:47.800 JRuby was a game changer because what started this was talking with Java people about how cool Rails was at a dinner at O’Reilly, and a lot of them were Java people, not because they loved Java, but because they loved open source and building web applications quickly, easily with tools that were accessible. I could now build something in Rails, pack it up into a WAR file or a JAR file. They didn’t know if it was Rails or Ruby or anything like that; they just got a WAR file and put it on their web application server. It might as well have been Struts.
00:16:19.520 But there were people who were delivering applications like that so much cheaper because they built them in Rails instead of Struts, but you couldn’t tell the difference because it’s all running on the JVM. I get excited about that because it was quite an interesting time. ColdFusion started running on the JVM around then too, so it made everything really easy. Then we get to 2.3, which is the first one you’ll see on the release notes. We get Rack, engines, nested object forms—all of this leading up into Rails growing up with version three.
00:16:45.880 This is another whole talk in and of itself: the embedding of Rails. When the MV* folks and the Rails folks got together, Rails says they won, because it’s called Rails, but all of the innards that matter are MV*. Yehuda Katz kind of won that. I mean, Bundler! We had years of releases without Bundler, without unobtrusive JavaScript, without being able to chain Active Records. I mean, what were we doing? We were living like animals!
00:17:10.560 Then we got the asset pipeline and CoffeeScript. As much as you hate that today, it was just so much easier as a developer to be able to do these things. We got faster dev mode, Ruby 2.0, we’re starting to grow up with security and performance. We’re then making it easier for developers with spring and secrets, and we start to say, oh, maybe there’s this thing called mobile we should care about when we added Action Pack variants.
00:17:32.760 So you could do that easier. Then Tinder love drops Active Record! You couldn’t complain anymore that Rails was inadequate, because now it was adequate. It wasn’t great, but other things were faster; but it was adequate. And that’s a fantastic talk if you dig that one up! We got Active Job, Web Console. How have we had these things for so long? That’s 2014; and now we get into rocket ship mode!
00:18:04.280 We got Action Cable, Rails API; everything’s Rails now! Yarn and Webpack, we take out jQuery—some of us do. System tests, we got encrypted secrets. We’ve got Active Storage, we’ve got all these things, CSP, and HTTP/2. Developers didn’t care about that until they started deploying. We’re starting to get more grown up; we’re starting to do things that matter on the server. We get Action Mailbox and Action Text, which are crazy fun.
00:18:37.760 We got parallel tests, then we start getting so many cool contributions, finally from some of the big dogs. We got multi-B improvements! Oh my gosh! You didn’t have to use Octopus or at least Octopus now was official in Rails or some version of it. You got delegated types—which meant ColdFusion, which meant computer science people were happy—and then Ruby 3.0. You got Ruby 3.0 and it worked, and import maps. We took out spring because we don’t need it anymore. And oh my gosh! Hotwire! Again, the world kept getting better for developers.
00:19:04.240 Now, we’ve got Dockerfiles and composite keys, and buns, and again, Trilogy! Oh my gosh! I use MySQL in my day-to-day life! I’m so excited we have a Trilogy person here! We can use that! That’s the MySQL driver that doesn’t require all the MySQL-like CEL stuff. It’s just great if you’re trying to ship stuff. Wow, that was a talk in and of itself! I’m going to take a deep breath and talk about how else things changed. This one’s relevant to everybody here.
00:19:50.760 Community. I’ll be honest: the ColdFusion world had an amazing community. It truly did! It was quirky; there was excitement, there was crazy! There was also a really cool open-source Java community. OSCON had a lot of that. And then there was this traveling circus, sorry, traveling conference called “No Fluff Just Stuff” that, in the course of a year, all of those presenters went from talking about Java to talking about Rails. Suddenly it became this mobile Rails conference! It was amazing to see that transition of people. Glenn was part of that; I think Neil Ford would speak there.
00:20:37.960 There were times when Uncle Bob would speak there, Robert Martin. Many of these folks saw those talks by DHH back in the day. They moved over to Ruby, and then why? What happened? If you have not read the “Poignant Guide to Ruby,” just leave now! You’ve got permission just to leave now; go out there and get the Poignant Guide to Ruby. If you’ve read that, then read Closure, which is kind of like the follow-up that Steve Klabnik put together.
00:21:06.519 There’s just no way to explain why; other than say, kind of like Tinder love, but just like even stranger and crazier and more wonderful! So if you know Tinder love, you know what I’m talking about. If you don’t know what either of them is talking about, you’re really missing out! Be careful Googling Tinder love; make sure you put Ruby on there! We had people like Zed Shaw screaming at you he was going to kill you if you didn’t learn statistics.
00:21:29.680 We had Giles Bowkett doing crazy things with, I think you say “Archeopter,” which was his music composition algorithmic insanity concert thing he’d do at regional conferences. You had all sorts of people: we’ve mentioned some of them—Ryan Biggs with Rails Casts. We had Obi Grim, who got mentioned earlier. We had the three Saras of Rails: Sarah May, Sarah Gray, and Sarah Allen. We had Katrina Owen talking about therapeutically refactoring. We had Eileen. We had Tinder love! We had all of these people.
00:22:01.600 And if you don’t know who they are, you should start Googling around and finding something about your community; that community generated this. Conferences, unfortunately, Ruby conferences, the website only goes back to 2014. Ruby conferences go back a fair bit more than that. I think it’s fun that the screenshot yesterday had this one in Ruby for Good, which is another one I love, scheduled at the same time! I’m really sorry I’m missing it; Sean’s good people. All of these conferences needed people.
00:22:39.920 The way you got people was boot camps, right? So a lot of people—anybody here boot camping? Boot camping? Yeah! I worked with a lot of boot camps! I think there are some great things about boot camps. Boot camps started in 2012, believe it or not. They started this kind of boot camp, at least, with Hungry Academy at Living Social in DC because they had bought up all of the small Rails consultancies and they couldn’t buy up anymore, so they needed to build Rails developers. They had Jeff Casimir, who now runs the Turing School, come out and build something different.
00:23:08.680 Then they paid you to go to school! They got a lot of qualified applicants. They paid the equivalent of like $35,000 a year while you were in school, which was not a whole year. Then they put you straight into a job at Living Social! It was amazing! So there went another whole talk. So that’s at least two of my talks! What did the app look like after all this? After boot camps, after community, after developer experience?
00:23:43.280 Well, I was on a Mac now, and that’s true today. It’s on Ruby 3.2 with Rails 7.1. It’s still enhanced by jQuery. It still uses MySQL, MySQL 8, but it still uses MySQL. We upgraded to NGINX and Passenger, and it’s on what was SliceHost and now Liquid Web, and now it’s on Ubuntu LTS.
00:24:07.800 What’s it look like? You know what I’m going to say: it looks like this! Kai could care less about what it looks like because it’s such a small group that uses it, and they’re using it as a tool to solve a problem. So where are we going? By the way, that was a Rails Cast layout, if memory serves.
00:24:28.680 So I didn’t even like really do that layout; I think that was from one of the early Rails casts. So yeah, so community for the win! So where are we going? I mean, I’m sure I’m going to be developing on something like that, right? And it’s going to be a Linux box. I’m probably going to use VS Code with vision goggles, and we’re going to be on Ruby 3.3 and we’re going to be on Rails 8 or 7.2, whatever it gets decided to call it. Because I keep hearing both, even at RailsConf.
00:25:04.960 Eventually, it’ll be on Rails 8. It’s still going to be backed by MySQL; I have no doubt. Maybe we’re going to try Thruster and Caddy; maybe you all are trying some of those things as alternatives. And it’s probably still going to be on a Linux box, because all of these things just work, right? The developer experience gains, the community gains, all of the things give me this wide range of choices, and I can do like Larry Wall and choose to be as lazy as I want to be for this, as long as I solve the problem.
00:25:43.760 So, I am pretty sure that tomorrow it’s going to look like that. So anyhow, some takeaways: the single most important thing after 24 years of running this app—and I want you to all remember this as you build new companies, in particular—you don’t change the database platform. No one ever changes the database platform unless it’s—and then people take back to real databases, I’m sorry, people. But that’s how it works!
00:26:45.280 So the app started in MySQL; it’s still MySQL. The only thing that MySQL ever failed miserably at was modern emoji. Thanks for screwing that up with UTF-8 not being UTF-8. Three bytes are not four bytes, MySQL. And the other problem is Oracle owns it, but thankfully we’ve got MariaDB. And you know, we still have a lot of people on MySQL: Shopify, Basecamp, GitHub.
00:27:17.320 My guy, the database doesn’t change! None of them change, swear to God. In March, I helped his IT person install the 64-bit ODBC driver on his Windows 11 Pro laptop so he could connect his billing app back to it! I swear to God, still the same. How many times have I said, maybe we should do this through Stripe and simplify your thing? Lots of times! But here we are anyhow.
00:28:02.960 So quick takeaways, because I know I’m running out of time! I want you to remember, especially you experienced developers, the pendulum is swinging back and forth always with this stuff. There are winners and losers, but broad shapes keep reemerging! I mean, in my lifetime, in all of your lifetimes, we’ve gone from local development to cloud development, and it’s swinging back local.
00:28:39.680 DHH was like, why do we do CI or CD on the server anymore? Let’s just do it on our local laptops! Right? The pendulum is swinging—in the beginning at NCSA, back in the early 90s and mid-90s, all there was was open source! You didn’t even have any options other than open source! And then it became commercial and closed—Microsoft, Netscape! I mean, you used to pay for browsers, people! You paid for a browser.
00:29:04.800 I mean, you still pay; it’s just a different kind of pay! And now, open is how the world works. There used to be a little JS sugar, like with Scriptaculous, JS ruled all—”all hails JS.” Now with our giant frameworks, we’re thinking maybe progressive enhancement with a little sugar is the way to go, particularly in the Rails world.
00:29:31.360 Nothing against our React people! And we went from what the heck’s mobile to it must be native mobile, to now we’re like, well, maybe both have a place. The pendulum swings—it doesn’t swing all the way back all the time, but it’s swinging back and forth, right? And one of our goals as developers is to often find the middle.
00:30:01.440 I want you to know there are evergreen skills you’ll learn as one kind of developer that might be useful somewhere else. I mean, you know, my Fortran programming on KAY Supercomputers for quantum mechanical matrix decomposition; you wouldn’t think that would directly relate to this but I learned Vim. That’s the one thing I learned—actually, I learned VI, because Vim hadn’t improved yet in the late 90s. I was a Visual Basic developer.
00:30:34.800 I’d been a DBA—literally my job title has been DBA. But now somehow I’m a Rails developer. Well, I’m director of engineering, but I’m a Rails developer. Some of the things you use are going to be useful longer than you think. MVC has been most of my career. SQL has been most of my career. HTML is still broadly the same; if you squint at it, HTML from eons ago and HTML from now looks the same.
00:31:36.080 Because my app is HTML from eons ago. Some of the original jQuery still in there still runs. There’s Bootstrap 3 in there still runs. If you squint at this stuff, a lot of times it ends up looking the same. And I hate to really really sort of be so self-aggrandizing, but neural nets—all that like all the sexiness—1989! I was doing neural nets in 1989! I have a research paper somewhere from doing that! I mean, it was really hard—it took a long time to do those calculations. We only did like three-layer backpropagation neural networks, I did that in Visual Basic when it didn’t have a number, believe it or not!
00:32:27.440 So stuff isn’t new; that’s what I want you to take away from this bit. There’s evergreen skills you learn. Some of them you throw away, like all of my CoffeeScript knowledge. I literally threw books away! I really threw away books. I was so happy to throw away those books. Throw away a book on Jenkins! Lots of books I like to throw away from the past. But a lot of these skills are evergreen.
00:33:02.320 And then, despite what seems like constant change—you come into this conference hearing people telling you all the things that are new that you should be looking at, or especially at RailsConf, or a RubyConf, or OSCON or something like that—the broad strokes are the same. Most of us steer towards the center of that river! A lot of us are t-shaped: we look wide, but we go deep, right? You know, I’m pretty deep in Rails.
00:33:24.760 I was pretty deep in databases at one point; at one point I knew a whole lot of quantum mechanics and now I don’t know any of it except out at the edge. But that’s how we end up thriving over our careers: by taking a look back and seeing those skills that we have that are useful—even if they didn’t seem useful at the time.
00:33:46.840 At Rails World this past fall in Amsterdam, DHH was talking about the Renaissance developer. The one developer who can build an entire application on their own—that developer is sort of a callback to the origins of Rails: one person can do this all! I like to think I’m one of those developers. I’m definitely old enough to be a Renaissance web developer, but I think most of you are that kind of developer too!
00:34:03.440 We all, each of us, are part of this small quirky community, and we’re all one developer able to build and maintain an entire app today, tomorrow, and for the next 20 years. So with that said, thanks! Thanks for letting me run through that so quickly! I want to thank the team for putting this together; I’m so excited to have another East Coast RailsConf! There are RubyConf, RailsConf conferences—they’re all wonderful.
00:34:44.480 And taking a shot—I haven’t done a conference talk in about 10 years! I took a time. I used to do them all the time; it took some time off and it’s a lot easier when you don’t have to do a conference talk! You can go out to lunch with people, which I didn’t do because I was getting ready for this!
00:35:05.440 But thanks! Thanks for 20 years of Ruby commits—for Ruby changes! Can I just ask, who has a commit to Ruby in here? I mean, that’s like a non-trivial number, right? I bet a lot more of you have commits to gems that people use and more importantly, you all are solving people’s problems! Right? We were talking about that in talks earlier this morning.
00:35:29.880 You were solving part of the goal of this is to solve people’s problems. Kai’s app was not fancy; Kai’s app was not exciting. Kai wanted a tool to solve a problem he had—he didn’t want to keep putting those CDs in envelopes and shipping them out every week to people. We solved that, and we’ve solved that for 24 years; you know, that’s pretty amazing.
00:35:52.320 And every year, I think he’s going to retire, and every year he doesn’t! But here we are. Anyhow, thanks! That’s me! That’s a little more about me. It’s not hard to find someone named Ashenfelter. I’m not Orly Ashenfelter; he’s the economist at Princeton. I’m the other Ashenfelter!
00:36:08.720 So I’ll leave it there. If you care about the craziness: I built this with Marp, there are some photos from Unsplash that are mixed in there. I’m going to finally shut up and let you all get on with stuff. Stu, please feel free to grab me over beer in the hallway. I can tell some great stories about Rails because I know a lot of people in this world and a lot of things that have happened.