 collaborate and listen. Reese is here with a new presentation. Sometimes, as a pipeline gets confusing, so here's some tips and tricks y'all should be using. We'll ever stop, yo, I don't know. Turn off the lights and I'll glow and I'll stop right here, actually. So that's my little intro. This is more towards the junior devs and people starting out in Rails. Tips and tricks. We're just going to jump right in. So tip number one, don't do this. It really is true. Really, really, really don't do this. You all are devs, you should know better. And if not, you're going to open up a whole can of hurt. So first things first, as developers, you're going to be like, hey, I know what to do. And you do the whole typing type thing and you type in Rails S or Rails server in your console and you do the clicky click and click on localhost 3000 and you see your website. That's the console output up top and then on the bottom is you see the background image. You see the little image. The CSS is rendering. Everything looks good. So then you deploy to prod. And what happens? This. And you're like, hold on, wait a second. Where's that awesome picture in the background? It's all gone. It was working in dev mode. Why is it not working in prod? So tip number two is test locally in prod. So my job at Ninefold is a rail support engineer and this is a common thing that I have to always say to people whenever they say assets are broken on our system. I'm like, did you guys test locally in prod? And most of the answers are usually no. So it is really, really important. First things first, do the type of type thing, do Rails S minus E production, otherwise known as Rails M equals production, Rails S. And you do the clicky click. And things break again. And this is exactly why we say test locally in prod. You can see at the very top that you get the no route matches get. And you don't actually see anything. So going on to the first trick, let's get local prod working. But before we do that, I'm going to talk really briefly about some differences between dev and prod. And in your config environment development.rb and production.rb, there's a line that says config assets compile equals true and dev. And it's going to be false in production. So it's true and dev because assets are actually compiled on the fly. And in production, assets are actually, or sorry, production actually assumes the assets are already pre-compiled. And that's a huge difference. So then you do the type of type thing. And you do get check out minus B test abroad, otherwise known as, you know, check out a new branch. Let's call it test abroad. And then you're going to compile your assets by doing Rails M equals production bundle exec rate assets pre-compile, type of type clicky click. And it breaks. So what happened? This happened. That's Web Brick. That's the best image of Web Brick out there, probably. Because it is the dumbest web server out there. So what do you do? You go to your production.rb file and you actually add, sorry, config.server static assets equal true. And this basically tells Web Brick, the dumb web server that, hey, I have some assets in my public assets folder, do something with it, serve it out. And it does. Oops. And there you go. When it does, you run it again. Boom. So the next one is trick number two with CSS and images. I'm not really a fan of CSS at all. And you will see why. So originally, I'll write a code that looks something like this. And I think it works because it works in dev. And in prod, it actually does it. So instead, there's two different versions. If you have .css.erb, then you have the erb little thingies, I forget what they're called. But if you have .css sass, this is what you have to use. The underscore path and the dash URL, dash path, those are helpers. And they will actually help you out. They will tell you exactly where to look for those files in the asset pipeline. And for Rails 3.2 users, this is the last tip. Basically, you want to add this gem to your gem file. And it basically speeds up your asset precompilation because it won't do them over every time you run it. So the ones that have already been done are ignored. All the new ones will actually be run again. And it will actually speed up. And it's so good that it actually was implemented in the core of Rails 4. And that's really it. So hopefully you learned something new. Give yourself a high five. Give somebody else a high five. That's me. That's my tour handle. The end. All right. My name is Corey. This is kind of my information. I'm a recent graduate of G school. So, you know, there's a few of you out there. I'm also looking for work for those of you that need work. Does anybody here use Alfred or know what Alfred is? All right, cool. So Alfred is awesome. And I'm here to kind of show you a couple cool things you can do. This might be aimed at more of the beginners. When I first started G school, one of the things that really impressed me was the ability to use Alfred and Dash, which is like a document handler. Really easily, I can just kind of type in Rails and then, you know, have secure passwords. Something like this. Boom. Upcome the docs. Really quick and easy. I can jump into, you know, Ruby, Array. Awesome. You know, just pulls up the docs. And as a beginner, you look at the docs a lot. So this came in really handy. But the coolest thing I found about Alfred was the ability to kind of write your own scripts. It handles Ruby. So I was like, great, I'm studying Ruby. So I'm going to write my own Ruby script. And also as a beginner, I found doing Rails new a lot, which means going to the Ruby gem site and getting all the versions and all of this. Every day we were doing Rails new or writing new Ruby projects. So I wrote a little Alfred workflow that kind of allows us to go in and I can go grab the Arspec gem. It'll pull up all these different versions. So I can just kind of do a command enter here. Let's try this again. And it'll just paste it right in my gem file. So I can do this in any of the gems. If I don't know exactly what it's called, I can do a gem search and Rails Arspec and it'll just pull up the page, do a search for me. That's not what I'm looking for, but anyway. So that was basically a small little workflow that I developed if you want it. There's tons of workflows for those that you don't know. GitHub also, you can download people to kind of create these workflows, download them. So I have one here. This basically will go through, goes to my GitHub repository. Here's my Ruby gem workflow if the internet works, which it doesn't look like it's working. Anyway, I guess it's not working. So that's what you get for live coding. So that's about it. But this is my website. There's an article on here, if it ever loads up called Alfred is amazing, something like that. You can go ahead and find it, download this gem. There's a lot of cool tools out there. And as a beginner, I highly recommend it. Thank you. Let's just get started. Sorry. So the one thing I want to talk about is the human connection. That lightning talks are a little bit sparked by Pamela's talk yesterday on the company culture. And one of the things there that I find is important and interesting is the dealing with the tough stuff. And for that, I think it's important to look at the human connection. I want to go through two examples when you start a new job. And you have your first day and you get set up with your email and everything. And then you get to dive into code and you do your stuff. And then, of course, something goes wrong. And you have a merge conflict or something. And all of a sudden, one of your new coworkers is standing next to you. He's like, you broke something. What's going on here? That's not okay. And you're like, Oh my God, I'm the new guy here. I did something wrong. And it's super easy for the other person to just see you as that new guy. And that makes for a pretty shitty experience. So imagine a different scenario or same scenario where you get new hired, but you get set up and everything. And then actually everybody in your team takes some time to sit down with you and have a 15, 30 minute conversation about something they like, something you like. And you start building that human connection with that person, where you basically see, Oh, we like dogs. Oh, we actually don't like bicycling. Oh, we like to go on hikes. So you build something that you share and you build a human connection. And then if you go back to that same scenario where you do something and something goes wrong, your co-worker showing up next to you is not going to be looking at just, Oh, the other guy, the new guy, it's going to be much harder to dehumanize. It's because you have a personal relationship. Oh, she also likes cats. Oh, we like cats. Or maybe even though the cat's names are kids names or whatever it is, you have that personal connection. And based on that, you can actually interact on that level and see the other person as a human with feelings and everything that comes with it. And based on that, you interact on that level. So basic idea is you start building that connection before you have to solve the tough stuff. And then solving the tough stuff together is actually easier because you do it on a human level. And we're all or most of us here are familiar with standup procedures in the agile world that you do that every morning on your project or at some point during the day where you check in about the status of the project and what you did the last day, what you're going to do, what is in your way. And one thing you can add to that as a practical tip is do something called check ins where you basically take a few minutes where every person on the team gets to check in personally. And there's some format around it in the links I have in the next slide that can actually give you some guidance on what to do. But it's basically the idea is you talk a little bit about how you feel that day and if you have something to share, that's important. So just to give a little bit of a context to your team about your state which helps recreate that personal connection and reinforce it. There's some good resources out there. The Matrix Leadership Institute here out of Boulder focuses very much on that connection within teams and building those connections. They offer awesome trainings and there's also a book called Software for Your Head which was done by the McCarthy's and they have the core protocols and one of those protocols is the check-in that I talked about where you can basically have a certain format. I've been doing this with my team for the last couple of months with huge success in terms of just people getting close to each other and it being easier to solve problems and have more successful meetings. It's definitely something worth checking out and looking into if you have any questions feel free to talk to me. Thanks. So good to see everyone. I'm a QA engineer. I thought I'd give something a little three-minute talk on something that isn't tech. So this is something I've been telling people about for a while and every time I try and talk about I get these blank stairs from people. So what is methane hydrate? So first off I'm not an expert on methane hydrate. I'm not a marine biologist. I'm not a fuels guy or geologist anything like that. Basically dead stuff stinks to the bottom of the ocean. Over time it gets compacted until it's low enough in the earth where it's warm. It starts breaking down creating methane and then the methane bubbles start to rise and then they rise to where it's cooler and they get trapped in this soccer ball type lattice and yeah basically it's ice that you can burn. So where is it? It's off the coast of pretty much everywhere. How much is there? I'm not going to read this all out to you but they estimate there's you know between 50 and you know 300 years of the stuff. So there's a just a ton of it. So again where is it? The yellow ones are where it's been recovered already and blues where it's thought to exist. So why aren't we using it now? Currently it's really expensive to get at and right now it risks damaging the equipment. The Japanese governments put a ton of money into it. They've built this huge ship that they think can get at it but it's still a lot of experiments by a lot of different countries to get at it. So why do I care? Well first off scientists care about it. It's ice you can burn which is pretty awesome and the molecule looks neat. So it will save the climate. So there's this thing sequestration where one of the ways they've been able to get at this stuff is by pumping carbon dioxide down near the molecules and the molecules will suck it up and release the methane gas. So they figured they are able to harvest tons and tons of natural gas while also sequestering tons of carbon. So this has been proven by a bunch of people. Natural gas I'm sure you hear all the time is cleaner than coal and a fifth of our energy comes from coal right now which is I know a lot. Another reason you should care about it is it will destroy the climate. So there's this 3% rule which is you know natural gas once you lose 3% of it that leaks and then it completely undoes the carbon benefit. Also the clathrate gun hypothesis. Hypothesis which sounds like something really cool in sci-fi. Basically you know as the climate warms it melts the ice releases the methane. When it gets warmer and it's just a negative cycle and I guess this has happened a few times and on top of it there's a moral hazard because why bother to develop alternative energy sources. You know if we have 300 years of oil. And last things so some of the sort of scary things about it is you might see a lowered international cooperation and the potential conflict over ocean rights because oil is strangely enough one of the reasons a lot of countries force each other to get along with each other. So yeah that's all I got. Alright and I'm on. Hello everybody my name is Marcus Morrison I'm a developer at livechurch.tv. We are in Oklahoma City moving on. I had the privilege of working on a tool for develop.me. It is a annual review tool for churches so I'm gonna go and tell you a little bit about some of the challenges I had while working on that. So in an annual review process we have we have states. So in the states we have a self-review, a leader review, a summary of that review and then the action plan which are the steps taken to get better and grow. And then obviously a review is completed. So anybody see where I'm going with this? I was trying to figure out what to do. How do I handle those states? How do I move from one to another? So I looked at some options. There was enum, sounded cool, nifty array, those are fun. Time stamp party, like 15 time stamps, check them all. Who doesn't want to manage that later after me? Status attribute, complete, move on. All those seem a little bit of a headache. So luckily we all know in the Ruby community we have gems. So after some research primarily I found three gems. I found one that was wicked and what made me kind of look at wicked was it let me step back and think of this not necessarily as states but more as a walk through a wizard go from step one, step two, step three. To me made complete sense and humanize a little bit. So next one was state machine which if anybody in here has done a state machine they probably looked at gem. It was really cool, was really have handed for what I needed and unfortunately I could not relate to the example. I think it was how to build a car. I wasn't building a car so couldn't really relate to it. Another one I found which is fairly recent was statesmen. What I liked about statesmen and kind of drew me towards statement was that it allowed for different states for various model attributes so I knew that I needed states I knew that I wanted to manage it in one place and I knew that I wanted that attribute to help manage it. So statesmen I did not create this some awesome company named Go Cardless did please check them out got to give them props. So what I really liked about statesmen is that it allowed me to decouple my logic of my models from views and controllers so that was really nice. It also had guarded transitions so in order to move on from A to B that it helped me protect myself from moving on too soon. Also full audit history. Here's an example of what it looked like. So list of states list of transitions that's what I'm going from and to. I can define what to do after and before and I can define what to do within those transitions so really nice really easy really smooth. So I just wanted to you know help somebody out if they are looking for gems or thinking about the needy state machine just want to get everybody heads up that there's a really awesome one that exists on Twitter I am at morson also on github and thank you. Name is A. R. T. Howard draw our Hara on Twitter principal and founder at dojo4.com or web and mobile agency right around the corner here and what I'm going to talk to you about briefly today is just to get you thinking outside the box about static site generation and just the power of static HTML in general. At dojo4 we do a lot of static websites using middleman if you're not familiar with it. It's a data driven site generator and Ruby. Just some examples of got a little bit of data here templates looks a lot like rails but at the end of the day you're just blowing out a bunch of static HTML. We managed some extremely big sites with this technology such as skinnip.com which is fully static that's deployed via s3 cloud front and it's a monstrosity of a site. The internal team there their developers and so they have no problem sort of managing that code base but it's been a huge success over their previous WordPress site in terms of like robustness and speed ease of management and for you designers in the room 100% flexibility for doing really sophisticated responsive designs with no limitations. So we build a lot of those and they're cool but we've really been pushing the boundaries of these when you're building static sites people often think about how can I change them. So we're doing everything from mashups that for example pull in data say from Tumblr to give people the ability to author. We're also our own website we have an integration with draft in where we used to write little robots that pull and build and compile our site on the fly. The most recently the coolest thing that we've done recently I think is actually using rails as a static site generator. So we prepared a bunch of sites for the stand up to cancer telethon it's on 27 networks tremendous amounts of load and so we developed this little strategy that we use in rails. We use rails to recursively build itself and push it out test 3 super high tech some of you old timers can recognize there and with that we've been able to I was just going to show you an image here of our server load with 27 networks hitting a single server for applications this big spike is actually a deployment and asset compilation and then we basically sat there at nothing while 100 million dollars was raised in 45 minutes. So just want to encourage people to start thinking outside of the box around what static means. Everyone knows that naming caching hardest problems in computer science and everybody has probably worked on it on a rails app with crazy crazy complicated cash busting and the amount of money that you can spend an effort chasing that you don't necessarily have to think about caching in the back end you can think about caching on the front end and using out of the box tools Jekyll but also some custom things one little one little last tidbit I'll make is this this this this methodology that we're using where we have rails recursively start passenger with 16 threads mirror itself push it up to S3 and cloud front for this particular application the customer is actually logging into an admin and making changes and then they have a editorial process where they make a build a preview it deploy it and then of course like a link to that build but this particular build needed to occur quite quickly and we analyze many many other static site generators such as Hugo it's written and go super fast whatever and so this particular site we're building in around 300 seconds with Hugo that was it around 10 and with this very simple way of using rails to build static we were actually able to bring that down to about three seconds with about 500 lines of Ruby so encourage people to think outside the box about static site generation and think static first on your projects so I am I'm Doc Norton I am global director of engineering culture with Groupon it's a big long title it basically means that my job is to fold the social graph and engineering try and get our teams all kind of connected to each other and agreeing on how we work together and this talk sorry is actually a to our workshop that I usually give but I'm going to do it in five minutes so hold on right somebody asked a question earlier today how do you get everybody on the same page how do you get everybody happy on a team well it's not easy but there's some tools that we can use so let's roll through this we're basically to cover three simple things simple team decisions forming the right team and thinking in parallel all right so simple team decisions right these are basically think just binary decisions relatively low risk low complexity high certainty type stuff that decisions teams need to make a good example we're a startup and we're deciding that we're going to actually start supplying coffee in the office and someone says hey what about Pete's right and oftentimes in this stuff when these kinds of things come up it's a pretty simple question yes or no but what we find is there's a lot of conversation that goes on if you call for a vote a lot of people are kind of hesitant they're not sure so something that we use often to help with this is called it's something called fist to five you folks may be familiar with it you may not be oftentimes the beginning of a discussion we'll call for a fist to five vote all right so say hey should we should we get Pete's right and the reason we do this is so fist to five is everything fist is I absolutely disagree to five is like I'll go get the coffee every morning right and using this scale people have an opportunity to rather than just saying yes or no express some level of hesitation or support and so by calling for a fist to five vote oftentimes what we find is if everybody's two or below that's a no if everybody's three or above that's a yes and oftentimes there's only one or two outliers so we can then focus in on okay well why do you feel differently than the rest of the group what should you know what do you know that other folks don't right so we'll call for these before conversation ensues or if there's a lot of conversation going on maybe someone just call for a fist to five now that's a simple thing but what about you know more complex problems one of the challenges we have is you know this collaboration really mean everyone we've got a complex problem we want to want to work together as a team but we have everybody involved in the conversation it's hard for things to move forward give an example what kind of chairs we want to purchase for the office right here's something that comes up in that conversation oftentimes you know as it goes on there's a lot of people that are participating in the conversation you might actually see the conversation kind of dies away and then it comes back up again and if you look at all of these exchanges that are happening here there's something that kind of stands out there's at least one person if not more that are participating in the conversation but they're also preceding their statement with things like I don't really care but and I actually came across this and asked the individual so what's going on you keep saying you don't care but you keep contributing so I really don't care as it turns out I have a custom chair that I have to use because of some back problems blah blah blah so whatever you guys decide on I'm still going to use my chair so well then why are you in the conversation and you said because we're all in the conversation so how do we get the right people in the conversation in the first place how do we form the right team without someone in power saying you shut up and go away you you're allowed to speak right how does the team self self-organize so we use this collaboration contracts I'm going to go through this pretty quick as I'm doing all of this stuff pretty quick so collaboration contracts are fairly simple what we do is you can do it on dry erase board or you can use Google Forms you can you know whatever whatever format you want right but they're basically five categories I'm going to I'm going to make the decision I'm the sole decision maker and I will explain to you why I made that decision I'm going to consult with others but I'm still the sole decision maker right I want to actually agree with with folks and once we're in agreement then that's the decision I'd like to advise so I don't have to be a decision maker but I'd at least like to have my voice heard or I'd like to inquire in other words I don't really care what the outcome is just let me know if I need to log my time over here or over there right I don't have an opinion here so we do is we have people on the team actually based on whatever the topic is put their name in the column where they think that they should be and then look at all right how did that work for us so here's an example right so here's a team of of eight folks and let's just say this is an HR concern and Joe's our VP of HR and Alice's are of counsel and then the other folks are other other individuals in the company right so when they put their names up on this chart the challenge we have here is Joe is a consultant saying I'm the sole decision maker and Alice wants to be in agreement with the decision that's a conflict we can't have that so a conversation happens Alice says you know what I trust Joe I'll move down great right so now we've got the right people on the team wire decision still so difficult I got the time here and it's different can I blow through this all right all right so first thing we've got different personalities right so Myers-Briggs type there's three different categories in a modifier just that alone gives us 16 different personality types if this doesn't resonate with you this probably will if this doesn't I know this will right the challenge is that even with all those different personality types we also have different perspectives you see through your own filter so if you look at this you know exactly what figure creates that shadow if you look at this you know what figure creates that shadow right those are through your filters you're wrong and finally I blame these dudes these guys taught us that argument is the is the way that we communicate right back and forth argument so you combine all this and what do we get we get these nasty discussions where people are talking about something but they're talking about it from completely different perspectives so the way we resolve this is with a technique called six thinking hats right and I'm not going to go through the rest of this but basically what happens is you get the team all talking about one aspect of the problem what is critical what is what is what is the risk here right and everyone lists the risks then you talk about what are the opportunities everyone lists the opportunities what this does is it eliminates the whole combative back and forth gets everybody thinking in the same way and helps the team get to actual consensus you can learn more about this Edward de Bono actually came up with this that's it sorry about the time all right no presentation for me but I can just talk so I want to introduce real fast a project called QT bindings I don't I had some nice slides and oh well so QT bindings is a groovy bindings for QT it's developed by myself and Jason Thomas was right back there if you want to create desktop GUIs in Ruby it's a great way to do it uses the QT group GUI framework of cross-platform it works on Mac Linux windows installations easy especially on Windows on Mac you have to do a couple other extra things but read the read me bummer I don't have my slides so check out QT bindings github.com slash Ryan Melt R-I-N-M-E-L-T slash QT bindings thanks my name is Shelby this is Luke this is Peter we're from G school we do lightning talks there as well and I didn't feel like doing that so I wrapped instead now it's kind of a thing I didn't have time to make any visual candy because we decided to do this today so I found some backup dancers to put in place of that so here goes nothing yeah we at Rocky Mountain Ruby getting it done learning things from speakers and also having fun baskin in this beautiful Colorado sun the reign of the best conference has begun here comes the speakers and the sponsors go ahead and say hey they ain't monsters in reality they are code conquerors chatting about programming is what they prefer let's grab some gems that we can install not the sparkly kind you can buy at the mall we better add this and play in baseball but now your app works with that new method call now we can move along and talk about our spec I thought I had a green dot until I checked my command line and therapy as like rejects it's still something I'm gonna have to perfect everybody in the theater right in Ruby everybody in the theater right in Ruby everybody in the theater right in job buddy in the theater right in Ruby rainbow tables was the best slide ever talking about triple D with Albie as he was clever it's all right Nicolay was live code and like whatever I could watch these people talk basically forever I'm also really digging all the free swag it's making my imaginary tail wag I wish I could fit it all in my bag my dresser is exploding but I don't mean to brag Ruby on the rails is the best thing out there it makes a great boyfriend if you need a spare it does stuff for you so you don't have to swear at your computer screen and then throw it in midair I'm gonna throw it out there rails is the best NBC is everywhere but it ain't no mess I can build anything driven by some tests I really think we're all just hashtag less everybody in the theater right in Ruby everybody in the theater right in Ruby everybody in the theater right in PHP nah theater right in Ruby the Boulder Theater was a great place to host this event except we broke the Wi-Fi sorry God event thank you for the free internet is what I meant don't try to push that code to production just yet choose to send grid for that mixer last night and how about Pivotal's Deck that was tight chatting men drinking with you guys is all right I hope no one's to hung over for the flight everybody in the theater right in Ruby everybody in the theater right in Ruby in the theater right in C sharp no I don't even know what that is Shelby and friends Shelby and friends from Gascool