00:00:07.000
In case you're freezing, that was me ordering the beautiful production team to turn on the air conditioning because I start sweating. This is also why I brought my towels—not for anything else, just for this video. So, I didn't know how to start this talk, so I thought I'd throw in my Bulgarian—I mean, oh wait, that's my Bulgarian residency card. That's me; I actually have a Bulgarian residency.
00:00:27.039
I also learned that you have to black out your Bulgarian national number because you can get loans with that number. I'm not going to talk about why I have this card, and I'm not going to tell you why I have a Bulgarian driver's license. You can ask me later at the Afterparty. Is there anything planned for the Afterparty? I suggested that we all meet at Canal, which is a craft beer bar, so we can drink and have fun. It’s Saturday, come on.
00:00:51.280
If you want an amazing photo of yourself, get Bulgarian residency because they take this photo at the agency. I sat down and talked to her—but I don't speak Bulgarian. She was like 'da da da' and then pulls out this camera and takes a photo of me. I even asked her for the JPEG to be emailed.
00:01:11.280
This was really amazing; you go to an agency, and they take this photo of you. I use it everywhere because I look better than I do now, even though it's seven years old. So, get Bulgarian residency. Okay, there have been some amazing talks. I really loved all of them and I feel energized to return and work on open source.
00:01:39.800
Actually, I do not; sorry, there's supposed to be Elton John playing 'I'm Still Standing' because I'm also an open source developer. As a professional speaker, I wouldn't even think of playing audio live during a conference talk, just to find out we have the most professional production team ever. They have working Wi-Fi, and they have audio that's functioning. You never stop learning.
00:02:29.040
In this talk, I will take you on a kind of chronological journey through my career. Actually, preparing this talk felt like psychotherapy because I went through lots of old folders of images. I mean, don't get your expectations too high; I started preparing this talk weeks ago. Then I discovered, with four days to go, that I had to finish it, and I was drunk for the last four days, so whatever.
00:03:17.000
But preparing this talk over the long term was beautiful because it felt like going through my GitHub repositories and rediscovering when I started certain projects and what I did. It felt like a type of psychoanalysis, though it can also have negative effects. Sometimes I felt upset, and we'll figure that out during the talk.
00:03:43.720
So as you might have figured out, I do open source. My mom thinks I'm this badass keynote speaker going to huge conferences where dollar bills rain down, and while that is cool, it's kind of not the reality of what open source developers do. My friends only see the party pictures on Facebook and TikTok from my travels to places like Norway, which is an example since I've never actually been there.
00:04:20.759
So they have this perception that open source conference speaking equals constant partying. The truth is, there’s a lot of preparation involved. You need to create slides and work on something meaningful to present. It’s also important to have a solid topic to discuss.
00:04:51.960
My fellow coworkers and 'nerd friends,' as I call them, think being an open source developer just means maintaining a project, going through GitHub pull requests—'What do you do with RuboCop? Do you squash the commits, or do you merge the whole history?' That's not at all what's happening in my case. I don’t have many pull requests; when I do, it usually means a trip to psychotherapy afterward.
00:05:32.680
What my life looks like is managing numerous projects. When I hit Control Tab to switch between these projects, it's chaos. This has happened to me during workshops too, and people laugh when this happens. For me, this is normal.
00:06:01.840
This reminds me of a funny incident from school. I have a twin sister, and back in high school, one day during geography class, there was drilling happening next door. Everyone laughed except for us. We grew up on a construction site, so for us, drilling on Saturday mornings was just normal.
00:06:15.840
This feeling is similar to the nerves that were triggered when people started laughing at my earlier talk while I was switching windows. That's literally what my open-source life looks like. All these silly windows represent different projects I'm working on.
00:06:28.520
And just to clarify, I have about 5,000 todos across all these projects. I constantly open new documents for various tasks. When creating documentation or managing issues, it feels almost endless.
00:06:59.120
How open source developers actually function isn't ever shown in the perfect light. I mean, sometimes people even ask for very specific changes, and they will keep pushing for that change, whether on GitHub or through emails, driving me crazy because it often feels like so much unnecessary work.
00:07:29.880
The best part is when people kind of threaten you in a nice way. They will say things like, 'This is a cool project, but we feel like it's not maintained properly,' which feels a bit condescending.
00:07:52.760
People assume that documentation is easy to add or that creating a comprehensive example app shouldn’t take long, and that drives me nuts. It's more complex than that. I also love the idea of building a work-life balance.
00:08:35.600
The good thing about giving this last talk is that I can take revenge. The reason I'm here joking about open source is that I think I've managed to create a balance. I also work in a bar two to three times a month, and that's really fulfilling. You get to make people happy, give them beer, and that feels rewarding.
00:09:02.839
I'll stop for a moment. I talk about work-life balance, and to boil it down, I don't feel super excited anymore about working on Trailblazer, cells, and reform. There have been months of inactivity, and sometimes I think about stopping to work a normal job and earning 120,000 Euros a year, because I am senior enough and know how to deal with time zones.
00:09:54.860
You can see it clearly in my GitHub history. I can’t give a talk without presenting some code, so I'll now quickly walk you through how all these gems became Trailblazer. It's not a success story of riches and fast cars; it’s about nearly achieving sustainability.
00:10:40.520
Trailblazer is basically fighting against conservative thoughts. For example, this is a slide I borrowed from a friend’s talk. I initially began with a gem called Cells, which has evolved into what we now call view components.
00:11:25.440
Cells was aimed at encapsulating parts of your view into components, such as sidebars or navigation headers. I looked back through GitHub to see when the first commit was made—16 years ago, in 2008. It’s hard to believe how fast time flies.
00:12:05.680
The way rendering worked in Rails back then wasn't satisfactory for me because it involved using global variables which is something I wanted to avoid due to a lack of encapsulation. When I kept asking the Rails community, they told me partials were fine, but I really hated that.
00:12:44.080
I wanted something better. I envisioned a way to render the view as objects with constructors that would allow encapsulation while avoiding the use of global helpers. The gem called Cells stemmed from that desire, allowing for better organization without global contamination.
00:13:20.000
Cells let you render templates from a class, and the templates used instance methods from that object. This was a big change that allowed for better encapsulation and made testing those cells easier.
00:14:16.500
A notable moment was when DHH (David Heinemeier Hansson) reached out to me saying he loved it and was interested in integrating this approach into Rails core. However, many developers preferred using partials and did not support the new concept.
00:14:47.200
Fast forward 15 years, GitHub introduced view components, which bear a striking resemblance to the ideas I first proposed. It's fulfilling to see that those ideas are being embraced now, despite the long journey of frustration.
00:15:53.840
After Cells, I developed other gems like Reform and Representable, focusing on serialization and deserialization of data. I was always deeply interested in business logic.
00:16:44.960
I realized business logic in most applications was cumbersome, clunky, and overburdened controllers. The purpose of Trailblazer became about restructuring that logic intelligently into services that would enhance maintainability.
00:17:20.920
People started to understand the benefits of encapsulation. I initially faced resistance, but as I’ve continued to refine Trailblazer, many appreciate the simplicity it offers for business logic.
00:17:43.880
Because we aim to create slim controllers paired with individual operation classes for each use case, we realized our design pattern wasn't just cluttering but enhancing the structure. It paved the way to creating more straightforward and collaborative coding environments.
00:18:50.960
After introducing these concepts, I had an increase in invitations to speak at various conferences. This was a tremendous progression for me and helped me connect with others interested in similar concepts.
00:19:32.480
While building Trailblazer, I also began writing a book about it. However, I encountered a big obstacle: the code kept changing as the gem evolved, which led to conflicts between book content and the gem's functionality.
00:20:18.080
I put a considerable effort into my writing, and it did generate revenue, amounting to about $30,000 over the years. However, the sales have significantly declined, reflecting that excitement dies down once the initial novelty wears off.
00:20:58.920
I have also launched Trailblazer Pro, which intended to provide users with substantial value. Initially, we had about 200 subscribers, but the challenge came when they expected value for their payments, leading to increased complaints.
00:21:46.760
Subsequently, I restructured our approach and worked towards introducing new and improved features related to business logic, resulting in Trailblazer 2.0.
00:22:29.440
Trailblazer 2.0 utilized a new API, offering improved structure and more manageable ways for users to organize their code without undermining the original ideas we had established.
00:23:13.480
Despite some challenging transitions, this change positively impacted user satisfaction and attracted new users once again.
00:23:55.680
Realizing I had room for improvement, I dove deep into redesigning our website with the help of a designer, focusing on animations and illustrations to enhance the user experience.
00:24:36.920
This overhaul took me months, but the results were ultimately satisfying. I also included search functionality to better understand what users were looking for on our platform.
00:25:28.520
We noticed that a growing number of developers were interested in the tools we provided. The Ruby Gems downloads indicated a gradual upward trend, which signifies interest, even if it’s not overwhelming.
00:26:34.680
Recently, I introduced the concept of Trailblazer Pro, aiming to bring more structured components for new users while ensuring they get value based on their investment. During this transformation, I learned the importance of effective client and project management.
00:27:25.840
We've offered consulting services to help ease users into adopting Trailblazer in their legacy projects. People are often willing to pay a lot for expert advice, which has proven beneficial.
00:28:02.960
Ultimately, I plan to build a paid version for users that delivers tangible benefits. I am continuously evolving my understanding of how to market and manage Trailblazer better.
00:29:00.600
To sum up, I truly love working on open-source projects and strive to find ways to make coding simpler and more efficient. However, I am aware that this journey can be downright maddening at times.
00:29:43.560
While I know I should focus on scaling my operations, finding the right talent has proven to be a challenge, as many developers tend toward more stable, lucrative jobs.
00:30:30.000
To wrap up, I wanted to share my gratitude for this opportunity to speak and for the audience's support. I’m looking forward to any questions you might have, and it was a pleasure sharing my journey.