Testing
Lightning Talks
Jon Guymon
1 talk
Rob Head
1 talk
5 more speakers
See all speakers
Summarized using AI

Lightning Talks

by Jon Guymon, Rob Head, Strand McCutchen, Shane Becker, Aaron Kalin, Jason Clark, and Sethupathi Asokan

The video features a series of "Lightning Talks" from the Ruby on Ales 2013 event, showcasing various speakers discussing topics related to Ruby programming, Agile methodology, software testing, and improving developer experiences.

Key Points:

  • Rob Head's Talk on Agile and Virtues: Rob explores the intersection of programming, Agile methodologies, and personal virtues through the lens of humor and mysticism. He highlights how successful programming practices contribute to joy and character development, referencing Rumi and Ruby's design philosophy aimed at programmer happiness.
  • Jason Clark on Profilers: Jason presents a concise method for writing a profiler in Ruby, simplifying the complexities of application monitoring. He explains how to collect execution data through a sampling approach, creating a report from observed threads to improve application performance and insights.
  • Shane on Rubinius and Heroku: Shane discusses how to use Rubinius on Heroku, showcasing simplicity in specifying Ruby versions in Gemfiles. He encourages attendees to explore this functionality for flexible Ruby application deployment.
  • Mike Moore on MiniTest: Mike addresses issues in ActiveSupport TestCase within Rails, discussing the limitations of TestUnit and advocating for the integration of MiniTest features, thereby enhancing testing capabilities in Rails.
  • Beer Pouring Tips: A lighthearted segment delivers practical tips on bar etiquette and beer pouring technique, sharing insights from a third-generation bar owner, aiming to enhance the audience's experience at a bar setting.
  • Accessibility in Ruby: A crucial discussion on how Ruby can be made more accessible for visually impaired users underscores the need for clearer error messages and inclusive programming environments. This emphasizes the responsibility of developers to consider diverse user experiences in software development.

Conclusions:

The video illustrates a vibrant exchange of ideas centered around improving Ruby programming practices while fostering community engagement. It underscores the importance of lightheartedness in coding environments, advocacy for Agile methodologies, and a commitment to accessibility in software design. The key takeaway encourages developers to maintain a friendly, inclusive community and continuously refine their craft through collaboration and shared experiences without losing sight of personal growth and humor in their work.

00:00:21.439 Thanks. I'm also a little bit banged up after that. Sorry about that.
00:00:29.199 Anyway, I've run into this case a lot where you're working on one test.
00:00:34.239 You run it and it's fine, but then you run the same thing in your test suite and, for whatever reason, it's not fine.
00:00:41.360 It's taking longer than I had hoped. There it is.
00:00:47.920 This is the same test, and it runs fine on its own. You don't know why. There's probably some leaky test that's not doing its teardown properly, leaving some state over, and it's mucking up tests downstream.
00:01:05.280 I was using a script for a while that did an operation inspired by Git bisect to go and bisect the files in your test suite, keeping cutting it down until it found the one test with the leaky teardown.
00:01:18.720 At the encouragement of some coworkers, I decided to turn this into a Rake task. You can run this Rake task and, while it's going on, it will cut it in half, see if that makes it fail, then cut the other half, and keep narrowing it down until it finds the one test that fails.
00:01:32.240 It's failing while this is going on.
00:01:37.600 I'm the guy who broke the 1-9 production deploy at New Relic. I'm also the guy who fixed it, so at least I cleaned up my mess. This is not a Rails app; that's how it's so fast. This is the Ruby agent, which I work on at New Relic.
00:01:59.680 Well, it was the agent that broke the deploy, so I had to go and fix that real quick. It narrowed it down to this one test — a New Relic agent test that's breaking that other version number test we were trying to do.
00:02:21.480 If we look, I cheated for purposes of this test. This is the one that we want not to fail. Upstream, there's this version test that just says fail to true. The moral of the story is that this will show up if you don't do your teardowns properly, or your setups properly, depending on which side you want to cut it on.
00:02:40.959 Hopefully, this will help you. By the way, my mouse is not going to work. Also, my text resizing isn't working either.
00:02:58.000 Anyway, it's a gem. It's on GitHub. You can use it. It's very new, so tell me if it doesn't work. Thanks.
00:03:25.280 Okay, I'm Rob Head, and I worked for Pivotal Labs for two years. Now, we're starting a new lab here in Oregon called Zeal.
00:03:31.519 I'm from Ashland, and that means I'm going to talk about the deeper enlightenment of Agile and how it applies to mysticism. So this talk is called Ruby and Rumi, or why Agile works.
00:03:49.840 Okay, so sit, be still, and listen because you were drunk and we're at the edge of the roof — for real. That's a real quote.
00:04:07.840 This is my first Rails project in 2006. Look at that design work!
00:04:13.599 So this woman teaches people how to not be terrible people for a living. She has a business called Virtues Training, inspiring, empowering, and transforming people to achieve their potential.
00:04:20.160 Okay, that's cool. It got me thinking about these issues of virtues like courage, patience, respect, service, and humility.
00:04:33.520 I started to think, maybe philosophy, mysticism, and even religion are not about invisible friends or feeling superior, but maybe they're about trying to develop our character.
00:04:44.560 There's this guy, Rumi, who was a mystic poet in the 13th century. He was Afghani and Persian. Has anyone read any Rumi?
00:04:55.280 He was a mystical poet known for his beautiful headgear. He said this about courage, which is one of the virtues I was reflecting on: "Start a huge foolish project like Noah. It makes absolutely no difference what people think of you." I like that.
00:05:13.360 I have a tendency to do stupid things that people think are ridiculous, so I started to think about who else has done foolish projects.
00:05:25.759 Speaking of foolish projects, Matt decided there weren't enough programming languages in the world, so he created Ruby. He didn't do it just for the sake of doing it; he had this virtue in mind. He said, "For me, the purpose of life is partly to have joy." Programmers can often feel joy when they concentrate on the creative side of programming.
00:05:43.680 So Ruby is designed to make programmers happy. I love this guy. I met him for the first time last week, and it was an amusing experience.
00:06:00.560 Anyway, other foolish projects exist. Some punk kid is going to beat .NET, which would be built by the most powerful company in the world, but he did. This is not the first time we've started to think about what virtues make coding work.
00:06:18.319 Larry Wall had an amusing talk where he discussed laziness, patience, and hubris, but that's not really what we're talking about here. Let's talk Agile.
00:06:35.840 Agile is about larger iterations, cycles of action and reflection. It happens on a minute, daily, and iterative level.
00:06:54.160 I learned this from Rob Me, who anyone who's taken the RPI, which is Rob's programming interview, knows.
00:07:01.120 In 45 minutes, he knows whether he wants to hire you. The first thing he's looking for is empathy because if I'm a jerk or you're a jerk, it sucks.
00:07:18.400 We have to develop our character to become better pair programmers.
00:07:31.759 So why does test-driven development work for these things? Okay, I'll just jump to the end: tell the truth.
00:07:50.319 So why do these things work?
00:08:02.240 I want to tell you about a gem that I released this afternoon called 'Dude.' It came up during a pairing session I had.
00:08:10.240 We hid an exception, made fun of each other, and started making Big Lebowski references. So I thought, let's do something fun with it because Ruby should be fun.
00:08:25.280 I asked Twitter: "Hey, can someone make a gem called 'Lebowski' that monkey patches error messages, frequently appending 'dude' to your errors?" But after a week, no one did it, so I did it myself.
00:08:54.880 It's not that hard; it's like eight lines of code. The issue I faced was loading the code in IRB.
00:09:09.840 I wrote a nice little description of the issue I encountered, and I cc'd AVD because he's smart about exceptions.
00:09:24.720 I want to be able to grow this gem so it doesn't just append 'dude' to everything because that's kind of boring.
00:09:35.600 If you have an idea about how you could override a nil error so that it’s funny or add some randomization to your error messages, let me know.
00:09:50.560 Fork it, make a pull request, and you can use it in your repositories.
00:10:01.760 You guys look different from up here, like the new pope. Is there a new pope yet?
00:10:07.200 No, I don't think so. Anyway, thank you.
00:10:14.880 This is sort of a work in progress. You don't need to plug in because there are currently no slides. This is my slide, and I have four minutes and 43 seconds, so I'm going to go as quickly as I can.
00:10:30.000 So, don't be a poser. Are there any designers in the house? Keep your hand up if you are a designer that lobs PSD files over the fence.
00:10:50.320 Awesome. See, it's 2013. So why are so many web designers still thinking they're web designers if they are just delivering static images?
00:11:07.680 It starts with false assumptions about the relative cost of potential solutions and fails to fully convey the user experience.
00:11:20.000 How many people have received a design spec or user stories that are out of alignment? Yeah, it happens quite often.
00:11:39.920 I used to be that guy, a print designer, thinking I could design for the web just because I liked using apps. That's something we're growing out of, but it’s still around.
00:11:54.400 It's amazing how many consultancies are still working with PSD files. Oftentimes, I ran into functionality scoping issues because of unrealistic designs.
00:12:13.120 At some point, to better understand the medium and communicate design intentions, I learned HTML, CSS, and basic JavaScript.
00:12:28.839 My eyes were opened to the power of working in the medium during the design process.
00:12:35.680 I was given the opportunity to design for apps and create working prototypes, which I handed off to developers. They found it incredibly helpful.
00:12:48.480 There was a lot to refactor because it was designer code, but I started pairing with developers to develop functionality.
00:12:59.680 This mutual understanding allowed me to learn how to write ERB files and basic logic.
00:13:07.760 Today, we work with responsive grids and iterative design — old methods no longer apply.
00:13:25.760 I'd love to talk more over a beer if anyone is interested. Thank you.
00:13:30.880 Hi, I’m Shane. I’m speaking first tomorrow. If you aren't totally hungover, I'll see you then.
00:13:36.800 I had some slides, so who knows about Rubinius? Rubinius is available for use on Heroku due to some work by Terence Lee and Andre Arco.
00:13:44.959 In your gem file, you can specify the version of Ruby you want and which implementation. It's simple enough.
00:14:04.640 You say 'ruby' followed by a version number, like '1.8' or '1.9.3'. You can specify your suspense as an argument.
00:14:10.240 If you want to run your code in 1.9 mode on Heroku using Rubinius, that’s all you've got to do.
00:14:23.840 When you push to Heroku, it will discover and switch rubies.
00:14:30.880 Thank you.
00:14:32.880 Sweet! Alright, five minutes. Since I'm at Ruby on Ale, I figured I should share some cool tips for having a better bar experience.
00:14:41.280 A little background, I'm a third-generation bar owner. My family owns bars in Chicago, where I grew up.
00:14:49.520 I figured I could share some tips since we're going off drinking later.
00:15:05.440 In my perfect world, when you walk into a bar, there’s a setup similar to this. Those bottles you see are call-level drinks; they’re expensive.
00:15:12.960 If you just ask for a gin or whiskey, it's going to come from the well, which is much cheaper. Be careful, as it could be swill.
00:15:25.440 So, if you want something nice, call it out by name. Are there Starbucks aficionados here? I am one.
00:15:37.840 When at a bar, there’s a short or tall glass depending on what you want. A short can also be a rocks or highball glass.
00:15:49.760 Tall can refer to a Collins or pint glass.
00:16:02.160 If you’re a whiskey drinker, you can ask for it neat in a short glass, where nothing touches it.
00:16:10.560 This is Ruby on Ale, so how about pouring beer?
00:16:17.760 Raise your hands if you’re home brewers. Alright, let’s review how to pour beer.
00:16:29.440 Start with a clean glass. You washed it, right? Start pouring at a 45-degree angle, aiming for the bottom third of the glass.
00:16:40.640 When it's about halfway full, tilt the glass upright to build a beautiful head. This is the flavor part.
00:16:54.240 If you get flat beer, you can try to send it back.
00:17:03.200 A cool bartender trick is to take a straw and whisk the top quickly.
00:17:12.640 Hopefully, by now you have a head that looks about two fingers in length, which is good to enjoy that beer.
00:17:21.680 Also, remember there's customer service involved. Don't be that person who critiques the bartender.
00:17:34.240 Be kind; introduce yourself to the bartender. Get on a first-name basis. It helps when the bar is packed.
00:17:47.680 And of course, don't forget to tip. Service industry workers often get pinched by taxes.
00:18:02.080 Hopefully, those tips help you. Thank you.
00:18:12.000 Hi, I'm Jason Clark, and I'm a Ruby agent engineer at New Relic.
00:18:20.000 Today, I’m going to show you how to write a profiler in 50 lines of Ruby.
00:18:25.600 A profiler is an application or library that provides insights into your code execution. It observes what's running and provides useful information.
00:18:42.560 Profiles are often collected by instrumenting methods, but that can double the time it takes for an application to run.
00:18:58.720 We'll take a sampling approach, peeking at the state of our stacks intermittently to construct a picture of our application's behavior.
00:19:12.640 Let's imagine this is our app: a basic web stack where we call through the server down to the SQL.
00:19:26.800 We observe our application at various points in time, collecting data useful for building a frequency profile of what's happening.
00:19:42.720 The code we need to execute runs beside our application code, spinning off into a separate thread that periodically sleeps.
00:19:56.640 Every so often, this thread will wake, and we'll take a sample for our profiler.
00:20:09.440 The most complex code is actually pretty simple. We get a list of running threads and iterate through that list.
00:20:26.080 When we get a particular thread, we can take a backtrace, which has a series of lines that represent the current execution state.
00:20:40.640 Once we've gathered these lines, we can perform a basic count on how many times we've seen each line.
00:20:55.760 With this information, we can build something that looks like a simple report.
00:21:13.920 These stack traces can get deep, and many lines of code can show up. We'll note instances of our code executing.
00:21:28.720 This is just the tip of the iceberg. There's much more you can do with the information gathered from backtraces, like building call trees.
00:21:44.320 Code for this sample is posted on GitHub, and I’ll be giving a longer version of this talk at Mountain West RubyConf. Thank you.
00:22:00.000 Alright, I'm Mike Moore. I work on a project called MiniTest Rails allowing MiniTest and MiniTest Spec within Rails.
00:22:07.200 I wanted to address a problem with ActiveSupport TestCase in Rails. ActiveSupport TestCase inherits from TestUnit TestCase, which is an issue.
00:22:25.200 We've done terrible things to work around this in Rails 4. ActiveSupport TestCase was going to inherit from MiniTest Spec until it got changed.
00:22:38.720 There are many features people want within MiniTest Spec, but we can't access them due to the inheritance.
00:22:51.360 Now, I just need to power on my laptop.
00:22:57.440 Is this working? Can you see this?
00:23:03.680 This new version of MiniTest will extend the MiniTest TestCase with a DSL that can be used.
00:23:19.840 This allows us to use it in Rails without any blockages.
00:23:25.120 And buy my t-shirts at RubyThreads.com.
00:23:43.920 Who can tell me what this means? Yes, and so we are nice.
00:23:52.720 I think this is a great tenet of the Ruby community, thanks to Matt who released Ruby 20 years ago.
00:24:08.800 People were held accountable for being jerks and the community was small enough that we maintained friendliness.
00:24:24.160 The Ruby community has gotten a bad name recently. To keep it awesome, we should build community.
00:24:38.240 I helped found a little meetup outside Washington DC, which has been a great success.
00:24:53.440 The other side is writing nice code, as in kind interactions. An obvious way to do this is by giving back to open source.
00:25:08.640 On a more practical level, use semantic versioning to prevent breaking changes. Ensure your commit messages are clear.
00:25:22.640 Using namespaces and sensible APIs makes code friendly.
00:25:35.840 Let’s keep Minnesota nice and if you're interested in one of these 8-bit Matt stickers, I have five left. Come find me.
00:25:51.440 Thank you very much!
00:26:07.520 Hello! Learning and teaching Ruby is easy.
00:26:14.280 Let me talk about some incoming tools.
00:26:20.280 Visually impaired individuals don't want different treatment; they want to be included.
00:26:32.000 You can understand the programming language.
00:26:42.280 The language requires slow speed for accessibility.
00:27:02.000 Our productivity is often affected by issues in understanding.
00:27:11.960 This includes blame on operating systems for accessibility assistance.
00:27:28.800 Ruby has less code, making it very teachable to the visually impaired and actually enjoyable.
00:27:45.040 The major problem we face while teaching them is interpreting error messages.
00:27:58.720 Error messages need to be accessible, so please consider that there are blind users of Ruby applications.
Explore all talks recorded at Ruby on Ales 2013
+12