 Right go. Hello, my name is Michael Hardell You may know me as the author of the Ruby on Rails tutorial. I'm I have two things to yes Thank you. I have two things to mention So one of the things I'm working on right now is a series of pre-requisite tutorials Under the brand to learn enough to be dangerous starting with learn enough command line to be dangerous So the first thing I need is newbies if you're a newbie or if you know newbies I am looking for newbies to help me work on this series of two for pre-requisites leading all the way up to the Ruby on Rails tutorial. The second thing is that if you are an expert on any technical subject I'm looking for people to work with under the learn enough to be dangerous brand learn enough them to be dangerous I've got someone working on learn enough iOS to be dangerous. So if you have an idea for that Please get in touch with me. I'm also interested in maybe writing a full Ruby tutorial at some point But that's a huge project. I'm looking for someone to collaborate with so if any of this peaks or interests reach out to me I'm available at Michael at Michael hardell.com. Thank you and breathe Any other takers one minute talks usually get one or two All right, come on up. You're on the list, right? Okay. Maybe I should allow anybody who's got the fucking mic now. No, I'm What's your name, sir? David broke Okay, this is originally a seven-minute postmaster's talk, so I'm gonna try to do it in a minute in 1922 a woman in Waltham, Massachusetts who ran a restaurant was making butter drop do cookies She ran out of cocoa. So she chopped up a chocolate bar put it in thinking it would melt it didn't She accidentally invented the Toll House chocolate chip cookie recipe. She ran the Toll House restaurant in 1938 and her Nestle showed up said hey She was popular for the cookie among other baked things said I would like to buy that recipe from you and the name and He paid $10,000 in a lifetime supply of chocolate and then he put it on the bag of chocolate chips for free and every chocolate chip Manufacturer copied it. Why would he do that? This is the original open source idea. He open sourced the chocolate chip cookie recipe Because he was selling chocolate not selling the recipe if he sold more chips if you sold more chips for everybody It raised his bottom line So the idea here is you can use that story to convince your management to open source stuff That is not critical to your business infrastructure Open source stuff that you know give back to the community. We've all rely on it. Thank you very good job Excellent superb in fact, I'm gonna pronounce your name correctly David. Good job Such high praise Any other ones? Yes, come on up. Hello You can stand in the whole time and clap if you want. It's pretty pretty. Yeah, I know I'm here all night My name is Benjamin Fleischer. I am a Rubyist. That's because I get paid to do Ruby That's how I think of myself. I wanted to share two interesting things with you. They're interesting by my own Opinions here's what they are one of them is Ruby if you've ever had an issue with string encoding Particularly if you live from the dark days of one eight to one nine things blow up So I did some work on the R-spec library to make this easier and Basically not blow up if you're interested in if you ever have problems with strings of gem install encoded string Problem solve use that. It's gonna it's gonna evolve along with R-spec other thing if you ever wanted to see a one commit one line commit to rails of one character deletion That's a commit that I made and I have another example of other commits that are very small that you can make to things like rails Whatever if you go to my speaker deck slash bf4 That's my github and you can see that and that's I think all the time I have and that's why I went now because I'm really far down the list Happy Monday Thank you, Benji So without further ado if I didn't say this before I will be mispronouncing everyone's name That is in fairness to people whose names I cannot pronounce so the first one is Stevie Down down D. Yeah, let's just go with that. Go ahead My first sentence says my name is Steve How do we pronounce it? Yeah, that's a good question. It's okay My pseudonym is captain downer. So just call me captain downer. All right cap Okay, floor is yours. This is my ninth ruby conf And they seem to get bigger and better every year Thanks to the great folks who run it big codos I've written a web app called Tommy talker that will help that Neat with help from the open-source community can be a complete universal translator It's it's going to and currently supports 26 languages all the phrases appear as Links in your chosen language and when you click on the phrase, which is a link it speaks it it currently only in English I Haven't a clue what will happen if you all try and log on to the app at once right now because it hasn't been stress tested And it's on a single server It's a dedicated server, but even so you might want to try this after the show But you can try it now if it works it works and the server blows up. That's fine Sorry, I can always reboot it When you access the site the default language is English there's a scrollable drop-down menu for selecting languages and I explain what happens once you select the language and immediately Translates the text into your Chosen language. I originally wrote this as a touch-and-speak application from my brother Who unfortunately has a chronic disease that is slowly causing him to lose his ability to speak? All of his smarts are still going to be there, but he's not going to be able to move his mouth So I tried to come up with something that he could use to communicate that didn't involve typing because he's not a Computer guy. It's just simply touch and it speaks. So it's very easy I Have to give give thanks to Robert Clem who a lot of you know from the Ruby talk group because he corrected the Google Translated German strings for me to be correct German and I also had a guy called Simon Corteau Who's in the Paris RB user group who I just contacted via email? I contacted the group and they had a guy that was willing to do it There was fluent in both English and French. So right now. I've got two balls on right phrases But I still have to have recordings of those phrases in French and in German and in 24 23 other languages, so I'm looking for volunteers that speak a foreign language They don't have to be bilingual, but it will certainly help And The design is eventually going to evolve where you can pick a source and a target language Once I have all 26 languages recorded You'll be able to present the phrases in English and the output can be in Spanish or Estonian or Russian or Japanese And it's just a simple this is kind of a niche market because Google already does this and I got I basically use Google Translate to do all of the phrases But I was always I was always I was a Star Trek fan I was a Trekkie and the universal translator has always been one of those just not quite there yet Goals, but we're so close to it now and Google does such a good job of it. They're fine But with Google you still have to type stuff in or you have to speak stuff in if you lose your ability to speak You can't speak and have a translate and speak in another language. So this is sort of on a different different Means it's really more like I said it originally started out for people that couldn't Couldn't actually move their mouth and speak so instead they point at what they want to say in the computer or the Phone or the tablet says it Project is open sourced on github and the exception is is the mp3 data is redacted for github size I had thousands of mp3 files that just got useless as It's being stored up on Google because it just didn't didn't work well So I've got all the mp3 files at home that I'm willing to share with anyone that happens to contact me So they can actually have a working copy of the file if they download the source code But the source code is there it has every line of code in the file and everything that it does is kept up to date If you if you know someone who speaks a foreign language that would like to contribute to open source They don't have to be a computer programmer They have to be able to have access to a microphone and some computer or some recording device That will record the files preferably an mp3 format. It'll just save me some extra extra work doing file conversions And If you do know someone that contribute my email. Oh Didn't tell me my scream runoff my email my email account is captain's dollar or Gmail Okay, I'm done Thank you guys. I have a great Ruby comp Hello Ruby comp San Antonio everybody. Yeah me. Okay Excellent. It's good to be back again. So we're a large J Ruby shop running a big production system and this is the latest open source gem that we have available So give it a try. I have a look see what it looks like So rocket job So I'm gonna jump straight into some code. We don't have much time So we're gonna create a simple job called my job inherits from a rocket job job and Simple method perform and it's just gonna do something Now the key thing to look at you is when you want to create that job. It's simply my job to create bank It's none of the complex APIs that we have to do with the other systems. This is very simple Like you do with the ORM active record type models So that's it you create your first job and now you've run it So let's add some attributes to this job the traditional ways you can add some random hash or some other parameters The end of the perform but in this scenario what we can do is actually define a key So if we have a look at this line, we can define an attribute within the model It's not I'm gonna add a file name and to find of type string And again, so if I want to kick it off all I do is I say my job dot create and I say file name data.csv Validations so now that we've been able to create this job. We're giving it a file name We want to run all our regular validations against it What's the point of kicking up a job if we cannot validate that all the parameters are done and correct before we even kick that job off? We want the end user was actually creating the job to see the failure not to have to dig through some logs or back end system to find it So you can see any validations. I'm sure you're familiar all the regular validations that you can do. They're all there Again, I just say my job dot create and then you'll see at the bottom. It doesn't work immediately It comes up with the file name can't be blank So immediately my job has been validated Job status so how many of you kicked off a job goes into the back end system and okay? What's happened to it? How do I find out what's happening to it? Programmatically very often that the different APIs is difficult to use you've all used active record active models All you do is after you created your job Go and ask it for a state so before we create the model job dot state. Okay. It's cute Now I do a job dot reload dot status that reloads it from the data store and I have the current status that job immediately available to me You can see in this state is running and eventually it'll go to complete it so I can ask the job Have you completed running yet? They'll come back is true and then another key element How about getting back the result of that job? I sent some work off to go do something. I want to know what that result was I don't want to store it in some database or somewhere else And I'm trying to figure out where it is give it back to me and this will do that for you So states you can see a cute running completed and the output So now we've been able to do a simple job We've given it a file name at Randolph and a single worker somewhere is going to pick up that file and process it But what if I want to take a million line file now at CSV data? And I want to use you know 500 a thousand servers all workers out there that we want to process that data There's gonna be a lot of work in a lot of systems in this scenario now we've created a CSV job and We just derive it from a slice job. So the difference here is we can set some defaults up So the first thing I want to say is collect output because I want to keep the output of that CSV data Then the other thing is now is the perform when the perform occurs is going to get that line So remember we had a million line CSV file each job now each of these workers You're gonna get that single line out of those million lines one at a time. This is real easy I can pause that line and In this scenario for this test, we are just going to reverse it So we take the row reverse it send it back as a CSV data the CSV processing is all done within the workers themselves I'm not doing that as my loaded process or anything like that. It's all spread out So this is how you define the job. It's up now We have a simple job that will run across hundreds of servers or wherever you want it to be and it do concurrently at the same time And all those boxes So how do we kick that off? So we wanted to the upload job. We've got a CSV job or you just say job that upload give it the file name It breaks it up sends it all out when the job's finished. I just download it. It's that easy So some more features some of the enterprise features in the rockstar pro Encryption I'm uploading sensitive data the CSV data my content might contain social security numbers bank account numbers I need to be able to encrypt that immediately. It's available to you We have a UI web UI all open source You can try this out. You can see the status of every single job in the system And in summarize that you can run a standalone you don't have to run rails You can run with rails you got the web UI and then other critical aspect is there's business-based priorities processing Along with their enterprise features and this is in production today and has been in there for over a year So you can you can trust it? That's it from our side and join us on the get a chat session if you have any questions get her I am rocker job support. Thank you Thank you. No one of consequence. I have about 50 slides. So we're gonna get right into it Ideas are everywhere and when we encounter a new idea We respond in different ways depending on how it fits in with our existing knowledge Now you can tell this is a thought-leadery talk because I have clouds on my slides Some ideas are those that we've seen before and already adopted and we just carry on Some ideas fill gaps in our existing knowledge and we easily adopt those Other ideas are just kind of on the fringe of what we already know We'll think about those a little bit more, but we'll probably adopt them fairly quickly Then there's those ideas that are way out there Some ideas are so wild that it is absolutely totally and in all other ways inconceivable that they could ever work We almost always reject those ideas out of hand Why do we do that? Many reasons is optimization only help Have to be by only so many things we can learn or swamped We run ideas through a filter and the inconceivable idea other languages Seth Godin says it very well in a blog post. You're probably smart enough to get it merely by reading the 140 character summary of just about anything But of course that doesn't mean you understand it or that it changed you All it means is that you are quickly able to sort it into an appropriate category to make a decision about where it belongs in your mental filing cabinet Another reason we might reject these inconceivable ideas is because they wouldn't work in the real world Jason Frieden DHH wrote in rework the real world isn't a place. It's an excuse. It's a justification for not trying It has nothing to do with you. So maybe this word doesn't mean what we think it means What happens if we adopt these ideas ideas change us and the inconceivable ideas have the potential to change us so Significantly that the world becomes a completely different place the same blog post by Seth Godin He goes on to say the best experiences and the biggest ideas don't fit into a category. They change it They don't get filed away. They transform us We need to spend more time on these ideas I'm going to give you a few examples of some inconceivable ideas That used to be inconceivable. They're not widely accepted just to get an idea of what I'm talking about First one is dynamically type languages. We're all ruby as we get this one But used to be that you need a compiler and a static type checking to keep you safe, right? Incremental and iterative development or agile development. You can't just start writing software and evolving it over time You need a plan an architecture and a design first or test driven development Developers can't test their own code. You need a separate group of testers that don't work closely with the developers We have to try inconceivable ideas some time But how I've now given you even more guilt about things you should be doing. I might have led you into a pit of despair You might think you'll never survive. How do we really get started? Well, first of all, we need to suppress our initial Reaction of rejecting these ideas instead of saying that will never work. We need to start asking What would have to be true to make that work that question is often enough to get our creativity going? Another thing we can try is we can try cargo quilting We can accept what other people are saying about these ideas and trust them long enough to give it a fair shot and see what happens See if we get it We need to clear our mental cash This is a blog post by Ben Ornstein and he talks about these ideas that are recorded in his brain from so long ago That aren't just no longer true and we need to be able to clear those out We still have time constraints. We still have work to get done even if we're managing energy like Joe talked about today So maybe what we can do is we can pick one inconceivable idea and try it So I'm going to give you a list of ideas and what I'd really like for you to do is pick one of them to try And if you don't I shall be very put out and I'd like you to tweet your intention to try the idea with the hashtag Inconceivable and I'll watch that for a while and just kind of see what comes out So here's 10 ideas pick one that you haven't tried before that seems crazy and give it a fair shot and see what happens So try working with a fast test suite this might need to be a side project Make a budget and live on it Try mind mapping Use a much larger font size in your editor Use a proportionally spaced font I got that one from David Brady, so blame him if it doesn't work for you Be a giver try journaling try para programming or mob programming if you haven't before Try getting completely out of debt that one might take a while Or try try using automated refactoring tools in a longer version of the talk I would go through why I would I'd like you to try those but for now you're just gonna have to maybe take it on faith Give it a shot. You'd be surprised what happens Again tweet it with the hashtag inconceivable. I went through that list really fast. It's up on my blog There's the link and after you've tried the idea and you know what happens Let me know and remember this is for posterity, so be honest Have fun storming the castle. I'm up there. Very good. This is a software engineering lessons from aviation Or as I like to call it plain programming Hi, see what I did there. My name is Billy Watson. I am the lead engineer JD power Odo I'm a pilot sort of internet scale data. I'm a student pilot and Ruby at the same shop in sunny, Orlando, Florida. Sunny was not thunderstorms definitions Just so we agree on some terminology and you understand what the hell I'm talking about general aviation is pilots like me I'm not in a commercial airline. I do not have a backup. I am my own backup And the only chance I have to survive is me me and me I go around just when a pilot is trying to land a plane and he decides that ain't happening this time Firewalls a throttle and does a circle around the airport and tries again The FAA if you're not from this country think government and slow SOP standard operating procedure We're getting to more of that flow check is how I check my instruments It's something I have in my memory and a checklist is how I become a second pilot It's something I have written down that I hold up in my field of vision and that is my second pilot just to make sure I don't screw up Quick shout-out to Michael Martins who did a talk yesterday. I called mind over air He mentioned some of this in his Q&A section and another shout-out to Nicholas means who did a talk about nothing but aviation And how we got some lessons from programming. So these are some other lessons quick quick disclaimer These are the kind of issues we deal with what kind of idiot wrote this program. Oh, it was me two months ago These are the issues I deal with as a pilot. I thought we'd never break out of those clouds let alone upside down towards those rabbits, so Not so happy anymore. Okay, so in aviation an immediate go-around on call-outs There's a document that lists this procedure from the FAA and as of 2007 Basically anyone in the cockpit not just the captain can call for a go-around and whoever is at the controls Must immediately firewall the throttle and go around period end of story doesn't matter what you think you go around Do not die Enable everyone to fix problems is the lesson. This comes before problems occur or after problems occur So I've got some ways you can do this Group code review open code review runtime docs and method documentation or some ways you can have this done at your Place the word takeoff means cleared for takeoff. This is from the awful tenor reef disaster with 587 people died They never say do not take off for or I wish I could take off my shirt They say take off when you are cleared for takeoff end of story in case there's some radio communication errors careful about your verbiage Agree on some verbiage with your business users use that same verbiage in your code and Don't use the word match five different ways as we do at our place Be careful about what you say so that way you can train new developers and you can understand your code tomorrow The safest general aviation pilots me use flowchecks and checklists you back yourself up So when you're fixing problems at 10 30 at night by yourself code review yourself submit a pull request to yourself Go get a glass of water urinate do whatever walk the dog come back and reread your code before you push If you are if you're saying that doesn't apply to me. We always do that sort of thing Fine, you're better than me. Okay pilots have routine instrument scans. I'm not just talking about my flowchecks I'm talking about if I'm in the clouds. I will look at the instruments and I Will hum a tune that's 120 beats per minute like staying alive and I will look at those instruments And I do it the same way every time for safety in In our world what we can do is say that the completion criteria for a story includes metrics logs documentation and testing period or it does not get merged down You have to have agreement with your business obligatory cuteness. That's my shih tzu and that's someone else's shih tzu dresses a pilot Okay, great big picture. That's a big plane with six engines. You're welcome. Okay Standard operating procedures reduce errors standard operating procedures include those things I mentioned before But maybe some other things like use refactoring methods Refactoring the patterns is a great book or you can cheat and just look up and the million posts about it online But if every time you need to move a method from a subclass to a superclass You did it the same way you would be so much faster and so much better at your job. It's boring, but it's better I assure you it's way less boring and exciting or way more boring and way less exciting than having to deal with bugs for 45 minutes because you didn't run your tests Code review yourself as I said agonize over names and turns and completeness doesn't mean done in traditional terms No, no, no, it means documented monitored and tested My name is Billy Watson You can find me on Twitter confusingly at William R. Watson and you can find me down there for questions about aviation Dallas Cowboys or Programming thanks Good afternoon Ruby Khan good afternoon Got some news for you. You already know about this Moore's law is running out and you're all familiar with Moore's law Here's a graphical representation of it Moore's law is the observation that we can double the number of Transistors on a wafer of silicon every 18 months or so and this is the this is Moore's law graphically Here's Moore's law visually because every time we double the number of transistors on a wafer of silicon We increase processing power Therefore all of the functions in the devices in the top photograph are in the single device in the bottom photograph That's Moore's law, but Moore's law is running out The party is almost over and we're going to have to do something else to extract Processing power from our computers and to parallelism and one way we can learn about parallelism is through a tiny device Called parallella. It's a single board computer roughly the size of a credit card or a Raspberry Pi and you plug in your HDMI Monitor plug in your USB keyboard and you're good to go. It's got 18 cores and you can fit this thing in your hand It's got two arm cores 16 risk cores, and I'll define those in a second Risk is the 80 20 rule applied to computing. It's reduced instruction set computing the 80 20 rule computer engineers have observed that 20% of our instructions are executed 80% of the time So we've taken steps to make those instructions execute very quickly very Performantly and then we build the remaining instructions out of those building blocks. So that's risk So let's take a look at parallella in action. This is what it looks like It is a Linux Linux computer. It runs a distribution distribution of Linux called the narrow It's a variation of a boon to it's got a web browser. It's got a command line interface And it has the best text editor ever known to humans. Let's say it all together Vim It's low power too I wanted to convince myself that it was really low power So I took one of these handheld cellular charging devices with a photovoltaic cell on one side and a lithium-ion battery inside of it Jerry rigged a USB cable and a power adapter It soldered those puppies together and yes, you can power it via solar power with a little five watt solar device there, right? Let's talk about architecture inside the 16 cores. There's four rows four columns rows are numbered zero through three columns numbered zero through three Let's take a look at what it can do for you first We're going to look for the all of the prime numbers between zero and sixteen million in serial on the parallella if you execute that Takes just under four minutes. That's what the screen looks like If you do the same program run the same program on Mac OS 10 in fact this same Mac that I'm working with right here Serial on Mac OS 10 it takes roughly 14.4 seconds. So four minutes 14.4 seconds What have you run that same program you modify it so it can run in parallel on the parallel? Well, let's take a look at it and I have a real quick movie for you running here. Let's take a look. We'll watch it build and Run if you take a look inside of the parentheses you see an ordered pair row column What happened? All right, it's a lightning talk. So I'm going to skip ahead Here's the punchline in the parentheses. You see row column for each core. It took 18.6 seconds Let's summarize those results Serial on the parallel about four minutes serial on the Mac about 14 seconds parallel on the parallel about 18 seconds ladies and gentlemen this $150 handheld computer is performing about in the class of a $2,000 Mac But don't throw away your Macs because don't throw away your Macs because we kind of this is kind of a setup This is an example of an embarrassingly parallel problem problem or an embarrassingly parallel program What's going on here is this is the type of problem that we can break up into bite-sized pieces very readily and it can be Executed very quickly in parallel if you want more details in this you can go to my blog at ray high tower comm We're at the end of the talk bottom line. This is parallel a you can buy it for about 150 bucks at Amazon comm We as developers need to learn about parallelism now because Moore's law the party is almost over and It's time for us to learn about parallelism so we can continue to extract performance out of our silicon My name is ray high tower you can learn more about me at ray high tower comm. Thank you for listening I recently sat down to write my first ruby gym and I thought I Thought let's make something useful at least to me and hopefully to some of you and So I decided I was going to do something with struct and make it how I like it So data objects great in theory you could turn data into an object with you got nice dot methods using factories And you get a nice no method error when you do something wrong like call van dot pant instead of paint instead of getting a Neal on your hash They're great ish in ruby though You can call your struct without your arguments and you get nils. I don't like nils in my structs and This isn't cool either you can't you don't get rubies cool Keyword arguments that are so awesome and Also, you can change them van dot year 1965. I don't want an accessory on my struct. It's a data object I don't want it to change so van dot year equals 2015 not cool And then like I said keyword arguments we've had them for a while Why aren't they instruct so I decided I was going to put them in struct So that's where we get Oh, no open struct doesn't help either it actually makes it worse because now we can have Van dot paint equals red and van dot crazy pants equals true out of nowhere and even better van dot Hi mom, and if you don't give it anything it just sets it to Neal, which is awful A few of the gyms out there I'm not the first person to think of how cool it would be to make data objects in ruby immutable some of them do it They're great less than a hundred lines of code. You should use them You should check mine out Use theirs because they're older and more maintained and it's not somebody's first gym, but I Would love if you would try mine as well. So what does ur do? Well first it has required keyword arguments So car equals er dot new paint year if you try to call it without paint in year. It tells you you're missing keyword paint So we have one where it works scooby van equals car year 1965 paint neural scooby van year 1965 That's how it's that's how I like it to work Then we have it's effectively immutable if you try to change it does not have an assignment method and Then the newest release last night I updated it while I was here at ruby comp to have a to json method so it'll spit you out some json and Er, please use it. Please love it. Please contribute to it because it is my first gym And I would like people to make it better. Thank you Divine the floor is yours. Thank you. You guys hear me, okay? All right cool. So my name is Devin Clark and this is my talk called three printing is not like cooking rotisserie chicken at home And it's about to make sense. Don't worry. It will make sense So a while ago about a year ago. I got a 3d printer. I built it and on coming to ruby comp I built or printed a giant ruby and everything so I can use as a talking point and use it to Like start conversations and a lot of people have to come up to me and ask me questions about 3d printing and everyone's been really awesome and cool and I Always get that question every once in a while like oh man. Can you bring me one? I want one of those. It's like how much does it cost and I'm like, I'm sorry I can't really print you one and then they they saunter off and they look all sad and defeated and I'm wondering I mean, I wonder if they're gonna be like well fine. I'm just gonna go and make my own 3d printer Devin I'm gonna print all the rubies more rubies than you can imagine and I'll print cool stuff like tiny Bulbasaur's or this little drawer and everything and it'll be amazing and I'll show my friends and this will be the face that they make Unless they have a 3d printer then they'll be like, okay But as you get into 3d printing you start to notice a lot of things like for instance, it's really slow Like really really really slow So slow that I can't even show you this whole video Not enough time. It's also kind of temperamental So your parts will break and then what's great is those parts are 3d printable So your broken 3d printer can't print them And then also at the same time you'll have something not stick to the bed It'll fail halfway through it'll fail a seven-hour print will fail with 12 minutes left and it's too bad so sad You can also hurt yourself. That's not guaranteed But it hurts a lot And but then you're gonna be like well Devin no no it's totally worth it Look I can print this awesome cool dragon look how awesome that dragon is until you realize you have to break it up into Six different pieces and then assemble it with glue and if you want to look anywhere because cool is that you gotta print it And hope that your print quality came out as nice Or you're like no Devin. I can print it with with supports But then you waste all that extra plastic and then you got to break all those hard plastic supports off and then sand down all Those pieces because otherwise you're gonna have all these little bumps and bruises all over your print and the entire time You print that who knows 10 20 hour print. You're hoping it doesn't come out like that So now you're probably thinking like wait. Whoa. What's going on Devin? You came up here saying three printing is awesome It's the future. It's so cool people will be jelly of me And now you're feeling a little betrayed because I'm being really negative and you're like, oh, I don't understand What's going on and it's not because I want to stand up here like this It's actually because I I want all of you guys to get into 3d printing But I want you to get into it with the correct expectations because 3d printing is not like cooking rotisserie chicken at home It is not a set it and forget it process It is not something you just oh I buy a 3d printer. I get something offline. I pop it in and come back a few hours later It's the most perfect print in the world. No, it's not like that. It's tedious Some hard work involved you go through multiple prints over and over again And it's very frustrating. But when you get something like this, this is how you feel to the tee and You run out and you show your friends and they're like, oh my god, that's the coolest thing ever and you get to act like this And because you know they didn't see the 14 failed prints at home so a Lot of you are gonna be like, well, how can I get involved with 3d printing? there's a free way to get involved with 3d printing and you can usually go online to to meet-ups and There's usually a one usually one in almost every city and they have little labs and you can get a tutorial or learn How to use a 3d printer or they'll have a workshop that you can pay for and everything So you don't have to spend a bunch of money and everything like that But I highly recommend doing as much research as you can because when you go out there And you look at the printer and you're like, oh man, that's $400 printer. That's in my budget. That's sounds nice But it's not the same as that one that costs more than $2,000 and everything You can get still get awesome print quality with a cheaper printer But you want to make sure that you build within your budget the last thing I want you guys to do is go out by a Cheap printer and then have your prints not come out great and then go online and be like 3d printing sucks It's not the future we want everyone to be excited and you know help keep building it out open-sorcery Like we are and everything and make awesome prints Because the limit there's well, I guess there's really no limitations and everything like that because there's really nothing you can't print And I'm I'm really really serious. There's really nothing you can't print So just a quick shout out to the guys who made my printer and everything like that and helped me build it Monolith it's a monolith 3d open-source printer and It's built by these guys over at free fab 3d in St. Petersburg, Florida. They're all really awesome and I wouldn't be up here with an awesome Ruby if it wasn't for them and everything like that But up my mic again, my name is Devin Clark and I hope you guys enjoy the rest of your conference and everything like that Thanks for your time so I Kind of feel like maybe I've seen that last talk before I I did this So this is the place that I constantly find myself is I say something to a friend or whatever and then I Commit right like I got to get it done so in over my head So a little bit about 3d printing for those of you who don't know if you take a really precise machine like a machine that can position itself Well, and you give it a hot glue gun You have essentially what my 3d printer is right super simple super simple So simple that printer bot actually named their printer simple, right? So I looked at this and I thought to myself I can totally do that this has a build size of a four inch cube, right? So like that's the largest thing that you can build is that and I thought I can take that and I could build my own I just need to buy this kit and maybe modify it slightly Really what I built was a monstrosity um, I significantly improved the build size, but it was Not designed as well as it could be it actually would fall over under its own weight. So I had to strap it to that table It's awesome. Um, I Found this guy who actually can design things much better than I can and he designed this beautiful printer It had a one-foot Build space which is amazing, right? But that's not nearly large enough for my needs So I took his open design and tried to make it better As I am want to do I printed out the parts on my little tiny printer I assembled it and really to give you a size like like a concept of how large this printer is It's a three-foot build size which my daughter at this point was roughly three feet So to give you an idea she believes in me a lot, right? You can tell that in her eyes. What are you building a? giant 3d printer a Giant 3d printer. Um, so these are the parts that I assembled, right? These are all the things that he designed that are beautiful and wonderful Um, we get to the z-axis and it had I had to change significantly how this works, right? Because the way that he had it designed it was fine for a small space But whenever you start getting to the size of bed that I have It doesn't work anymore So this is the point. I'm not like I'm a hobbyist I don't know electronics and so whenever this actually moved It was the best day of my life Defeated only by getting married and having children seeing lights flickering and motors spinning Amazing so as of just about a month ago. This is what the printer looked like, right? It's a wood and metal and wires and and it barely it actually works It's amazing. So why why in the world would you need this large of a printer? Well, I'll tell you why I have children and My family loves to dress up we love to dress up and as all kinds of different characters and My two girls fight me constantly and Whenever you have that problem You need a suit of armor This guy built this incredible suit. I was super jealous and I totally said to my friend. I can do that too Not anywhere close, right? So you need a giant printer so that you can scan yourself with the connect maybe and and then print out parts Thanks Extra points for going with it. I Just wanted to speak real shortly about how we approach problems and how some of the tools we use when we approach those problems Totally affect like some of the solutions that we come up with and the different problem spaces that we end up in And I wanted to begin with kind of a struggle that I had when I first started development Especially specifically test-driven development. A lot of times I would find myself staring at a screen a lot like this wondering exactly What my first test should be right like a lot of times everybody says test first and this thing and you get kind of stuck And you're not really sure what to do and as we grow as developers We kind of build we kind of gather this like group knowledge, right? Like of where the right part to break out an abstraction is and where the right test to start out is Instead of you know when you're new the thing you end up thinking about is like I just want it to work Right like I want the whole thing to just and I love this image I've seen it in a few talks like the the whole idea of you know You just want the whole thing to happen, right? And I actually bring this up. I have an ulterior motive I don't know how many of you have taken any art classes or done any drawing Few of you so I'm a terrible artist But I did try and take some art classes at one point in my life and one of the things they talk about Whenever you're taking an art class and learning how to draw one of the things they do is they actually make you flip the image Upside down right because there's this thing in your head whenever you're trying to draw something that you think you know What it looks like like maybe a human face that makes it very difficult for you to separate the lines of what makes up the face And the color gradients from what your brain Thinks they should look like and so a lot of times to break that apart What you do is you flip it upside down and it makes it a little easier to separate that in your head Now obviously the solution here is we should just flip all of our test suites upside down right through all of the code Flip it up. Unfortunately. We can't do that but one thing that I found especially helpful in my case is Maybe not trying to think about the entire problem at once, right and a good place to start maybe is Where you interact with this thing? I've been playing a lot with a functional reactive front-end I know don't throw stuff at me. I'm at a ruby conference called elm and It gives you The ability the way it works you kind of build this model of your UI state and the way this model changes is by passing Messages into it and updating the state right and whatever you build this thing starting at the very front end what it does is it sort of outlines what sort of application or what sort of like API endpoints you want on the back end to communicate directly with it and What's interesting about that like you can build it out in Sinatra are you know, whatever you want to build it out with And what's interesting about that is a lot of times when you're starting at the API level or you're starting at a very like Higher level and working your way down the types of things and the types of gems that you use to build it with are very very different Like I found myself trying to build things without using an orm at all Or like trying to roll something that just uses the small subset of sequel that I actually need to solve the problem And so I guess really the point I wanted to get across is be careful of the tools that we're using and try especially when you're teaching and whenever you're trying to express things to people like to Think more about the messages that you're pushing around And like how your things are communicating oops, sorry And how how things are communicating and less about trying to fit all of the functionality of the problem that you're solved of the problem that you're solving Within your head because I don't know. I have a really tiny brain, and I'm not very good at that. Anyways, thanks That's it I'm Mickey Risenes. I work with Spreedley in Durham, North Carolina and I came up with this talk because I Spent 20 years basically teaching math privately and also in a high school and I also coached I've coached about 10 years of high school sports and so I transitioned into software engineering about three years ago and in the transition I got to go from the top of the totem pole where I was telling everyone else what to do to the bottom of the totem pole Which was interesting because as a teacher you start seeing onboarding as a little differently Then you do as a software engineer and so came to the conference. This is my first RubyConf, by the way And it's great fun. I did not know I was going to do a lightning talk and so all of this was done last night I know it's awesome But don't be jealous. All right, so here are my tips for onboarding junior devs first as a teacher we had a book that I read it was written by John Milton and Late 1800s is called the seven laws of teaching and now all of them are applicable to our industry But many of them are I'm going to go over three of them First the teacher has to know the lesson this seems obvious But I'm pretty sure we've all sat in classes where the teacher does not know what they're talking about I'm pretty confident that most of time by the time you reach senior dev Most of the senior devs I've worked with have Know what they're talking about But you also have to have a lesson so when you're bringing someone on Sometimes there's not a predefined process and I know I say process and senior devs get the hives Okay, but process is helpful for junior devs because for junior devs the world is completely unknown You're you're coming in you you you don't know about the industry You don't know about the domain and so many things are unknown that process gives them a crutch on how to get from not Knowing anything to knowing something so you need to have a lesson for them on onboarding Avoid acronyms and use common language because when you use a lot of acronyms, especially domain specific acronyms or industry Specific acronyms. It's like you're speaking Vietnamese or French or something else. They're not going to understand you And You want to teach from the known to the unknown Everyone when you learn a factoid if you have nothing to connect it to it'll just fall off to the wayside So what happens is as you grow and you learn to read and you read this book or you learn this vocabulary? Everything chains together But for some reason when you're not an educator and you're not trying to piece someone's education chain together You think your lesson starts over here And you never stop to consider that that person that you're trying to teach their understanding stops back here And so although you cannot necessarily provide a personalized education experience for everyone If you want to be successful, you're gonna have to figure out where their understanding ends so that you can figure out where your Teaching needs to begin and if you don't do that, they will always get lost Setting expectations I'm big on setting expectations because when I come in I don't want to just meet them I want to exceed them and I can't do that unless I know what they are When you have high performers and they want to do a good job They get frustrated when they don't know what they're supposed to do So if you have tools that you want them to learn tell them if you have theory or best practices books You want them to read tell them because if you can't articulate your expectations, you're setting them up for frustration and failure It's just a bad bad juju Also, you want to set up a feedback loop some way to tell them when they're meeting that your expectations and some way for them to Tell them for them to tell you if you're somehow Not meeting theirs. I like you You go you go Okay So we want to and the other thing is you want to use process like training wheels so many times when you start You know some of that you have to start a project and you know eventually you're going to move that card to done Or you're going to finish that thing you're going to deploy it But the pieces in between are really like magic, especially when people are moving very quickly through it. So What you want to do is try to provide some kind of process for them and try not to get hives when I say process But you want to have some process so that they can take all the unknowns all the things They don't know and at least cling to something they do know I'm going to do this and then I'm going to this I have to set up testing they expect this type of test They expect this type of test I'm done and then if they mess up or if they need feedback At least they've had a pattern to follow and they're not completely lost Because the goal is to get a new dev to stick around long enough to realize that we're all imposters That's probably the biggest lesson I've learned over the last few years as I've been doing this is that although people know lots of things They don't know everything and if you're a good dev You're going to keep pushing yourself in those areas that you're an impostor because you want to get better at all Of things it's just that to new devs everything is is overwhelmingly unknown and so if you can cut out the unknowns It makes our life easier Also, don't engage in the VIM eMac debate with a newbie. It's not helpful I am make you use any's you can there's my Twitter handle. I work at Spreedly. It's great and we're hiring 30 seconds gone. All right, so now I have to do this in four and a half minutes And I'm wasting more time, but I wanted to share with you Two things I want to talk about so a and how you can do it better with pub sub. I totally discovered this by accident So if you have so a or if you're thinking about it and haven't done it yet You've probably seen something like this before or you will very soon. So let's say you have four apps You have a company website you have Your internal admin tool You have an inventory management tool that your customers log into and manage your inventory and then you have a Customer storefront for your customers where they actually sell their stuff so a customer comes by they sign up and You proceed to make a series of API calls to these different services that need to do something when your customer signs up like Set up the account import their inventory from their previous provider set up DNS for their website all kinds of things So, you know, that's great. You've got logic separated out, but there's some things that happen like you're Now your marketing app has to know about Each one of your applications So you get tight coupling you get apps that know too much about each other have too much responsibility there's compounding failure scenarios if the import fails, then you'll never even try to set up the DNS and how do you recover from that and The customer has to sit and wait for all this stuff to complete. So I thought wouldn't be great if Come on now We had a way to Divide these up where Customer comes and signs off we fire off an event that says hey this customer signed off signed up and then all these other applications Would get that event and they know what to do The company website doesn't have to know how to tell them what to do anymore So this is pub sub I found that out by accident and have since learned a ton about it How's this better? You no longer have tight coupling you have opera applications that operate independently You're not putting a whole bunch of application on one app to know how to drive the others each application has its own responsibility Trying to keep the Port plugged in here You no longer have this compounding failure scenario you have independent failures the receivers know how to resolve those errors or you just have one to debug to resolve it and The operations have been Asynchronously and so your customer can go out of go on with their Life and not have to wait on your system. So great. Give me pub sub So I'm gonna introduce a gym. I built called Chosky and the motivation for this was years ago I sitting around I didn't have any vacation time so it was like the only one in the office over Christmas break and How we were doing this at the time was We would have one app and it would need to in queue job background jobs at the time. We were using rescue on to come on Other applications queues Which was kind of great, but it was like we still have an application that knows about the other applications queues and which jobs to queue And the money wouldn't be great if we automatically did that for you and the applications didn't need to know about each other So this is a very simple way to add pub sub if you're already using rescue or sidekick Which a lot of people here I bet are it's very rubious friendly written in Ruby and I've actually seen it used it working on getting it in place at the third company I've worked for who's had this problem and the original installation is like five years and running without Really any changes and so this is an open-source rewrite that I'm announcing today So it's very simple to use you just gym install it and then you run Chosky and it'll run a broker for you And it'll use your local host Redis unless you tell it to do otherwise To write a subscriber. It's pretty simple. You require Chosky And you call the subscribe method and then you tell it what queue you want to process Jobs on and then you tell it which events you want to receive and you give it a block of what to do with the events And you can have multiple subscribers. They can be in different apps And they should all have their own queue and so you basically get my original thought is I wanted multiplexing of my rescue jobs now sidekick jobs and So that's how I did it and so you can run it with sidekick or with rescue and I'm over time so but you should go check it out on github and let me know what you think and Contributions are more than welcome Okay, so two tiny developer tools or rather Two tiny user interfaces. I wrote for developer tools other people wrote actually I think all those people are here At this conference, so that's kind of cool Anyway, so hi. I'm Nat. I work at patients like me We are a social network for people with chronic medical conditions and we just started using code climate Which I'm sure many of you know and love we love it and our code climate score I'm going to show it to you despite our embarrassment. It is 1.62 And we'd love to improve it and so we look at we look at code climate and we're like, okay We have clearly a God object here. It has very high overall complexity. It's called user. This is kind of a classic example It's two thousand one hundred and eighteen complexity score Which is kind of amazing to me, but anyway, so what's what's wrong with this thing? Well, here's an example We have a complex method avatar URL. It has a complexity score of 47. What does 47 mean? Well, if you look at the code climate documentation, you find out that it's using FLOG which is written by Ryan Davis and If you run FLOG on the command line against this class, you'll see why It's getting this score 13 of those points are coming from branches for 4.5 are coming from assignments, etc. etc So you can kind of look at the method and see what you would have to refactor about it to improve the complexity score and We start to get into the feedback loop where you're you're improving your method and then you're testing to see if it works and then You run FLOG again and you go up through it to find your method and then you improve it again Etc etc, and I'd like a tighter feedback loop than that so I use text mate to another confession and I So I wrote a plug-in called FLOG dot TM bundle and here's what it does I'm actually running it against FLOG here because I kept the company code up on the screen But here's a complex method in FLOG It has a little pointer finger next to it on the left side bar I don't know if you can see it, but hopefully on the first line of the method Do you have a little pointer finger if you click on it? It shows you the curiosity of that method and if you edit it and save the method It updates the complexity score and hopefully removes the pointer finger And my co-worker said well, that's great. I am the only text mate to user in this entire company Most of the other ones use either sublime text or VIM So I wrote sublime FLOG highlighter Which does exactly the same thing but in sublime text I can't put pointer finger on it because of the sublime API But it will highlight the first line of the method with a box of varying color depending on how bad it is All right, so developer tool number two RB line prof. This is great. I love RB line prof It helps you find all my slow code and If you're not familiar with it you you just run it on some piece of code It shows you it times how long each line takes to run and all the files that it ran and then you can get this You get this fairly complex object and this is a more or less from the read me. This is how you end up having to use it You you get this object and then you have to do this thing to kind of make it You kind of have to do this thing to make it actually show you in a nice format so And and there is a way around this that's mentioned in the read me. It's peak RB line prof Which is great for Rails apps that where you're trying to profile slow web request. You can just get it right up there on the screen It looks very nice But suppose you're not trying to profile a web request or you're not writing a Rails app Suppose you're writing a background job, which is what I was doing So I have this thing called RB line prof browser What this does is you run it like this and then instead of having to parse through your own code with file.readlines You get a menu of all the Implicated files you choose the one you want to look at and you get this output it's code highlighted using pigments and It pretty much it mirrors roughly what the example would give you I changed it a little bit because I didn't like some things about it But it's roughly the same thing and you get code highlighting and you get a menu So I think it's a lot easier to use Thanks for listening if you want to use any of these things yourself. This is how you get them github.com slash and budin Thanks Okay, this next one. I know for sure Ruby Actually, I did a little switch with Ryan stout. We have similar topics mines more of an intro so we decided to switch spots So I'll allow it All right We had some minor technical difficulties there, but I think we're off. Hi everybody. I'm Rick Carlino during the day I'm a full-time maintainer for something called farm bot, which is an open-source robotics platform And I'm also a maintainer for the vault framework, which I was Surprised to see when I was here at RubyConf that some people in the Ruby community haven't heard about it yet So I want to give you a quick rundown of what volt is and why it's cool Basically volt is a Volt is a full stack rapid prototyping framework similar to rails But unlike rails, it's taken a stance more towards like pub sub real-time single-page applications and It's got a lot of features that I think Rubyists can really appreciate First one that I think people are going to appreciate when they give volt to try is that you run Ruby in the front end There's no JavaScript unless you explicitly want to run JavaScript and it accomplishes this using something called the opal compiler and Opal allows you to transpile your Ruby code into JavaScript that can run natively on the client's browser right here I've got an example where I have a controller which in volt controllers run on the browser not on the server and I'm calling the JavaScript Alert message and as you can see it's totes amaze It also has source maps a big thing that a lot of people hear when they get started with something like opal is they think it's gonna be a you know total pain to get started with and I would say that the level of complexity you're gonna deal with is on par with coffee script So if you're already using coffee script, then you can pretty much Handled developing with Ruby on the front end So the the big win with volt that for me is that you can do data sync without having to write Rest APIs or a lot of boilerplate for syncing things on the browser because the browser is not an afterthought in volt So when you define a data model that works on the back end all of that code gets sent to the front end so now you've got validations and things like that and You also when this gif is a little bit fuzzy here, but you can see I've got two browser windows open and I'm creating a new model and it makes a call to the server and When the new model is created everybody who has that record loaded in their browser is gonna be able to see that update Happened in real time and you don't write any of this sync code yourself. It's part of the framework So it saves you a bunch of time when you're When you're just trying to prototype something and ship it fast and just because you don't write rest apis doesn't mean you can't write it You can do rest apis. It's very familiar. This is what you would put into your route file It looks kind of railsy or maybe even Sinatra ish in some ways And then this would be your controller code right there And this is running in the back end obviously because we're just doing traditional HTTP. You can do files JSON It's it's pretty complete in that regard some people try to say oh is this um, you know meteor for ruby not quite It does a lot of the things that you can do with traditional web frameworks And it really is a general purpose full-stack framework. So if you like rest keep doing it Going further into that about how you have one model. It's very dry You got many storage layers like you see here Right now we support MongoDB and as of this week we have support for Postgres sequel Was a good thing and The good thing is though that when you write that class definition for your model You can just take that thing and put it into HTML5 local storage pop it out of there Throw it into Postgres sequel and you're only writing your your validation rules once in one place So you save a bunch of time Here's an example right here I got a widget class with a string field called name I make a variable called my widget and then boom I throw it into the database store is what's called a repository In this case, it's going to be MongoDB But I just throw that into MongoDB it goes back to the server saves it there later I changed my mind now I want to store that model in local storage and it's the exact same API The only thing I've changed is that instead of calling store which is MongoDB. I'm now calling local storage very dry Just like rails its batteries included, you know It knows what it means to be building a full stack framework and so right off the bat you got user authentication You don't need to worry about making that decision on your own This is a volt app that I made probably an hour ago I just did the volt new command and as you see I've got a login page I've got you know sign up forgot password. That's things. You don't need to worry about and If you need to change the view very easy to do also This is the model that comes with volt by default. It's open for extension You know if you you don't want to change the way that the user class is validated You're free to do so but volt users get some kind of special treatment and I'll show you what that means here in a sec Means we have a permissions and authorizations Am I done? Oh, okay. Well Check it out. I got my blog there. Say hi to us on get or chat. We're a friendly bunch Thanks Thanks, whoever you are I'm Ratnadeep the topic that I'm going to talk about is Ruby vernac writing code not in English So that's my Twitter handle RTDP. I work for company called big binary So company does not have offices. Everyone works remotely from home and I decided that okay Let's not have home as well. So yeah, this is what I do since January of this month I'm traveling to all the places and working from there. I have been to like 18 cities seven Ruby conferences this is like seventh Ruby conference for me this year alone and Yeah, this is one of the Ruby adventure that I did recently I was at the card on the top which is a peak in Himalaya where you can drive which is like highest motor able Road in the world and I went to 18,000 feet and sat in the place there and did some three commits on the client code and pushed when I came down so So if you are thinking that you did code in the 35,000 feet when you are in plane that is mocking Okay So and I recently heard that there is a 3g signal a little bit weak albeit on the Everest as well So maybe someday so yeah So the topic is Ruby vernac what and why so This project that I'm working on is about writing Ruby in various spoken languages and not just in English and the reason I thought of this idea Was I was teaching my younger brother about Ruby programming and he had many of the questions Related to okay. What is deaf? What is class? Why are we using class? Why are we using deaf? Deaf is a definition definition of what definition of function. Okay, so I found that it is very difficult for him to understand Many English keywords because English is not the first language or a native language for him in India They start teaching it at the age of 12 in the schools. So yeah, you can understand that So that was the reason I first time thought of writing something which will allow people to write Ruby in their native languages And that's what I tried to do. So here is an example example, which is hello world. It's written in Hindi. It's just Put shallow chapeau namaskar namaste, whatever it takes like one line of Ruby to get this working You just have to alias print to the chapeau and that's it because Ruby supports utf 8. There is no issues and now Yeah, this is a full-fledged example, which we can do like this is an entire program with This is entire program end-to-end written in Hindi The keywords are replaced which are like class and the functions like deaf and is also replaced You can see there is an array which has like strings and stuff and then There are methods being called an array array comes from the standard library So with this project you can add the translations for the standard library You can add a translation for the keywords and the rest of the things are anyway can be written in any language because Ruby supports utf 8 Yeah, and I hope like nobody here understands what's written in that program, right? Now imagine 94% of the people in this world are not native English speakers You're feeling their feelings right now So yeah, that was one of the example, so why to do that? So I made this project and I presented it at the two of the conferences in India And I got very positive response from the people What things that I found with this is learning becomes understanding because foobar Hello, word this doesn't make sense for the people who are not native speakers. Okay another example class now if you Think of the class class has a three different meanings based on the context like is it a verb? Is it a noun? Is it a? Adjective and whatnot so for the non-native speakers when they heard here class the most commonly used Reference is a classroom kind of a thing which is not expected here second is module I try to translate module into Hindi and the translation comes up as a separate part of a Satellite now that is not what we mean when we create the modules in programming language, right? So I thought so what you have to do is extract the meaning out of the English Think about what that meaning can be represented best in your own language and come up with the words and I can guarantee that whatever Keywords that we are using in Hindi No one will come up with the questions like should I use a class or a module for this thing because it makes sense it makes Really meaningful to have those keywords and learn related to that one other thing is learning becomes fun as in When I created many of the examples for the Hindi and Marathi, I made sure that I use all the references Fun things slants from the local languages and that makes it Understandable to the people just foobar. Okay. I did foobar. Okay. Hello word. Hello word. What what's that, right? So the emotion that is present in that native languages can be brought into those examples and because of that learning becomes fun so Yeah, it can be checked at this GitHub URL if you are interested in converting it to any other languages You are welcome. You can contact me on RTDP. That's my Twitter handle It's good for education. That's what I'm looking at and secondly it's good for the people who don't have English as their native language and then they can perform these exercises to rethink about the Programming concepts that they have learned they can try an exercise of converting programs into their own languages. Thank you I'm gonna ask some questions the audience if you could just shout out your answers Are you guys pretty good at estimating or pretty bad at estimating? All right, do you usually estimate too high or too low when you're wrong? All right, why do we estimate you're told to We want to we want to know the cost how much will things cost so what why do we want to know the cost? So we want to know whether it's gonna be worth the cost So we want to figure out the ROI the return on investment. So that's the formulas here the value in the cost move What do we want the ROI to be positive? All right, how do we know whether we should start on a project has to have a positive ROI? Can we calculate the ROI without knowing the expected value? No So the project managers typically figure out the value before asking us to estimate our cost in our time So why are we wasting our time right? So we're worse at calculating ROI's than we are at estimating There's no point if we've already started on a project. There's no point in calculating that ROI We're already doing it. So the other conclusion is don't estimate at the story level. You're it's too late at that point so no estimates is Is Something it when I say no estimates. I don't mean don't estimate anything I say don't estimate it a fine-grain level. It's too late at that point only estimate at the project level or an epic level And another way we can do that so we can actually shorten the feedback loop We can we can iterate and we can set a two-week iteration and we can determine the ROI after the fact instead of trying to estimate it ahead of time And we should count stories instead of story points It turns out that the predictive value is pretty much about the same Or even possibly better by just counting the stories instead of wasting time spending estimating points So that's all I got Hit me up on Twitter if you disagree or agree. Thanks. I saw something It flickered All right, we can kind of see that. It's a good. All right So I'm gonna talk about book duets. This was my student project over. I ate a developers Academy I've been programming for seven months now. I am an opportunity scholar here at Ruby conf This is my first Ruby conf That's cool. I go by she and they pronouns and here we go We're gonna look at Markov mash-ups of lyrics and literary quotes So if you go to book duets comm you'll see that you can get mash-ups of a Artist and a musician and a author so here's something awesome by Aqua and and rice You'll see that it says I'm the vampire list stat sure can jump in. I'm a Barbie girl in a Barbie world So that's what it does if you sign up for an account. You can save your favorite ones and tweet them out So I had to for the purposes of my project talk about like, you know What the purpose of this is and the user personas? I made it for fun I come from a freelance writing background and I wanted to make something that would amuse me and I wanted to make it for book nerds language nerds and music nerds and I have a feeling that some of you are in the audience All right, so what is a Markov chain? I learned about Markov chains through an amazing developers talk in Seattle Her name is Liz Uselton and she also graduated from my school and she was talking about Twitter bots that use Markov chains to make some really interesting computer-generated texts, so what it does is it takes a look at the current word and Uses probability distribution to find the next possible word in those mash-up So you can see here that I have used a amazing gem called Markey Markov to Yeah, I love saying it It's to create this dictionary and if you take a look at in a it's followed by these possible words below it So here's my tech stack. I effectively made two apps. I made an API and a front-facing web app And so I was trying to practice like a mini version of SOA So one of the coolest things was using Redis to kind of cash what people are looking up as far as musicians and Authors so as people use this it gets faster and faster and learns by building up lyrics and excerpts from books So there's kind of like a Explanation as to why decided to use Redis Because of copyright restrictions a lot of lyric APIs don't allow you to just grab huge chunks to feed like a lyrical corpus so Here's like an example of what Redis is cashing. It's some lyrics from Alstra And if you want to take a look at you know making mash-ups of your own I'm created a secure public API And I'm totally open to like feedback or suggestions or ideas on how to make this cooler And I was just gonna walk you through like what it looks like to create is create this mash-up So you send it an author and a musician name It collects Texts and build something called a corpora it feeds that into Markey Markov and then it creates a mash-up and I find that if a Artist and musician author and musician have similar words and vocabularies Then you get really fun mash-ups where it jumps back and forth every other word But if they're very like dissimilar then you get kind of chunky mash-ups So it's pretty cool. I wanted to say mahalo to my instructors Carrie and Jeremy For teaching me Ruby and getting me started with rails My classmates were known as the unigotes and one of them is here right now, and I also wanted to say thank you to the Ruby community Hi, I'm Brittany Alexander and I'm gonna tell you guys how to get a damn job This is mostly for junior developers who are looking for your first gig But I think some of these things could be applicable to people who are trying to move up Maybe from junior to mid-level or from mid-level a senior. Oh, no it died Okay, here we go Okay, so anyway, so the first thing that you should know about me is that I'm awesome And the second thing that you should know about me is that I'm incredibly humble You should also know that I met Taylor Hansen last month. It's a point of pride. I've been waiting 20 years to do that The week after I met Taylor Hansen I started my very first junior developer job at Mannheim We are hiring so you can contact me at Twitney the girl if you want me to introduce you to my hiring manager The first thing that I want to tell all of you if you're looking for any kind of job is to stop Self-sabotaging a lot of you aren't even applying to jobs because you're waiting for For the perfect moment whenever you're ready, and you know all of the things you're never gonna feel ready ever And it's okay because if you feel like you're in a position where you know everything and that you're ready Then you're probably not growing and you're probably super bored and nobody wants to be bored So whenever you start looking for jobs, you should make it about you you should figure out what you want to do because You're gonna be working at this place for probably one to five years, and you don't want it to suck So make a list of all the things that you want and all of the things that you don't want but also be a little bit flexible You want to create your brand? I see a lot of this aspiring web developer or like student learning some Ruby, but That's not what you are. You are a software engineer. You are a web developer. You are a self-taught web developer And also whenever someone asks you something, and you're like, oh, I don't know anything about our spec What you should say is oh our spec. How hard could that be? Let me just Google that I Said how hard could that be like five times in my interview at vanheim and They actually told me that that was like the best attitude about that. So If it works for me, it could probably work for you So after you've decided who you are and you're putting it out there You need to put it out there everywhere Cast the widest net possible you want to talk on LinkedIn you want to be on meet-up You want to be in your local technology slack if there's not a local technology slack in your community You should make one and then you'll be the person who made the local technology slack And everybody will want to hire you and be your friend Use Twitter a lot Facebook meet people in real life and actually communicate face to face I know this is really strange for some of us, but you can do it And then also if there is a company that you are like dead set that you want to work at just email them and say Hey, you're not posting junior developer positions But you should hire me anyway, and they probably will have someone who wants to talk to you One thing that I do want to say about meet-up is that I did get my job off of meet-up I did not apply for my job. I Posted in every meet-up group of something that I was interested in I went to all of those meet-ups and The little part where you supposed to introduce yourself instead of introducing myself I just said that I was looking for jobs My hiring manager kept seeing my face pop up and I guess he was like well This girl keeps showing up and it says she's looking for a job, but so I'll talk to her Then once you get offered interviews just take all of them Like I know that I told you to be discerning and yeah, you don't want to just work for any old company But every time you do a technical interview, you're gonna be more comfortable with the process You're gonna learn something everywhere you go Don't don't stress out have a lot of fun where your superhero underpants to make yourself feel better and Make friends and if you see something at a company that makes you uncomfortable Maybe you thought you really wanted to work at name cool startup in your city And you go in there and someone asks you a really inappropriate question now You know that you don't want to work there and you can tell people no no no They're sketchy If they don't pick you it's fine. You probably learned something and The next time you'll be a total badass and it'll be awesome. This is my friend Shayna's website She's here. She's one of the opportunity scholars and she's looking for a job If You feel slighted that I did not promote you who are also looking for a job Tweet at me with this hashtag And I will retweet you and then I encourage everybody else in here to follow that hashtag And if you can't hire them you should retweet them so that everyone else can see that you know lots of cool people looking for jobs