Creativity

Rekindling a love of creation with Ruby and Raspberry Pi

Rekindling a love of creation with Ruby and Raspberry Pi

by Colleen Schnettler

In her talk at RubyConf 2019, Colleen Schnettler explores the theme of rekindling creativity in software development through hands-on projects with Ruby and Raspberry Pi. She begins by reflecting on the journey into software engineering, from her passion for math and physics to her time at NASA, where her enthusiasm was tempered by bureaucracy. Colleen emphasizes how many developers experience burnout and loses their creative spark after years in the field, particularly when external pressures and responsibilities mount. To reignite her own passion for creation, she involved her children in fun projects using Raspberry Pi, illustrating how working on these projects helped her rediscover joy in programming. Key points of her talk include:

  • Starting with Raspberry Pi: Colleen provides a guide on the essentials needed to start projects, such as a Raspberry Pi kit, SD card, jumper wires, and basic electronics components.
  • Learning through Play: She underscores the importance of engaging with children who possess a natural fearlessness and creativity, which can help rekindle adult enthusiasm for creating.
  • Basic Electronics and Circuit Fundamentals: Colleen explains circuitry, breadboarding, and the significance of correctly connecting LEDs, emphasizing safe practices for working with electronics.
  • Hands-on Projects: She describes specific projects, such as blinking an LED using Raspberry Pi and Ruby, creating a whoopie cushion prank, and building a robot, each serving as practical illustrations of learning and creativity.
  • Resources and Community: Colleen highlights the value of online resources and community support in bringing ideas to life, including using libraries for 3D printing.

In conclusion, Schnettler encourages viewers to find joy in making and innovation by utilizing affordable tools like the Raspberry Pi. Her message is to rediscover creativity and passion for projects, emphasizing that anyone can create fun experiences through simple electronics and programming.

00:00:12.410 Hello everyone. Thank you so much for coming to my talk. My name is Colleen Schnettler, and I am a Ruby on Rails developer and consultant. You can find me on Twitter as @TheLeanyBurger. I run a Rails consultancy called Bitmap. Pro tip: don't name your consultancy 'Bitmap Designs' because no one can spell that. Today, I want to talk to you about energy, happiness, and creation. We're also going to discuss electronics and family.
00:00:38.399 I want everyone to think back to when you got into software development, whether it was six months ago or twenty years ago. What brought you into software development? Think about it for a moment. Personally, I have been thinking about this question recently, and a few things came to mind: the ambition to create something, the desire to change the world, the need to have control over my career, and of course, making money, which was always important to me. But the main reason I got into engineering was that I really loved math.
00:01:40.350 I was really good at it and was considering becoming a math major, but I discovered engineering. I realized it seemed to be a better way to blend physics and math with practicality, where I could actually build something. I went to Purdue University and studied Electrical Engineering, and I had a wonderful four years there. It was an amazing culture, full of idealism and ambition, believing we could change the world. We were learning skills that would impact people everywhere.
00:02:39.390 I graduated college full of idealism and landed what was, at the time, my dream job at NASA in the robotics laboratory. I worked on the motors that controlled the fingers of Robonaut, which was very exciting. However, there was a disconnect between my expectations of what engineering would be and the reality of working in such a large organization.
00:03:11.940 One of the reasons I was drawn to engineering was a scene from the Tom Hanks movie Apollo 13. In that scene, the engineers are tasked with making a square peg fit into a round hole using duct tape. This highlighted the excitement of solving real problems with high stakes and urgency. However, what I found while working for NASA was a systemic level of bureaucracy that slowed down decision-making. So, while I initially had high hopes for my work, my enthusiasm and idealism dimmed over time due to the many meetings I had to attend just to get a simple project approved.
00:04:55.469 Fast forward fifteen years, my career has taken many twists and turns. I am now a consultant, and I'm living my dream again. My life has changed, and I found a career as a Rails developer that fits well into my life. I get to do something I love on my own time in a remote, flexible environment. However, I noticed that about a year ago, I was really having a hard time tapping into the energy I had when I was 22. Life is certainly different now—busier, with children and various responsibilities—yet I missed that idealism and energy to create and implement change.
00:06:01.409 I think many software engineers experience burnout after being in the field for a few years, and it's often due to a lack of enthusiasm and creativity. Many of us feel pressured to monetize side projects or maintain a blog, and there's a tendency to work beyond normal working hours. Some of this stress is self-created, but it is a reality we face. I began thinking about how to rekindle my energy and enthusiasm for creative projects.
00:07:31.740 I decided I wanted to create something just for fun, with no intention of selling it or turning it into tutorials. I wanted to remind myself how to have fun while creating. So, I involved my children—who are three, six, and eight years old. My eight-year-old, who had shown interest in robotics and programming, suggested we build a robot together. I agreed, but suggested we start with something simple like getting an LED to blink.
00:08:48.450 Children have this magical sense that nothing is impossible; they create without feeling judgement. This lack of fear of failure is incredibly inspiring. So, we began with the goal of getting an LED to blink, eventually working up to building a robot. I wanted to use a Raspberry Pi for this project, as I was looking for a way to experiment without having someone dictate instructions or pressure me into using expensive robotics kits.
00:09:20.220 This talk will serve as a step-by-step guide on how to get started with Raspberry Pi using Ruby. Here are some practical considerations when you're starting out. You'll need a Raspberry Pi, which you can purchase as a kit or separately. I recommend getting a starter kit, especially one that includes a power supply with a switch. This is particularly useful when working with kids, as it helps avoid accidental electrocution.
00:10:41.010 You'll also need an SD card, jumper wires, resistors, LEDs, alligator clips, and stepper motors if you want to create something that moves. You can buy all of this from Adafruit or your local electronics store. The first step is to flash your SD card with Raspbian, the Raspberry Pi operating system. If you're apprehensive about flashing the SD card, you can buy pre-loaded SD cards. Once you have Raspbian set up, you can install Ruby, which isn't included by default, but it's just like installing it on any regular computer.
00:11:58.660 I do want to mention Scratch, which is a visual programming language that my kids got really excited about once we had everything set up. It's an amazing tool, but for the purpose of this talk, we were focused more on Ruby. After getting Raspbian installed and Ruby set up, the next step is making sure Ruby is working. Recently, we created a simple loop with my kids' names, and they found it fascinating to see the relationship between what is entered into the computer and what comes out.
00:12:49.330 Next, we dove into electronics and circuit basics. Electricity flows from a higher potential to a lower potential, and a circuit consists of all the conductive pieces connected together to allow electricity to flow. Short circuits happen when the battery terminals connect directly to each other, causing damage. It's crucial to ensure proper connections to avoid short circuits and potential fires.
00:13:17.530 Now, moving on to breadboards. They're called breadboards because people historically used wooden boards to lay out their circuits. A solderless breadboard makes connections without using solder. The breadboard has power and ground rails, allowing easy accessibility of power throughout your circuit. Understanding how to correctly set up the circuits on a breadboard is essential for successful projects.
00:14:29.990 Let's also talk about LEDs. An LED is a light-emitting diode, which only allows current to flow in one direction. It's important to connect the positive terminal (anode) and the negative terminal (cathode) correctly; otherwise, you may need to flip it to get it to work. In addition, you will need to include a resistor to avoid exceeding the device’s current rating, thus preventing damage.
00:15:18.830 Ohm's law can help determine the resistor value needed in a circuit involving an LED. Essentially, you'll calculate it by subtracting the forward voltage of the LED from your supply voltage, then dividing by the desired current. In practice, if you're unsure, just grab a resistor and see how the circuit performs.
00:16:55.540 Once you get a basic understanding of these principles, we returned to our LED circuit. We connected the LED in series with a resistor and power source, aiming to blink the LED using GPIO pins on the Raspberry Pi. The GPIO stands for General Purpose Input Output. When set high, the GPIO pins can provide 3.3 volts to power the LED, and by toggling the voltage between high and low, we can make the LED blink.
00:18:10.560 I utilized the RPI GPIO library in Ruby to accomplish this. The library requires setting up the GPIO pin as an output before using it to control the LED. With simple code, we accomplished blinking the LED, which was a fun and engaging experience for the kids.
00:19:23.050 Moving on to our second project—a whoopie cushion! This was a fun project that my kids were particularly excited about. For this, we used aluminum foil as a conductive surface for a large button setup. The key was to connect conducting surfaces so that when someone sat on the cushion, the circuit would close, triggering a fart sound through the code we had written.
00:20:12.890 The kids loved this project, and it helped teach them about responding to physical interactions. However, I learned that it requires careful timing and acknowledgment that hardware events are often slower than what we typically anticipate.
00:22:09.550 Finally, I'd like to talk about the third project—building a robot. When working on this project, managing expectations is key, especially when children are used to seeing advanced technology in schools. We decided to use stepper motors because they allow precise control over movement. However, I have to emphasize that building a robot is more complex than just putting some motors together—it requires an understanding of mechanics and design.
00:23:21.800 While trying to build our robot, we discovered the importance of online resources like Thingiverse, where we could find existing designs that would help in our project. We utilized a local library's 3D printer to fabricate parts for our robot, and painting it was an exciting step in the process.
00:25:00.200 In conclusion, my goal with these projects and this talk has been to inspire you to find joy in creating. The Raspberry Pi is a fantastic device that provides an affordable and flexible way to work on fun projects. Remember to rediscover your creativity and enthusiasm for making things. Thank you for your time!