RailsConf 2021

Keynote: Chatting with David

Keynote: Chatting with David

by David Heinemeier Hansson and Evan Phoenix

In this keynote presentation titled "Chatting with David" at RailsConf 2021, David Heinemeier Hansson engages in a casual conversation reflecting on various topics including the challenges of software development, his experiences with the email service Hey, and the evolving landscape of web development technologies.

Key Points Discussed:

  • Status of Hey.com: David shares insights on the challenging launch of Hey.com, detailing initial expectations versus the reality they encountered, especially with the complexities of offering an email service that competes against giants like Gmail. He emphasizes the critical importance of reliability in email services, which handle crucial communications for users.

  • Technological Challenges: He delves into the architectural nuances of creating an email server and the critical decisions involved in ensuring data security. David discusses the high stakes of handling sensitive data and the importance of robust encryption, illustrating how features built for Hey will be beneficial for Rails as a framework.

  • The Importance of Aesthetics in Programming: David reflects on how different programming paradigms appeal to different developers, mentioning his reluctance toward JavaScript frameworks and his preference for Ruby. He emphasizes the notion that programming should be a form of writing, allowing developers to express creativity without unnecessary complexity.

  • Platforms and Monopolies: A significant portion of the discussion revolves around the challenges posed by tech monopolies, particularly how they impact developers' freedom to innovate and create. David articulates the necessity of maintaining open platforms for software distribution, drawing from his experiences testifying against tech monopolies and the consequences of concentrated power in the tech industry.

  • Future of Web Development: References are made to the potential of Rails 7, focusing on discovering ways to simplify the front-end development process and possibly eliminating the need for complex frameworks like Webpack, thus enhancing developer experience. David expresses hope for the web’s future by promoting practices like data encryption and proper data deletion policies in applications.

Conclusion:

David concludes with a call to action for developers to resist the pressure of monopolistic control and to advocate for open platforms that allow creativity and innovation to thrive. He encourages developers to embrace change and to continuously seek ways to enhance the user experience while prioritizing security and simplicity in code.

Overall, this keynote highlights the intersection of technology, user needs, and the philosophical considerations behind software development, urging a balanced approach towards innovation within a challenging industry landscape.

00:00:05.279 There's no time like the present to get into our big keynote for the day. I want to welcome to the stage...
00:00:12.300 I've switched rooms; this is a little more casual for this conversation. Let's welcome to the stage David.
00:00:18.180 David, how are you? Are you coming to us from inside a black hole? I see, so how is the void treating you?
00:00:23.279 Well, it's treating me very well, yes. Thank you for having me back.
00:00:29.820 Of course! I was just thinking earlier about us doing this over Skype, which we did for 2020. It's been quite a year.
00:00:35.219 How have you held up over the past year? I think trying to summarize the entire year in a binary statement like that is impossible.
00:00:41.579 This is a quantum statement of four simultaneous states throughout the year or a year bouncing back and forth between them. Yeah, it’s been wild.
00:00:46.920 Let's just say that. I couldn't agree more. Well, with that, let's jump into the questions I've got. I'm going to do a thing that's a little dangerous...
00:01:09.540 If you have a question for David, you can put it in Discord, but I'm not necessarily going to read them all. So, you need to be diligent, express it clearly so that I can see it.
00:01:22.680 I’ll check it if we have time—no promises. Okay, great! Now let's get into it. This time last year, we were talking about the hey.com launch, which seems to have gone well.
00:01:36.780 Congratulations! I thought we would talk a little bit about that today. Has it, first of all, gone as well as it seemed? How did it seem?
00:02:03.119 Well, I recall two weeks of absolute hell when we first launched. I'll just keep it short: it started badly, but it turned out well. I think it didn't start in any way like we thought it would have.
00:02:14.220 But where it turned out, I’m really pleased. I've worked on Hay for about two years. When we hit 'Let's go,' we had written thousands and thousands of lines of code, done all sorts of preparations and tests, and we were ready to launch an email service.
00:02:44.879 It's funny because I was asked in an interview back in 2011 or 2012 by none other than Jason Fried, saying, 'Oh haha, Basecamp. So when are you going to take on some real competition like Gmail?' I was laughing at the time, thinking, 'Who would be insane enough to want to do that?'
00:03:20.220 And here we are—what is that, eight or nine years later? Literally taking on Gmail, trying to do email, which is by far the hardest thing we've ever tried to do at Basecamp. The criticality mainly of the service is what makes it so challenging.
00:03:46.260 With Basecamp, you store a lot of business data and if you go down, someone can’t get to their PowerPoint about the quarterly earnings. But if your mail service goes down, people can’t get to their flight tickets, board their planes, or get notifications from a doctor. The criticality is about as high as it gets in communication.
00:04:54.139 Actually, I'd say higher than any other form of messaging systems. Your email address is critical—it plays everything on a dramatically different level. So, we went into this wondering if we were ready for this. I've made information systems for 20 years, but email is extremely critical—it's a different challenge.
00:05:39.600 We have all these parts and pieces of the puzzle, which is what's wonderful about developing something like Hay. It's a completely different category requiring new solutions that we haven't dealt with before. This arrives at a place where I get to do my favorite things—write code to solve real problems.
00:06:51.300 Then extract that code and put it into Rails. Absolutely! You hit on a great point. Email's a whole different ball game compared to the information architectures you've worked on in the past.
00:07:05.000 I’m curious if you've thought about the architecture for that service. Has it looked different from the architecture of your other services? Did you write an email server in Ruby, for instance? I find that particularly interesting.
00:08:36.720 It's funny you should mention that because, even though we haven’t announced it yet, we are actually working on an email server in Ruby. What we came to realize is if you're serious about being an email service, you essentially have to build your own email server.
00:09:48.120 Action Mailbox came straight from Hay before we even launched, and it was one of the first things we started working on. Now we're also directly working on the mail server itself, so we can do more things and make tighter integrations than Postfix allows us.
00:10:36.000 Ironically, what gave us the hubris to think we could do email is that Basecamp has been sending 5 million emails a day for quite a while. So, the volume of emails we were sending made it seem plausible that we could manage it—however, ensuring delivery is really high criticality.
00:11:56.420 When your mail service goes down, it’s truly problematic. I actually think it’s kind of sad—it’s disappointing that it is so hard to do this properly. Email would not work the same way today if you launched it now.
00:12:22.380 You would never be allowed to launch such a platform; someone would say, 'I can monetize this platform.' You could never have what we have with email today.
00:12:36.420 It’s a treasure that we need to take care of. We need to modernize it while still honoring the fact that email has been around since '78 and it still works amazingly.
00:12:44.360 People always say, 'Oh, this service is going to get rid of email.' We've seen this happening time and time again. It's interesting to note that their inability to execute isn't due to a lack of capability but rather reflects the inherent utility of email.
00:13:28.120 You can easily send a structured message to another human, and it needs to be delivered in a reasonable amount of time. That simplicity, that core utility is just so difficult to replicate, especially when everyone already has email addresses.
00:14:48.720 It's interesting how we see that with things like Flash; I think that browsers have gotten fast enough that old Flash games will make a comeback via on-demand conversions to HTML and JavaScript.
00:15:25.680 We can play all those old Flash games great. There are actually bunch of converters to make that happen. Retro gaming is very special because it helps us preserve the history of computing.
00:15:58.500 Talking about piracy, there’s a delicate balance with IP laws and the ability for people to find and play old games. Those types of laws restrict access to the past.
00:16:03.960 I think the industry needs to continue fighting against those laws because they prevent access to a lot of wonderful gaming experiences we had growing up.
00:16:22.800 We've seen victories here, like with Oracle and their API fight with Google. It serves as a reminder that these fights can reshape aspects of the software landscape.
00:17:01.639 One thing that resonates with me is the importance of remaining vigilant and speaking out about monopolistic practices in tech. Sharing experiences can lead to discussions that drive change.
00:17:43.980 We also need to continue supporting open platforms and access to computer systems for everyone; we can't let monopolists define what we can and cannot do.
00:18:00.980 It's crucial that we maintain the ability to create and innovate without permission. With all those trends, the world of programming does seem to be changing.
00:18:30.780 There’s always a chance to push back against that tide, to advocate for freedom in technology. Ultimately, it's the voices, conversations, and actions today that might change the future landscape.
00:19:10.640 Overall, the world of tech is always shifting, and while some trends may tend towards monopolization, opportunities for change still exist. It’s vital to recognize this.
00:19:22.300 As for our future, being willing to engage in meaningful discussions about technology, society, and innovation is important. We need to ensure the conversation keeps moving forward.
00:19:34.680 I’m glad to witness Europe and other regions pushing back against monopolies with regulations. There are signs of movement.
00:19:46.040 On the topic of Rails 7—recently, I saw that we're getting ready for some exciting changes that are aimed at sustaining the modern web approach and enhancing user experiences.
00:20:00.020 I’m particularly excited about reaching a place where we can leverage Hotwire for Rails without needing to rely on node.
00:20:05.640 That's going to be a breakthrough for Rails development.
00:20:10.480 I think all these advancements are going to open up a lot of opportunities for developers.
00:20:14.260 The focus is on making app development simpler and more accessible.
00:20:17.400 With all the complexity we face today, simplifying the experience should always be a top priority.
00:20:22.560 I hope to see everyone continuing to push for practical solutions in app development.
00:20:28.420 Let’s ensure the future is built on blocks that empower developers rather than limit us!