00:00:17.320
get started Eric can you come to the podium please I'm ready lightings are starting three 2 one go all right so I'm
00:00:25.960
Eric Hodel I am here to talk to you about the next release of Ardo 310 um if your internet works you can go
00:00:33.840
to segment 7.net till Dr Brain arock and look at uh a
00:00:38.960
preview so one of the I think the biggest thing that I've added is I've got two new markup formats I have the
00:00:45.960
super ancient Rd format which is here at the bottom and then I have implemented Tom Preston Warner's Tom do and he'll be
00:00:52.559
talking more about Tom do tomorrow I believe it's in this room at 210 and other stuff for GitHub um I'm
00:00:59.160
going to add mark down real soon I've got all of the groundwork laid I just need a parser that I can put into Ruby
00:01:06.439
core and so there's that adds a lot of restrictions to what I how how it can be
00:01:11.960
written to choose which uh which markup that your file is in you can either when you run Ardo do Ardo D- markup Tom do
00:01:19.560
and you can put that in your options for your gem as well uh that'll work with I think with back to 192 the arock that's
00:01:26.720
in 192 it'll look funky but it will still operate just fine you can also put a uh comment at the top of your file or
00:01:34.960
above a method in order to mark that method or that file as all being Tom do
00:01:40.079
and I'm also going to add a magic file that you add options to and I don't know what that looks like yet uh for the HTML view I've integrated
00:01:47.719
the search from esoc so you've got and I've slightly improved the index so you can type things like a CL full class
00:01:53.439
name fully qualified uh it's also a reusable component so I've got a patch to integrate that back into estock and
00:02:00.000
and uh if you're writing your own generator you can use that as well it's fairly easy to integrate I haven't fully
00:02:05.079
documented how to do it yet so there are no more of the file Pages where You' click on the side and it would be this
00:02:11.280
useless page that had like the time it was modified and it was mostly blank and also on the rest of the pages like your
00:02:16.720
read me or your history file your change log there's no more extensions on those so that's those now are all called pages
00:02:24.360
and if you have like the equals Fu for your heading or whatnot all those have labels and so you can deep link to those
00:02:31.480
with the at sign so if you type in your your comment uh see arock markup at links it'll put a link to that with the
00:02:38.760
full name there's also some syntax highlighting in the uh HTML output it's
00:02:43.800
only for Ruby code and I do some super basic guessing by seeing if there's one of these keywords or a block call or
00:02:50.560
hash arrow in the in the block and uh it needs some feedback to say hey this
00:02:56.159
should be highlighted and it's not so that I can I'm don't really have a good way to tell that something is Ruby or
00:03:01.640
not there's also you can copy static files into arock so if you have a PDF or you have a directory of images or
00:03:09.360
something that you want to include you can go and list those and that if you give a directory it'll copy the directory structure if you give just a
00:03:15.599
file it'll put that file in the root of the output dur the table of contents has
00:03:20.840
been separated out into his own page and it shows headings with a little disclosure triangle or disclosure
00:03:27.400
button it's all HTML 5 and it should be out next week and you
00:03:32.640
can uh install the pre-release now and so uh let's go look at this page
00:03:37.879
uh we got we got two minutes we got a demo wow that's like a long ways away
00:03:43.640
over
00:03:55.840
there oh never mind it's too hard
00:04:03.680
Okay cool so uh I'm going to talk to you about Builder or blr um a Json templating DSL that I
00:04:10.439
wrote so um I'm Alex sharp AJ sharp on Twitter um I am a r Ruby engineer at a
00:04:16.400
company called Zari um Zari is a um sort of buyer Centric local Commerce platform
00:04:23.520
so it's sort of like a reverse Craigslist um we enabled you to like go on the app and say what you want how
00:04:29.440
much you pay for it and um other people in your area can like fulfill it so um
00:04:34.759
the app is heavily a API driven I do um almost exclusively back-end server work
00:04:40.320
um the app is pretty much exclusively Sinatra um and we have a native iOS
00:04:46.680
client Android web HTML 5 mobile um so all of them talk to a Json API and
00:04:52.120
currently um we only support Json eventually we're going to open up the API but um I'm hoping to keep XML out um
00:05:00.320
so why write another Json templating Library um mostly because as Json gets
00:05:08.280
unwieldy really really quickly um you could probably make a pretty strong argument that um Json serialization
00:05:15.199
doesn't belong in the model and um there's a lot of quite a few other um tempting libraries out there already um
00:05:22.639
the reason that we didn't go with any of these is mostly just the dsls didn't really make sense to me and um I found
00:05:28.479
them kind of confusing um and we we just need like we need it's
00:05:35.520
it's important for us to see exactly what we're returning in our responses um because we're a Commerce platform and
00:05:41.319
you know when money is involved people are very very sensitive about that um which brings me to my next point so um
00:05:49.280
you know we I I joined the company about five months ago um the app had been in development for maybe a couple of months
00:05:56.039
we were moving really really quickly um we launched in like miday and um
00:06:01.919
admittedly we were doing just a lot of as Json um attributes and uh you know
00:06:07.599
sending them to the client um I'm sure we're not the first people to do this um
00:06:14.080
so turns out um so we we use mongodb on the back end and mongoid for the um for
00:06:20.080
the o or or odm or whatever and so turns out mongoid like sort of recursively
00:06:25.240
serializes stuff whether or not you put it in include I don't know if that was like a bug or whatever um so uh someone
00:06:32.919
figured this out and sent it to Tech Crunch and so this was not good that sucked um so uh luckily we got we got
00:06:40.960
things patched in about 15 minutes um after that it was like okay we need a better solution so um I wrote this DSL
00:06:48.560
it's really really simple um currently it only works with Sinatra I was I've been trying to get rails 3 support going
00:06:54.199
um I just have been having a little trouble with the action view stuff um so if you're good at that stuff um maybe
00:07:01.199
come find me I'll be sitting in the back after this and and um it's the the part
00:07:06.599
that I don't have working is just getting instance variables and locals over to the templates um so the thing
00:07:12.360
that I really like about this is there's really only I don't know what just happened but
00:07:17.560
I think it was funny Tender Love is playing High Jinks up here um so uh there's really only four
00:07:25.039
methods object collection attribute and attributes um so here's what um the what
00:07:32.160
you would put in like your Sinatra action um and it takes a little local hash and so this is like the simplest
00:07:38.520
possible thing you could do right um just key of Fu and renders bar would be
00:07:43.680
the local that we sent over here um we also support like attribute lists so
00:07:49.000
this will just send those symbols to the object that you're that you're um
00:07:54.039
rendering um we we also have this like implied object thing where if you send
00:07:59.199
the template a local called post it'll try to invoke these attributes on that all right I'm going to speed up um we
00:08:06.199
also have Dynamic attributes so where you can like pass a block to attribute um we have object nesting
00:08:12.919
which you know like what you would expect from something like this so you can do like just singular objects nested
00:08:18.120
as deeply as you want um you can do like attribute aliases um obviously there's also
00:08:25.000
support for top level collections um for multiple resources uh and you can deeply
00:08:31.319
Nest collections as well um there's a couple other cool things about it uses multi Json so you can pick the encoding
00:08:37.320
Library you want it uses uh yagel by default if it's available um and I I
00:08:42.959
don't know what multi Json defaults to if yagel is not around but probably Json gem or
00:08:49.200
something yeah so you don't want to use that um we also I also do this thing
00:08:54.600
called builder. Handler um like I said we use Bon does this really weird serialization thing and that's it so
00:09:00.959
this is like a global thing 3 two 1 if you want more info here it is um AJ shuer
00:09:12.360
thanks I'm going to be talking about monitoring rather boring subject since I mean most people do Ruby for like rails
00:09:17.839
and other stuff but um me I'm Ken Robertson or k Robertson on Twitter and
00:09:23.000
uh gith Hub I work at a company called demandbase in San Francisco um I had to throw in the hiring thing because I went
00:09:28.920
to go Ru and our St HR person got mad at me cuz I didn't put us on the job board she sent me home crying um so I threw
00:09:36.480
that in a for her but she really is normally nice um so I'm G to be talking about
00:09:41.880
devops who else here is like using Ruby for devops so I come from devops from more
00:09:47.839
of a developer background so looking at some of the operations things I throw a big what the sometimes to naos I
00:09:55.279
mean it's this thing that really hasn't changed in a long time like here's a p here's a screenshot from Netscape and it
00:10:00.720
basically looks exactly the same um it hasn't changed over the
00:10:07.440
years you kind of have a LoveHate relationship with it um especially looking at it from kind of a developer
00:10:14.399
perspective so I look at it a lot of times like you know it has this great Community with a lot of plugins out
00:10:19.680
there but they're written in different things from Pearl bash um some in Ruby
00:10:25.600
and different types of requirements you know how do you figure out what you know modules it depends on and everything
00:10:31.240
like that and you really have no idea about the quality of it like these are the things monitoring your production systems and do you know how well it was
00:10:38.839
written or really review what it's doing um some of them can be a lot of code that you really just don't know kind of
00:10:45.639
how they went through it so I decided to write something that I decided to call
00:10:51.480
mettis mettis implements nao's uh NRP protocol it's a persistent Ruby de uh
00:10:58.440
Damian so you WR your monitors and it keeps them alive in memory um it receives connection says I want to run
00:11:04.680
this monitor it runs through your code returns a result um anytime you want to push out new changes it just restarts um
00:11:12.680
with that you're able to leverage gems um Ruby has a you know diverse set of
00:11:18.600
gems so you're able to pull pick and pull anything you want easily manage your dependencies um deploy it all kind
00:11:24.320
of on a Common Language uh it provides a simple framework for a lot of the common stuff you need to do like a lot of the
00:11:30.320
checks you look at it and they have a block of code for their you know argument handling and then this little
00:11:35.399
teeny section for what it actually does and when you write your custom ones then you got to like remember the right exit
00:11:41.040
codes for whether it's a warning critical or unknown um and one of the things I also look at is is adding support for test
00:11:48.839
helpers if these are the things monitoring your live systems you should be able to test them to make sure you know you're not waking up at 2 a.m. for
00:11:56.000
some benign reason or that something doesn't slip through and not find out till 6: a.m. when you know your CTO is
00:12:01.959
like what the hell so here's kind of um how I've structured it as like a a DSL um
00:12:09.480
borrowing a lot from Chef um where you can define a monitor give it a name pass it an execute block with just some
00:12:16.320
simple logic right in there you define your return code as either critical warning or you can just say okay or
00:12:22.399
return a string but in here of course there's still some hard-coded parameters so you can usually pull those out to
00:12:28.440
attributes that can be dynamically configured so here you just swap those out for um something that you can
00:12:34.000
dynamically pass when the domain when the Damian starts up uh here's one a little bit more
00:12:39.600
complicated where it's uh connecting to your database server to see if replication is behind um few the things
00:12:45.680
like it'll intelligent look at um what your return codes is code is so if you specify something's critical but then
00:12:51.720
you maybe run over a warning block it'll know critical is more important than a warning and make sure that bubbles up uh
00:12:58.160
it'll rescue any except that maybe throw so and return the message from there um
00:13:03.480
and it also manages your dependencies to where you can put requir Gem and it'll just dynamically require it before running it and that way um return that
00:13:11.480
as a code if it's not there um I haven't actually implemented this part yet um but this is how you can
00:13:17.399
kind of write a test around it um you know you can might have to mock some of it yeah but um kind of looking for
00:13:24.560
somewhat of a structure more like rat test where you can set up some marcks or whatever you make maybe need um tell it
00:13:30.639
to run Monitor and then check your status code um and a return message afterwards uh if you're interested in it
00:13:37.000
it's up on GitHub um you can just do gem install medus I pushed up the first version last night um and it's still
00:13:43.880
fairly young but we're using it live on some of our systems and definitely looking for help with it thank
00:13:51.279
you okay I'm ready can everyone hear me okay all right I'm going to talk to you
00:13:56.480
about startups and why startups fail uh I'm going to talk about this uh using as
00:14:03.560
my backdrop a book called the four steps to the Epiphany by Steve blank Steve blank is a veteran of eight Silicon
00:14:10.040
Valley startups his last startup was very successful and he uh had enough
00:14:15.279
money after that startup what's going on here okay that's very
00:14:22.920
interesting that's all very interesting okay I can talk about this without using the slides if I have to so all right he
00:14:30.199
was a veteran of eight Silicon Valley startups over the course of 20 years his eighth startup was very successful and
00:14:37.199
after that startup he reflected on what he learned from those startups some were successful some failed and he looked at
00:14:43.320
the patterns what succeeded and what did not uh those Reflections led to lecture
00:14:48.880
notes those lecture notes he took those and delivered those in lectures at Stanford berley and Colombia and
00:14:54.360
eventually he put those together in a book called the four steps to the Epiphany now he defines a startup as an
00:15:00.360
organization that's designed to find a profitable scalable business model you're going out there to find a way to
00:15:06.199
make money so there are a couple of things you want to do first you want to reduce risk the reason you want to
00:15:12.279
reduce risk is because you want to increase longevity the longer your startup lasts the greater the chance that you'll find a way to make money now
00:15:19.399
he starts off with a few counter examples of companies that did not follow his four steps and that did did
00:15:25.040
not succeed who remembers web van raise your hand if you remember them all right you buy your groceries on the web they
00:15:30.440
ship them to you in a van they failed miserably because they spent a ton of money up front before they had a steady
00:15:36.680
supply of customers they put money into things like uh oh custombuilt software
00:15:42.000
and uh Vans and warehouses and things like that but they're not alone Apple did the same thing with a Newton
00:15:47.600
Motorola did the same thing with aridium all of us make mistakes so Steve blank looked at all of this and came up with
00:15:54.199
these four steps four things we need to do if we want to be successful with a startup customer Discovery customer
00:15:59.880
validation customer creation and Company building notice that the first three focus on the customer first and then we
00:16:05.920
pump money into building the company now who here is an entrepreneur raise your hand Make some noise for an entrepreneur
00:16:11.639
okay good I'm an entrepreneur too and you know what we're all delusional we're
00:16:16.959
delusional we're delusional because we think our idea will change the world and maybe it will what we need to do is take
00:16:22.519
our idea our idea bundle it into a minimum viable product something that a
00:16:27.880
customer might buy put it out in front of them and see if they they buy it uh we need to get outside of the building
00:16:34.240
talk to real people who have the money to pay for whatever it is we're offering now the people we're going to Target are
00:16:40.160
the people at the Left End of the bell curve imagine this is a curve of customers at the Left End are the people who are the early adopters innovators
00:16:46.800
they buy iPhones when iPhones first come out at the Right End are the people who use dialup telephones today so we want
00:16:54.680
to go after those early adopters get feedback from them whatever we do when our MVP and that minimum viable product
00:17:00.959
our hypothesis Our Guest will not survive customer feedback so we take
00:17:06.039
that and we figure out what what we're going to do to make a better product Second Step customer validation if that
00:17:12.280
doesn't work we pivot keep one foot firmly in the area that you know and move to to uh and change those things
00:17:18.799
that did not work out for you third step customer creation you're spending money does that one
00:17:24.360
minute okay one and a half one and a half okay customer creation you spend money on marketing and and sales to
00:17:32.120
create more of those customers you're moving down the bell curve away from your early adopters and your innovators you want to keep them but you want to
00:17:38.400
move into the meat of the bell curve and finally company building this is where you put money into your warehouses and
00:17:44.280
your custom software and building that infrast or building a larger company that's going to make money for you this
00:17:49.760
is post startup so to recap we're at the end of the presentation the four steps that we want to follow to build a
00:17:55.200
successful startup according to Steve blank are customer discovery customer validation customer creation and Company
00:18:01.120
building we focus on the customer first and then we pump money into building the company we present a minimum viable
00:18:07.600
product to the customer if it doesn't work we pivot into something that does that's me thank you very much for
00:18:16.120
listening right okay so my name's Ernie Miller I write stuff I Tweet stuff I
00:18:21.960
code stuff um next slide so first up I promise this slide would be here uh blame Ben uh there's a lot of smart
00:18:28.600
people people here the talk is you should write a ruby gem and I'm thinking there's probably a lot of people in this room already doing that so just pick up
00:18:35.320
a silent another Ruby Jem anyway you can see it's his fault but if you already are writing Ruby jems or if you just
00:18:41.679
don't like what I got to say uh that's okay I brought alternative entertainment he'll be hanging out with us for the
00:18:46.880
rest of the time so right awesome so I write gems I wrote
00:18:52.600
uh meta search because I liked object based searching and I wanted it to work in rails 3 wrote metaware because I
00:18:57.640
liked all the aeral awesome this and I couldn't get to it without uh hackery um I wrote ransack because meta search
00:19:04.159
sucked uh I wrote uh I wrote squeal because uh metaware sucked um I also
00:19:10.200
wrote Atri bucket which is just this little kind of toy gem for serialized attributes that make them act more like
00:19:16.400
uh typical model attributes so anyway there's also other reasons you might want to write gems uh for instance if
00:19:22.679
you guys remember this awesome thread on GitHub where we discussed the merits of adding object in and inside and outside
00:19:30.720
and you know it was it was pretty epic I mean it was no coffee script thread but it was pretty great so um so anyway yeah
00:19:38.000
you get the idea right um so I wrote a gem called Naughty and you can see it
00:19:43.039
has extensive uh extensive specs uh there on the bottom so in in in Brian's
00:19:48.440
defense I mean you know there were specs so you can write gems to be a troll as well so that's awesome um also uh I I I
00:19:58.320
don't know I mean there was like a new Watcher just the other day I'm pretty sure he did it just so I had to make a new slide um so you should write gems
00:20:05.559
too why should you write gems well because reusable code is awesome and to write a gem you have to make your code
00:20:10.600
reusable well factored code is awesome you'll probably Factor your code better if you're writing a gem awesome times n
00:20:16.840
is awesome for values of n greater than one so you're sharing your awesome code with other people also one more bullet
00:20:22.799
point with awesome because I was on an awesome roll you'll learn stuff by writing gems you can give lightning
00:20:28.080
talks about your gem see if you're doing it so and you know I don't have to tell you guys that so anyway why wouldn't you
00:20:34.159
write gems well people will see your code and maybe it's like top secret and awesome and you don't want anybody else
00:20:39.400
to know your super secret algorithms or no really people will see my code and like that could really suck for my
00:20:45.240
reputation um so everyone rolls their own maybe solution and you don't want to make a gem out of it or someone's done
00:20:50.400
it better or it's just too trivial to bother with so that was actually one of my things when I wrote a gem called
00:20:55.600
Valium now this talks not about Valium but what this talk is about is what you
00:21:01.840
can find out about whenever you write these tiny little gems and you find out get some surprising results so anyway uh
00:21:08.039
this is what vum does bypasses active record distantiation it's seriously ridiculously simple gem uh sample usage
00:21:15.159
because you have to do that um this talks not about valume as I said it's called you should write a ruby Jem just
00:21:21.159
a reminder um so look we're information rich in this talk we have all sorts of information here basically what I'm
00:21:27.679
trying to show is the fact that you you can kind of see I'm spending a lot of time on some of these gems I get 570
00:21:33.320
Watchers after 19 months on meta search whatever it really doesn't matter moving on um so volume I spent about a month uh
00:21:40.960
uh basically it's been out for about a month I should say it's 91 lines of code uh it has 196 Watchers as of like this
00:21:47.440
morning anyway and so I was like what what like seriously why it's 91 lines of
00:21:53.080
code and so what I learned was especially after I saw this comment right here um so this was a comment on
00:21:59.559
my blog you can read it I what's obvious to me basically a lesson learned was that I
00:22:06.559
thought you know I was doing something obvious it obviously wasn't so obvious to other people uh you can't predict
00:22:11.840
what other people are going to find useful so you really shouldn't ask yourself should I release this just
00:22:17.000
release whatever it is you're thinking of releasing The Internet Is Awesome at telling it you it either sucks or it rocks so also I mean people love free
00:22:25.720
stuff anyway and you're giving them free stuff so you know know like the kitten there um so write a gem you can use
00:22:32.279
bundler you can use Jeweler you can use ho I mean ho um it really doesn't matter
00:22:38.799
uh just write a gem so that's all I've got thank you very much and uh all
00:22:44.799
right I was told I was told there would be sound
00:22:49.880
unfortunately you can hear it hi I'm Corey Haynes I uh with fablet
00:22:56.919
build Mercury app.com also do code Retreats and we have a cat um Ernie said
00:23:02.320
to write a gem so I did and I'm giving a lightning talk about it um so tweet something with
00:23:09.080
rubycon um so last Saturday I was fooling around with Jims and somebody said this a friend of mine somebody said
00:23:16.600
hey tweet um they said hey you know less people is a fine term if you work at the soil and green Factory and so I wrote a
00:23:22.760
a Twitter bot called pedantic snob that replies whenever somebody says less people and tells them they should have
00:23:28.279
said said fewer and it was really funny for about a half an hour um and so I'm going to demo it real
00:23:37.880
Quicky what you're welcome Cory yes so so this is the code I wrote a gem for building Twitter bots so basically you
00:23:45.120
just say configure if you can't see it go to my GitHub
00:23:50.159
account oh sorry um you can you just say tweetbot configure you say how often you
00:23:56.080
want to do it and then you say respond to this phrase and you give it a series of responses and then you give it your
00:24:01.240
off keys and you say talk and it works and it just starts responding to you um
00:24:06.679
so I did that and had a bunch of people telling me to off um so it was
00:24:13.880
really funny um it was really funny but then I realized I woke up in the morning and
00:24:20.039
had a whole stream of people telling me to off and I especially like this one who told me to uh um how about you
00:24:27.760
suck my dick and there was somebody who said to do it the Long Way backwards and I started
00:24:35.440
meeting the people who actually participate in trending topics um so I
00:24:41.200
so I built a couple called today is great and um also one called joy to you that listened for good morning and then
00:24:48.159
it said things like hey remember how awesome you are and have a good day and
00:24:53.600
so I started getting people saying oh thank you thank you you really made my day
00:24:59.080
and this just made my day and so I woke up Monday morning and had a whole stream of people telling me they love me and so
00:25:07.440
then they got suspended um so I want to I want to
00:25:13.159
bring this up again these people all told me to off cuz I was telling them that they were
00:25:19.159
wrong these people all loved me I had 500 followers in like a day so I
00:25:28.520
encourage you to write Twitter Bots but I don't encourage you to write mean ones
00:25:35.960
be nice and imagine if there was a whole minion Army of bots that were saying
00:25:42.480
nice things to people and I've made it really simple to do it so you can go
00:25:49.440
like this and just make really nice things has anybody had this reply to him
00:25:54.799
yet pretty awesome huh is it on the screen awesome so that's
00:26:01.159
what I'm going to say um I used it as a way to learn about the Twitter stream thanks to the Twitter gym and to the int
00:26:07.440
tridia tweet stream gem um things that are better um I don't handle rate limits
00:26:13.440
that great so I get suspended um I need to figure out how to do better async
00:26:19.159
things with event machine um there's some configuration options that would be nice like what happens when you wake up
00:26:26.120
um things like that as well as accepting a proc for giving the response text instead of just strings um here's the
00:26:33.000
GitHub account um that's also our cat so oh
00:26:39.240
thanks very much all right 7 a.m. waking up in the
00:26:47.080
morning it's Friday Friday getting on down on Friday everybody's looking
00:26:54.039
forward to lightning talks yes hi I'm Aaron Patterson I am also known
00:27:00.840
as tendra love I gave this talk about six years ago so uh sorry for the repeat
00:27:07.320
it was my first lightning talk ever yes sorry for the repeat I wrote this thing
00:27:12.399
called beta Brite and you can buy a sign it's a sign like this and then you can do gem install beta Brite and if you
00:27:18.960
want to write stuff onto the sign there's two steps to do it you have to allocate memory and then write to the
00:27:24.320
memory so you allocate once and then you write many times stimes and the code looks like this this allocates memory so
00:27:30.960
we're allocating two slots of memory here text a text slot and a string slot
00:27:36.039
and then when you want to write to it you just address those slots by name and then write to it so this example program
00:27:42.840
produces uh Goodbye cruel world and there's three different types
00:27:48.640
of files text string and Dot files so when you have a text file you can embed string files into the text file so it
00:27:54.679
looks something like this this is our text file and it can have text on either side so goodbye and world and then we
00:28:00.519
insert into the middle of that a string file so we can replace that and the main difference between text files and string
00:28:06.919
files is that you can display string files without refreshing the sign so if
00:28:12.240
you display a text file it has to blank the sign first so that's why we want to use string files if possible so this is
00:28:17.880
how we write the text file and in the middle here we're embedding the string the string file in the middle so and
00:28:22.919
then we write to the string file and then you can just update the string file over and over again and have that
00:28:28.159
dynamically changed so we have Goodbye cruel world and that'll get replaced with uh goodbye nice world so you should
00:28:36.080
use it and you can use it via drb one of the projects I did with that I set up a server like this um and that has some
00:28:43.679
wrong code in it but that's okay and it captures it captures I set up a a uh
00:28:51.039
webcam to capture an image of it and it would return the image of drb and your client would look like this and this
00:28:58.320
code would produce a sign uh an image like this it would actually come back to your machine and one of the best things
00:29:04.200
was that somebody put together a um website where they they his his
00:29:12.039
wife taught third grade or something like that and he put all the students
00:29:17.480
names onto the sign and then put together a website which showed all the students names and then you could click
00:29:22.840
through them and that made me very happy he shared it with me and then you can also my other project with it is Twitter
00:29:28.480
client as you can see right here this is the code for it it's it's not as short
00:29:33.640
as Corey's but it uses no third-party libraries so
00:29:42.120
uh uh anyway all this does all this does is it's written with net HTTP and it
00:29:47.440
listens to um it listens over HTTP to the the uh Twitter streaming service and
00:29:55.880
it writes messages onto a queue like this this and then we have another thread over here that just reads off of the queue and updates the sign and I put
00:30:03.240
together a video just in case this didn't work but it does work so you don't need to watch the video you can
00:30:08.279
just watch the sign if you tweet with Ruby comp it'll show up here thank
00:30:14.080
you I gave a talk at goo where I came out and said you're all a bunch of homophobic sexist racist bigots which
00:30:20.519
some people didn't take well but there's science behind it if you want to talk to me later there's studies that show you have biases you don't like admitting um
00:30:27.600
but if you know you have them you can kind of try to counter them and some people argued about that and someone
00:30:33.519
argued with Josh that there's no there's no discrimination in our field otherwise Dennis wouldn't have made it off the
00:30:38.799
stage and drag so apparently the Discrimination is either you kill someone or there's none of it and I kind
00:30:45.600
of disagree with that uh I think as long as As I said there are closeted
00:30:50.720
high-profile community members there might be some discrimination going on and people complain about not being able
00:30:56.240
to hire women and minorities but they could say it couldn't possibly be anything to do with them and I wanted to
00:31:04.080
give some more people some input on this one so
00:31:11.639
hello hello my name is Renee devor I'm a programmer and I'm a woman I'm not one
00:31:17.600
of the guys I expect respect at work I want to be respected as a woman and as a
00:31:23.399
programmer have a level of professionalism that shows respect to yourself and your colleagues there's a
00:31:29.559
problem when I'm expected to always be the one to call out the sexist crap that gets set in front of me just because I'm
00:31:35.799
only woman present there's also a problem with the notion that if I don't call you out on it it's okay there's no
00:31:42.559
such thing as implied consent let's fix this men out there if you see it call
00:31:48.039
your colleagues out be aware and demonstrate that you expect your peers and subordinates to be professionals
00:31:54.440
thank you so I was also going to have a black guy and gay guy your videos but they
00:31:59.519
fell through so out of like three guy two guys the woman was the only one that came through just putting that out there
00:32:07.039
um it there's discrimination we have it uh and basically our culture is kind of
00:32:13.200
like a a bunch of Frat Boys honestly and we kind of all know it might want to deny it but if you think sit around like
00:32:19.600
when you're drinking and joking around it's pretty misogynous sometimes and we could be better about it sure there's a
00:32:24.799
supply problem there aren't enough women to hire but it's not not that bad of a supply problem there's a reason that
00:32:30.200
there aren't the women to hire and it doesn't help that a friend pointed out his little girl was asked hey Daddy what
00:32:35.360
are you doing he's like I'm programming and he said you want to program when she grow when you grow up and she said no I want a boy job um yeah that's a
00:32:42.480
culture-wide thing but part of the culture is our culture is that two minutes so we really could be a lot more
00:32:48.159
inclusive and part of the problem is don't argue with someone when they say hey maybe that doesn't help if you make
00:32:54.799
some comment like oh the problem is women need to step up and you say girls sorry to pick on the one guy I'm I like
00:33:00.840
him he he was made an innocent comment and someone says hey maybe that's not the most inclusive way to say that
00:33:07.039
arguing with him about it really doesn't help um you sorry white straight males
00:33:12.519
you don't get to decide like what's discrimination or not because you don't know what it means uh I had a little
00:33:19.120
story at the other one that'll repeat where Randall Thomas came to my wedding in Texas and had to drive two hours
00:33:24.559
through the middle of nowhere Texas that night with his white girlfriend and he complained about that and I got an
00:33:29.600
argument with him I'm like dude I know this part of Texas is not that bad uh and then I thought about a little and went you know I should shut up I'm a
00:33:36.600
white dude I don't know what it's like to drive across Texas as a black dude um and not all of you but a lot of you are
00:33:43.080
white straight guys um you don't know what it's like so just kind of shut up when someone says hey maybe that's not
00:33:48.399
cool say okay you know maybe maybe I could maybe I'm doing everything I think I could but I could be a little better
00:33:54.039
when someone says hey that's sexist so that's kind of really a I had to
00:34:02.480
say hi I am uh this lebot here is what that actually says when I went to Japan
00:34:07.679
nobody really understood uh they kind of don't get the whole uh writing numbers as letters things
00:34:17.040
so that'll come up here on Wikipedia and you can learn all about it this is a picture I took in Japan uh I got ha you are going to die
00:34:26.000
by me not really I'm not actually going to be the one who has the hand in it you're killing yourselves very slowly uh
00:34:32.679
this is Ray kwell he's a guy who doesn't think that you're going to die uh you can buy some pills from him if you think
00:34:38.480
that he's right about that and then become a robot Someday I'm looking forward to it um sitting is specifically
00:34:45.079
what I'm talking about that is killing you we all sit for a living uh like it's our job or something and it kind of is
00:34:51.399
uh this is the whole internet and I found this little nugget of truthiness uh you can tell that's where the truthiness came from because this
00:34:57.680
there's the URL right there uh this is called sitting kills it's an infographic that never lies uh sitting increases
00:35:04.040
risk of death up to 40% if you sit for 6 hours per day you're up to 40% likelier to die within 15 years than someone else
00:35:11.520
uh next it makes you big boned as you can see at the top one in three
00:35:16.760
Americans is obese uh exercise rates stayed the same but sitting time increased 8% and obesity
00:35:23.920
doubled sitting wrecks your body when you are sitting electrical activity your leg muscle shuts off calorie burn drops
00:35:29.920
to one calorie per minute the enzymes that help break down your fat drop to 90% after 2 hours your good cholesterol
00:35:35.920
drops 20% and after 24 hours insulin Effectiveness drops 24% so this is me sitting and as you can
00:35:42.200
see I am not a happy man right so the solution is a standing desk
00:35:48.520
right everyone can just stand inste see look at that man that man's much happier standing at his desk not true right
00:35:55.200
here's the thing standing and chewing gum so if you're going to consider a
00:36:01.720
standing desk perhaps you would just get a pack of gum instead uh what I'm actually proposing is something far more
00:36:07.640
radical than gum chewing it is in fact a walking desk just like this one that I built with a treadmill I bought off of
00:36:13.119
Craigslist for $70 uh and disassembled and made into a desk and it works a lot better than you
00:36:19.200
would think so please try it uh these are some treadmill desks that you can buy at Walkin code I especially like the
00:36:25.119
programmer model on the left here for cuddle time while you're programming as a pair highly recommend it this is me
00:36:31.760
and I also have here uh at the very end a video of me on my walking desk look at
00:36:37.839
that guy is he happy or what
00:36:47.400
yeah uh good evening I'm Bryce Curley I'm bonso esque on Twitter I don't have any slides I'm actually using omn Focus
00:36:53.680
for my phone as uh presentation software so I'm going to talk about some things I learned from organizing the Miami Ruby
00:37:00.160
Brigade uh first one that I've probably mentioned this to a few people don't meet at a bar uh we went from like 30
00:37:06.319
people meetings with great attendance to a threers meeting and then one person had a job and then left and then the
00:37:12.440
other two of us uh one the other guy left in a cop car
00:37:18.920
uh always have a a project or some sort of code you don't need to make it a big thing uh I did a meeting
00:37:25.440
on one of the uh model view controller things for Sinatra the name's escaping
00:37:30.640
me right now and the presentation lasted about 5 minutes but there's a lot of good discussion and we got a lot of good
00:37:36.040
talking in uh cat food no that's uh shopping list uh if there's a good conversation going don't kill it let it
00:37:42.800
continue if it's like interrupting your presentation deal with it and finally if
00:37:48.119
you're doing a great way to start a meeting is a few Ruby cones for the new people uh they're also great to do if
00:37:54.319
you're think you're really good at Ruby all right have a good
00:38:00.920
one ready hi hi my name's uh my name's Phil Nash I work at UH mint digital uh we're a
00:38:07.960
London and New York creative rails agency we like making cool stuff that's what we do um you can find us on Twitter
00:38:13.800
I'm Twitter you know um I just want to say today that we need to stop building features um features suck they do too
00:38:21.640
much you don't want them your users don't want them stop doing it you know if you build a rails app if well that's probably what we do if you build a rails
00:38:27.760
app you uh you know very well at the time of release your app is perfect it's beautiful it's Sleek it's uh it's
00:38:33.560
Perfection that's what you did uh and then you love it your users love it and
00:38:39.200
after a while whoever somebody's making decisions telling you to do stuff uh clients maybe your internal creative
00:38:44.240
team I know I have that problem uh and they find they want more features this feature that feature the newest
00:38:50.319
technology updated design and the application becomes
00:38:58.359
yeah it's not the app you built something's gone wrong it's an Abomination you dread working on it
00:39:03.640
something's you don't want to be Associated and the problem is that features are created and left ideas are
00:39:09.760
cheap we love ideas ideas are cheap but building them is hard looking after them is hard and you end up with a bloated
00:39:17.640
product a bloated user interface uh and an expensive and frustrating uh code
00:39:22.839
bloat it's time to cut the crap that's what I'm trying to say we need to kill
00:39:28.280
features um and stop building them we don't need them in the first place um and there's only one way to properly do
00:39:35.040
this effectively and that uh is to test we love testing this is what we do but
00:39:41.319
why aren't we testing what people are doing um we need to test early as possible as well um earlier we mentioned
00:39:48.079
um MVPs uh minimum viable product but why do we uh we need minimal viable
00:39:53.520
features almost in order to make sure it's actually something that we want something your users want um so in order
00:40:01.359
to gather these facts these um test this we need uh two uh we need
00:40:08.000
analytics we need some sort of analytics um but the kind of the tools out there at the moment are more counters and
00:40:13.480
counters don't tell us much um so uh they're not grading uh great at
00:40:18.680
discovering behavior that which is what we need to know we need to know whether this feature is making our users behave
00:40:23.880
better for us obviously we probably want to make money at the end of the day so good behavior ends up with uh cash um so
00:40:31.800
what we're uh what we're interested in is finding out a users's flow through the application and where they get where
00:40:37.359
they get to and whether our new feature whether what we've done is worthwhile and is making uh making progress for us
00:40:44.800
um so in order to do this uh mint we have built a gem that we call Pathways
00:40:50.640
which tracks actions a user takes through an application uh this is a rails uh gem so uh it just puts out uh
00:40:58.960
into the log logs the data um uh what does it do I don't know it
00:41:05.480
does it logs out what's happening in a user session basically and finds out where they've been where they're going to what they've done um separately we
00:41:12.599
then PA that data from the log uh and load it into mongodb um we do this
00:41:18.359
because then you can analyze it you can analyze it beautifully because we can map produce all over that stuff and we
00:41:23.640
we've saved the data so you can find out whatever you want about it later at a later date so we can find out what
00:41:30.119
features are being used what features aren't being used what's you know what's actually working
00:41:36.440
um it's very simple to implement you include the gem and do that and it's done um You probably need mongod DB as
00:41:43.440
well if you want to then go on and uh check out what what what what your data is but the aim for Pathways is these
00:41:53.000
things only have the features that validate their value and remove the ones that don't get rid of them you don't need them your users don't want them get
00:41:59.640
rid of them this will allow us to maximize the return on product development for both clients and our own
00:42:05.000
products uh and have complete confidence that what we're developing will have a meaningful effect and we'd like you to
00:42:11.720
do the same because I don't want your extra features I don't want that it's you know extra fluff is just nothing so
00:42:20.000
we obviously want help you know it's on GitHub it's version 0.0.7 so get
00:42:25.160
involved and and use it um so and and give us your feedback if you don't agree
00:42:30.319
tell me but you know I I I don't I don't want extra features so anyway thanks very much um go check it out go check
00:42:37.040
out mint go check out logical Friday is our Tech blog um in which we also talk a
00:42:42.280
bit more in depth about this as well and don't gble through it in five minutes like I've just done thank you very
00:42:49.640
much hello everybody no slides real quick uh I have an announcement uh menant University is going to be running
00:42:56.319
for the month of OCT October what we're calling the Magnificent mendicant mentoring month so we're going to be
00:43:01.359
holding two events um next week we're going to be doing an MRI documentation drive so we want to get MRI you know uh
00:43:09.599
especially 193 documented so if you're new to open source and you haven't committed yet come in our mentors are
00:43:15.480
going to work with you we're going to try and get as much documented as possible uh and then later in the month
00:43:21.800
let me see here October 21st through the 23rd uh we are going to be connecting
00:43:27.880
developers with organizations doing socially valuable work and we're going to work together in again doing the
00:43:33.920
mentoring thing and hopefully get people involved and help these organizations build out some of the the software that
00:43:40.000
they need uh all of the information you can find online on our website uh university. rant.com and on Twitter
00:43:47.480
we're mendor news thank
00:43:53.520
you okay so when I stuck this up on uh the ly talk I called it tones and
00:43:58.800
flavors of regional Ruby conferences and I was going to spend a few minutes and talk about uh the different conferences
00:44:04.599
that are held each year and how they differ because every conference is a
00:44:10.520
very all the regional conferences are very unique the personality of the organizers uh tend to come through
00:44:16.160
really strongly and uh I'm in a position where I get to go to quite a few conferences every year so um but I
00:44:23.240
decided not to do that so take that out um by the way I'm Kobe ranquist I'm at
00:44:29.839
kobir on Twitter I'm also at confs on Twitter and I work at a company called
00:44:35.079
G5 in Central Oregon um those are all the conferences that were held in the United States actually that's not all of
00:44:42.720
them those are all the conferences I managed to get on the slide that are held in the United States that are Regional Ruby conferences okay so that
00:44:49.040
that's my opinionated list of conferences that are worth going to and for the ones I left off um you can Stone
00:44:54.720
me later um so I ALS o organize a couple of conferences uh coming up in February
00:45:00.000
of 2012 is the Los Angeles Ruby conference uh we're holding in Burbank this year there's the URL it's the
00:45:06.359
fourth time We've ran the conference we actually run it a little bit differently there's two days of training and then a one-day single track conference um calls
00:45:13.200
for proposal should be open in October follow L Ruby comp for updates and then
00:45:18.920
the other conference I'm involved with is Ruby on alss um go to ruby.
00:45:24.359
on.com uh if you haven't heard about it the the topic really is or it really is
00:45:29.680
ale uh we hold the conference in Bend Oregon population's about 990,000 people
00:45:34.880
we have nine 10 micro breweries um 11 micro breweries um it's
00:45:42.640
March 1st and 2nd that's a Thursday and a Friday we schedule it that way so you can spend Saturday and Sunday either
00:45:47.760
snowboarding drinking or skiing um fly into Redmond Oregon not
00:45:53.599
Washington call for proposals also open in Oregon uh conference does include free beer it starts being served at 9:00
00:46:00.040
a.m. um and follow rbon L's um if you go to the website it's actually uh light
00:46:07.760
cap and Mike ta are here their co-organizers on RB or Ruby on ills um
00:46:15.280
that's all I've got thanks hi everyone my name is Desmond I
00:46:20.960
work for patch media in New York uh where I'm reals developer on
00:46:26.160
Twitter I'm Desmond monster and if you're like me you spend a lot of time
00:46:31.319
writing code perhaps this
00:46:38.720
code so you know we spend a lot of Day writing code and that's cool and a lot of the stuff makes sense is obviously a
00:46:44.119
little simpler um so I can't get the thing to show my
00:46:49.839
screen
00:46:59.880
so here's vim and so everything is cool and you're running along and everything makes sense because we're developers and we like things to make sense and then
00:47:05.640
you come along and then well all right never mind this is what I wanted to show thanks
00:47:15.280
anyway yeah uh my name is Gary burnhard some things you guys might know me by
00:47:21.480
python versus Ruby a battle to the death was pretty popular talk online last year Unix chainsaw this year base the
00:47:28.359
universal Base Class which I hope you guys are all
00:47:34.040
using thank you except for Evan uh and destroy all software which is my
00:47:39.079
screencasting company so I'm not going to talk about any of those things uh I'm actually
00:47:45.599
going to show you something that no one has seen except for Corey Haynes and Tom crayford I accidentally a whole web
00:47:52.720
framework unfortunately and uh you're actually seeing it right now now and I'm going to show you this app before I
00:47:58.880
explain it to you it's pretty much the simplest possible thing I have an index I have a new I can put stuff in it goes
00:48:05.040
to create redirects to show and then back to index and the post is there now
00:48:11.200
this is basically the entire app there are no controllers in this web framework
00:48:16.280
uh and this create for example actually expands into this route in fact if I comment it out and go back through this
00:48:22.000
again it'll do the same thing it did the first time and what's going on here is that I'm saying I have a route that
00:48:27.880
takes posts to the root URL it delegates to record. create on success it
00:48:33.440
redirects to the show whatever URL corresponds to show and if this exception is raised then it renders the
00:48:40.640
new action so this is basically that stupid method you've all written 500
00:48:46.040
times or let the scaffolding generate for you but generated code sucks the
00:48:51.280
nice thing about this is that you can use this simple form but you can start overriding stuff like maybe you want validation I can't type validation error
00:48:58.480
to go to something else whatever now this this router is basically
00:49:04.319
routing on both sides of the what is equivalent to the controller it routes in and then the stuff the code does
00:49:10.240
something and it routes out but the question is when it routs into the code how does it know how to call the method
00:49:15.319
that you have there's no controller there's no giant object with a million methods on it that have everything unless you're using bass which you
00:49:20.640
should be now so the way that it works
00:49:25.680
let me uh let me hit one of these these Pages let me hit new uh as Raptor's going through it realizes it needs to
00:49:31.960
delegate to record. new and it infers the arguments to that method based on the signature so you can see here uh
00:49:38.960
Raptor also includes presenters it inferred that the presenter takes a record so it figured out that the record
00:49:44.920
it made earlier is probably the right one and shoved it in there now is this a good idea or not like most of my
00:49:51.799
projects like bass probably not but it does make uh the code incredibly simple
00:49:57.040
and the wonderful thing that happens is that all the objects in your app become naked Ruby objects no base classes which
00:50:03.040
means they're extremely easy to test because everything is injected through these arguments Raptors is sort of a web
00:50:09.359
framework but really it's a giant router that is also a dependency injector that's mainly what it is
00:50:15.799
so uh I have lots of extra time let's talk about this uh so Raptor has presenters baked in it
00:50:24.400
uh it it renders everything through a presenter in fact it's impossible to get something into a template that doesn't
00:50:29.480
go through a presenter and uh instead of this ugly long syntax I have this other syntax which is takes record which
00:50:36.200
defines your initializer for you and then I just gave it the rspec let which actually is just alas method to uh
00:50:43.000
Define method don't tell anyone that because it makes me sound much less smart but uh if you whoops I typed get
00:50:49.520
instead of let uh if I let these guys they get super short and your app turns
00:50:56.040
into this just sequence of Declarations of how this model object
00:51:02.040
turns into uh template variables right and the model object is the only guy in
00:51:07.319
play of course as soon as you do something complex godamn it say this say post creates posts. create do not let
00:51:15.440
the model do it but uh yeah I've lost some train of
00:51:21.000
thought so this is a crazy idea I don't know whether this is a good way to build
00:51:26.599
applications but if you're interested in it it is on GitHub I just made it public like 5 minutes ago so you can be uh you
00:51:33.440
can be follower number three after Tom and I and uh yeah I have no idea I would
00:51:39.680
love to hear what you guys think about this because I don't know what I think about it but that's it
00:51:47.160
thanks so actually I wanted to show you um the awesome bot Factory which is a
00:51:53.440
side project it doesn't let you build a Twitter Bots but Bots for your campfire
00:51:59.680
chat and can I here we go you don't see it at all but anyway maybe like this so
00:52:07.160
we found it pretty hard to consume the the um HTTP stream so we thought it
00:52:13.680
should be easier to build a campfire bot so this is basically it so it's a
00:52:19.880
note app and so you just build a rack application
00:52:25.839
which returns Jason and it pushes to your campfire chat check it out on
00:52:35.200
GitHub okay can everyone hear me all right hi my name is Joshua Bano I recycled my
00:52:43.520
slides from my previous talk um but just in case uh you want to follow me on Twitter Manhattan metric on GitHub I'm J
00:52:49.920
blank I work for patch I don't have any slides but I do have some
00:52:55.240
code okay
00:53:04.440
okay so um I know mattz has promised us in uh Ruby 2.0 there are going to be keyword method arguments um but I
00:53:11.160
decided that I was impatient and I would do it first so I wrote a gem called keyword and here's what keyword allows
00:53:18.160
you to do you can basically in your class say I don't know what is going on
00:53:24.640
here that's some crazy
00:53:30.280
easy all right well okay there was a class above that okay so um you can
00:53:35.319
either uh Define uncore keyword uncore method or defk for short uh it works just like def uh Define
00:53:44.559
Method All right well I don't know what's going on there uh
00:53:50.240
and and okay and then you can call it
00:53:55.400
like this so just by passing in a hash okay how
00:54:02.640
does this work so actually the seat of this was placed a while back when I filed a bug against Ruby and I said proc
00:54:11.319
behavior is inconsistent right what happens is when you Curry a method or Curry a proc
00:54:17.359
you're supposed to get single aity methods back right a chain of Singularity methods but you don't if you have optional well anyway long story
00:54:25.040
short I uh kind of waxed poetic a bit on this bug report and uh and and further down I said hey you
00:54:32.760
know if you had uh procs that could Curry the way I wanted them to you could automatically Implement keyword methods
00:54:40.319
and that's exactly what I did so we start off with curry proc which inherits
00:54:45.400
from proc but not really just so I can claim it's a proc and um I I also have to file a bug because apparently if you
00:54:50.960
call Lambda and don't pass it a block it still forms a Lambda From the Block on the top of the stack but it throws an
00:54:57.880
exception yeah so anyway um it works with proc without errors but not with
00:55:03.520
Lambda so you know just turn off the warnings whatever it still works
00:55:08.599
um then all I'm doing is I'm going through and I'm getting the parameters and putting them uh into an array which
00:55:14.920
I then pop them off one at a time uh pushing the arguments back onto another array and then that way when the array
00:55:22.119
is empty I uh I have all my arguments right so this is just the curry prod right how do we turn that into uh
00:55:28.440
keyword uh keyword proc well keyword proc it's it's the same sort of thing that I uh put in the bug report actually
00:55:34.079
simplified a little so all you really do is once you have your Curry proc you just keep calling the curry proc with
00:55:40.280
method or sorry with values from the hash that was passed in as args um until
00:55:45.799
you no longer have a proc and then you have a return value so you return it um and then the way to turn that into a
00:55:52.319
defined method type thing is unfortunately uh and this is what I wrote like 5 minutes before these talks
00:55:57.640
started um unfortunately you have to actually call inside of Define method you can't actually just pass uh the
00:56:03.640
keyword proc because um yay Ruby Ruby doesn't actually call call on the procs that you pass to Define method as a proc
00:56:10.839
it does something under the covers so uh you know put the proc inside a proc and it
00:56:16.480
works so uh that is a keyword I just pushed the gem um I just pushed to my
00:56:23.480
repo the tests all break don't use it in production but it's a lot of fun so what the
00:56:32.760
heck okay let's go toch at Tokyo Japan I amak Kos Ki staff Tokyo K I have this
00:56:42.799
event and Ruby um I can't use English uh this support
00:56:50.640
my co and Google translate uh let me say do you know Japan and and you have ever
00:56:58.039
been Japan Japan is very hot hot earthquake tsunami typhoon LTI and Tokyo
00:57:05.559
toy group shaant one of them Shia
00:57:15.559
is let's go to R oh and let's come to hot ja let's come
00:57:22.119
to sh restaurant quick start all right this this uh read please read it and H detail
00:57:31.319
H see please see this URL Japan let's come to sh restaurant once
00:57:38.119
more let's come to hot Japan let's come to sh restaurant thank you very
00:57:51.920
much okay my name is still Evan light um you can find me on Twitter at light and uh usually tweet an awful awful awful
00:57:58.599
lot I got like 20,000 of them I have a little bit of a problem anyway that's not what I'm here to talk about I'm here to talk about um conferencing different
00:58:05.960
so um how many people in this room have strong opinions about software show me
00:58:12.160
like clap clap yeah I kind of figure you do okay how many people in this room
00:58:17.720
during this conference have disagreed with something that they've heard a presenter say at some point during this
00:58:23.160
this uh conference clap okay cool that's what I thought so let
00:58:29.359
me ask you this one why are you guys sitting in the audience then instead of
00:58:34.599
in the front talking there isn't enough time yeah
00:58:39.720
okay that that that that's certainly one reason um light doing a lightning talk is certainly alternative as well but
00:58:45.720
what I'd propose is maybe we should hold different kinds of conferences rather than just a conventional kind where some
00:58:52.520
talking head at the fr the room like me who can talk a mile a minute just talks to you and you just sit there and listen
00:58:58.359
Maybe we actually get together and we discuss things
00:59:03.640
and oh okay I'm out of here um but that's good that's productive
00:59:09.039
disagreement is productive that that's that's the point so and and you s have seen the Life of
00:59:15.400
Brian and you're an individual right okay so um right so my point is that
00:59:21.400
maybe we should consider having things like open space events where we actually get people to together they
00:59:26.760
self-organize they figure out what's important to them at the time and then they discuss they hack they do whatever
00:59:32.880
whatever is appropriate I think conferences are really good for especially beginners for people who want
00:59:38.440
to get say a survey of what there is to learn they might be pretty good for intermediate people who are looking to
00:59:45.480
to learn what are the latest and greatest best practices I think that there're in all this conference especially draws out you know a lot of
00:59:52.119
the wackos I mean the experts people who have been doing Ruby forever people who live in bre Bree Ruby all the time
00:59:57.240
people who run conferences you know that sort of thing and these are all people who could be at the front of the room
01:00:02.720
but only so many of them can be you get these people together like in the hallway then there are some really cool
01:00:08.839
things that come up in discussion but they don't get shared with everyone else so what I propose is you go Google this
01:00:15.440
term open space technology go read about it in Wikipedia consider either if you
01:00:21.280
run a conference consider either making your conference in open space not all of them please we we need to have real
01:00:26.599
conferences too but consider making an open space event near where you are I
01:00:31.760
run one it cost about $4,000 a year it's very cheap I never have any problem getting sponsors we always fill up now
01:00:38.960
and if you need any kind of advice and how to get started I'm I'm glad to but I just want to see more of them I run one
01:00:44.799
I think there need to be a lot more that's really just about the gist of it I probably have more time than I need but so um I guess the other thing I'll
01:00:52.079
mention then because I just a little bit I have a little bit of time left over and I was going to do a lightning talk I don't on my laptop here for it I also do
01:00:58.599
a lot of remote pairing completely different topic and uh since I don't know my laptop I can't give you a demo
01:01:04.599
but um some people were curious about how I do my remote pairing because I do so damn much of it these days the really
01:01:10.160
really short version is i i port forward to uh SSH on my machine I um have a
01:01:15.720
couple of scripts that I've just did that I'm perfectly willing to share with people that let me create accounts on
01:01:21.640
demand given a username and an SSH key and then that person can ssh in we use t-u you can use screen either one of
01:01:28.200
them they're both open source and free that lets you share the same terminal and then once you're in the same terminal you use oh my God something
01:01:33.920
like Vim or emac to actually edit the same code at the same time and that can be pretty cool and you use something
01:01:39.400
like VoIP to talk and uh that's really it in the nutshell so um remote pairing
01:01:44.599
is is really a piece of cake if you haven't tried it you really should um some people like me kind of live by it
01:01:49.720
because I live in the middle of nowhere and uh there are no other ruist around unfortunately um if you have't if you're
01:01:56.160
curious at all about remote pairing uh I'm going to blog a little bit about it more but at the same time willing to
01:02:01.279
help you guys get set up if you're curious or if you want to experiment with remote pairing you haven't done it before I have a link to a calendar on um
01:02:08.760
Google appointments where I'll pair with anyone in open source stuff or you know just to play around maybe comway Game of
01:02:14.359
Life or something uh yeah if it's an open source I'll I'll help sure yeah um and uh
01:02:22.160
that's about it
01:02:27.680
hi my name ISU I'd like to introduce Lo in this
01:02:33.680
talk but first I'll introduce myself and I'm I'm working at Accenture as senior
01:02:40.680
system Marist and I'm the newest Luby committer since
01:02:46.319
September so look so look at this chart rby Comm ranking as of today and this is
01:02:53.480
me and me yes so also I am a committee of Loca and
01:03:00.319
Loca is a crowd Optimus TMS written by Katan who in Japan kamasan was spending
01:03:07.920
a lot long time using Wordpress at his job last time when he finished the
01:03:15.160
project using Wordpress he he made this first version of locker and we want to
01:03:20.839
replace WordPress because comma wants to escape from WordPress his job but he we
01:03:28.079
keep keep your designer friendly and also be crowd friendly Roa is easy to
01:03:35.200
deploy just seven command and Rocka is a youngest project
01:03:41.880
so we need more user and develop developers please try Roa and feedback me thank
01:03:51.799
you okay guys so my name's Chris Parsons that's me that's me on Twitter so I recently launched a fairly big website
01:03:58.240
and there are a few things that I just wish that we had done before the big launch um the other title could have been not when we're on holiday just
01:04:04.520
after the launch because the launch gets delayed especially when you're on a camp site with no internet at all so the site
01:04:10.559
was a UK government site uh it's EP petitions. directv. it's basically the
01:04:16.680
national way of getting in touch with the government to petition about an issue it's buil in rails we built it in
01:04:21.760
six weeks it was an agile process now we only had six weeks to build this with a a small team the team told us that based
01:04:28.000
on the previous traffic we needed to rate this for 10 requests a second roughly so pretty low traffic so we
01:04:33.400
decided to launch it on a fairly quiet weekday um except that this is what happened the next day don't know if you
01:04:39.880
any of you guys saw that so this is the kind of traffic we actually got so we couldn't have predicted that but there
01:04:45.279
were a few things that I wish we've done differently um the first thing is not to trust your hosting provider especially when there're a government hosting
01:04:51.680
provider who's not used to moving that quickly so um AKA send email asynchronously always always always do
01:04:58.039
this so they said sure SMTP servers can cope with as many emails as you can send they just can't especially when you're
01:05:04.039
testing with example.com and postfix cuts that out almost at the first hurdle so so that was something we just didn't
01:05:09.480
think of in in the time we had the second thing is don't just use New Relic New Relic is great and testing the
01:05:15.119
application is great but you also need monitoring on the app you don't want to be installing this after the fact when
01:05:20.839
your website is on national news and you you are looking at the TV to find out when your next traffic spikes are going
01:05:26.200
to come so um you want monitoring at that point you don't want to be installing it at that point so use J
01:05:32.559
meter to test your load as well that's really important Jamie is a great tool that allows you to kind of simulate real
01:05:37.599
traffic uh but make sure that you run it on the latest deployed code rather than running it on code and that worked two
01:05:44.520
weeks ago and then the hosting company decided to change the firewall the night before the launch um don't ask about
01:05:50.240
that so three things three things you really want to check before you launch thank you very much
01:05:58.480
so if you guys haven't seen Twitter bootstrap it's a uh a set of styles and
01:06:03.680
JavaScript that uh Twitter provides to get sites up and running it's great it's awesome it's got a full grid layout uh
01:06:10.319
it's got markup uh you know great typo typography and stuff it even comes with great forms the one problem is that
01:06:16.480
forms just like always are a pain in the ass to uh to design uh within rails uh
01:06:21.760
you have to deal with you know air markup and handling uh and especially the Twitter ones look great but they
01:06:26.960
have their own kind of video synchronies and you have to put divs with clear fixes around them so with that said I
01:06:33.039
made a DSL looks like formtastic but it's a lot simpler uh it wraps things uh
01:06:38.240
and then you get something like that in that amount of code uh and that's with
01:06:43.960
no additional custom cssm workup it works right out of the box um that's it
01:06:58.200
hey well that's good okay imagine there's a picture of a
01:07:03.799
a big mountain there in a hill uh and it's called shalan it's a real pointy
01:07:09.720
Hill look it's here there you
01:07:14.760
go um and the Romans Roman mats that was the tallest hill in Scotland according
01:07:20.279
to the Romans but it's actually about 3 or 400 met smaller than Ben Nevis and I
01:07:25.520
was thinking about Martin fer I think one said all software methodologists are
01:07:30.680
all Standing On Top of these Hills saying hey my Hill is bigger than yours I'm at the top and a lot of debate is
01:07:37.559
getting a bit more like that and there's a lot of simil the debate in this community sometimes not always is and
01:07:43.359
your heal sucks my heal's much better than
01:07:48.520
yours so how do we get though what what were people thinking um a while back I
01:07:53.760
did some neist neural linguistic programming which is maybe 8% um
01:07:59.640
pseudoscientific nonsense uh with some interesting Little Gems inside one of
01:08:04.880
the things is a hierarchy of values you take a hierarchy of values you take you you're doing things because you value
01:08:11.200
certain things so XP values are communication Simplicity feedback courage respect in the second edition uh
01:08:19.279
White book K Beck listed some other uh values that are not XP but might be
01:08:24.759
valid like say safety security pred predictability quality of life may value
01:08:30.359
values to have they're not XP values we do things we we decide we're
01:08:36.239
in different camps often because we have different values testing and development may be
01:08:42.640
things you Val in tes development might be confidence refract durability design
01:08:48.560
specification two people might value those things but the hierarchy of values you you got to you got to rank them and
01:08:54.440
maybe maybe somebody values confidence refract ability design and documentation
01:09:00.000
somebody else values design values to design side of things
01:09:05.080
documentation side of things more than maybe the confidence building what's going to happen two people the people
01:09:10.799
are going to choose different different methodologies different ways of doing things just saying your way sucks isn't
01:09:18.159
really going to help let's how um if we if we think about why people are doing things maybe question for maybe accept
01:09:26.319
that people have different values or maybe maybe have a debate on the values rather than the actual
01:09:34.279
methodologies that's all don't say that you're doing it wrong that sucks do say doing doing something this way you'll
01:09:42.000
gain this this and this but you might lose that and something else that's that
01:09:47.400
is all i' uh too long to read Min one
01:09:56.719
so I just want to talk real quick about Ruby parser um it branches off a parse
01:10:02.080
tree which is this capable it's able to run on 1.8 and it parses 1.8 and it doesn't do much else Ruby parser however
01:10:09.440
runs on both eight and 1 n it just doesn't parse 1. n so I want to fix that
01:10:14.600
I want you to fix that we have a large suite of tests they run incredibly fast
01:10:21.000
and getting up and running is actually not that hard I have 16 condition additional failures and errors that uh
01:10:27.400
only run under 1.9 I want those gone so I got six failures and 10 errors
01:10:34.159
I'm going to pay $50 a fix first solution per failure wins github.com clrb Ruby parser Fork
01:10:41.280
fix push submit a pull request only requirement that you really need is to gem install isolate then run rake it
01:10:47.679
takes care of everything else I'm available here to help you get started Eric Hotel can also help you a
01:10:53.480
lot of other people thank you
01:10:59.280
all right hey everybody my name is John Paul Ashenfelter I'm going to be talking about muscle driven development um
01:11:05.080
hopefully this will come through in a second and if it doesn't I'm just going to talk because honestly I'm really lucky um I'm just going to go without
01:11:10.239
the slides I had a complete UT lightning talk fail because basically my talk is what jonan said um so if you remember
01:11:16.520
about sitting and all that kind of stuff that's exactly what I was going to talk about now the good things about that is my Talk's going to be shorter and get us
01:11:22.120
back on schedule get us closer to beer the other thing that's about is there's now a treadmill desk Ruby community at
01:11:28.800
least two of us Ray that means I have customers thank you very much I'm all ready to do MVP for the win here so
01:11:36.520
problem with coding you're sitting at a desk you're eating crap all the time all right in New Orleans the crap is a
01:11:42.679
slightly higher level of crap that we've been eating I'm not going to talk about what drinking does to you but we're just going to leave it at that that's a
01:11:48.440
problem right I like underpants gnome solutions to things there's a step one where we keep doing what we've always
01:11:54.480
been doing collect Underpants right except in this case it's coding then there's this mysterious step that
01:11:59.960
somewhere leads to where we want to be which is Health all right I hope you want to be healthy I want to be healthy
01:12:05.480
and the thing that I think can get us there is the treadmill desk picture Jonah again on the treadmill desk since this is just a big pretty blue screen
01:12:11.600
for your imagination to make whatever it wants to make of it right here I'm looking at the 60 benefits of doing oh I
01:12:17.960
figured out look it's not even connected that's why um so lightning talk fail number two so
01:12:25.280
I've got 60 benefits for why it's better to uh be uh using a treadmill desk than sitting on a normal
01:12:32.560
desk we'll see this is all up on GitHub we'll get to it um so oh
01:12:38.239
yes um so the benefits I want to pull out about that see if any of these are things that you're interested in weight
01:12:44.360
loss maybe reducing stress and depression boy do I get depressed looking at some of the rescue projects I
01:12:50.480
get if there was something just some magical way I could get that done better and easier and happier I'd love to do it
01:12:56.120
I would love to improve my memory for instance plugging all the cords in who knows and the absolutely best tax in
01:13:03.719
programmer land no extra time no extra effort no extra motivation so let's talk
01:13:09.360
real quick about the mathematics of weight loss because that affects a lot of people does anyone know uh does anyone well just scre how
01:13:16.199
many pounds are in a calorie did you know there's 3500 calories in a pound that's a lot of calories to burn you
01:13:21.960
know how much walking Burns off you saw the graph Maybe didn't see the scale when Jon and show it any rough idea
01:13:28.040
Shout It Out 150 calories an hour roughly it depends on your weight and how fast
01:13:33.480
you're going so that means it takes 23 hours of walking a week to burn off one pound that is a lot of time out of the
01:13:40.760
office it's four and a half hours of walking a day or I like to think about it nine
01:13:46.000
pomodoros so finding a treadmill all right this is how we're going to solve it with a treadmill desk treadmills are
01:13:52.320
cheap they're cheaper right after New Year's resolutions sale in February I'm not making that up that's a fact so
01:13:58.520
there's another hack for you and Al is Costco usually has one on sale every month for 500 bucks you can find good
01:14:04.520
ones at Craigslist or good Goodwill Goodwill has really cheap ones and they're usually pretty spectacular so
01:14:10.719
you can build one this guy built one and you can't really see what it is that's styrofoam that it's sitting on and a
01:14:16.400
piece of plywood so it's not expensive once you've got the treadmill so he has the $39 desk uh for treadmills that's
01:14:22.880
what he calls it you can buy one I bought the $39 polycarbonate shelf the from surf shelf you can buy a track desk
01:14:29.800
you saw what that looks like if you've got $5,000 extra dollars setting around anthro will sell you the whole package
01:14:34.880
and something that's beautiful and amazingly expensive So Pro tips you can start research from the Mayo Clinic
01:14:41.239
James LaVine does a lot of research with walking 08 miles per hour 08 miles per
01:14:46.520
hour is so slow it makes it hard to walk because you're walking like you're walking through jelly or slow motion or
01:14:54.040
on a higher gravity Planet uh track your time there's an easy way to track your time the people who made it here uh Cory
01:15:01.239
and Fable net if they're still around I use that for tracking my time in Mercury and you find a time a day it energizes
01:15:06.600
you most you can experiment with that if you're not going to do four and a half hours a day of it if you're just doing two or three hours a day of it it's
01:15:12.679
totally totally easy to do I use it instead of coffee in the afternoon I found that works a lot better for me um
01:15:18.840
and then because I've got an MVP now in a community and people Walkin code something I've been thinking about doing
01:15:24.239
for a long time which as a community to do this so I went ahead and put up something so we can do that we're going to do something about walking code to
01:15:29.560
help you find the things that you need to help you track the stuff that you want to tracks to help you set goals help you get to a better place with it
01:15:36.159
that's all I have to say my name is John Paul Ashenfelter here's how to contact me the slide so you can see the
01:15:41.280
beautiful Underpants knowns pictures at the beginning are up on GitHub and um I run the Shen andoa Ruby users group for
01:15:48.000
all the people in the Central shinoa Valley of Virginia which there's thousands and thousands of that use Ruby
01:15:53.040
as you can well imagine but if you're somewh between let's say let's see for between DC and ronoke uh Virginia let's
01:16:00.000
try that again between DC and Charlotte come and see us thanks
01:16:06.239
bye okay so um I was thinking about this recently because I you know I like
01:16:13.840
enumerators are awesome and I discovered a a method on them I hadn't seen before and I thought it was really cool so I
01:16:19.120
thought I'd just talk about them for a couple minutes so you know in Ruby you have innumerable you have like a an
01:16:26.920
array like this which is basically what I'm talking about well what what is an enumerator and Ruby well you see if you
01:16:33.600
call an innumerable method without giving it a block it actually returns
01:16:39.080
you an object in that object you can call things on like next which will give
01:16:46.080
you the next thing in the the list of things that you're iterating over if it's something that you're iterating
01:16:51.560
over um so you know there's a do for it um you can also do other interesting
01:16:58.440
things with these you can chain them so you know how there's a method called each with index um on numerable so you
01:17:05.800
can say hey I want to get everything in this array also with the index well it
01:17:11.360
turns out you can take map and append that to it uh and so you call map. get
01:17:18.560
or map. with index and that will allow you to map over everything in the array
01:17:24.520
with the index attached to it and um it's not but that's not the
01:17:30.840
only thing you can do with those you can also um wrap your own methods with uh
01:17:37.560
enumerators so say you have a method that yields stuff well uh in uh 1.8.7
01:17:45.840
and 1.9 uh every uh object has uh enum for
01:17:51.639
defined on it and what that will do is that will take a um they'll create an enumerator for that method and then so
01:17:59.760
if you call it with a block uh it will pass that through you know like and call
01:18:07.520
uh yield on uh each you know like and pass that through as the block to the yield so that's pretty cool so you'd get
01:18:15.360
that from that that's all I want to talk about I'm Nick Howard I'm at uh Brook
01:18:21.600
Bobcat on Twitter and uh GitHub and um um if you want to talk to me about
01:18:26.920
mea that would be interested all right hi there I'm David cap and I'm not
01:18:34.120
a cop uh so I didn't prepare any slides because my uh talk isn't technical at
01:18:40.480
all um this is I just want to uh bring up a few points about how to communicate with non-native English speakers a bit
01:18:47.480
more effectively um I had the opportunity to live in Japan for a while and I was uh
01:18:52.840
teaching English there and there's just a few things you can do that will make a huge difference and yelling really
01:18:59.440
loudly is not one of them um there one of the main things that you can do is speak slowly and you'll see a lot of
01:19:05.800
people request this when they say I will take questions but please speak slowly and nobody does that if you actually
01:19:12.159
speak slowly it will help them understand you much much better another thing you can do is use short sentences
01:19:19.560
you'd be amazed at how difficult it is to understand long runon sentences especially when you're talking about
01:19:24.840
something technical so if you have some a question for someone don't look at them and say I have a whole bunch of
01:19:29.920
questions about enumerators because there's some great things I think you could do if you had blocks and the ability to split up blocks in multiple things maybe could use a Splat argument
01:19:35.719
or something like that so I could give multiple blocks at the same time no one will understand that even native English
01:19:42.679
speakers another thing that you can do is speak clearly and that might sound really simple but just try and speak in
01:19:49.719
a consistent tone of voice and try and pronounce all of the things you're saying very carefully
01:19:55.960
yes enunciate that will help greatly also avoid using slang you'd be
01:20:01.080
surprised how easy it is for slang to sneak into your speech especially colloquialisms so if you say something
01:20:06.400
like hit a home run that might make sense to some people but to other people it won't really mean anything if they're not familiar with the sport you're
01:20:12.320
referring to so I think if you use all of those techniques it would really help people
01:20:17.600
out a lot and just give that a try oh I'm sorry there was one I forgot and that is check for understanding it won't
01:20:25.000
be obvious if someone doesn't understand what you're saying so pause periodically and ask them you don't have to be rude
01:20:31.520
about it just check and make sure they understand the uh things you're saying they're following along with you and if they don't restate them State them
01:20:38.440
slowly if they don't understand the words you're using try using alternative vocabulary that's more uh simple to
01:20:44.320
understand so I think if you try those things you'll be able to communicate a lot more effectively with people and get your point across without having to yell
01:20:51.320
thank you oh what is that all right
01:20:58.360
fine1 one slide yeah that's all I need hi I'm uh pav s shovsky actually but s
01:21:05.480
is good enough uh from Las Vegas um I don't know if many of you have been to Las Vegas but chances are you haven't been there because of our Tech Community
01:21:12.719
and chances are probably you didn't even know that we live in houses um we do we don't all live in like strip uh strip
01:21:19.120
casinos um Vegas
01:21:24.840
talking in the microphone enunciate got it um so so Las Vegas isn't known for
01:21:29.880
its Tech Community but there are a group of us that are looking to change that um and I'm actually building a Tech Library
01:21:36.520
a dead tree Tech Library with computer books um and Welding books and business books and inspirational biographies and
01:21:44.080
things is being uh funded by excuse me by my employer um so it's actually it's
01:21:49.760
built it's in a in a fantastic uh downtown Las Vegas area uh in the arts district
01:21:55.480
um in in a building called the emergency art center it's full of uh like artists and Bohemians and creative people on the
01:22:00.520
second floor right above right above a coffee shop um so why am I telling you this uh because I hope that if you come
01:22:06.159
out to Vegas you visit us and um because um there's a lot of really smart
01:22:12.199
people out here hopefully you guys value books like I do paper books not just Kindles and stuff um so I'd like your
01:22:18.239
suggestions if you have not just not just Ruby books hopefully but kind of books that uh inspire you and you think
01:22:23.520
would Inspire other technical people uh so come out to user. org there's a little signup form you can recommend a book you can put your name down um you
01:22:30.679
know tell us who you are tell us why you think it's an important book why you'd recommend it to other people um we'll actually put it on the site um and as
01:22:38.000
well um I looked at a lot of Library management software um it's kind of boring um very 1995 era there's koha
01:22:46.400
open biblio um didn't like what I saw I decided to write my own um I started this two days ago um I'll put a a link
01:22:53.199
up on GitHub um cleverly called user share to go with the user lib uh moniker
01:22:58.440
two minutes um all right I don't know what that means but three minutes okay Ohr went
01:23:05.880
off okay um it can't count either um so yeah um that'll be up on GitHub if
01:23:12.360
anybody wants uh to contribute um and it's not only Library software um because it's not only Library there's uh
01:23:18.280
a co-working area where you can come down just bring your laptop free Wi-Fi um as well as kind of a a a Meetup venue
01:23:25.159
so it needs a room reservation system and uh and all kinds of things so if anybody wants to contribute to software
01:23:31.280
has ideas um I would love to hear them so St about user lib on Twitter orm and
01:23:36.760
I that's me and I think I'm done early thank
01:23:45.360
you all right so I want to talk about uh the term magic right and I feel like the term magic is one of those terms that we've heard a lot about in uh the Ruby
01:23:51.840
community over the years um starting with uh uh rails and constant complaints that rails was too much magic quote
01:23:58.520
unquote and I think magic is a really stupid term I uploaded this to speaker deck today and I don't know how to make
01:24:04.120
it work now um but we'll go with this and we'll see what happens anyway um so what is Magic right so I used to work on
01:24:10.800
this project out in Atlanta uh that had been going for years and years and years this is one of the original sort of big
01:24:15.960
rails projects I think thought work started working on it back in 2006 or 2007 and it's been around forever right and and it's really well tested like
01:24:21.840
it's not bad in that regard but um so there's an actual place in England called lorth code which I thought was awesome uh and at the top right the most
01:24:28.120
recent stuff was all like nice happy Green Field and as you go farther and further down you get your sort of bent domain models down there and like play
01:24:33.800
school my first DSL sort of towards the bottom like every bad idea that ever entered the Ruby Community has been in there at one point and then cthulu
01:24:40.000
lurking at the bottom right and everything in that sort of second half like that was all magic to us right none
01:24:45.360
of us had written any of that code that was beyond the understanding abstraction layer uh that lay beneath the you know
01:24:51.199
and the the shrinking Horrors underneath so that that's an example of self Ed magic right we did that to ourselves over the years right that was that was
01:24:57.560
us as a community as as a bunch of developers had had gotten this to the point where where it was a certain sort of piece of magic underneath but that's
01:25:03.639
not usually the way we think of of magic in those terms right like if you go back and you look at the history of computer science there's lots of things that sort
01:25:09.040
of fall into the category of magic that were seen as magic one point in time and I made up all these dates I actually don't know if these are true or not but
01:25:14.320
like when I think back to 2006 right Ruby un rails is this magic thing right and JD is safe it's not
01:25:19.760
magic it's super obvious what's going on right 1995 oh automatic garbage collection you drob hippies in
01:25:24.960
your your garbage collection right taking out the trash that's what real programmers do 1973 oh macros macros are
01:25:30.600
super ma you know super magic but PL old methods are fine uh and me now I still don't really understand exactly what
01:25:35.679
those Java people talk about when they talk about depend the injection uh but blondies call me anytime is not magic it's okay by me um oh yeah and so to me
01:25:43.320
right like it's not just like magic and not magic like on stuff on the left is like uh St that you know stuff on the
01:25:49.080
right is like stuff I like and understand right it's comfortable to me it's familiar and stuff on the left is stuff stuff that makes me feel dumb and uncomfortable stuff that I don't quite
01:25:55.199
get um that that's sort of outside of my comfort do and I think that's like magic is an emotional term right people take this term magic and they throw this
01:26:01.119
stuff into the magic category but it really it's about a certain amount of comfort level things are happening and you don't know why right so there are
01:26:07.280
two reasons why you get stuff that makes people feel dumb and uncomfortable there's I suck but I'm intrigued and there's you suck and so does your vacuum
01:26:12.600
right like either you're the one who created this mum magic as your problem but sometimes the result of magic is a really good thing where you have a
01:26:17.920
dialogue about like well you know I'm really intrigued by this crazy lisp stuff and maybe macros is super cool and so you go and you learn a bunch about it
01:26:23.119
right and you I don't maybe do meta programming you create a huge mass and some of that magic that we talked about earlier um you know so for example like
01:26:29.040
cod the wrs code the wrs Cod the WR code is an example of magic to some people uh you know Turtles upon Turtles that's I just happen to like that picture uh code
01:26:35.280
that just does things right stuff's happening I don't know why um Convention of configuration right like there's some
01:26:40.880
magic aspect to that right if you don't know what the conventions are two minutes if you uh you don't know what the conventions are then that can that can look like magic to you because stuff
01:26:47.199
is just happening um and a lot of times it's code that does things that I used to do myself and I know what happened when I did it myself because I had to
01:26:52.880
do it myself uh but but now someone else does it for me sorry that was a lot of swearing um add accessor in
01:26:58.119
private when I first saw Ruby I thought this stuff was amazing right like it it just gave me a an accessor method that's
01:27:03.639
like that's like super cool and like private you like you just slap private on once and you get like all of your methods underneath private are like
01:27:09.639
magically all private in Java I used to put private in front of every single stupid method and it was awful and that's a good kind of magic that was
01:27:15.840
great um but magic is also a little difficult to reason about you don't know what it's coming from like what are the conventions how is this stuff coupled
01:27:21.119
together how's this Chang the coupling relationship in ways I don't really understand how easy is it to break free of those conventions once they're established um and is it too complex um
01:27:28.800
but the way you dispel magic right is through understanding uh you go from ignorance to knowledge right you go from
01:27:34.000
complexity to Simplicity as you understand what's going on and the person who's creating the magic who's creating those problems can do it by by
01:27:39.600
helping to uh Advocate by document you know to to uh to go out and do this stuff right but the point is that like
01:27:44.960
so so the the Clark right the classic Clark well any sufficiently advanced technology is is indistinguishable from Magic but there's no such thing as magic
01:27:51.159
right magic does not exist one minute um um there's no such thing as magic magic is
01:27:57.280
a stupid term the difference between the right word and the almost right word is the difference between lightning and a lightning bug magic is the wrong word
01:28:03.600
what you want is something else um you can dispel through documentation through education refactoring for clarity
01:28:08.960
simplification uh that's the right amount of magic um this is some stupid blog post
01:28:14.920
from 2006 where it's like sometimes too much magic is too much magic and then one of the commenters comes along and says like oh the magic of yield blocks
01:28:20.600
the untyped nature of like that's not magic that's just uh do try interesting things do not poke
01:28:26.480
yourself on others with a sharp R of a pointed stick uh if you've ever been down this path right 0o to six months Ruby total Noob sauce 3 six months
01:28:33.000
Harden Ruby V you've been doing it for a little while in between that you have to go through a period where you're danger to yourself another three seconds
01:28:39.080
otherwise you know who you
01:28:45.440
are thank you thank you
01:28:55.080
one moment um okay just start talking um
01:29:00.440
who in here doesn't know what Sinatra is K
01:29:07.719
leave okay uh this down here that's Sinatra um apparently there is this new
01:29:14.880
Sinatra 1.3 thing which has a fancy streaming API um which you can even use to
01:29:21.960
implement like a messaging service in two lines uh it supports the patch patch workb has
01:29:27.080
logo support and so on anyway you want to have that and we want to try to to install that and then you go German s in
01:29:33.880
arra version 1.3.0 and oh what the so let's fix
01:29:45.560
that oh it's running the test now yay test pause
01:29:58.159
okay anyways I just keep talking in the meantime we also do a Sinatra I'll also pchas zatra 127 release where for for uh
01:30:07.400
if you're running on 186 which you shouldn't um and there is a hot new Sinatra Contra project which I'll push
01:30:14.840
out in a second um uh the Sinatra contri project is
01:30:22.360
basically uh collection of extensions with the promise of common extensions with the promise that for every Sinatra
01:30:29.360
release there'll be uh release of Sinatra contrap where all the extensions are comp compatible so you can use them
01:30:36.679
without worrying about the future um and we also have a catro recipes project
01:30:42.679
up I post this is a blog post I currently have that locally but I'll
01:30:47.760
push that as soon as I've made the release so pushing to Ruby
01:30:58.199
Yes Hotel
01:31:03.440
Wi-Fi anyways this the streaming API is really fancy you can like um so what's
01:31:09.199
this going to do is it's going to write it's going to be Legend then it's waiting for half a second then it's
01:31:15.080
saying wait for it then it's waiting for another second
01:31:21.400
and then it's saying Di
01:31:33.920
and and you can keep the connection open on some servers and then write to them
01:31:40.000
later so you can Implement a chat server and no like no lines at all like just a few lines um okay while we're waiting
01:31:47.480
just going to try something fancy and
01:31:56.159
I know we're doing a signed text but that means that the gem is on
01:32:01.480
ruby gems
01:32:08.800
now oh yeah I'll fix that
01:32:15.600
later okay um how much time do I have left okay plenty of time
01:32:35.480
oh
01:32:58.880
what oh maybe I
01:33:07.800
vug what the
01:33:13.719
I I would suspect it's not because we have a test for exactly that this
01:33:20.639
looks like a ruby bug I'm sorry
01:33:34.800
thanks seem to Happ okay anyway so this uh this is about Ruby confia I'm one of
01:33:40.360
the uh the organizers for Ruby cof India for the last couple of years damn it I had funny
01:33:46.199
slides anyway um yeah so I'll I'll just quickly
01:33:55.600
I'm going to take like two minutes anyway so it's cool I
01:34:01.600
think yeah anyway so I'm one of the organizers from way back for Rubicon India and uh I figured I'd take this
01:34:09.520
opportunity to to to invite you guys to come visit we're doing rubby gon India for the third year in a row in February
01:34:15.840
and March next year um so yeah um this is uh this has been going on since 2009
01:34:23.080
we've had about 400 or 500 people show up every single year and uh we've had a
01:34:28.239
few people come from outside the country but we'd love to see more um this year the talks going uh the the conference is
01:34:34.159
going to be in uh in Pune in Maharashtra and India and uh you can contact me for
01:34:40.960
more information what we're looking for is people that can uh come and speak send in proposals I think our cfp should
01:34:46.600
start in about a month's time uh you can watch the website which is Rubicon india.org or the Twitter account which
01:34:54.400
is Rubicon India and yeah we we'd love to see more more people come from outside India and speak and yes of
01:35:01.280
course we're looking for sponsors so any of you that can talk your companies into paying us money to do this that would be
01:35:06.880
awesome thank you so uh I'm the coor of V Benchmark
01:35:15.239
gem uh we we like to do it actually as a framework to complete the standard Library which is very simple V means
01:35:22.679
Speedy or it's a French World so you basically can run Benchmark have reports like this and
01:35:32.960
you can make some party graph and you have Benchmark suits so we can see uh
01:35:39.080
some
01:35:47.560
output so this kind of stuff you can easily do the common line is very simple
01:35:52.880
you do some have M exact V run and you're you're gone and not do it here
01:35:59.080
because it's uh taking quite a time if you want correct results so we are only
01:36:04.280
at the start of the project and if you have any IDE just ping us it's at gup
01:36:10.960
blombo SL V if you
01:36:16.360
want and so that's it