00:00:05.359
Hello! Today, we're going to talk about something that is really close to my heart, stemming from my personal experience in this challenging year of 2020. I call this talk 'Self-Care on Rails'.
00:00:10.679
Before we get started, I just want to share a little about who is speaking to you right now. My name is Ben Greenberg, and I'm a developer advocate at Orbit. Orbit is a company that helps you automate and gain insights into the community engagement of your developer community, facilitating the building of richer data models to understand and facilitate more impactful, closer, and meaningful developer communities.
00:00:25.080
I live here in Israel, outside Tel Aviv, which is pertinent to our topic today. I have children, and you'll see why that's important as we move further into the talk. Now, what are we going to do together in this time? First, we're going to take a bit of a meta moment to discuss what this talk is actually about.
00:00:41.700
Then, we will discuss our sort of obligation to do good with code, while also not forgetting ourselves. Lastly, I will leave you with a couple of examples of how that manifested for me and my family in this past year, 2020. So let's start by talking about what we're actually discussing in this talk. We're less focused on code; we'll talk about some code, don’t get me wrong, but that’s not our primary aim today.
00:01:07.799
The primary focus of our time together is on you and me, as Rails developers and as people. I want to begin this conversation by sharing this text from the Babylonian Talmud, an ancient wisdom text compiled a couple of thousand years ago. The Talmud suggests strategies for lowering one’s anxiety, and the past year has certainly been filled with anxiety for many of us.
00:01:25.619
The Talmud suggests that to restore a semblance of calm, one should share their concerns with others. The more you share, the better chance you have of lowering the anxiety you are currently experiencing. That is what this talk is about: sharing the concerns that arose for me and my family over the past year, as well as my strategies for dealing with them.
00:01:39.119
I hope that through sharing, not only can I lower my anxiety, but I can also help those who have struggled with a sense of despair or challenge in the past year to build a community that can support each other. This talk, as I said, is about you and me, and what we can do as Ruby and Rails developers to help ourselves and share it with others.
00:01:55.319
We, as Ruby and Rails developers, are blessed with many good initiatives to help both our specific linguistic community and the larger developer community as well as society at large. So many wonderful initiatives exist—things like Ruby for Good, Rails Girls, Ruby Together, and of course, Ruby Central, which organizes RubyConf, RailsConf, and hosts RubyGems.
00:02:10.020
None of our code or all the gems we create would be possible without RubyGems. We contribute to the development of individuals and non-profits that need technical support and creative solutions to the challenges they face.
00:02:25.619
In fact, you might argue that there is an ethical obligation to perform this kind of good work. Sandy Metz, in her talk from 2019 titled 'Lucky You', quotes a political scientist from the University of Chicago, who argues that the burden of helping society most heavily falls upon those who are best compensated. Software developers are among the most highly rewarded and compensated members of society.
00:02:46.199
Thus, there may actually be an ethical obligation for us to engage in that kind of work. A relatively new initiative called the Hippocratic License has emerged to be an additional open-source license alongside popular ones like MIT, focusing not on code attribution or sharing, but rather on how code is used.
00:03:03.419
When we contribute code to the open-source world, we must consider its impact on society—is it used for positive change? The Hippocratic License states that we have a responsibility to ensure our code is used for good, as it has a lasting impact on the world.
00:03:21.600
This ethical consideration applies at both macro and micro levels: as Ruby and Rails developers, and as part of the larger developer community, or even in society as a whole. However, in the midst of doing good, it’s essential not to forget ourselves.
00:03:37.320
If I am not for myself, who will be for me? I often find that we can forget ourselves and our needs in the midst of helping others. Self-interest can be a loaded term, but it doesn’t have to carry negative connotations.
00:03:54.320
The Midwest Academy Manual, a seminal text of community organizing, provides perspective on self-interest. When asserting your self-interest, it means acknowledging what matters to you in the cacophony of competing voices and interests in the world.
00:04:10.680
Your interests matter, and that is particularly important during these challenging times. According to a February 14, 2021 article in The New York Times, a sweeping mental health crisis has emerged across Europe, echoing a similar struggle occurring worldwide.
00:04:27.780
While we're grappling with a physical health crisis caused by the pandemic, we are also facing a mental health crisis exacerbated by the measures intended to combat the physical health threats. For instance, in countries like Italy and the Netherlands, youth psychiatric wards are at full capacity.
00:04:43.800
In France, the mental health of children has deteriorated to the extent that professionals urged authorities to consider reopening schools amidst lockdowns to combat loneliness. In Britain, some therapists advised patients to break lockdown guidelines to cope, demonstrating how mental health was suffering while attempting to navigate physical health crises.
00:05:06.240
This reflects issues on both macro and micro levels, causing challenges within individual families. In May of the same year, a blog post discussed the challenges faced by a couple whose working and living situations changed radically as they were confined to their home.
00:05:25.339
They noted that sharing a workspace put a strain on their relationship as they realized things about each other that had been easier to ignore before. Therefore, families were struggling with new dynamics imposed by an unprecedented situation.
00:05:43.799
If this sounds familiar to you, you're not alone. The challenges I've painted in my stories resonate deeply with many, and they are challenges I've faced personally as well. I want to share a few examples from my own life about how I utilized the skills many of us possess as Ruby developers to build solutions that helped ease our circumstances.
00:06:07.140
I focused inward to address the needs of my family, which ultimately made our lives more manageable during this unprecedented time. I want to share two examples: the first involves how we approached handling birthday parties during the pandemic, and the second addresses how to navigate the bureaucratic hurdles imposed due to health measures.
00:06:22.260
First, parenting isn’t easy under normal circumstances, but parenting during a pandemic presents its own unique challenges. Our children went from being in school full time to attending remote classes over various scheduled Zoom calls, which was difficult for us all.
00:06:41.850
We faced difficulties with our internet connection, which often resulted in freezing Zoom calls while my wife and I were trying to work. Birthdays were particularly challenging for my children, who take their birthdays very seriously, planning for months with activities and invitations.
00:06:58.680
Explaining to them that their birthday parties would look very different this year was difficult. While they could understand it on some level, they couldn't fully comprehend why these special celebrations were taken away.
00:07:12.300
As a loving parent, this impacted me deeply, and I wanted to help them navigate this situation. My wife and I sat down and brainstormed ideas. We made a list of all the activities we usually did that year, such as soccer parties and movie theater outings, and realized how many were no longer options.
00:07:29.400
Thankfully, Rails came to the rescue. I sat at my computer in my home office and thought to myself that Rails had to be able to solve this problem for us. I typed 'rails new birthday party', not even knowing what it would look like yet, but knowing I could create something to help provide an alternative.
00:07:47.280
In this Rails app, I utilized an open-source technology called WebRTC, which enables real-time video communication among peers. It’s an amazing resource and is accessible through standard web browsers. Documentation and sample code can be found at webrtc.org.
00:08:03.780
I decided I would build a virtual birthday party that could include movie watching. The idea was to recreate the birthday atmosphere where you invite friends, watch something together on TV, chat before and after, and celebrate—all while being physically apart.
00:08:20.460
The project was a simple one to start but soon revealed itself to be complex. Arnold Palmer once said that golf is deceptively simple but endlessly complicated; I think the same can be said for coding.
00:08:37.320
As I began building the application, I realized I didn't have the time to become an expert in WebRTC. Thankfully, there are APIs that abstract much of the complexity, like Twilio and Vonage, which create endpoints to help alleviate the workload.
00:08:52.680
Using the Vonage Ruby SDK, I was able to instantiate video sessions and manage tokens for moderation or participant access. This ability allowed me to streamline the process significantly.
00:09:07.500
As for the client-side, despite the absence of a Ruby SDK for Twilio, they provide a versatile JavaScript SDK, which allows you to control and manage video interactions on the client side. So, I created a publisher instance, set up event listeners, and created interactions as each person entered the virtual party.
00:09:23.099
The finished birthday party application allowed my son to engage with his friends as they all watched a movie together. The design was intuitive, and as more friends joined the virtual party, the video windows adjusted dynamically.
00:09:39.600
There was a focus on both video chat and text chat, enabling the participants to maintain communication throughout the experience. The virtual birthday party allowed my son to feel like he was still celebrating despite the significant lockdown and pandemic challenges.
00:09:55.020
The experience was beneficial for our family and provided my son with a sense of normalcy during a very difficult time. However, while managing these personal challenges, we also encountered increased parental responsibilities due to the new health reporting and bureaucratic obligations.
00:10:10.920
In Israel, when schools were in session between lockdowns, parents had to digitally submit health declarations daily. Amidst all the other tasks of getting kids ready for school, this added requirement made for a hectic morning.
00:10:29.640
I often found myself forgetting to fill out the health form, leading to those dreaded phone calls from school administrators. Each time I received that call, I felt embarrassed as I was already overwhelmed with daily tasks.
00:10:49.680
Realizing how burdensome this new responsibility was, I decided to approach it as an opportunity for automation. I created a gem called 'School Declare' that automated this repetitive task by utilizing web scraping to submit the health forms for each child consistently.
00:11:09.719
This gem uses headless browsing to log in, navigate to the forms page, complete the necessary fields for each child, and validate that the form submitted correctly, sending me a confirmation SMS afterwards.
00:11:32.399
As a result, I could leave for school each morning knowing that the forms had been filled out accurately and I wouldn’t receive another dreaded call about forgetting it. This kind of solution, streamlined through code, significantly improved our daily routine.
00:11:49.320
So, as I reiterated earlier, this talk wasn’t solely about code. The examples we discussed—WebRTC applications and gem development for automating health forms—are not the heart of the matter.
00:12:08.280
This conversation is truly about sharing personal challenges that I’ve faced as a father, partner, and human during this global health crisis—about our collective experiences.
00:12:24.360
Through this sharing, we can find common ground as developers and as a community. As we tackle our respective challenges, we learn from one another, especially when it's tempting to think we are navigating these waters alone.
00:12:41.820
I encourage each of you to give yourself permission to make your life easier. It has been a tough year, and as Ruby on Rails developers, we possess unique skills that empower us to build solutions that reduce our stress and chaos.
00:12:57.600
Creating these solutions can start at home, benefiting our families and, subsequently, the world around us. Remember, your self-interest can support others, as it acknowledges that you matter and so do the challenges you face.
00:13:11.880
Many people in the education and medical fields have been tremendously innovative and supportive during this past year, and we, as developers, can also leverage our skills to contribute positively to society's challenges by helping ourselves and those we care about.
00:13:27.600
I want to thank you for joining me in this very personal discussion. I've shared some of the struggles we faced as a family over the last year, along with the solutions we built.
00:13:40.680
This sharing came from a place of deep concern, and I hope it serves as a reminder that struggles are shared. I'm eager to hear your thoughts; feel free to reach out to me at bengreenberg.dev or on Twitter, @RabbiGreenberg.
00:13:59.640
I will be around throughout RailsConf, particularly in our Discord server, and look forward to discussing your creative solutions to the challenges you've faced over the past year.
00:14:10.680
Lastly, I want to leave you with a few resources: you can find the School Declare gem on RubyGems, as well as the open-sourced video birthday app at bit.ly/railsbirthday. I’d love to see how you use it to meet your needs.
00:14:27.840
I referenced the Twilio and Vonage video APIs that help deal with the complexities of WebRTC; you can find them at twilio.com and vonage.com, respectively, while more information on WebRTC can be found at webrtc.org.
00:14:41.880
Once again, it has been a pleasure to share this time with you today, and I look forward to hearing how you have coped and navigated these challenges as Ruby on Rails developers. Enjoy the rest of RailsConf!