RubyConf Taiwan 2023

The Forgotten Web

#rubyconftw 2023

The Forgotten Web

Is Rails still a good choice in 2023? For a new project at work? For a side hustle? How about for someone just looking to get into web development? How does it stack up against "modern" frameworks?

In this presentation we explore the ancient history of web development, discuss the perils of "the modern web application", highlight a brewing generational conflict, and examine how Rails' connection to the past puts it in a unique position to project itself into the future.

RubyConf Taiwan 2023

00:00:28.960 Welcome back! Our next speaker is Ted Johansson from Sweden. He will talk about 'The Forgotten Web.'
00:00:46.399 Thank you all for coming. If this presentation brings you some insight, then this is the presentation for you. If you have no idea what's going on, then this is also for you.
00:00:51.559 Before we start, I need to mention that there was a problem with my presentation. The first paragraph was originally meant to say that I'm pretty old, but yesterday Mats used those exact words in his presentation. Since Mats is a well-respected figure, I thought it would be disrespectful to say the same thing. So, I've changed my script slightly. I’ll say that I’m a bit older than most, which I mean in the context of my peers in development.
00:01:12.280 For reference, I am currently twice as old as I was when I became a developer, and about three times as old as I was when I created my first web application. I don’t even remember what it looked like, but it was back in 1996. I chose web development because it was the most accessible field at the time. By 1996 standards, I was using IDEs that were very rudimentary; I was working on Windows and jQuery had not yet been released.
00:01:39.040 It’s funny because today, if you come across jQuery, it’s more like an archaeological find than a contemporary tool. Back then, there were no developer tools, no console logs, no messages in the browser. My method of debugging was primitive; I used the alert feature to open a window. It was my version of debugging, and in a way, I still rely on this manual debugging today.
00:02:05.640 Yes, I do feel old. Yesterday, I was experimenting with a web app, and by 'experimenting,' I mean I was struggling quite a bit, so be prepared for some of that in this presentation as well. Aside from my age, I haven’t shared much about myself yet. My name is Ted. You can find me online as 'Ted Jah' or 'TedJah.' I was born in Sweden, but I've spent half my life living in other countries.
00:02:31.480 I currently reside in Singapore with my wife and our cat, who has several names, including Toin, Booger, H. Doby, and perhaps most relevant for today, Longbow. Longbow is something you should definitely try while you're here.
00:03:02.239 I work at Discourse, a platform that supports open forum software for communities. Sometimes, we hire people like me and we also hire other talent. So, if you’re interested, keep an eye on our job postings on the website. However, the best way to get noticed is to contribute to the discourse and support our repository.
00:03:36.480 Now, back to the presentation. I’ll turn the volume down a bit so we won’t get too distracted. I believe if this presentation had a subtitle, it could be called 'A Case Against the Modern Web.' This term has become very popular, but it’s never really clear what it means. From what I gather, it tends to tell us more about how the application was built rather than any specific capabilities.
00:03:59.880 This definition is problematic because it describes what something isn't rather than what it can do. Calling it 'modern' carries negative connotations. This discussion is not purely a case against something; it's also about presenting a case for something else, perhaps what we could call the 'Honest Web.' For this presentation, I have a thesis summarized in three points.
00:04:43.320 Firstly, we’ve been developing for a long time, and much of the progress we’ve made hasn’t happened in recent memory. There’s a rich history in web development. Knowing that history is beneficial; it’s not controversial, especially concerning the history of our own work—and there is a generational gap, too.
00:05:06.500 While I may be older, people starting in web development now generally lack that historical context. I've certainly noticed this knowledge gap when trying to communicate with them, which requires an understanding of that history. In closing, during this preconference session, I’ll argue that Ruby and Rails—or any Ruby framework—are excellent choices given the current state of development.
00:05:30.120 Let’s reflect on the history of web development. I will break it down into three categories: people, technology, and economics. These categories are interconnected, but I’ll address them in three separate parts. With only 40 minutes, I figure if I can create a mini-test in that time, I should be able to click through this slide deck at a reasonable pace.
00:05:56.000 I’ve compiled some broad themes that suggest Ruby and Rails are a safe bet for the foreseeable future. The last time I checked, I had accumulated 69 slides for this presentation, and I hope to cover them all today. In fact, this morning, I went through the slides and made sure they’re all up to date. So, make sure you're well-seated and strapped in because we’re going to move fairly quickly.
00:06:16.480 Let’s start with the first category: people. I want this to be a people-first presentation, focusing especially on the job titles we've had throughout web development history. We can start with the most ancient and revered title: Web Master. Some of you may have worked as Web Masters yourselves.
00:06:32.960 Back in 1999, I had just started my first job at a local company providing legal services for incorporation. The current Web Master was going on leave, and I was the only person in the company who knew anything about computers. My job involved maintaining and updating the company website, developing their in-house case management system, and providing general IT support.
00:06:51.760 I was essentially in charge of content architecture, design, and support—which included answering the phone, by the way. That’s not something we do anymore! I also handled system administration, which basically meant operating the server and installing it in a makeshift server room, which was essentially a closet with a fire extinguisher inside.
00:07:10.240 When I think back to that role, I realize how extensive my job scope was, especially for someone my age. At 19, I was getting paid quite a bargain wage, but despite the low pay, it was one of the most varied jobs I’ve had. Everything I did had a real impact on people’s lives. I was a key player, even in a small company context, and it was quite a formative experience that I would summarize as 'honest work.'
00:07:46.720 In my role, since I was the only person on the team, I couldn’t slack off or pretend to work; I had to get things done. There's something significant about doing valuable work for people. The tech landscape has changed significantly since then, but we must keep creating and continue to communicate effectively.
00:08:06.200 To be a Web Master back in the day, one had to know a variety of skills and be willing to learn constantly. There was a lack of information on the internet, which sounds unimaginable now. To figure things out, you often had to go it alone without supervision. Self-motivation was crucial in that era.
00:08:25.120 The essential qualification was a deep interest in technology. All of this change happened after the era of Web Masters, as demographics shifted and new players emerged in the field. Many of us shifted from being labeled 'Web Masters' to 'Web Engineers' as we transitioned from in-house support to working with agencies.
00:08:43.679 Many of those working in these new agencies had backgrounds in design, leading to a renewed focus on the aesthetic aspects of web development. This shift brought a lot of good changes; we started focusing more on user experience and accessibility. Gone were the days of telling users they had to use a specific screen resolution to view a site.
00:09:03.480 We transitioned from a mindset of graceful degradation to embracing progressive enhancement and responsiveness. Progressive enhancement became a foundational principle in modern development practices. This innovative thinking has deep connections with framework principles that are used in Ruby on Rails today.
00:09:22.080 Simultaneously, the approach to HTML began to emphasize semantics—meaning we aimed to ensure that the HTML described the content accurately. We started adhering to best practices and guidelines, which became standard in the industry. I remember a significant period where notable developers made their mark, but this era also sowed seeds of conflict.
00:09:42.760 The gap between developers and designers broadened, leading to inefficiencies as roles became more defined and divided. At Discourse, I often mediate conflicts between designers and developers, as each group believes the other fails to appreciate the realities of their work and the solutions they propose.
00:10:06.240 Despite these conflicts, I believe both groups are right in their own way. The development medium shapes the design, and both must adapt to these constraints to create effective solutions.
00:10:28.640 The evolution of web technology further complicated our collaboration. Many modern design tools come with legacies of the early web, where concepts such as layers and typographic design were prevalent, whereas we now have shifted our dialogue to focus on schema elements and data models.
00:10:46.200 With all of this development, we have grown increasingly specialized. While specialization can free us to excel in specific fields, it also introduces communication overhead and complexity, posing challenges in working collaboratively.
00:11:07.560 If my responsibilities are split among five different roles, each area becomes complex. However, if I narrow it down to one role and perfect it, I can improve efficiency in that sphere. This shift in perspective helps us understand why younger developers may struggle to grasp how stack developers of the past handled both front-end and back-end tasks.
00:11:30.680 Some younger developers believe full-stack development is a myth, as they perceive their colleagues struggling with convoluted front-end frameworks that consume all their time. However, I find that developers are generally more passionate about what they can create than merely the obstacles they face.
00:12:02.560 As developers dive deeper into their work, they tend to dream of sophisticated solutions—like single-page applications on the front end and microservices on the back end. However, we must critically consider whether these are genuinely solutions to our current problems or merely strategies for issues encountered by larger corporations.
00:12:22.640 The prevalent excitement around these new technologies doesn’t always equate to appropriateness for our scenarios. To summarize this dysfunction, we can argue that fragmentation leads to isolation, which in turn breeds inefficiency.
00:12:43.200 While complexity can be an enemy, not all complexities are bad. If you have a genuine need for a solution, it becomes necessary to consider its implications each time you encounter it.
00:13:01.280 Now, turning to technology, I'd love to discuss the ancient technologies we used, like Flash and other obscure techniques that were once the cutting edge. However, instead of delving into nostalgia, let's focus on how far we've evolved from the early layout techniques utilizing tables, which were prevalent before CSS.
00:13:32.640 Before CSS, we relied on tables for layout, requiring images to achieve rounded corners and other desired aesthetics. CSS eventually emerged, allowing for a more semantic approach to design, though it was notoriously difficult to master, often requiring numerous fixes in markup to achieve desired results. The rise of CSS was a critical turning point in dev culture.
00:14:16.640 So, how did modern techniques come about? We pushed against constraints inherent in web development, and this led to many creative solutions. Unfortunately, many newcomers to web development don’t appreciate how much progress has been made.
00:14:37.840 Today, we have modern layout techniques like flexbox and CSS grid that simplify what used to take hours or even days of tedious work. This evolution has been incredible, yet we must recognize the many years of struggle that paved the way for such developments—struggles that went beyond simple convenience.
00:15:00.480 HTML has also evolved significantly over the years. We started with outdated tags like <center> and <font>, which are now obsolete, replaced by more semantic elements like <article>. We’re no longer reliant on Flash for video playback, which speaks to how far we have come in delivering media-rich experiences.
00:15:44.560 One interesting aspect of modern technology is the role XML has played in shaping APIs in the early days. The term Ajax, for instance, reflects a combination of technologies that is often misunderstood today; its reliance on various elements evokes an overly complicated history that new developers may not fully grasp.
00:16:21.800 The landscape continues to improve rapidly—a fortunate situation we’re all a part of today. All parties, from clients to vendors, benefit from this progress; in contrast, the Ruby community remains dedicated to maintaining a model that empowers development while keeping the technology moving forward.
00:16:52.640 This leads to a final thought on community. As we heard yesterday, the Ruby community is one of the most precious resources we have. It's a community that prioritizes communication, bridging gaps through technical discussions.
00:17:17.520 In contrast, the JavaScript community has often struggled with its identity, fragmented by various frameworks. Too frequently, we find ourselves solving complications that arise from poor design choices instead of addressing the fundamental needs of development.
00:17:41.200 This leads to my main point regarding frameworks; if you need one, utilize it, but understand the consequences of overly relying on them. Too often, we design solutions that respond to challenges caused by prior design decisions. This can create a closed loop where the community struggles to innovate.
00:18:04.960 One critical aspect to keep in mind is the importance of historical context in avoiding pitfalls. Many ideas seem to reemerge in fashion despite previously being regarded as failures. Observing the cycles of industry might provide insights into making informed decisions moving forward.
00:18:25.600 As we navigate the evolution of web technologies, we’re also confronted with the limitations of our own frameworks. Many of the tools and practices we currently employ are evolving and transitioning.
00:18:46.880 Ultimately, it’s crucial to stay aware of our changing environment. The economy is cyclical, and these fluctuations affect our development practices. As we look at the evolution within technology, we also see transformations in the economic landscape surrounding our industry.
00:19:12.960 The lengthy patterns illustrate the increasing demand for transparency and honesty within the tech space. While we have enjoyed great growth during prosperous times, we must be prepared for challenging economic shifts that require genuine solutions.
00:19:36.799 To conclude, I emphasize that we have a wonderful opportunity to learn from our past and apply that knowledge towards a more stable future. It’s essential to embrace change, adapt, and build upon the honest foundations that Ruby and Rails provide. By doing so, we can foster innovation while nurturing community and collaboration.
00:20:03.119 It's essential to go beyond just technology, examining the diverse roles we play and how they intertwine with economic factors. We must remember that the industry progresses not only through engineering advancements but through authentic work—a creative endeavor that centers on solving real problems.
00:20:25.720 As web developers moving forward, we have a crucial responsibility to balance our ambitions with an appreciation for history and change. Together, we can cultivate an industry that places value on honest work and emphasizes personal growth over competing trends.
00:20:51.280 Finally, I want to applaud everyone here for participating in the conversation regarding our industry's future. By sharing our experiences, we can benefit from insights to build more resilient systems. Through collaboration and respect for our community members' contributions, we can foster a more vibrant ecosystem for all web developers.
00:21:19.680 Thank you for your time and attention. If you're hungry for knowledge, don’t hesitate to ask questions or share experiences. Let’s continue this discussion beyond the stage into our community network. I look forward to engaging with each of you further during the rest of the event.
00:21:43.040 We have a great lineup of speakers ahead, and I encourage open communication around the topics at play. Let’s maintain the momentum, support each other, and ensure that the discussions we have today translate into real-world applications moving forward.
00:22:22.120 Thank you again, and with that, I’ll turn it back to the event organizers. Let's keep the excitement going and have a wonderful experience as we continue our conference journey together.