Personal Development

Built to Program

Built to Program

by James Edward Gray II

In the video titled "Built to Program," James Edward Gray II, a prominent figure in the Ruby programming community, discusses his experiences living with spinal muscular atrophy (SMA) and how it impacts his coding practices. Delivered at the GoGaRuCo 2013 conference, the talk seeks to demystify disabilities and explore broader themes of programming and collaboration.

Main Topics:

  • Disability Awareness: The presentation begins with James addressing his disability openly, emphasizing that it's a matter of public inquiry and not something to be shied away from. He encourages audience members to ask questions, highlighting that these are not secrets but rather aspects of his normal life.

  • Understanding Muscle Disorders: James explains that he has SMA type 1, which affects muscle function, yet shares how he doesn’t conform to the typical symptoms associated with it. He clarifies how his condition differs from other muscular dystrophies and introduces concepts like the importance of the survival motor neuron (SMN) protein.

  • Coping Mechanisms and Trade-offs: James shares practical insights on traveling and mobility challenges, illustrating how he balances the use of an electric wheelchair with a manual one. He connects this trade-off to programming: prioritizing efficiency and the importance of understanding energy expenditure in tasks.

  • Programming Philosophy: Throughout the talk, he emphasizes the concept of automation as a way to counteract limitations caused by his disability. His approach to coding has evolved, leading him to favor tools like Emacs for their automation capabilities, which allow him to work more efficiently despite physical constraints.

  • Collaboration and Social Interaction in Programming: James champions the idea that programming is fundamentally about people and interaction. He reflects on how significant advances happen not just through individual effort but through collaboration, urging the audience to engage socially within their professional environments.

Key Takeaways:

  • Openness About Disability: Addressing disabilities directly can foster understanding and remove stigma.
  • Efficiency in Coding: Understanding one's limitations can lead to more strategic programming practices.
  • The Importance of Collaboration: Collective problem-solving and social interaction in tech communities are essential for significant progress in programming projects.
  • Broader Implications: The lessons from James's experiences can apply beyond programming, encouraging a deeper appreciation for diversity and cooperation in various fields.
00:00:20.240 Our next speaker is James Edward Gray II. He’s one of the people I’ve looked up to in the Ruby community for a long time. I have to say, I want to be like James when I grow up. He’s one of my personal heroes, and I’m pretty anti-hero worship, but I have a lot of respect for him. James is a co-panelist on Ruby Rogues with me, and I’ve been doing that for over two years now. For every week for two years, I’ve gotten to hang out with James for an hour or two, and I gotta say that's been one of the highlights of the last couple of years for me. So, James, thanks for being my friend and for coming to do this talk for everyone and putting yourself out there. Everybody give a big hand for James Edward Gray II.
00:01:13.439 All right, can everybody hear me okay? When Josh asked me to come to GoGaRuCo, I hit him with this idea. I said, 'I’ve had this talk rolling around in the back of my mind for a few years that I want to try out.' He responded, 'Awesome! James has this great idea.' Then he asked what I wanted to talk about, and I said, 'My disability.' I’m pretty sure that was the last thing he expected me to say.
00:01:15.680 So, we’re all probably pretty nervous right now, wondering if this talk is going to be worth your time. I’m definitely trying something outside of my wheelhouse, but Josh is scared blind. Okay, here we go. I want to talk about what you're seeing right now because it might not be exactly what you think it is. We’re not far enough along in this talk to know what I’m going to do right now, but we’re watching JEG2 on stage at GoGaRuCo.
00:02:00.000 According to the write-up of a conference I attended recently, whatever I do is going to be amazing. So don’t worry. I’m not worried, but the truth is you don’t know what I’m going to do. For example, maybe I just have a few more slides and then I’m about to break out a keynote here and do some live coding in front of you, throwing some Ruby around, right? That’s one possibility. But only if you don’t really know what’s going on here. Actually, if you know what’s going on, you know there’s a zero percent chance of me doing any live coding right now.
00:02:33.280 The reason is that in this wheelchair right now, sitting at this table, I can’t actually type. This presentation is designed so that I can run the entire thing with only the spacebar, which is about the limit of my mobility right now. It’s a good thing that this talk is only 30 minutes because I can’t keep it up for too long. I’ll get tired and cold the longer it goes. So eventually, we’ll reach my limit of what I’m capable of. That’s what you’re actually seeing happening in front of you right now.
00:03:46.799 Because I have a pretty public presence in the Ruby community, people often ask me a lot of questions. Sometimes they’re kind of funny. I used to require CSV somewhere in my code, and they’d question me about complicated, unrelated questions. I do answer every single email I get; I try to. So if you love me, don’t email me, thanks. But as they get to know me, as they spend time around me, I had a wonderful experience in July where I spent three days sequestered in a house with the Ruby Rogues.
00:05:01.600 That’s way cooler than it sounds; it was great. We’re all close friends, and we know each other well. People have different questions when they know me that well, and sometimes they’ll find my wife and pull her aside to ask her questions. What they want to know about is my disability—why I’m in a wheelchair. So let’s talk about that.
00:05:14.720 Let’s answer some questions. I think a lot of people believe this is personal or a secret or something I would only want to share with a few people. I don’t feel that way at all. If I came up to you and you had a bandage on your arm, it would be socially acceptable for me to ask, 'What happened to your arm?', and I feel the same way about my situation.
00:05:30.000 You can come up and ask me anything you want to know, and I’ll tell you. Just don’t ask about my sex life unless you really want to know. Sometimes, if it seems difficult for me to answer a particular question, there can be two reasons for that. Sometimes, the question requires a lot of context for you to understand what’s going on. For example, I would love to explain why, at nearly 40 years old, the wait staff often still asks my wife what I would like for dinner, but it would take a ton of context to make it clear. That would easily be a 30-minute talk in itself.
00:06:35.040 The other problem is that some things you’re about to see may be unusual to you, but they’re my normal. This is just the way things are; I don’t often stop and think about why I do this particular thing the way that I do it. And it's kind of hard to measure those things unless I actively try to consider why they’re different. But I want to do that now. I want to take you down the rabbit hole, try to answer a few questions, and see what we can learn from that.
00:07:24.720 This will be the hardest question for me the whole time I’m here. It’s incredibly complicated, but I’m going to try to give you the simple version. Technically speaking, I have muscular dystrophy. That’s not really a disease; it's a family of neuromuscular diseases. More specifically, I have spinal muscular atrophy. This is also not technically a disease; it’s a subcategory of muscular dystrophies. Very specifically, I have SMA type 1, or Werdnig-Hoffman disease, named after the two German doctors who discovered it.
00:09:29.000 However, you will find that this description isn’t a very good fit for me. If you were to look on the Muscular Dystrophy Association's website, even a few years ago, you would find symptoms like the following listed for my disease. I know you can’t judge this right now because I’m in a wheelchair and have a bag supporting me, but I promise you I can sit unassisted. Difficulty swallowing is one symptom that showed up for me in my late 20s and early 30s, which is significant when combined with other symptoms.
00:10:29.360 The reason for that is people with spinal muscular atrophies are missing a key protein called survival motor neuron, or SMN. We’re without that key protein for muscle development. However, I have compensating genes that give me extra protein, SMN2, which isn’t a good replacement, but it does lessen some effects. Therefore I don’t fit the mold very well; I have a kind of unusual variant of this disease. You probably don’t know my specific disease well, but there are other diseases in the same family that are more common.
00:11:32.960 One of them is Duchenne muscular dystrophy, which you might know about. People with Duchenne’s tend to progress normally until around the age of six or seven, when they start to stumble and eventually need a wheelchair, moving on from there. Another more common condition is Lou Gehrig's disease, also known as ALS, which the most famous case being Dr. Stephen Hawking. Dr. Hawking also has a unique variant of Lou Gehrig's that lessens the effects on him, much like how my variant lessens the impact of my condition.
00:12:14.080 So if you hit me in the knee with a hammer, it still hurts. I can feel my legs—some people can’t, but I can. However, you still won’t get a reflex response from me. That’s not because I don’t have reflexes; it’s because the diminished muscles in my legs have progressed to the point where there would be no measurable effect. Even though I have a reflex, it would try to trigger something, but nothing would happen worth watching.
00:12:22.720 The short story of my disease is that I get weaker over time. That’s a generalization, but it roughly describes what happens. I think it's fine for us to tackle the hard questions because people want to know these things. So, I’ll give you the bad news: the answer is yes. Then I’m going to give you the really bad news, so are you.
00:12:48.720 You probably think I cheated my way through that last one. Most people want to know this, and again, I’ll give you the plain truth: I don’t know. The painful truth is that you don’t know when you’re going to die either. So that’s the answer. I don’t think about it any more than you do because it’s not any more significant. Medically speaking, my disease primarily attacks my skeletal muscles, but those aren't the only kinds of muscles in your body; you have other muscles like smooth muscles, and my heart is fine, not affected.
00:14:29.520 The biggest problem I face is with my diaphragm, which is a skeletal muscle. Because my diaphragm is weakened, I get bronchitis and pneumonia more commonly than you do, and it takes me longer to recover from those things. However, modern medicine has caught up with that problem. I sleep on a machine called a BiPAP that assists my breathing all night long. This makes a huge difference, and we also have more invasive procedures available to help clear things out when necessary. So whatever problems I might face in the future, I figure medicine will be there for me, if it’s not already.
00:15:06.640 I don’t think about it any more than you do. So this potted plant and I have a lot in common right now; it’s mainly about mobility. When I choose to travel this far, I switch to this manual wheelchair, which is not my usual wheelchair; my everyday wheelchair is electric. The electric one is very expensive and sensitive equipment—the kind you don’t want thrown around in the baggage compartment of an airplane. It complicates travel considerably. Together, my electric wheelchair and I weigh about 400 pounds, making it impossible to simply fold up and throw in a trunk, as you can with this manual one.
00:16:12.160 So when I choose to come to GoGaRuCo, I make a trade-off. We all understand trade-offs, as right now I’ve traded off my mobility for the ability to spend time with you, which is important to me. The main reason I can't move is because I have an arch enemy: gravity. Gravity is my arch enemy; it has a much bigger effect on me than it does on you. It helps immobilize me or pin me in place. If I’ve ever had trouble shaking your hand, you now understand why it’s difficult for me to get my hand up to where yours is. That’s gravity at work.
00:17:11.680 The cool thing about having an arch enemy is that you can learn to count on them. Sometimes, people may see me do things and ask if I’m flailing or if I’ve lost control. The answer is no; I have full control of my movements. It’s just that sometimes something gets pinned, or I’m uncomfortable, and I’m using gravity to my advantage. Throwing myself to one side in an electric wheelchair is even better—because I can move and then quickly reverse the direction to create momentum to help free a limb or something else I want to move.
00:18:33.440 I also mentioned that I will have trouble regulating my temperature up here, and that’s true. You have this layer of muscle directly under your skin, and I have the same layer, but mine is greatly diminished. Your layer helps trap heat inside, creating a sort of furnace, while mine is smaller, so I just bleed heat. I live in a warm place and have built a lovely porch on my house where I go outside during the day to program and warm myself in the sun like a lizard.
00:19:12.239 In the winter, I hole up in my office and aim a space heater directly at me, keeping the room so warm that people prefer not to go in there. This is effective; it works great. So when I come to other places, this is what I primarily feel. I went to England and Scotland earlier this year, which many of you may know can be cold. I don’t like that too much because I get cold, and when I lose functionality, certain things become harder for me. If you go back and watch the video of the live panel at Lone Star, I was so cold on that day that I couldn’t manipulate a slide clicker.
00:20:19.000 If you watch the video from that day, you’ll see that Katrina was advancing the slides for me while I was talking on stage; it was very cold in that room. I bet I can guess what you’re thinking: 'Isn't this kind of a solved problem? Can't you just layer up?' It looks like this to you, but it feels like this to me. Those extra layers of clothing greatly restrict me on a noticeable level. They increase gravity’s hold on me. If I can get by without them, I usually will.
00:21:05.280 Sometimes I don’t. When I was in England and Scotland, I wore a sweater everywhere, but here I can manage by getting by without it. I was wearing one earlier this morning, but I took it off to give this talk. I’ve been talking about building blocks, which are the building blocks that make me who I am. You all have different building blocks; they’re different in you, but the end result is the same.
00:22:18.400 At least enough that we all end up here in a city listening to speeches about Ruby for whatever reason. We have that in common, and I actually learn from all of you all the time. Every week on Ruby Rogues, I’m discussing something with one of you and learning how you do things the way you do it and why. I think there may be value in how I do some of these things that you might actually glean.
00:23:07.200 So, I’m going to try and lay it out. Muscular dystrophy does a ton of things to me, large and small, and these are some things I’ve chosen to talk about, but this is by no means an exhaustive list. The first one may be a small thing, but as I’ve gotten weaker over time and as I battle the cold, my typing speed has decreased significantly. In the last two or three years, I think my typing speed has roughly halved. So I’m kind of into automation, as most of you probably know. I wrote the TextMate book because I had to understand TextMate at a very deep level to automate it.
00:23:53.120 Now, I’ve been moving on to Emacs because I find myself needing more automation. It turns out that Emacs excels at this; you can automate it at any level you desire. The interesting thing, however, is that in doing this, I have developed a deeper understanding of workflows, and I’m trying to stop thinking at a character level. Our text editors would like us to behave on a character-by-character basis, but if I have an automation that I trigger, creating a class for me in the correct space intuitively, that saves me a lot more than just typing 'c-l-a-s-s.'
00:25:09.440 So, I think we need to consider these things at a higher level. I believe projects can benefit from this approach. We have this axiom in programming: you should make your change easy to make. Then make the change. How about we make our projects easy to build first, and then build the project? We see some of this with things like Hubot, but I think we could do more, especially with certain projects.
00:25:51.760 So don’t be embarrassed if you’ve never heard of this; I’m disabled and didn’t actually learn it until I was in my 30s. If you have a disability where you have a fixed amount of energy to get through the day, we have to explain that concept in some way. Energy is an abstract concept that can be difficult to understand. A therapist trying to help you grasp this might hand you a handful of spoons, giving you a fixed number, say 15, and then ask you to walk through your day. When you say, 'I get out of bed,' they take away a spoon. 'I take a shower,' and they take another spoon. This is a very concrete illustration that helps convey the concept.
00:26:43.200 This understanding of the economy of action is significant for me as a programmer. The things we do have costs, and I’m very aware of that. I have to approach everything with this in mind. The most important thing I must do is listen first. I need to understand what we're talking about and what is being asked of me. That doesn’t mean I don’t make mistakes; of course, I do. I try to avoid really bone-headed mistakes, the ones I could have thought through.
00:26:49.680 Finally, I want to emphasize that doing less is more. If I can think of a smaller set of actions that achieves the same outcome, that’s huge. This applies to all of programming. The less code we have out there, the less we have to manage, maintain, and upkeep. Most of you have a surplus of energy; therefore, once you’re over a certain point, you don’t have to measure every little bit. If you spend a little extra on some upkeep task, you may think it doesn’t affect you much, but I know how soon upkeep can kick in and how much it matters.
00:27:33.760 So anything that removes one spoon from me forever significantly diminishes everything about me. This brings me to my lovely wife Dana Cruz, who is around me all the time. She substitutes and fills that role for me while I’m here at GoGaRuCo. She makes this possible, allowing me to spend time with all of you.
00:27:49.360 So I understand asking for help on a bigger level. We all play this game, and some of you might be good at asking for help, but I’m playing it on a whole other level than you. It’s different when you realize that you’ll spend too much energy doing certain tasks. For example, asking Dana if she'd be okay helping me eat this time saves me a lot of energy. This concept of asking for help means everything—allowing me to save my spoons for things that matter.
00:28:51.280 I chose to show you a picture of Dr. Hawking because this is someone who explained how black holes work to us. Look at how much help it took to put Dr. Hawking in microgravity. There’s a specially chartered flight on a modified airplane with two technical specialists who understand how all the equipment works, and there’s Hawking’s nurse in the background, taking care of his unique health needs. This is a hard thing to accomplish, but it makes sense to do it since Dr. Hawking surely deserves the experience of microgravity.
00:29:42.400 Being in this environment may give him new ideas on how to explain more about how the world works. Real help is vital. I’m becoming less interested in what individual programmers can accomplish. Surely, you’ve noticed that every stone we pick up reveals a giant rabbit hole beneath it. We don’t have time to go down every rabbit hole, so the only things that are truly interesting involve what we can achieve together.
00:30:07.920 This is about people. It's about interaction. Speaking of which, at work we have a lot of rabbit holes—if you want to come help us out. I work for From A to B, one of the sponsors of this conference, and we need more developers. So if you’re looking for a job, come talk to us!
00:30:56.320 My advice to you is to get social. You’ve seen people doing this here at the conference. Sam had that great talk about optimizing Ruby. Did you notice that optimizing Ruby wasn’t just a tools process? It was a people’s process. He found some issues and talked to the right individuals. It was about action and collaboration. That’s the best way to make progress.[...] Moreover, in Mike’s talk just before this, Nokogiri was highlighted as a people’s process as well, not merely a code process.
00:32:07.440 Recently, I noticed some discussion equating soft talks with advanced talks at the conference, implying that soft talks aren’t advanced. I initially tried to be generous in interpreting that, thinking they’re better at different things than I am. Yet now that I contemplate it, I’m changing my mind—this notion is simply wrong. Learning how to program? That’s the easy part. Learning how to be a programmer? That’s the advanced stuff.
00:32:56.320 I think we should work on that. That’s all I have. Thank you very much.
00:33:02.480 You.