Lightning Talks - Part II

Second half of Lightning Talks!

00:25 - Greg Belt - Seven Tips for running an Open Source Project.
01:27 - Ryan Biggs - Integration testing engines
04:55 - Yehuda Katz - Tokaido
09:25 - Ryan Brunner - Seven reasons why you should help organizer your local user group.
14:20 - Mike Scalnik - Railcar
16:27 - Felix Dominguez - Why you don't get hired
20:53 - Reid Morrison - Rails Encryption
26:11 - Evan Dorn - Ninjascript
27:00 - Jay Moorthi - tddium
31:44 - Rod Paddock - How I saved the World with Ruby and Nokogiri
34:15 - Richard Schneeman - Wizards from WTF to Wicked
36:42 - Sam Woodard - flash_s3_rails
40:36 - Charles Lowell - One Man in the name of Embedding Javascript into Ruby
44:37 - Matt Rogish - Hacking the Airlines
49:08 - Brad Wilkening - Top 10 Reasons you should probably quite your job
54:08 - Matt Conway - Monitoring with Graphite
58:51 - Dr. Nic Williams, Evan Phoenix - It's a Wrap!

Help us caption & translate this video!

Rails Conf 2012

00:00:24.360 already ok my name is greg bell I'm from Vancouver Canada and there was a couple
00:00:31.900 was perfect um I run a company called reverb software up there and I started a
00:00:37.989 open source project called active him in about two years ago launched it out into the world actually about a year ago
00:00:44.010 thank you some people use it and I got to go through the joys and pains of
00:00:50.769 running an open source project for a year that people actually used and some
00:00:56.229 of the so I've got seven tips what to do if you're running an open source project don't use the merge pull request button
00:01:03.039 on github Travis CI is awesome use it don't forget that design and user
00:01:10.719 experience if your project has a front-end get designers involved depend on less dependencies right half as many
00:01:17.500 features and twice as much documentation build a community and do it just do it
00:01:27.030 ok I'm going to talk about integration testing engines today with the engine
00:01:32.289 store that was held I'm not sure if it was yesterday or the day before they all kind of blur into one I really disagree with what was taught I think that you
00:01:39.009 shouldn't be drawing rails application you shouldn't be drawing your routes on the rails application I think that it's out of [ __ ] my tweet during that
00:01:46.600 talk was no do not draw routes in the application [ __ ] I want to jump on stage that's how much I disagree with it so
00:01:53.140 you should be drawing routes on the engine itself doesn't matter if you are doing like if you are just having an
00:01:59.679 internal engine you should always be drawing it on an engine instead of on the application so I really really
00:02:06.549 really I just like to emphasize that I strongly agree with that strongly disagree with that talk
00:02:11.890 this then by drawing about some of the engine you can mount your engine using mount your engine at a specific path in
00:02:18.490 your config routes file or if you don't want a man at any particular path just matter at root and all act as if you
00:02:24.610 drew it on the rails application itself when this happens though some people complain that oh my god my routes are
00:02:30.400 broken no they're not broken they're actually just elsewhere this is because
00:02:36.670 in your engine you should be calling isolate namespace and I think isolate namespace was mentioned about 20 minutes too late in that talk yesterday isolate
00:02:44.290 namespace will isolate the engines namespace so your models your migrations your controls or all automatically
00:02:50.620 namespace and that is the right way of doing it as well this means that you can have routes inside your engine like
00:02:56.560 resources people and you can have routes inside your application called resources people and even though they're the same
00:03:01.600 routes they're actually quite different so inside your engine you can call or inside your application or your engine
00:03:07.300 you can cool the engine name dot people path and that will go to the people path inside the engine or you can call may
00:03:13.480 nap people path to always go to the people path inside the application when
00:03:19.420 we were working on spree we had this problem we had a we had an aspect test for the products controller and we
00:03:25.510 defined a simple test in it that went to the index action and can anyone tell me
00:03:30.670 what this does it goes to a great screen
00:03:36.989 it says no route matches controllers free products controller action index and its allies damned lies because the
00:03:44.260 Spree products control actually existed the problem was that we weren't using use wrap and you need to use the user
00:03:50.440 option and controller test to tell it to go to the engines routes inside of
00:03:56.620 integration tests which is I'm sure why I'm talking about this we had the same problem when we call visit products path
00:04:02.829 that should go to the products path inside the Spree engine this is actually inside sprees test itself visit products
00:04:08.709 path and that also broke it said undefined undefined method products path the way we fix this on this lies damn
00:04:16.090 lies again the way we fix this in spree is we provide a URL helpers module called our it's called your hoppers duh
00:04:23.349 and it contains an ethical spree and that just simply returns the euro hope is for the Spree engine and
00:04:30.130 then inside your integration test you can use visit spree products path you can use it inside of sprees integration
00:04:35.770 tests and you can also use it inside the applications integration tests as well there's a great getting started with
00:04:42.010 engines guide that i wrote and I wrote a chapter in rails strain action about engines i would highly highly highly
00:04:47.710 encourage any of you to read both of these things before doing any engines work whatsoever thank you so i basically
00:04:56.500 just want to quickly talk about why i decided to do tokaido which is previously called real tap the basic
00:05:03.400 idea behind this project is hey I'm a five minute I don't think I could do
00:05:08.979 this in one minute so the idea is to have a precompiled version of Ruby that
00:05:14.410 is going to be updated at least in terms of patch releases for a particular version no hard coded passing the binary
00:05:20.979 so if you just compile Ruby the way you would normally compile it you end up with paths that are hard-coded to your local file system don't do that we want
00:05:28.419 to have pre compiled binary gems so if you have local Geary you're not installing nokogiri and having to find
00:05:34.000 lib XML on your local machine and hope it's there it opens the right version I hope it's the version Aaron likes I have
00:05:39.340 the next one in bold kernel-based workflow this is not an attempt to have a GUI that replaces rails it's an
00:05:45.130 attempt to make it so that the number of failure scenarios that people have when the install rails in the first place goes down to as close to zero as we
00:05:51.010 could possibly make it there's also just a bunch of extras that I want to do like automatically run bundle outdated for
00:05:56.620 you and give you notifications run things like flogged and fly and basically tell you like here are some areas your code that are hot spots for
00:06:02.849 problems things like rails best practices some kind of DNS solutions so
00:06:09.220 that you can have like my app dev Ruby toolbox integration so you're like I wanted off that authentication solution
00:06:14.590 working with the Ruby toolbox guide to get an API for that they'll be awesome and then a rails temp rails protocol
00:06:20.530 handler so that you can click on something on and have it installed so general goal precompile
00:06:27.130 everything and by pre compile everything I mean statically compile I don't Aaron alluded to this I don't have time to
00:06:32.169 talk about what that exactly means but you should we should not be having dependencies on shared extensions
00:06:37.310 in on OS 10 because it just opens the door for too much craziness and it turns
00:06:42.590 out to be someone complicated to do that in terms of failure scenarios if you do five steps and each one of them has ninety-five percent chance of success
00:06:48.830 your total chance of success is seventy-seven percent if you have ten steps is fifty nine percent you get my point even though it seems like
00:06:54.590 everything works reliably it's easy for something to fail I don't want compilation failures to be a thing that
00:06:59.660 we have to worry about in general so it's not hey you should really learn how to compile things it's like why do we
00:07:05.210 why is AC compiler an important part of the Ruby workflow in august and i want to avoid in general unrecoverable
00:07:11.540 system-wide failure so if in step 3 your system gets screwed up you may not be able to recover from that and you may
00:07:16.610 not know what exactly went wrong the core of it is going to be usable on other platforms like Linux using the sm framework which wayne cedwyn wrote
00:07:22.790 working with michael pappas on that and the final goal is I want to be I want this to be an environment that i am
00:07:28.130 using on a regular basis myself I don't want it to be an easy bake oven so that's that this is sort of my guiding
00:07:34.940 principle automating failure-prone workflows doesn't eliminate the failure but it makes them harder to recover from so we could definitely make a here are
00:07:41.240 the five steps and run them and then if some of them fail you're basically boned this is something that happened to us
00:07:46.820 when we were doing the Ruby helpdesk someone came in they were doing gem install sequel like three it didn't work turned out somehow user loop sequel i3h
00:07:54.110 was not in their system obviously that should not happen I we're never able to figure out exactly what went wrong but
00:07:59.480 situations like this should not be part of the workflow at all this failure should not break your ability to start
00:08:04.580 things I want to say a lot of people are like they take the easy-bake analogy to
00:08:10.220 mean like oh I want to have a see compiler I am a real grown-up programmer pretty much every other platform rather
00:08:15.410 than OS 10 uses pre-built binaries I guess except for Jen to there's no reason why most end-users kaftan not use
00:08:21.920 pre-built binaries and I think somewhat more importantly I don't really see OS 10 users the average joe's 10 user learning rails to be significantly
00:08:28.400 different than a Windows user and for some reason even though it's probably easier to get AC compiler on Windows nobody's telling people where it's
00:08:34.550 trying to install rails on Windows like step one download dev kit right everyone knows that you have to actually have
00:08:40.580 binaries and I don't I just fundamentally a guy who goes into an apple store and buys a mac and comes to says hey I want to learn rails is not
00:08:46.389 somebody who is fundamentally different from the windows user also i just want to say like the goal of this is actually
00:08:53.170 to have something that everybody can use i want to use it i want to basically build a binary distribution that is useful for me but it will also it should
00:09:00.009 also be helpful for noobs as well so this is sort of along the same lines as what the h days dhh said first day which
00:09:05.829 is i want to i think it's good to have a solution that is shared by everybody that's both advanced users and new boobs
00:09:12.069 are able to use together obviously there may be some people who are like doing some crazy stuff with many versions of
00:09:17.470 Ruby or something like that but for most people this should be a reliable solution like in every other platform
00:09:22.629 thank you very much ok I can try to connect one hear me now ok I enjoy this
00:09:32.949 great and everyone hear me now it's gonna be great hi I'm Brian I helped
00:09:41.230 organize the Toronto Ruby Brigade he do pack nights and I help with a couple
00:09:46.299 other events and I wanted to talk about why it's a great thing to help organize
00:09:51.490 or be an active participant in your local user group so how do people here many people go to
00:09:58.649 user group event monthly tomorrow so a pretty good number of people actively organized or favorite your talks or
00:10:05.670 something like that ever I think should be a lot higher I'll tell you why number
00:10:11.490 one by going to the local user group by participating in the mural for user group you get to go way more people in
00:10:17.339 your community you know being able to go to a pub night or a drink night and just be able to like catch up with like
00:10:24.029 really smart interesting to people is great by the way everyone so um you know
00:10:31.260 okay I gotta try my best to this number to recruit that is way easier whether
00:10:38.040 you're someone who actually is responsible for a recruitment or just a developer at a company like your company
00:10:43.740 most companies are looking for great developers a way to get your company's name out there so yeah recruitment is
00:10:50.640 way easier you know it gets her company's name out there especially if you're a small company it's a fantastic
00:10:57.300 way to put yourself on the map to let people know that your company is there and more importantly that your company
00:11:02.490 cares about the local community and wants to make the local community better
00:11:07.700 this one was a theoretical thing until about two and a half minutes ago and I could say this is absolutely true it is
00:11:15.360 a lot easier to do a talk to 30 people at you lost local user group or hold a hack night or something like that so I
00:11:21.750 mean if you want to get a bit of experience if you want to dip your toe into trying this out your local user
00:11:28.890 group is a great way to do that um not everyone can make it to the big conferences so you know we're all very
00:11:36.330 lucky we can all come down to railsconf you know with our flights and our hotels and our tickets not everyone can do that
00:11:42.410 so one great thing that I think you know a lot of people could do is go to your local user group do a talk about what
00:11:48.600 you learned at railsconf your content is already going to be there for you so it's fairly easy to do organizing event
00:11:56.130 is less hard than you think it is when I started doing hack nights in Toronto I
00:12:01.950 had been working with Ruby only for about six months I'm so as a beginner I was by no means an expert and it worked
00:12:09.990 fine you know we got a really good group of people out you know some beginners some experts a nice mix and I thought it
00:12:16.590 worked fantastic and the organization effort I mean if you're doing a big talk night it can be a lot of effort for
00:12:22.560 something like a hack night it really doesn't take a lot so it's worth experimenting it's worth trying another
00:12:28.890 reason our strong deaf communities are amazing you know having a community
00:12:34.470 around your city of great developers who know each other and can get in touch with each other it's fantastic and it
00:12:40.680 doesn't really take a lot if you don't have deaf community or user group inside your
00:12:46.839 town absolutely start one even if it's only a few people because it will start building those networks and it really
00:12:52.509 isn't a lot of effort to get those Network effects happening spreading the
00:12:57.879 rails love getting people more exposed to Ruby and rails at our hack nights we
00:13:03.189 have about twenty-five percent of the people have either never used ruby rails
00:13:08.350 or just started learning it within the last month so I mean that's pretty
00:13:13.449 incredible we have five to ten people every month who are learning about Ruby and rails and I think that's fantastic
00:13:19.720 that we're kind of like spreading the word spreading the love of their rails so some things that you can do to start
00:13:25.779 organizing a deaf event in your community do a talk night talk at a talk
00:13:31.269 night if you have one or two start one pub nights are great just get together and drink that's like the easiest thing
00:13:36.819 you can do run a hack night it doesn't need to be a lot it can just be like hey I'm going to make my office available
00:13:43.269 for three hours why doesn't everyone come and hack and show off what they did and teaching Ruby so there's a lot of
00:13:49.929 people doing great stuff with this consider doing like a kid's code camp find a way to teach Ruby to non hackers
00:13:58.179 like people in marketing or journalism or something kind of connected to Ruby to university students I don't think
00:14:04.629 Ruby gets enough exposure or really anything else you can think of look at other cities see what they're doing and
00:14:11.019 emulate what you think is cool thanks very much so my name is Mike Skolnick
00:14:19.329 I'm actually one of the main organizers of the Atlanta reviews this group and I agree with everything he just said all
00:14:24.339 right so yahoo to just talked about tokaido and its end goals when that was
00:14:29.769 posted on kick starter Jeremy McNally said I don't agree with all these goals I don't want a rails app that I'm going
00:14:35.230 to use because that's not something I can put on my server really what we need is something that's going to help wean
00:14:40.449 people into the current tool set so he started working on rail car and has
00:14:46.689 similar goals isolated environment installs binaries there's a nice gooey
00:14:52.179 so it helps you set up rails from the beginning there is a command line and as well and it's based on real tools
00:14:59.140 like rbn and all that stuff and it makes it easy to transition into the workflow that we kind of have now so you move
00:15:06.430 from the top of the chart to the bottom when you begin your kind of clueless you want a one-click install and as you
00:15:13.030 become more familiar you get a full GUI that allows you to install any database system then you can start using the
00:15:18.040 command line and then eventually you don't even need railcar at all so how is it made it's written in matt grupe and
00:15:25.110 yeah so Ruby binaries are packaged up using some rake tasks using rate
00:15:31.420 compiler similarly doing static compilation some next steps that we want to take take this to the next level air
00:15:37.690 fix some issues there's some issues up on github and if anyone finds any feel free to wire them on there or add them
00:15:43.660 to wire up some of the missing pieces it's not all fully functional just yet but it is on github figure out some Ruby
00:15:50.920 building issues that are currently present finish up the command line interface and set up bin gems which is
00:15:56.050 going to be a way to install binary versions of gems and we want to also publish the rake task once they're not
00:16:01.150 so embarrassing right now they're not so clean but once they're cleaned ramiz going to push them up to github so if
00:16:07.210 you're interested in getting involved you can check out github it's already up there there's some issues there's some
00:16:12.370 to do notes that need to be sniffed out and probably turned into issues we need some more documentation as well so
00:16:18.610 that's railcar real card out info if you're more or if you're interested in more information thanks all right so my
00:16:29.170 talk isn't out of why you don't get hired Who am I my name is Felix domingues I'm at the cat on Twitter I'm
00:16:34.930 a developer of rapid reporting division of talks different equifax we've been consumed and consumed again nothing I say represents the companies I work for
00:16:41.200 so how did this whole talk start we were sitting at the bar someone asked I submitted a resume and I never got a
00:16:46.810 call back and I said well have you talked to anybody about it he said no I said well we got a bunch of people in the exhibitor area we got recruiters and
00:16:54.700 we got VPS of engineering so I go talk to them about no only feel like it so I did the work for him so I talked to all
00:17:02.170 these people I spent total seven hours going through each one of these guys went to the meet and greet and a common
00:17:08.980 thread started appearing and as I shake my nerves off guys give me a second and once again i know i
00:17:15.789 present these companies either so everything you were told about resumes is wrong you go through college you go
00:17:21.939 through career planning they go to the career training they direct your resume at all the fortune 500 companies and the
00:17:27.220 quote-unquote real world we're not the real world or the tech world so display
00:17:33.820 your skills first you use some technologies awesome interesting problems that's they want to see they
00:17:39.009 want to see that a general progression from the beginning of time like let's
00:17:44.229 say your first job was in visual basic I use visual basic 6.0 and then you went on used she sharp dotnet to solve some
00:17:50.379 interesting problems you've progressed even further you did open source all that overtime if there's a break you
00:17:55.749 decided to pursue a different career finance art if it doesn't folk if it doesn't follow your tech line take that
00:18:02.349 job throw it at the bottom of your resume they're not looking at start times and end times they're looking at a progression of skills and leave the
00:18:09.369 business stuff out unless you're applying for management let's see I did write some notes hmm action I second
00:18:18.940 thing in terms of interaction issues as one of the questions I posed what are some of the immediate turn offs you have when people come and talk to you they
00:18:24.940 said we get a lot of arrogant people who think they know everything well let me quote my dad I would show up at home hey
00:18:31.149 Dad hey I got a 90 this semester in my math class he's like great son you didn't learn ten percent of what the
00:18:36.789 teacher wanted to teach you and the teachers and teaching you everything about the subject congratulations so
00:18:44.349 learn to be humble some quick hacks and
00:18:49.479 tips and we're talking about don't use the front door if they have a job posting site and say submit your resume here don't use it get on linkedin find
00:18:56.950 the recruiter for the company and try to initiate that first personal connection first it negates the Holy need of a
00:19:03.759 cover letter you can just talk to them you submit the resume you get in through the back door be honest was another one
00:19:09.399 of the things everybody talked about if you put a skill set on your resume and you say hey I know these five languages they better be able to hand you a laptop
00:19:16.119 and say right knee hello world in all five languages if you can't you don't know it know what you want some people
00:19:23.589 need structure if you go join a start-up you're going to do everything but some people want the structure of moving from developer
00:19:30.179 one developer to to architect know what you want don't waste their time and they won't waste yours another thing one of
00:19:36.900 the sales people i was talking to is saying it's hard for me to talk to developers because they just are all
00:19:42.690 introverted and I'm like well how do you fix that talk to people all the time one of the interesting hats you told me
00:19:48.120 about was like go to these conferences grab a cup of coffee find an empty table with one person sitting on it that's not
00:19:53.400 really empty is it and then say hey my name is Joe what is your name practice
00:19:59.100 that over and over again you start developing simple small talk skills and you're easier to work with in an
00:20:05.280 interview setting last document what you do today because you won't remember it tomorrow if you did something quick and
00:20:11.640 simple write it down put it in a spiral notebook because you're going to forget to add it to your resume two weeks from now when you're trying to find that new
00:20:18.270 job big or small published something doesn't matter what it is do a blog do open source submittals do anything they
00:20:26.790 want to show that you're passionate about something anything it doesn't matter if you like birds and you do like
00:20:32.880 bird-watching do a blog on bird watching they want passionate people and remember when you're in the interview setting
00:20:38.070 you're evaluating them as much as they're evaluating you so ask questions you have to be passionate about the job
00:20:44.130 you're applying for or you're wasting their time thank you very much i got 22 seconds i hope this helped and that is
00:20:50.130 my dog good afternoon my name is Reed
00:20:55.470 Morrison and the software architect at clarity services what I want to talk to you about this afternoon is a little
00:21:01.860 thing that I've never wanted to deal with in the past myself how to secure data in our databases and had encrypt
00:21:07.620 poss words in our configuration files so I want to show you some of the things we've done in that space so if we look
00:21:13.620 at what we want to encrypt we have said since the data I'm sure everyone's used active record models some of us would
00:21:20.010 even use [ __ ] and all the various fields in that and showed several other data sources that we have where data is
00:21:25.679 encrypted that you need encrypt ensure it's safe you can imagine if someone lets the data out we've seen several of
00:21:31.770 those already where data is let out of the systems and private information has gotten out there so an organization is very important so
00:21:39.260 if we have a look example the other one is passwords in configuration files how many times is the IT operations turn
00:21:44.510 around to you and said we don't want our database password sitting in the clear in those configuration files so years
00:21:50.150 it's very simple and elegant solution to that problem so if you want to look at
00:21:55.490 just encryption how do we encrypt data so if I open up a rails console I can just say symmetric encryption but
00:22:01.280 encrypt with some text in it and it gives me back straight away the encrypted data very simple to use
00:22:07.780 decrypt same thing symmetric encryption decrypt give it the encrypted string and
00:22:13.070 bang give them the data straight back to me so now let's take that to active
00:22:18.500 record with active record we will make a little simpler if anyone is familiar data encrypted gem drop in replacement
00:22:23.990 the same thing at your encrypted basically what we do is we just add this
00:22:29.210 in utter encrypted and SSN along with the encrypted SSN in our database
00:22:34.910 migrations and now we can assign a social security number in here and obtain out the encrypted value so in the
00:22:41.900 database it's I need encrypted value that's stored and the same thing in mongoid so anyone using mon-wed as your
00:22:48.980 map into manga very much similar scenario all you do is the ng add
00:22:54.440 encrypted equals true that field now become encrypted and by convention as you think cryptid under squeeze as soon
00:23:01.100 as the field name and I can do the same thing I just said the SSN to that number and retrieve it back and it's not
00:23:08.390 encrypted so now my mongoid data store any my my MySQL or Oracle web data stores using it now contains encrypted
00:23:14.660 data now the next one configuration files I'm sure you've heard a lot of
00:23:21.020 those so any difference we do is instead of sticking the password in the clear
00:23:26.210 directly into the database we say symmetric encryption dot try decrypt and
00:23:31.360 the encrypted string so you all operations to you can go off using the rake tasks that we have in generate a
00:23:38.330 random password or take a password they have and encrypt it and give it back to you so you never see the production
00:23:44.990 password it's entirely under the control the RG operations team
00:23:50.909 so why did we do this we are forced to
00:23:55.929 address label PCI compliance requirements and we're a small company we're about thirty two people right now
00:24:01.240 the clarity and if you interested in moving sampe florida let me know we're looking so this is what we needed to do
00:24:08.529 also it's a small company we had to take the key out of the source code so all the other solutions we looked at we had
00:24:14.769 the source either in our source code or in a configuration files we had this encrypted the actual key itself we also
00:24:20.679 need to remove the encryption key from the development team I don't even have access to our production keys some of
00:24:28.029 the things we had to do we have to change our encryption keys once every 12 months and we have to destroy it when
00:24:33.730 we're done that means we have to migrate all the existing data to the new encryption algorithm with new keys we
00:24:41.139 can't do a zero downtime we have a 24 7 365 shop we're up all the time so I have
00:24:47.889 to be able to encrypt with a new key decrypt with that new key and decrypt all the data that might be in the
00:24:53.799 database that's being migrated so hot on the go we want to do that again we have to destroy the key when we're done so I
00:25:00.610 looked at several options again we had a tray encrypted in production but didn't meet these particular primates that we
00:25:06.039 had I've spent ages digging around looking for other alternatives so we built our own now what I want to show
00:25:13.330 you is you so how easy it was to encrypt and decrypt data now let's have a look at what we what it does for you what is
00:25:18.730 symmetric encryption library do for you we have our existing rails app database now what we had to do was take that
00:25:25.059 encryption key and move it out of our control completely out of our control that IT operations to handle it we've
00:25:31.899 secured it so that only the rails app can talk to it but what we've done one extra step is we actually use a 2048-bit
00:25:38.620 RSA key to unlock that file so we can obtain the contents so we unlock the
00:25:43.899 file and we get back in AES 256-bit encryption key that we can now use to
00:25:49.330 encrypt and decrypt data that we read from the database so all this is what is doing for you you don't have to know how
00:25:55.210 to do this so list of features sure can go through
00:26:00.790 those on github installation regular bundler regular and then about so there
00:26:08.080 it is thank you great how many you guys use jQuery live or delegate right it's
00:26:16.360 pretty cool you make an event handler and it works on all elements even if they're not on the page yet right what
00:26:21.549 if I told you all of your jQuery code or as much of it as you wanted to could work that way it could apply to things
00:26:26.830 that aren't on the page yet look up our open source tool ninja script you can find it on github I'll put it in the
00:26:32.860 gist for this it lets you to find behavior blocks that have any number of event handlers and a transform which is
00:26:39.280 an arbitrary bit of code that runs on the matching element you bind that to CSS selectors it will run on everything
00:26:45.610 that's on the page now including binding all the event handlers and we'll run the transform on all current and all future
00:26:52.240 matching elements on the page so it makes all of your Ajax handlers much simpler that's all hi guys my name is J
00:27:01.720 Moorthy I work on TD DM secure hosted parallel continuous integration service
00:27:08.160 we are up and ready for the public so if you guys want to check us out please come by I was going to talk about some
00:27:15.309 of the the tricks that we use to do parallel test execution but in hearing some of the talks I there we go there we
00:27:26.650 go in hearing some of the talks at this conference a number of dots connected in
00:27:31.720 my head in it and it seemed like there was something that had not quite yet been said we've heard about how change
00:27:37.000 is coming how we're supposed to manage risk think about risk in the future and
00:27:42.750 how we're supposed to be prudent but on the other side of it rails is supposed
00:27:48.910 to be all about fun how do we connect all of these things together my
00:27:56.590 challenge to you is to think of your automated tests as an extension of your product where
00:28:06.230 the customer is not your end customer the customer is you and not just you now
00:28:14.950 put you in the future you when you're merging a branch or you when you're
00:28:22.490 working with a co-worker or your coworker you should treat these things as part of your business that allows
00:28:28.669 your business to scale allows your product to grow allows you to make change to manage risk to think about how
00:28:36.350 it is that you're moving forward and to do that in a way that is understandable
00:28:42.010 we heard about introspection and the value of communication through written
00:28:47.870 channels campfire have chat documentation treat your tests as
00:28:53.500 communication with your future self so some examples of interesting things that
00:29:01.250 we found as we've been working with our customers a lot of people can't actually recreate their development database from
00:29:09.830 scratch so I challenge you on a system that you've nicely backed up so that you
00:29:15.980 don't lose anything run rake DB drop and Reiki be set up because if this doesn't
00:29:21.679 work the next person you bring in the next contractor the next new hire or yourself when you're setting up on a new
00:29:27.980 computer you're going to have to debug something really weird and somebody is going to be fairly confused so try this
00:29:34.700 it's a fairly simple step you will find a couple of things the other bit here is you should try this especially to look
00:29:41.900 for things like scopes with lambdas in them or scopes that need lambdas things that you should actually have moved into
00:29:48.110 class methods etc etc it's a way to keep your development environment as hygienic
00:29:54.590 as you would keep your actual production product because the closer you treat
00:30:00.530 your development environment in your test suite to your production product the happier you'll be also this is
00:30:08.630 something where we would love to help you but you don't need to use our product make your test suite as fast as
00:30:14.780 you can use whatever tools you can manage to make it fast because you want
00:30:19.909 in feedback you don't want to be sitting there waiting for a build because while you know fun is fun focus is very
00:30:27.440 important and losing focus while you are waiting for your test suite to run is just a terrible waste of your time and
00:30:34.130 it changes the way you think about work and test every branch test your branches
00:30:43.810 before you push if you're pushing to master or if you're merging commits without a green build please please
00:30:51.620 please change this practice it will make everybody happy err in the long run so
00:30:58.850 what is this picture this is the Hindenburg or the hinted bug or the hidden bug think about what will happen
00:31:07.310 when you are up when you're upgrading to rails 4 and you don't have an
00:31:12.410 integration test suite that you can trust what will you do how will it
00:31:18.320 happen plan ahead for these changes that we all know are coming for the changes
00:31:24.050 that occur in every product and those changes don't become so scary anymore they become fun they become easy they
00:31:32.000 become trustable that's all so everything we support come check it out
00:31:37.730 on Twitter or github thanks all right
00:31:44.300 every once in a while you get the opportunity to do something really nice for somebody and not have to make a buck
00:31:49.490 for somebody this is something that I did one day when I was rebuilding a sad Mac I had a bunch of friends they were
00:31:55.760 bloggers that wrote for a site called cinematical which is about movies that was owned by moviefone that was owned by
00:32:02.030 AOL that merged with Huffington Post who is run by this lady Arianna Huffington
00:32:08.530 they bought him for a bunch of money and they told these bloggers the thing that
00:32:13.610 you were getting paid for now you can do this for free isn't that awesome because
00:32:18.680 they're greedy and now we don't like her anymore so I was watching Twitter as I
00:32:25.250 was rebuilding my machine and I had a friend of mine who put out a cry for help basically what had happened is he
00:32:33.200 had been writing for cinematical for years and he hadn't saved a single blog post that he had written he's like does anybody know how
00:32:40.790 I can automatically scrape a bunch of crap off of a website so i don't have to go download 300 articles manually I said
00:32:47.630 hey dude it's me I'm rod paddock I solve problems so I busted out nokogiri and in
00:32:52.880 26 lines of code I basically hack through every single page that he had written a blog post on and I dumped them
00:32:59.840 all to a file I did this in about 15 minutes and what happened is it start
00:33:04.940 this array started with one guy and then he said that was really quick if I asked
00:33:11.540 anybody else that wrote for this website because they were all equally screwed can you do this for them as well I said
00:33:18.080 sure so I appended that actually it was a single name and then I just created an array and I looped through all the names
00:33:23.210 and i created a bunch of files so basically some of these people had written literally a million words of
00:33:29.480 articles some of them had 500 pages worth the blog post and the nice thing is a ruby with these tools and with the
00:33:35.630 people that built nokogiri big hugs to them we're i was able to basically save all these peoples years worth of work
00:33:41.960 without them having to manually scrape what some of them would have taken a year to go through and grab each page so
00:33:48.140 what happened well they all went to work for this company called Fandango and now they're writing for a site called movies
00:33:53.660 calm and they're all really happy now and they all lived happily ever after so
00:33:59.450 this is the beautiful thing that you can do with ruby and nokogiri to actually help make people's lives better and I
00:34:05.180 didn't have a copyright issue because they wrote the material and we didn't distribute it I wrote an article thank
00:34:10.610 you um so I am Richard schneemann I go by
00:34:17.659 schneemann on the Internet I work for Heroku and this is Wizards from WTF to
00:34:22.819 wicked so step-by-step Wizards love them or hate them they are like freaking everywhere on the internet it just kind
00:34:29.210 of a fact if you don't know what a step-by-step wizard is well liked step step step and then you know at the end
00:34:37.069 so you're done at one point in time I was working for gowalla and i wrote a
00:34:42.440 step-by-step wizard that was a restful state machine inside of a rails controller so like WTF like that was way
00:34:52.010 too many lines of code pretty incomprehensible I was doing a bunch of really really gross stuff so I thought
00:34:59.740 what if everything you ever wanted about
00:35:10.910 step-by-step Wizards came in a ruby gem
00:35:21.480 so I am introducing wicked rocket edition you include a wicked wizard and
00:35:31.230 that's pretty much it you set your steps you just define what you want your steps
00:35:36.520 to be you then add views the steps are named the same as your view so if you reorder the steps it doesn't matter it
00:35:42.670 still calls the same view and then you just call render wizard it's it's pretty simple here's an example show like the
00:35:48.970 simplest show you could possibly go to inside your view you get next step you get previous step you can access and see
00:35:54.760 how many steps total there are so you can do that cool like one out of three which is you know I never look at that
00:36:00.300 and if you pass an object to render a wizard if that object responds to save
00:36:06.069 if it saves it'll go to the next step if not it'll render this the current step so basically we do kind of this
00:36:12.490 validation thing for you it's pretty sweet this is an example of a controller
00:36:18.040 wizard and at the end of the day it's it's just a restful state machine it's
00:36:23.140 not doing anything that you couldn't do inside of a controller by yourself but it's less gross than the other stuff
00:36:30.549 that you saw before so yeah use wicked my name is shames and clap now okay I'm
00:36:43.450 going to talk about a gem I wrote it's called flash as3 where else I'm Sam Woodard i'm a senior developer at
00:36:49.089 wildfire interactive so what's the problem I was trying to solve direct upload s3 so we don't have to tie up the
00:36:56.079 rails process with an upload and then reupload via the s3 API multi file
00:37:01.089 upload easy usage progress bars or need
00:37:06.150 these are just some URLs I'm going to go to um so how does it work or what does
00:37:12.730 it look like um right now it's just this green box down here click browse pick a
00:37:21.940 couple files
00:37:28.610 start hopefully the Wi-Fi will cooperate
00:37:40.820 all right if not then I'll just go into talking about the gem for a sec so real
00:37:47.040 simple to use configuration is just a bucket name access key secret access key
00:37:52.950 you can put this in your application RB your development RB productions RB or an
00:37:58.380 initializer obviously we're going to put in and initialize you'll need to do rails that application config it's just
00:38:06.540 a simple column in your migration you have the name of the upload in this case
00:38:13.860 it's media and I'm putting it on the videos table so in my model i'm going to
00:38:21.990 say has attached as three file media just like that then i'm going to have
00:38:34.410 some includes in my application j s right now it's dependent on jquery UI for the progress bars first thing to do
00:38:43.620 that i have in my upcoming or one of them is to take that out and just do a simple CSS javascript implementation
00:38:48.690 because it's a pretty big dependency but it's just beta right now and then the
00:38:55.950 require and my CSS file obviously the CSS is not a jquery plugin but i thought
00:39:00.960 it was kind of nice to have it have the symmetry in the view just the flash s3
00:39:06.510 uploader and then the name or the instance of the object that you have the
00:39:13.410 upload on and then a post upload callback URL note you have to use the
00:39:18.420 URL and not a path and then in your controller in the post call back action
00:39:23.900 just take the params of whatever the name of the model that you have was
00:39:30.030 sticking into a new or create or update attributes whatever you'd like save it and automatically the s3 key will be
00:39:39.390 saved on you or object on your on your instance so I
00:39:46.109 don't know why this is going to be a Wi-Fi problem I've got 50 seconds so I'm going to reload and see if I can't do
00:39:52.410 this again yay progress bar refresh the
00:40:12.000 database media is three key on my video job and that's it see I think I have so
00:40:21.210 git hub SH woodard flash as3 rails sound ruby gem now rubygems now my twitter is
00:40:28.410 Sam H Woodard and sorry for the plug but we're hiring my name is Charles Lowell
00:40:38.210 I'm actually going to spend my five minutes to relate to you guys a very personal story it's actually a true
00:40:44.910 story one hundred percent a couple weeks ago I was driving along in the car my
00:40:50.220 wife the kids were sleep in the back and have a moment of self-reflection I said
00:40:56.030 to my wife I said baby would you say that I am one man in the name of love
00:41:05.780 you know what she did she turned to me and she looked right at me and she said Charles what the hell are you talking
00:41:13.020 about it's true story so I said okay in the name of love we have to narrow the
00:41:19.740 scope a little bit so I said okay baby
00:41:25.310 would you say that I am one man in the name of embedding JavaScript into Ruby
00:41:32.690 and she said I have no idea what you're
00:41:38.100 talking about but the answer was clearer thinking the shoe fits all where you
00:41:44.970 know I've developed a couple of gems you may have heard of them to the Ruby racer the Ruby Rhino it allows you to embed
00:41:50.990 JavaScript into into Ruby and the reason I did this is because having a real
00:41:57.800 JavaScript environment where you can share data structures and you can send messages back and forth between
00:42:03.390 JavaScript and Ruby it's pretty much rules there's a lot of really good reasons for doing it I'm not going to
00:42:09.600 try and convince anyone here but you know for example it's the only way that I really know to safely evaluate Ruby
00:42:14.790 code you can share code between your client server but not in you know for
00:42:20.250 bad reasons like with models but just because some library is really useful like handlebars or or less you can use
00:42:29.130 it to just tap into the what's going on in the Jazz community there's all these great utilities and you can just get
00:42:34.230 your hands right on them but I'm here today because I don't want to be one man
00:42:39.780 in the name of JavaScript I want to open up this process to everybody and not
00:42:50.280 just because there's a big laundry list of things to do there's all kinds of bugs we need to support Rubinius there's
00:42:55.650 memory issues and things like this but because I think it's actually important for us as a development and environment
00:43:02.700 this is the way that applications are going to be developed in the future I think that every serious language will
00:43:10.410 have JavaScript Interop just out of the box and it's time to start thinking about what exactly that looks like
00:43:16.270 you know Java has had something like this for five years and its really awesome it just ships with the AVM it's
00:43:21.310 right there so we need to start asking questions like what should it look like
00:43:26.470 what should these interfaces look like to call javascript from Ruby code what should it look like to call Ruby from
00:43:32.860 JavaScript you know there's a whole lot of what what does a prototype chain even look like as represented by Ruby classes
00:43:40.510 and modules right now it's just I've been kind of making these decisions in the echo chamber of my own head but I
00:43:47.760 started a list to try and discuss this and other issues and I'm just inviting
00:43:53.170 everybody here to join it and join in on this discussion and lest you fear that there aren't actual real concrete
00:43:59.410 results just since I started this list someone from the Czech Republic actually
00:44:05.260 stepped up we did some work to get some better interface parity between the Ruby rhino and the Ruby racer and just
00:44:12.340 yesterday evening we were able to get support for Less TAS on JRuby which
00:44:19.870 means we now have support for less rails on JRuby which means you can use Twitter bootstrap and Jay ruby on rails so
00:44:26.500 already things are happening for great good so please join the list join the
00:44:31.540 conversation and that's that's it so my
00:44:37.600 name is Matt roguish i'm here to talk to you nothing related to programming at all and actually related to how to sit
00:44:43.930 in the front of the airplane instead of the terrible horrible place in the back so this is not a talk about hacking the
00:44:50.200 airline's like this this is really talking about hacking a system that is designed for people like this a system
00:44:56.980 to get business folks who hate traveling I used to get on an airplane six o'clock Monday morning come home friday evening
00:45:03.550 or sometimes Saturday morning and do that for six months straight every single week it was really sucky but you
00:45:09.700 learn a little bit about how to work the system and so that you can be this guy
00:45:16.300 and I want to share that knowledge to you too because I'm kind of an open
00:45:21.380 source guy and I like to present this type of stuff as well because there's this thing in the community where if
00:45:27.290 everybody knew it then we would be able to do it anymore and I think that's [ __ ] it's true though like this system will only work up to a certain
00:45:33.440 point like once people figure out and everyone does it then the airlines are going to have to figure out what to do but for now let's play around with it
00:45:39.260 because everybody wants to sit up here in this place in this shangri-la on an
00:45:44.540 airplane and nobody wants to sit back here in the back which is where I used to sit before I figured all the stuff
00:45:50.390 and why don't people sit in the front because it's incredibly expensive like
00:45:55.820 this is a flight from New York to Austin and I paid some around this three hundred and forty dollars here but that
00:46:01.610 same flight in the front of the plane is anywhere from a thousand to about two thousand dollars which really sucks but
00:46:07.220 that's not the only currency that airlines take airlines take something called air miles which you've probably
00:46:12.380 heard of which means every time you get on a plane you go from point A to point B you accrue funny money in terms of
00:46:18.740 airline miles now what I found out is it's not a one-to-one relationship between getting an Air model than
00:46:23.840 redeeming them again most tickets started around 25,000 miles are up so it takes a little while so this is me
00:46:30.080 sitting on an intercontinental and flight which I paid twelve dollars for an international business because I had
00:46:36.200 a whole bunch of miles the other currency that airline tab is something called elite status so the higher you
00:46:43.040 are in this little Club the more miles you fly the more you level up the more
00:46:48.290 you can kind of sit in the front and I love fall out so I had to put this in here somewhere so here I've already been
00:46:54.560 upgraded on my flights back to New York tomorrow so it works so step one pick an
00:47:00.560 airline you are essentially wedded to this airline you will fly it no matter what you doesn't matter if it's twice as
00:47:05.600 expensive it is nearest one because the miles are incredibly important to you both the status miles which are miles
00:47:11.210 that count up towards you leveling up and then the redeemable miles which you can use to pay for additional flights
00:47:16.220 you also can earn them on partner Airlines on LAN Delta I can fly in
00:47:21.560 Alaska credit my miles to Delta so when you pick an airline take a look at their partners as well number two fly a lot to
00:47:28.460 random places for it so this is called mileage running where the point is not to go somewhere and
00:47:34.550 stay there the point is to get there as cheaply as possible and come back the same day so there's a website called flyertalk com which has a mile run forum
00:47:41.360 which shows you something called CPM cents per mile you want to get sense paid per redeemable mile earned as
00:47:47.510 cheaply as possible so that you can then redeem it this is no place called myeloid calm has something somewhere to number three take the long way instead
00:47:54.470 of going direct from JFK to SFO take four stops do that on the back to the
00:48:00.110 site called the ITA software its matrix which is person by google allows you to do this it may be a little bit more
00:48:05.480 expensive but it's going to drop your CPM you're going to get more segments and you might get the holy grail of a voluntary denied boarding or involved
00:48:11.270 area tonight boarding otherwise known as a bump what a bump does is an airline pays you to take a different flight because it's overbooked the more you fly
00:48:17.990 them where these you get and then you can redeem them for trips to anywhere you want so I went to Dubai for free
00:48:23.690 because I had two thousand dollars worth of these little Redemption things that I could do that of course is an infinite
00:48:29.240 CPM which is pretty awesome so if the fifth one is turn and burn credit cards are given out like candy and you get
00:48:36.320 certain amounts of bulk miles as soon as you sign up so if you don't care about your credit score you can earn hundreds of thousands of miles with a kid with
00:48:42.800 the weekends or of the work and you cancel them and you move on number six finally earn them in burnham this is a
00:48:48.980 depreciable asset these don't earn interest they sit in your account and as inflation continues to climb up your
00:48:55.670 value goes down so as soon as you're earning them take that vacation flight somewhere with your friends or your family or your spouse significant other
00:49:02.240 or whatever and have a great time thank you does anyone here a fan of personal
00:49:10.160 happiness see so my presentation is
00:49:19.760 ridiculous and selfish so thank you thank you very much so it's really
00:49:27.260 important that when there's a great demand for a certain job position i don't know like software developer that
00:49:33.350 you should probably take advantage of it and leverage that as the opportunity of your life time to do what you want to do
00:49:39.410 the way you want to do it you know sprinkle some sugar it's basically the idea that that
00:49:46.960 whatever we want to do we can do it right now based on the economy of software engineers and you should Oh
00:49:54.630 somebody told me earlier I should introduce myself I'm Brad Wilkening co-founder of dev mine software we're a
00:49:59.910 software services company we try to do the right thing for the right reason but in consulting sometimes you do the right
00:50:06.640 thing for the wrong reason occasionally sure nobody is familiar with writing bad code occasionally because it caters so
00:50:15.190 this is a ridiculous slide it's a it's a
00:50:21.400 the the cat nyan cat so you write
00:50:28.300 software for a living you're good at it you're not a douche bag so we should
00:50:33.370 make the assumption that you should be able to get any job you want as long as you're as cool is I assume you aren't by
00:50:40.270 this slide this is a random photo of dhh let's assume at some point that you are
00:50:47.800 in fact underpaid it's very likely that you could make more money uh you know money isn't everything but at some point
00:50:54.820 you have to be able to afford a sailboat this is a random slide that involves a
00:51:01.120 photo from the whiteboard outside if you travel too far to get to your job then
00:51:06.670 that sounds like a great improvement opportunity for your lifestyle I have a baby at home does anybody here have a
00:51:13.150 baby babies are really cool and when you have them typically you want to spend a
00:51:18.310 lot of time with them I'm not sure if it's like psychological or not but it clearly I want to spend a lot of time
00:51:23.440 with my baby so the longer the commute the last time I get to hang out my kid
00:51:28.470 this is a slide of side effects of ambien which includes the sleepwalking
00:51:35.410 woman that has sex with strangers I actually emailed the person that authored this and asked for her location
00:51:42.160 that didn't work it that didn't work out if you don't have enough vacation then it's very important
00:51:48.160 that other than your commute you focus on the fact that two months off is is
00:51:53.200 totally typical in the grand scheme of Europe in the United States four weeks
00:51:58.360 is pretty prototypical so why don't we look out for that is something that we
00:52:03.400 can do for ourselves in order to bring the catharsis that can actually make us think better when we are at work this is
00:52:12.070 a tender loves cat it's really easy to
00:52:17.260 get a job these days if if I were out there and trying to find a job it would be very likely that i'd probably find
00:52:23.350 one in about an hour it's kind of you know an estimation but it's about right it's a photograph of an advertisement I
00:52:30.970 found in a target that looks so ridiculous I to take a photo out of it I'm not sure if anybody noticed this theme that I have every other slide is
00:52:38.170 ridiculous if you're at a company that makes you work a lot of overtime yeah i
00:52:44.200 really have to consider about whether or not that was really like a commitment you made to do something or whether or
00:52:49.300 not they're just kind of torturing you if they're torturing you then maybe it's time to look for a different job where
00:52:54.820 they don't happen to do that I know that after eight hours of coding I'm pretty
00:53:00.010 crappy at it so keeping me around is probably a bad decision on their part much less mine this is also a ridiculous
00:53:08.950 photo of some drawings were made by someone that helped us with a conference one time it's a vegetables that play
00:53:17.350 sports um I like working with people
00:53:22.420 that are better than me that's just kind of a hobby that I have we're at some
00:53:27.550 point I need to make sure that somebody around me is just blows me away every day it makes me feel alive it makes me
00:53:34.090 move forward being better at what I do is super cool and I enjoy it thoroughly
00:53:40.950 this is a picture of my progeny that is my child it's all so ridiculous changing
00:53:48.970 jobs also includes changing what job
00:53:56.260 that was in fact my last 11 seconds by the way your applause but I appreciate
00:54:02.240 it my name is Brad I'm from dev mind thank you very much hi everyone my name
00:54:08.360 is Matt calmly I'm the CTO back up if I we back up your SAS data I'm also a bit
00:54:14.150 of a DevOps geek got a bunch of stuff on my github profile if you've used the
00:54:19.850 rubber project which not very many people have you probably knew who I am so here to talk to you today about
00:54:26.480 graphite graphite Speece of software that really impressed me it does scalable real-time graphing and what
00:54:35.690 that means is it has this whole architecture for collecting data and
00:54:42.350 then giving you a way to in an ad hoc fashion graph that data so it doesn't
00:54:47.540 actually do the data collection use something else whatever you like i used collect be you've pushed that data into
00:54:53.540 graphite and then you use graphite to build your dashboards your graphs it has
00:54:58.940 a web app that comes with it that does a whole bunch of stuff but one of the most powerful things is everything all the
00:55:04.850 data it has is explored as json as well so there is a whole slew of other apps how do we compete with that
00:55:15.070 kalu of other apps that also give you alternate views of that data coming from
00:55:22.070 Yunnan Yunnan started falling over pretty hard for us at about 10 servers graphite have no problems with it at all
00:55:29.600 and we collected a much higher rate we collect every 60 seconds it's way easier
00:55:34.730 to build the graphs and say it again the add up graphing is really killer it's just like doing an ad hoc query in
00:55:40.280 sequel as a fab you want to write a
00:55:45.350 custom plugin it's fairly straightforward basically just do a put to stand it out and collect it will then
00:55:51.980 send it to whatever you want also planning to use stats d for in-app collection and for that in on as well so
00:56:00.369 if you want to see the recipes I used to set it up you can check out rubber have them all in there if you used rubber
00:56:06.320 you'd get graphite for free kind of and with that let me show you a demo of the
00:56:17.150 graphite web UI so go there it's kind of
00:56:23.960 what rubber gives you by default graphite comes up this is the composer
00:56:29.500 kind of lets you drill down into all your stats this is actually my production data so don't tell anybody
00:56:35.380 you know you can go down most of these things collected collects by default you
00:56:43.130 can add multiple things to the graph so you can want to see why your load is spiking you can add it in this case kind
00:56:48.920 of blows away the scale so I'm going in here and you know just saying hey put this on another axis so that I can see
00:56:55.190 the scales independent of each other which is real nice you can kind of see that it adjusted it on the background
00:57:00.920 there me add CPU as well cpu isn't very
00:57:09.140 useful because it's just monotonically increasing but because we're using
00:57:14.330 graphite you can say well this kind of data I want to see deltas so let me go ahead and do a derivative of it
00:57:24.249 and then you can see now you have sort of the rate of change of that vet statistic now that's just kind of the
00:57:31.309 composer it's not very useful by itself there's also this dashboard you I well I get to that in a second i guess you can
00:57:39.049 also change the the time frame that you know of all the of the data chill down
00:57:45.410 to minutes hours days week i have mine set up to collect on a 13-month interval there's an RR d so it rotates data out
00:57:51.349 after 13 weeks so this is a dashboard you I similar sort of thing you can
00:57:56.420 drill down and add various things go in
00:58:03.349 there you can say I want to see the load for all my app servers you just got it I
00:58:08.809 can you know then say alright I don't want them all independently because I have 50 servers let me see the average
00:58:21.400 and then you can also save your dashboards these are some of ours which
00:58:28.519 is our worker utilization yes we are running 2000 or almost a thousand rescue
00:58:35.509 workers we have peaked at 10,000 simultaneous rescue workers didn't really have a problem with it so if you
00:58:41.809 need to scale that much you can and I think I'm about out of time your champ
00:58:51.769 Thank very much um fame has lost a child oh I think it's yours I'm giving one
00:58:57.469 away it's a raffle all right you'll invite it thank you very much about all the speakers and which you will applaud
00:59:03.559 them in a second but first a message to them please put your slides up on that internet thing that we're all here for
00:59:09.579 and then link them in their juice and then at least they're all in one place now I'd like to hand back over to
00:59:15.920 Charlie no Charlie all right back to
00:59:21.769 Evan and thank you very much for the session
00:59:31.490 you guys win a prize you're the last one still here all the sessions have been out for a while it's actually sort of a
00:59:37.320 ghost town out there when you go out there you'll find out but that's great thanks thank you everybody for coming I've one quick question is anybody from
00:59:44.340 Yammer still here okay come up here when we're done you're not in trouble or
00:59:50.610 anything in fact it's a good thing thanks for coming I'll see you in 2013
01:00:45.280 member