 So, my name is Joanne Chang, I am a software developer at Keen.io, and yes, this is my third time at your camp, and I'm really happy here to be here to kick things off for all of us. I'm also very jet lagged right now, so I'm just in a really weird mood, and this will hopefully be interesting. But tonight I want to talk about awe, awe is that feeling you get when you experience something amazing that makes you feel like a prickly sensation on your skin, sometimes people say that they feel breathless or speechless when they see something that causes awe. And generally when we feel awe, we feel this mix of wonder and amazement, maybe a little bit of fear and confusion. We realize that the world is much bigger than we think, and there are all these amazing things that exist outside of our own heads. One of the things that makes me feel awe are the Rocky Mountains, as you can see here, out where I live in Colorado. I love hiking and being out in nature, and people become motivated when they feel awe. These mountains that you see here have inspired countless beautiful works of art, they've inspired poems and music to be written about them, and these works of art also causes awe for other people when they hear them or see them. The effects of awe are contagious. For many programmers here, I know there has to be technology out there that sparked this same feeling. That feeling of awe is what drives our passion for working in this industry. Perhaps it was using a computer for the first time, or reading our first book about learning how to program, and being amazed at all the possibilities that code can bring. Maybe for some of the more advanced people, it's reading about a new well-designed language that challenges the way that we think about code as programmers, or watching a brilliant co-worker solve a problem. For me, it was like realizing that all the complex work that we do on computers boils down to a few simple operations. As I continue to work as a developer, I often forget how to feel awe. I get jaded, and I kind of fall into these cycles where I just don't enjoy programming. Have any of you heard this phrase spoken at your job, or something similar? Maybe not about computers, but about a language, or a framework, or anything. Do any of you think this? Because I do. I definitely do. And this talk is supposed to be about positivity and awe, but there's a lot of technology that is very, very broken. So I remember this every time I hear about a hacking of a major company because of a poor security system, or a simple integer overflow potentially crashing a plane and making it fall out of the sky. Or when I come across, or in my job, when I come across a poorly documented library, or just a poorly written library, there's a lot of code out there that's broken over poor decisions and lazy development, and that's kind of a fact. But thinking this phrase constantly that computers are broken or our technology and our tools are broken is not a positive, it's not beneficial for our working environment. Sometimes these mistakes that we encounter are caused by things, by minor mistakes or things that we, or they're just things that we disagree with. And this attitude translates to others that we, sorry, this attitude spreads to others that we work with too. So for a good amount of time this year, I was awe deprived. Some might call it burnout, but I hit a point where I just didn't enjoy programming, and I wasn't fascinated with some of the amazing projects that are being developed right now. And I was jaded from the poorly written libraries and the documentation I was working with, coupled maybe by the lack of a positive community and positive support. So tonight I want to talk to you about my own adventures in building myself up again with programming and other things that bring me awe. And I'm really hoping that this will resonate with some of you. So I've always had this weird fascination with combining things that aren't traditional combinations. I think there's a really interesting set of problems to solve when you find the intersect of two fields that aren't traditionally seen together. And so one of my recent hobbies is dance, and I'm now saying this out loud and I'm kind of, it's kind of weird for me to admit that. I am kind of an awkward person, and I'm not very good with movements, but I've been taking pretty much any type of dance class that's available in my city of Denver for the past year and a half. And I've always watched, I went to a music school and I always watched dancers and I kind of envied them for being able to express themselves through their bodies. And I've always been too scared because I always thought it was too late. And so like before I started dancing, this was pretty close to how I was. And I'm still not that great at dance, but it's still, it's a very challenging hobby for me and it's something I feel really strongly about because it's just such a mental challenge and such a fun thing for me to do. And so one day after a dance class, I had a conversation with a friend who suggested that I try to think of ways to visualize dance. So I should mention that, yes, I do make charts and maps for a living and I worked pretty hard, I worked a while to get to that point. So kind of combining my passion for visualizing data with something that I was doing that wasn't anyway related to my job was kind of a new challenge for me. And so this led to a lot of sketches and a few experiments based on visualizing captured motion. And also, so two years ago I spoke about Ruby processing, which is a way to draw shapes with code. And last year I gave a workshop on D3JS here, which is a way to draw shapes in the browser. So naturally this year I'm going to show shapes on a screen. So I'm going to go set up a little bit. Oh, here we go. See if I could just, oh. So yes, you're up. Okay, that's actually my notes. I'm really challenged. So my lovely volunteer will demonstrate some of the things I've been doing and I'm going to talk. So when I was thinking about capturing motion, one of the easiest ways to capture, you need to, there we go. One of the easiest ways to capture motion is through this device in Microsoft Connect. So basically what the Connect does is it takes an infrared scan of the room, what's in front of the camera over there. And so you have all these data points of the scan. It's very distracting. No, continue, please. I'll just stop looking. Continue. So you have an infrared scan of the room and all these points in three dimensions and use past that information to open, to basically a computer vision library that looks for a person. At least that's what the code I'm doing right now. And once it finds a person, it's going to look for the joints at that person. So the head, you can see the neck, shoulders, there we go. Right hand. Yes, it should be red. Left hand, and all these joints. And so that was kind of my first step in trying to visualize movement. So after I got the gist of tracking a joint, I started to think of ways to make this pretty and ways to make this kind of artistic because it's magnifying all your actions. So there we go. Okay, that's the good reaction. So I just had this idea of, I was basically drawing a bunch of stuff on the screen just following the right hand, which you should be moving. There's the right hand. Okay, yeah. So I had a bunch of points and I was able to trace it. But then I thought of this idea of having these graceful bubbles just kind of fall around all over the place. Oh, good. Yeah, I actually, can you, there we go. So yeah, there's supposed to be these graceful bubbles that just kind of float around. And if you're actually interested in this stuff, there's a book called Nature of Code that explains how to kind of create these physics systems and mess around with physics to create shapes and animations that move around like this. So once I got the gist of tracking a joint and being able to draw with it, and I was kind of happy with this idea and how pretty and floaty it was, I wanted to get even more creative and kind of push this idea a little further. So I had this idea of being like a dancer being able to generate music with movement. So like, yeah, you can dance. I'm, that's, um, so yeah, I had this idea of a dancer being able to generate music with movement. So this is what I built. Yeah, it's Java. All right, there we go. And there's red dots. Oh, the audio's not working. I should probably explain this project. I didn't have that in my notes. So basically, I had this idea of like this heart that kind of was its own being, like something that was its own, that kind of like flowed like the ocean a little bit. And it was its own thing. It wasn't just a static thing that you would just go up and play. So it was its own thing. And then, so what it's doing is it's tracking Andy's left hand. And it's just playing the strings of the harp in sort of this, I call this space harp, because it kind of sounds like a space thing. I'm going to go back to slides now. That's it for demos. So for these, these, these were two just kind of pet projects that I worked on for the past year. And, you know, they're, this is of more, this is actually from like a really beautiful dance and technology piece by an artist named Daito Minabe. I completely forgot the name of this piece, but you should look up his works. They're absolutely thrilling. But these sort of pet projects that combine passions, they just kind of help me stay in love with technology and keep me sane. I really loved working on these projects, even though the whole demo didn't really take too long to show you what I did. And I never actually presented these things in public, although space harp was at an office demo that we did, sort of as an interactive thing for people to play with. But these experiments also led me to learn about amazing technologies I've never been exposed to before. I didn't really know much about computer vision before learning about this. And it was just something I googled because I thought, yeah, sure, I should try to combine programming with dance. This totally should work. And then I realized that this is, it's such a hard field and something that people are like constantly studying, and it's, there's so many papers written about it with math that I can't understand, but it's just, there's just so much out there. And people are putting in so much work into these things. And this constant learning and exposure to really thoughtful technology is why I love working as a programmer and why I feel motivated at my job. So recently, I also spent a bit of time reading about the history of Bell Labs. And I became fascinated with this man up here. This is Claude Shannon, who is a mathematician, engineer, father of information theory, and just all around genius. And he was an employee of Bell Labs in the early to mid-1900s. He also did cryptography work for the US during World War II. And his work on information theory was a basis for the technology behind the modern microprocessor. And he was also one of the first people to explore the world of artificial intelligence, just completely blown away by how long and how amazing this man's resume is. But in all the sources I read about him, all the sources I read mentioned how eccentric he was. He had a ton of hobbies outside of work, and I'm just going to list a bunch of weird things. Pogo sticking, juggling, unicycle writing, playing music, gambling, chess, board games, he owned turtles. But with all these things that I named, he had an engineering project related to all of them. He built mechanical turtles. He built electronic board games. He built a juggling machine. He built a chess machine, which actually became... He wrote a very long paper on it. He also built a small wearable computer, which was technically the first wearable that could... that would observe a ball in a roulette's rotor and could kind of predict where it would land and sort of increase the odds of winning. 100% illegal, just totally illegal. But his collection of strange projects really resonated with me because it shows that the work that he did was driven by awe and curiosity, not by this hate of technology or this negativity. But his bosses at Bell Labs didn't really enjoy these projects, and he influenced his really important serious research, and he did quite a lot of that, too. And he eventually left Bell Labs. They lost him. They lost a genius to another...to a university because these side projects were so important to him and his career. So going back to awe, there's also several studies that prove that feeling awe causes us to be more empathetic and more caring for others, and it just makes us better people. So there was a research study in UC Berkeley recently. And in Berkeley, California, there are these really beautiful eucalyptus trees that are just very tall, and they're on the campus. So these group of researchers brought two separate groups of people to the campus. One group of people, they brought to the eucalyptus trees and let them stare at the trees for a minute, and the other group of people, they just kind of show them the university building. So as they were walking back to the lab, someone by the lab would drop all of their pens. It's just a minor accident. The people who looked at the eucalyptus trees were more likely to help the person who dropped all their pens versus the people who were looking at just the building. So this sort of empathy and this sort of altruism, this does derive from awe. There's other studies mentioned in this New York Times article of why do we experience awe. It's a really great article if you're curious about this. And I love your camp and Jay RubyConf because the wonderful organizers have chosen speakers who have prepared extensively these great presentations for all of you. You're going to meet other developers who do amazing things and have unique backstories. You're going to have time to enjoy nature in the beautiful Potsdam or ask someone about the amazing work they've done at work or for open source. So I want you all to feel awe this weekend. Thank you.