Summarized using AI

Lightning Talks

TODO • September 29, 2011 • New Orleans, Louisiana • Lightning Talk

Summary of Lightning Talks at RubyConf 2011

The video showcases a series of lightning talks given at RubyConf 2011, featuring various speakers discussing a wide range of topics related to Ruby development, programming practices, and technical advancements in the Ruby ecosystem. Each speaker has a limited time (generally around five minutes) to present their ideas, innovations, or insights.

Key Points Discussed:

  • Eric Hodel on Ardo:
    • Introduced Ardo 3.10 with new markup formats (Rd and Tom do).
    • Mentioned groundwork for Markdown integration and enhancements in HTML views, including improved search features.
  • Alex Sharp on Builder (JSON templating DSL):
    • Discussed the need for a clear JSON templating library for API-driven applications, sharing insights from his work at Zari.
    • Explained features like dynamic attributes and object nesting in JSON responses.
  • Ken Robertson on DevOps Monitoring:
    • Introduced Metis, a monitoring solution leveraging Ruby, which simplifies writing and managing monitors.
    • Emphasized the importance of testing monitoring solutions to avoid false alarms.
  • Startup Failures by Entrepreneur:
    • Highlighted patterns of failure in startups using principles from Steve Blank’s book "The Four Steps to the Epiphany."
    • Stressed on customer discovery and validation prior to substantial company investments.
  • Ernie Miller's Perspective on Writing Ruby Gems:
    • Encouraged developers to contribute by creating reusable code through gems, enhancing collaborative learning.
  • Corey Haynes on Twitter Bots:
    • Shared experiences creating Twitter bots that provide positive affirmations, advocating for more friendly bot interactions.
  • Aaron Patterson on Beta Brite:
    • Explained the functionalities of Beta Brite, a gem for managing information on digital signage.
  • Diversity and Inclusion Discussion:
    • Tackled issues of discrimination in tech, emphasizing the need for professional respect and inclusivity in the programming community.
  • Health Impacts of Sitting:
    • Discussed the adverse effects of prolonged sitting and proposed walking or treadmill desks as solutions for programmers.
  • Miscellaneous Talks:
    • Various speakers shared insights on Ruby syntax, development methodologies, community events, and upcoming conferences related to Ruby programming.

Conclusions/Takeaways:

  • The importance of community and sharing knowledge through code is paramount in the Ruby ecosystem.
  • Developers should prioritize user feedback and iterative testing in their projects to ensure success.
  • Health considerations and inclusivity must be addressed within technology communities for sustainable growth.

With these discussions, RubyConf 2011 displayed a vibrant mix of technical insights, community engagement, and social responsibility, emphasizing both innovation and collaboration in the Ruby programming landscape.

Lightning Talks
TODO • New Orleans, Louisiana • Lightning Talk

Date: September 29, 2011
Published: December 12, 2011
Announced: unknown

RubyConf 2011

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
Explore all talks recorded at RubyConf 2011
+55