00:00:23.199
Good afternoon! I'd like to get started if I think everybody's ready.
00:00:28.840
Thank you for joining me this afternoon. I'm excited to be here and appreciate you choosing this talk.
00:00:34.160
It has been ten years since the first public release of Rails, which is a great opportunity to look back and reflect on its journey.
00:00:40.640
We can consider where Rails has come from, where it might be heading, and what the future holds for us.
00:00:47.280
I've been thinking a lot about the early days of Rails recently because the company I work for, Swiftype, makes site search software. I use my own website for testing.
00:00:58.480
I index my site and perform searches on it, often searching for 'Rails' since I lack creativity and need to test something.
00:01:10.400
In doing this, I found some old blog posts I wrote in early 2005 when I first discovered Rails, and it was fascinating to read my past thoughts.
00:01:23.280
Back then, I was working as a Java developer and had a keen interest in Python. Rails, however, was neither of those languages.
00:01:29.680
I was quite skeptical of Rails; though I was impressed, I wasn't sure it was worth learning Ruby.
00:01:42.880
I thought I would wait and see if the Python community could catch up, but that never really happened.
00:01:55.439
After a few months of waiting, I dove into Rails and began learning Ruby so I could use it.
00:02:08.239
That fall, I heard about a new group starting in my hometown—the Ruby Users of Minnesota. I attended the first meeting, where there were twelve people excitedly talking about Ruby and Rails.
00:02:21.040
At that moment, I became a part of the Ruby community and have not looked back since.
00:02:26.640
I have now been working with Rails professionally for about eight years.
00:02:31.680
This experience reminded me of a book I once read called 'Looking Backward' by Edward Bellamy.
00:02:36.959
The book, written in the late 1800s, is about a rich upper-class man who is hypnotized and falls asleep for over a hundred years.
00:02:42.959
When he wakes up, he finds that everything has changed—America is now a socialist utopia.
00:02:48.319
He was quite comfortable before with his wealth and servants, but now everyone is equal. This new order makes him skeptical.
00:03:01.040
However, as he learns about the new way of living, he becomes convinced that it is indeed a better way.
00:03:12.560
This situation made me think of my own experience, where I was once skeptical of Rails but eventually became a believer.
00:03:24.560
Today, I'd like to discuss what a programmer from 2004 would think if they could time travel to our web development utopia of 2014.
00:03:36.159
I want to look back at web development in 2004, jump forward to today, and finally consider what the future holds for Rails.
00:03:49.680
Let's start by talking about what web development was like in 2004.
00:04:02.400
To set the stage, I see a lot of Macbooks here today, but there were no Macbooks back then.
00:04:08.959
In 2004, the top-of-the-line Apple laptop was the Power Mac G4. Apple's presence in the web development community was not what it is today.
00:04:28.560
I used Linux at work and Windows at home. The hottest phone was the Motorola Razr, demonstrating just how different things were back then.
00:04:54.560
I was working as a Java developer, thrilled to be in a hot language shortly after graduation during a tough job market. My work involved using raw Java servlets and hand-coded JDBC queries, making web development quite painful.
00:05:26.960
At that time, Java's web development cycle was slow, with an edit-compile-deploy-debug loop that required restarts of our app server, which added considerable wait times.
00:05:40.080
Writing raw servlets felt like using a raw CGI library—very low-level. Java's verbosity made it cumbersome to work with compared to more agile scripting languages.
00:06:04.720
I had to edit my servlet, write XML configuration files for mapping, compile everything, and restart the app server, which made the whole process frustratingly long.
00:06:30.240
JavaServer Pages (JSP) added to the complexity. When errors occurred, the unhelpful stack traces made debugging nearly impossible.
00:06:50.080
The cumbersome nature of Java web development in 2004 was challenging. However, during that time, there were signs that a better approach was on the horizon.
00:07:08.880
Early innovations like Microsoft's Outlook Web App introduced the power of the web as a platform, paving the way for AJAX without requiring browser plugins.
00:07:36.399
In 2004, I was looking for something better, inspired by the book 'The Pragmatic Programmer' by Dave Thomas and Andy Hunt.
00:07:57.680
The book emphasized the importance of scripting languages for small tasks, which made me seek out a better programming solution.
00:08:21.760
In the early 2000s, I explored various books on scripting languages at bookstores. I was left disappointed with Perl and intrigued by Python.
00:08:31.680
But when I saw Ruby, it didn't look appealing to me at first, and so I committed to becoming a Python programmer.
00:08:43.760
Over time, I found myself writing useful Python scripts for various tasks, but deep down, I yearned to create web applications.
00:09:01.040
But every time I tried to conceptualize a web app using Python, I was frustrated with the lack of straightforward frameworks at the time.
00:09:25.440
But little did I know that something better was on the way.
00:09:38.960
Let's explore 2014 and consider what a programmer from 2004 would think about today's work environment.
00:09:51.760
If we could transport someone from that era to now, they would be amazed at how far we've come—it truly is a great time to be a programmer.
00:10:06.240
Today, everyone carries a powerful computer in their pocket, far superior to the desktops of 2004.
00:10:17.600
It includes a better web browser too. In 2004, AJAX was still in its infancy; the term hadn’t even been coined.
00:10:32.799
Now, rich AJAX frameworks come as standard with every web application framework, enabling us to build interactive applications much more easily.
00:11:09.360
The power of web browsers has increased immeasurably, and deployment has become significantly easier.
00:11:20.880
In 2004, figuring out how to host your app was a challenge—colocation was costly, and shared hosting options like Dreamhost had serious limitations.
00:11:43.200
In contrast, today you can spin up a server with just a click, allowing for self-management through platforms like EC2 or services like Heroku.
00:12:05.760
This shift is advantageous for programmers, meaning you don’t have to be both a great programmer and a systems administrator to launch an application.
00:12:14.800
Moreover, we have access to a multitude of web service APIs, making it easy to extend application functionality with just a simple HTTP request.
00:12:32.880
This includes everything from search capabilities, provided by companies like mine, to payments via Stripe and telephony through Twilio.
00:12:58.080
The best part is that we now use JSON instead of XML, eliminating the cumbersome XML setups of the early 2000s.
00:13:15.840
Now, turning to Rails: what would a programmer from 2004 think of Ruby on Rails?
00:13:26.640
If you could tell someone from that time that, in ten years, Ruby on Rails would be the best way to create web apps, they might be shocked.
00:13:45.280
In 2004, the Ruby community was quite marginal; when David first demoed Rails at RubyConf, there may have been only 60 people present.
00:14:01.839
Today, dozens of conferences occur worldwide, and thousands of professionals thrive using Ruby and Rails.
00:14:14.560
The features of Rails played a crucial role in its success, particularly compared to my experiences with Java.
00:14:32.640
With Rails, live reloading was a game changer. In Java, the long cycles made the process tedious.
00:14:47.360
In Rails, you could modify a model, a view, or even the database schema, refresh your browser, and see changes instantly.
00:15:01.520
When there was an error in the view, you could easily identify the line of code that caused it, unlike the massive stack traces in Java.
00:15:13.120
The development console in Rails was another major productivity boost. You could type a command to access your entire codebase.
00:15:27.200
This feature allowed me to explore APIs practically, something I struggled to achieve in the Java environment.
00:15:45.760
Rails also came with distinct environments—development, production, and test—allowing for separate databases and configurations, adding to software engineering discipline.
00:16:05.440
Finally, active record and migrations stood out. Active record intuitively understood database fields without writing SQL.
00:16:20.320
Migrations allowed seamless transition states, vastly superior to manually written SQL statements tied to application versions.
00:16:36.880
But why did Rails stand out? It wasn't just its features but how well they were integrated and accessible.
00:16:54.400
Rails offered a complete package, unifying what was possible and making it easy for developers to adopt best practices seamlessly.
00:17:08.560
The triumph of hype also played a significant role in Rails' success. Early blog posts about Rails stirred excitement in the Java and Python communities.
00:17:26.080
David himself promoted Rails relentlessly, participating in discussions, arguments, and blogging about its potential.
00:17:42.800
The Rails community was highly enthusiastic in sharing their love for the framework, which is crucial for adoption.
00:17:54.080
Lastly, the triumph of community contributed to Rails' success. Early crafting of plugins enabled users to extend functionality.
00:18:08.720
This made Rails an attractive choice, knowing you could build commonly needed features without starting from scratch.
00:18:22.800
Ultimately, Rails flourished. However, what lies ahead? Rails faces challenges as the web continues to evolve.
00:18:36.720
The future of the web is uncertain, especially as browsers become more powerful, and developers increasingly create front-end heavy applications.
00:18:49.760
For these projects, the traditional Rails approach of generating HTML might not be necessary.
00:19:01.360
When building entirely in JavaScript, the need for Rails could be questioned, leading developers to consider alternatives like Node.js.
00:19:14.560
Similarly, with the rise of mobile apps offering richer user interactions, there may be hesitation to rely on Rails for web applications.
00:19:28.720
Nevertheless, it’s crucial to remember that Rails is excellent at managing API requests; in fact, our company serves millions monthly using Rails.
00:19:43.680
Rails allows you to pick the parts you need, making it an adaptable tool for many types of applications.
00:19:56.960
Also, even in an API-focused world, backend management consoles will continue to be essential.
00:20:07.120
Most applications need some administrative interface—this is an area where Rails still excels.
00:20:22.080
Moreover, even if some changes in the web landscape challenge Rails, its legacy will persist.
00:20:35.520
The principles of simplifying processes, making complex tasks manageable, have inspired many, regardless of programming languages.
00:20:49.760
Many developers will seek to incorporate these lessons into future projects.
00:21:16.480
The reaction against Rails also plays a role in its legacy, as frameworks like Django emerged around the same time.
00:21:30.720
Django was not directly inspired by Rails but shares many similarities and has had a significant impact.
00:21:46.080
While Rails promotes convention over configuration, Django adheres to a philosophy of explicitness, fostering clarity.
00:22:01.760
Teaching Rails can sometimes be challenging because of its conventions, which may confuse newcomers.
00:22:20.080
The second noteworthy reaction against Rails has been the rise of micro-frameworks, like Sinatra.
00:22:36.160
Sinatra's simplicity allows developers to embed functionality with minimal code, representing a beautiful approach to web applications.
00:22:52.560
However, when projects grow, developers often find themselves pulling in Rails features, experiencing its full power.
00:23:09.360
Many popular languages have embraced the micro-framework trend, yet transitioning to a robust framework like Rails may not be an option.
00:23:20.480
Despite this, Rails has the potential to adapt and evolve, just as it did after introducing REST.
00:23:37.760
I believe that Rails will adjust to meet the needs of modern applications, whether for JavaScript or mobile.
00:23:54.720
We've examined programming in 2004, discussed the winning features of Rails, and considered the possible future. Reflecting on Edward Bellamy's impactful work, we see parallels in programming. While Bellamy's utopia challenged norms, DHH's frustration led him to build a transformative tool. We're here today thanks to the Rails community and its evolutionary journey, a testament to how programming can refashion our realities. Though most of us might not create the next great framework, we can embrace Rails’ lessons and strive to simplify and communicate effectively in our own endeavors. Thank you.
00:34:03.360
Thank you!