This video contains 20 individual talks

Lightning Talks (Day 1)
+20
See all speakers
See all 20 speakers

Sections in this recording

Summarized using AI

Lightning Talks (Day 1)

Tim Oliver, Patel Alun, Thomas Witt, Claudio Baccigalupo, Michael Hartl, Reid Morrison, Haley Anderson, Mike Virata-Ston, John Sawers, Matthew Nielsen, Adam Cuppy, Godfrey Chan, Justin Collins, Nadia Odunayo, Saron Yitbarek, Stephanie Nemeth, Jose Castro, Tianwen (Tian) Chen, Benjamin Fleischer, and Stephanie Marx • May 27, 2016 • Kansas City, MO • Lightning Talk

The video titled "Lightning Talks" features a series of short presentations delivered at RailsConf 2016. Each presenter discusses various topics related to Ruby on Rails and software development, providing insights and experiences from their professional journeys. The main topics covered include:

  • Tim Oliver discusses a Docker-based platform for application development at General Electric, emphasizing the efficiency of Rails in bringing ideas to finished products and encourages developers to embrace new technologies.

  • Patel Alun addresses the challenge of managing API versioning in Rails, sharing the use of the Grapes gem to facilitate API and UI integration.

  • Thomas Witt critiques existing content management systems for Rails, presenting a new CMS named Cito designed for ease of use and built with Rails principles.

  • Michael Hartl, known for his Rails tutorial, speaks about new beginner-friendly tutorials under 'learn enough to be dangerous' and introduces a subscription service for continuous learning.

  • Reid Morrison showcases Rocket Job, a tool for background job processing, explaining its integration and monitoring features to ensure efficient job management in Rails applications.

  • Haley Anderson extols the virtues of Rails Camp, presenting it as a community-building experience akin to summer camp for developers.

  • Mike Virata-Ston introduces Gem Stash, a local gem server that caches gems for faster builds and efficient dependency management.

  • John Sawers offers a unique perspective on the emotional aspects of being a developer, advocating for the awareness and processing of emotions to improve professional interactions and overall well-being.

  • Matthew Nielsen introduces MultiZip, a project inspired by problem-solving in data centers using innovative methods.

  • Tian presents Wab, a new Rails admin tool aimed at providing a better solution for common admin interface issues.

  • Stephanie Marks humorously reflects on her experiences with GeoCities, discussing the nostalgic aspects of early web design and the significance of user-friendly design principles.

Throughout these lightning talks, speakers convey their personal stories, solutions to common challenges in Rails development, and encourage community engagement among developers. The session successfully highlights innovation and learning in the Ruby on Rails ecosystem, fostering a collaborative atmosphere at RailsConf 2016.

Lightning Talks (Day 1)
Tim Oliver, Patel Alun, Thomas Witt, Claudio Baccigalupo, Michael Hartl, Reid Morrison, Haley Anderson, Mike Virata-Ston, John Sawers, Matthew Nielsen, Adam Cuppy, Godfrey Chan, Justin Collins, Nadia Odunayo, Saron Yitbarek, Stephanie Nemeth, Jose Castro, Tianwen (Tian) Chen, Benjamin Fleischer, and Stephanie Marx • May 27, 2016 • Kansas City, MO • Lightning Talk

RailsConf 2016

00:00:10 I don't have much of a voice today for some reason. So, who is this their first lightning talk session?
00:00:18 Okay, so the way that it works is we had the signup board earlier today, and they're all scheduled for five-minute talks. We're going to do them in order.
00:00:30 The one caveat that I put on that is an exception to that rule, which is exercised one time and one time only, and it is right now.
00:00:40 If you’re on this board and you’d like to give your talk in one minute, and you will not have the benefit of slides, you may do so.
00:00:53 So, is anyone on this board that would like to exercise this exception?
00:00:58 Yes? Okay, come on up.
00:01:02 Just cross your name off the list there. I can do one minute.
00:01:14 Hey, everybody! Oh, this is a little scarier than I thought.
00:01:20 I'm going to need that Weed Mapper guy. Where is he at?
00:01:26 Weed Mapper guy, meet me up in front of the stage.
00:01:32 Okay, so my name is Tim Oliver. I work for General Electric. We are doing an awesome program right now. We're creating a PA inside. It is Docker-based.
00:01:44 We're trying to make it easier for our guys to develop applications and get them running.
00:01:50 With this PA, they'll simply need to come to a portal that we're developing now, select their stacks—be it Node.js or Java or whatever—and then we'll inject the application and the code in there.
00:02:03 That thing will begin running. It's pretty cool.
00:02:10 We're doing that in Rails. The portal part is going to be in Rails. I wasn't really a Rails guy, actually, and I'm learning to be a Rails guy.
00:02:18 This is my first Rails conference, and so this is all new to me.
00:02:25 I would have chosen Java, but because Java's ubiquitous, it's everywhere, right? Everybody knows Java.
00:02:36 Having been in Rails, I am discovering that you are so efficient with Rails. You can get from an idea to a finished product in Rails.
00:02:44 So my simple message today is, if you are on the fence about a new technology, there’s no easy time; there’s no good time to do it.
00:03:01 This is a pretty high-profile project, and we have a short timeline. My message is just go ahead and jump in and do it.
00:03:11 You just gotta roll up your sleeves, embrace the change, and it will be okay. Especially if you're doing it in Rails, you will be that much more efficient. Have a good night!
00:03:20 Right, I get to drop the mic, right?
00:03:24 Hello, guys. I'm Alun from Bangladesh, and I work in a company named Nessia. We do software consultancy and are basically a Rails-based company.
00:03:40 So the topic I chose today is actually exposing the API and UI in Rails and managing the documentation.
00:03:48 The problem is that Rails is very friendly when it comes to making the UI with HTML, CSS, frontend, and at the same time, XML and JSON outputs.
00:04:07 So for making an API, it's actually nothing, just a line of code—or even no line of code in recent versions.
00:04:24 But the problem is we cannot maintain the versioning of the API.
00:04:30 So to do that, we actually use the Grapes gem, and that solves the problem of maintaining the versioning of the API.
00:04:39 It also allows all the APIs in a single package.
00:04:49 So that solves our problem. Okay, am I done?
00:04:56 Thanks! I will be mispronouncing everyone's name as per usual.
00:05:03 So when I call your name and it sounds vaguely like your name, it probably is. In fact, name.
00:05:10 And you should come up here. We're going to have dueling stations.
00:05:18 So we will have one on deck. So the first on deck is Claudio.
00:05:26 I might be mispronouncing it; I'm sorry.
00:05:32 This particular person's mother named them an at sign, so I'm sorry about that.
00:05:39 But go ahead, Mister At.
00:05:49 Hello, I'm Thomas. I'm from SCO, and I want to do a lightning talk about content management for Rails.
00:06:00 Usually, Rails is great. I've been using Rails since 2008, and we've built great applications with it, and I'm sure you did as well.
00:06:20 But usually what people forget is that besides an application, you also need content on a website. Typically, this is created by non-technical people, non-developers.
00:06:35 This requires a content management system, and unfortunately, the content management systems for Rails are very poor.
00:06:47 I have some screenshots of this. For example, Alchemy is one of the better ones, looking straight from the 2000s, like Windows 95.
00:07:00 We've got comfortable Mexican software, locomotive CMS, Refinery CMS, and Radiant CMS.
00:07:10 There are even some API-based CMS out there, and they don't look any better.
00:07:16 They haven't improved much since what Dan Meyer Hansen promised us to do when he redid Rails; you could do a block within a few minutes.
00:07:29 Unfortunately, that still isn't true today—some people even switch to WordPress, which is a B.S. solution that we all don't want to use.
00:07:45 So basically, we thought we'd build a better CMS for Ruby on Rails, and that's what we did. We created Cito.
00:08:05 I will do the impossible; I will ask for the demo gods to be nice with me and do a two-minute demo of Cito live.
00:08:15 Obviously, we use Cito to run Cito. This is our homepage, where you can, um, edit pages.
00:08:24 This is where I'm already in editing mode, so you can navigate on the page.
00:08:34 If you want to, I go for a blog article about this lovely Ruby conference. If I want to edit something, I click on edit.
00:08:45 Then, I have to create a working copy. A working copy is like a branch in Git, so you can have multiple people working on the same content at the same time.
00:08:55 So I call it RailsConf. The beauty of Cito is you can see everything; it's what you see is what you get.
00:09:02 So when you're in editing mode, you can say 'Hello RailsConf 2016' and edit that.
00:09:15 We also have so-called widgets on the page, which are page components.
00:09:24 You see them when I scroll over them here, and you can drag and drop stuff, rearranging components on the page.
00:09:30 You can insert another widget, for example, two columns.
00:09:35 You can move that here, like this. I can also insert another image widget.
00:09:42 For example, I can drag and drop a picture of RailsConf, and it will be automatically uploaded to Amazon S3.
00:09:54 It will be displayed right here on the page.
00:10:00 You can easily click on that, get an image browser, and you can do some editing.
00:10:08 So you can flip that stuff around, etc.
00:10:15 You can even see how that would look on mobile. We recalculate the images for mobile, getting a smaller version.
00:10:23 You can view some SEO stuff and see how that should look on a Twitter card if you re-share that.
00:10:30 So, it's pretty easy to use. The beauty of it is it's just a gem with a cloud backend.
00:10:43 You can integrate it into your Rails app; you just add the gem to your gem file, and that’s it.
00:10:50 Then you can create a model which is a plain Ruby class.
00:10:57 So I have a blog post here with a headline and some widgets.
00:11:05 It's all schema-less, so you never have to run any migrations; it just works.
00:11:12 Of course, you have a view for that where you can use a helper.
00:11:18 As soon as you insert that helper, for example, here to edit the headline, you see all these 'what you see is what you get' editing magic.
00:11:25 With auto-saving, like in Google Docs or whatever, it's pretty cool.
00:11:34 You can integrate it into any Rails app.
00:11:41 That's pretty much it about Cito. If you want to learn more about that, talk to me.
00:11:55 The beauty is we give it out for free for any open-source projects, charities, or non-profits.
00:12:01 So if you have questions about that, approach me, talk to our support.
00:12:05 We think it’s the best CMS out there for Rails.
00:12:10 And that's it. Follow us on Twitter!
00:12:14 Hello everybody, I have five minutes to convince you to stop using flash messages in your Rails applications.
00:12:30 Can I get a shout-out for that? Thank you!
00:12:37 Okay, what are flash messages, if you don’t know what they are?
00:12:48 Good, because then you don’t use them! These are those small messages.
00:12:56 I actually went back in the history of Rails, and they have existed since the very first commit in 2005.
00:13:05 So they might have been a good idea back then, but I think they hide a problem.
00:13:14 Most of the time when we use them, we want to expose that information, but not too much.
00:13:23 Like, just a little bit. Why is that?
00:13:30 They really have several issues.
00:13:36 If a user doesn’t see them right away, they’re left confused.
00:13:42 With caching, it can be a big issue. You can end up having problems with JavaScripts.
00:13:50 They might seem minimal, but designers love to add a lot of stuff on top—making them shiny and colorful.
00:13:56 So my advice is don’t use them!
00:14:02 To give you an idea of when they are used, for instance, when you use a scaffold generator.
00:14:09 When you create a new member, there is a flash message: the member was successfully created.
00:14:15 Well in this case, you don’t really need it!
00:14:23 Because you’re displaying the member so it’s clear it was created.
00:14:30 Another example is when you update a user. The flash message pops up again.
00:14:36 Well, you could have something smarter—just say 'Last updated a few seconds ago.' It’s more intuitive.
00:14:44 You are providing the information, and it stays with the user.
00:14:52 When destroying from the index page, it doesn't need a message.
00:14:58 If you have a counter, it simply reduces by one without unnecessary notifications.
00:15:05 When destroying from the show page, you could say ‘The member is no longer active’.
00:15:12 This is the part that requires a little coding, but not much.
00:15:20 It’s similar to how you change a user status to inactive rather than pretending they’ve been destroyed.
00:15:27 This part may require changing the controller a little so it stays on the same page.
00:15:38 That’s the end of my talk.
00:15:44 I think flash messages are something we take for granted.
00:15:49 They’ve been around as long as Rails, and we just use them.
00:15:55 But if we think about them, we can improve our design.
00:15:58 In my opinion, real minimalism is not just about putting minimal info down.
00:16:06 It's about not using them at all! Delete the action dispatch flash middleware from your app.
00:16:12 So when junior developers join your team and want to use them, they won’t be able to.
00:16:20 Thank you! Alright, the stage is yours! Yes, hello, I'm Michael Hartl. You may know me as the author of the Ruby on Rails tutorial.
00:16:39 Who here? Yeah, alright, I’ll take that as some of you know me. Awesome!
00:16:45 I’m here to tell you about what I’m working on right now—an outgrowth of the Rails tutorial.
00:16:53 I'm motivated in part by a frequent question: is the Rails tutorial good for complete beginners?
00:16:59 As those of you who've tried Rails tutorial as complete beginners know, the answer is not really.
00:17:08 You can do it, but it’s really hard.
00:17:15 So what I’m working on now is a series of tutorials designed for complete beginners under the brand 'learn enough to be dangerous'.
00:17:26 I’ve got three tutorials so far, which I’m calling developer fundamentals:
00:17:34 learn enough command line to be dangerous, learn enough text editor to be dangerous, and learn enough Git to be dangerous.
00:17:41 The 'learn enough command line to be dangerous' tutorial assumes no prerequisites other than general computer knowledge.
00:17:50 It doesn’t even assume you know how to use a text editor or what a command line is.
00:17:57 There are six or maybe seven more tutorials in this sequence.
00:18:04 In developing this, I found a new theme for what I do, which I call technical sophistication.
00:18:12 This is not just a combination of skills like using a text editor or coding, but also knowing how to click around.
00:18:18 Learning how to use your programs by checking menu items, Googling error messages, and knowing when it’s time to reboot.
00:18:25 I’ve kicked that theme up a notch.
00:18:34 These tutorials are still available for free online, just like the Rails tutorial.
00:18:44 You can purchase the ebooks or videos.
00:18:51 But I recently introduced a new subscription service under the learn enough brand called the 'learn enough Society'.
00:19:02 It’s a collegial and extremely dangerous group of people working together to learn technical sophistication.
00:19:09 Right now, the subscription service includes these first three tutorials.
00:19:18 I want to show you how it works. This is what you get as a member.
00:19:26 This is a special online version of the tutorial, has videos—about four hours of video.
00:19:34 It has integrated progress tracking, so you can see where you left off.
00:19:41 One of my favorite parts is that there are exercises and an interface for entering the answers.
00:19:48 For example, one of the exercise questions is how do you use the man page to suppress the newline when you use echo?
00:19:54 So I paste in my answer, and it supports Markdown.
00:20:01 You can share your answers with other members, and it forms a shared answer key.
00:20:08 Right now we have three tutorials, and you might expect the full Ruby on Rails tutorial, fourth edition.
00:20:15 It will be available online for free, similar to how it is now.
00:20:22 You can still buy the ebooks and videos, but it will be included for free in the subscription.
00:20:28 So I plan to write a bunch of exercises for this new edition.
00:20:34 Once I fill in these prerequisite tutorials, I’ll be making follow-on products, which will also be included in the subscription.
00:20:43 If you’re interested in learning more about this, about Learn Enough Society, you can go to learn.com story and read the learn enough story.
00:20:50 Finally, I’d like to note that I’m hosting an event tonight, the Rails tutorial Beerware night at No Other Pub.
00:21:02 It starts at 7 right after these lightning talks. I hope to see you there!
00:21:12 Please come hang out, maybe buy me a beer!
00:21:18 Thank you!
00:21:24 Hello everyone, my name is Reid Morrison.
00:21:29 I'm the software architect of Clarity Services, and I’m going to tell you all about Rocket Job.
00:21:35 I'm sure many of you have done background job processing or some batch processing.
00:21:44 Here’s a simple example of doing it the Rails way.
00:21:51 We have a job that we can inherit from a Rocket Job, implement your perform method, and it can do any behavior you need.
00:21:57 When we create it, we do it the regular way for the active record model, like job.create.
00:22:06 There’s our job, and it’s created.
00:22:13 Once you create a job, what if you want to add additional parameters or attributes to that model?
00:22:21 For example, we can give it a key, a file name, and specify the type as a string.
00:22:29 Now in our job, we can access that attribute just like you can with any Active Record model.
00:22:35 As we create it, we add the file name, and now there’s the name of the file we want to add.
00:22:43 Validations—everybody loves validations in Active Record models.
00:22:50 You ensure that the data is up to date and correct.
00:22:54 So we have validations, and everything follows the same way.
00:23:01 Now I can look at the state of the job and know where it is right now.
00:23:07 I can do a reload and see what’s happened since I last checked.
00:23:15 So once it starts in the queued state, running the workers are busy processing.
00:23:26 When it's completed, I can say it hasn't been completed and see it's completed.
00:23:34 I can also get the result of that job when I tell it to collect the output.
00:23:40 You see all the outputs of the job that ran; it’s not just sent off without knowing what happened.
00:23:46 You can constantly monitor each step of the way.
00:23:54 So some batch processing concepts: for instance, someone might upload a large file, maybe 10,000 lines or a million.
00:24:02 We want to make sure the job works well.
00:24:09 We include the batch makes, and now the perform method will be called for each line.
00:24:15 You don’t need to worry about processing the entire file at once.
00:24:26 It breaks up the batch across all your servers.
00:24:29 In our production environment, we have over a thousand workers that actually do the number crunching.
00:24:37 So here’s an example. When uploading a file, maybe a CSV, we grab that and process.
00:24:45 Whether it's a CSV file or zip, if it’s a zip file, it grabs the first file.
00:24:52 We can grab it and runs it for you. If it’s an Excel spreadsheet, it gets uploaded too.
00:25:03 You don’t have to worry about where to store this file or how to process it.
00:25:10 Once you've saved it, it automatically starts processing, and at the end you can download the results.
00:25:16 This job will hold all the output for you.
00:25:26 Here’s another example: all processing must be PCI compliant.
00:25:34 You may also have HIPAA compliance and need to encrypt that data both at rest and in flight.
00:25:43 In that scenario, we just say encrypt true.
00:25:49 The job is now entirely encrypted, both the files, and you can also encrypt your files in and out.
00:25:56 If you want, you can add compression.
00:26:02 Now, the Rocket Job web UI, this is what everybody wants to see.
00:26:07 In the web UI, you can click and see how many jobs are running right now in the system.
00:26:14 You can see the description, the progress, and priority of every job listed.
00:26:23 You can change that at runtime.
00:26:30 If a job’s busy, and your business wants to prioritize this task, you can switch it.
00:26:38 You can then see all the jobs in the queue and check how long they have been queued.
00:26:52 You can look at the failed and aborted jobs, and pause or resume jobs.
00:27:00 If you have any questions, I’ll be outside over there.
00:27:08 Also, I have free T-shirts and stickers for anybody that wants some.
00:27:14 You can head out the doors in the middle towards the right. Thank you!
00:27:20 Hello, I'm Alex Boster.
00:27:30 I work for AppFolio in the San Diego office.
00:27:36 I’m going to talk about a small project we have called Farsy.
00:27:41 It's an automatic style checker. How many of you use RuboCop?
00:27:47 A lot of you, as I expected. But if you don’t know what it is, it’s a type of linter or style checker.
00:27:53 Different languages have different style checkers; there's RuboCop for Ruby, ESLint for JavaScript, and there’s one for basically every language.
00:28:01 So, who makes these part of the formal development process at your company?
00:28:09 Not too many; okay, we do.
00:28:15 RuboCop enforces things like indentation and spacing.
00:28:21 You know, everything you might want to put in a style guide can be automatically checked and enforced.
00:28:32 That's a philosophy that I agree with: consistency of style among your team is more important than whatever specific choices you make.
00:28:39 So, if you do this, your team’s code will be easier to read and work with.
00:28:46 It really helps reduce the learning curve. I hadn’t done too much ES6 or modern JavaScript until the last year.
00:28:55 And it really helped me get up to speed quicker by saying 'no, you’re doing it wrong, do it this way.'
00:29:03 For existing projects, do not just run your whole codebase through this thing; things will break.
00:29:11 We always do it on the deltas, so the commits themselves have to be fixed.
00:29:18 We find it really ties our code together.
00:29:26 There are commercial options that do what Farsy does and more.
00:29:32 But these can have minor issues; a lot of them are priced per repo, which can add up.
00:29:40 Some of them can also be a concern because they require third-party access.
00:29:49 So, some of us wrote Farsy.
00:29:55 It is open-source and was written by Bryce Boy and Pojo Cson.
00:30:02 It is available in a premade Docker image, and we run it locally.
00:30:08 It used to run on a Ruby Pi, which made air horn sounds in the office.
00:30:15 Now it's on EC2; it’s written in Python.
00:30:22 It polls every 60 seconds, and it can run RuboCop, ESLint, SCSS Lint.
00:30:30 It’s probably easy to extend for more linters.
00:30:36 It posts violations as comments in GitHub pull requests and will provide a failing or passing status.
00:30:44 What does that look like? Oops, Farsy complained; it found two errors on my PR.
00:30:50 Oh, there they are! I don't know if you can read those, but just minor things.
00:30:56 We fix them and, oh look, all tests are passed! Now I can merge.
00:31:02 Caveats: It’s pretty barebones, you know, one reason I’m giving this talk is that people can contribute.
00:31:10 We could probably make it a lot better.
00:31:15 Configuration is global, but you need one Farsy instance for every repo you're pointing that.
00:31:21 It uses polling; it would be better to do it as a callback.
00:31:28 And right now, you have to change the configuration in Farsy, but in the future, you’ll be able to load the configuration in your project.
00:31:36 So, if you want to know more, you can check it out.
00:31:45 My name is Haley Anderson. I am an engineer at Handy in New York City.
00:31:51 I’m here to get you all hooked on Rails Camp.
00:31:57 So I’m pretty new to Rails Camp. I discovered it about a month ago.
00:32:04 I decided last minute to go with them out to the Catskills.
00:32:11 I had no idea what to expect.
00:32:21 But it turns out that Rails Camp is amazing!
00:32:29 It’s basically like summer camp for adults—specifically developers.
00:32:36 You don’t necessarily have to do Rails.
00:32:43 But everyone is pretty much a developer; it’s summer camp but without drama.
00:32:51 There’s awesome food, tons of alcohol, and lots of super fun activities.
00:33:00 It is very addictive. When I went, I thought it was crazy for a bunch of people to come from Australia.
00:33:06 But here a month later, I’ve already signed up to go to Idaho for the next Rails Camp.
00:33:13 It is August 26 to 29 in Stanley, Idaho.
00:33:18 I don’t really know where that is, but it doesn’t really matter.
00:33:26 It is out in the woods with no phone service and no internet.
00:33:34 You will just be hanging out with a bunch of developers.
00:33:41 You probably won't be writing code.
00:33:48 But you may practice talks or see some. We did have a talk on closures.
00:33:55 We had a bunch of other random talks which sort of excuse going out into the woods to have fun.
00:34:02 So you all should come! Here's where Idaho is.
00:34:10 There’s going to be a bus going to and from the airport in Boise.
00:34:18 When you get a ticket, everything is included: food, travel, housing, everything.
00:34:23 I believe they're looking for more sponsors to fund the travel.
00:34:30 If anyone would like to make a whole bunch of developers love you, sponsorship would be a great idea.
00:34:39 This is where we will be traveling out to.
00:34:48 It looks amazing. This particular picture made me decide that I was definitely coming.
00:34:56 If you’re into photography, this looks like a great opportunity.
00:35:04 There will be plenty of water sports: hiking, hanging out in cabins, swimming, canoeing, sailing, fishing, and white water rafting.
00:35:10 I also hear that there are apparently no mosquitoes in August in Idaho. Hopefully, that is true.
00:35:18 It sounds perfect in every way.
00:35:24 Definitely worth coming over from New York or Australia.
00:35:31 It may sound a little bit crazy, but trust me, it is an amazing opportunity.
00:35:40 You will meet tons of incredible people.
00:35:48 I met a lot of super cool people here, and I have tons of amazing new friends.
00:35:54 I highly recommend you come. You can go to west.railscamp.com for more info.
00:36:01 If you consider yourself an underrepresented minority, there’s a promo code.
00:36:09 The organizer is Bobby Lee. You can ping her if you have any logistical type questions.
00:36:15 If you're interested in sponsoring, you could ask me or lots of other dedicated Rails campers who are here today.
00:36:24 Thank you!
00:36:32 Alright, I'm here to talk about Gem Stash.
00:36:43 I'm Mike Virata-Ston. What exactly is Gem Stash? It is a local gem server. It caches gems from rubygems.org and from other gem sources.
00:36:56 It also stores your own private gems. It’s also a bundler project.
00:37:02 You can check it out at github.com/bundler/gemstash.
00:37:09 So, why might you want to use it?
00:37:16 There are over 117,000 distinct gems on rubygems.org with over 650,000 versions.
00:37:23 Downloading all of the gems is about 120 GB, probably more by now.
00:37:30 Currently, there are about 160 gems being downloaded per second.
00:37:37 That’s a lot of bandwidth, hosting, and storage!
00:37:44 So, who pays for all this? For one thing, contribute to Ruby Together if you can.
00:37:51 So, why not just commit your gems into your repository?
00:37:57 Currently, we have around 220 gems totaling about 45 MB.
00:38:01 We have accumulated over 1,900 gems total and that weighs in at about 490 MB.
00:38:10 Every time we clone the repository, we're paying that cost and that sucks.
00:38:17 So we could download them every time, right?
00:38:26 I tested bundling against Rails 4.2.5. It came out at 1 minute and 41 seconds.
00:38:35 I tried with Gem Stash after all gems were cached, and it came out at 54 seconds.
00:38:43 Then I noticed that Nokogiri was taking a lot of time to install.
00:38:50 I got rid of that, and it was 32 seconds.
00:38:55 With Gem Stash, it came down to 11 seconds.
00:39:01 We use a gem called Multimap, and some of the versions were yanked.
00:39:09 Without storing our gems, we would be in big trouble.
00:39:14 Gem Stash can hold on to these gems and keep them.
00:39:21 Here’s how it works: if you have all your app servers connecting to the internet and going to rubygems.org, you can connect to your local Gem Stash server.
00:39:30 It goes out to the internet and grabs it just once, and then your servers pull it from there.
00:39:37 So, how do you use Gem Stash?
00:39:42 You set it up and start it. That’s it.
00:39:48 You can go to your gem file and change to your local host or to a remote server.
00:39:53 It works with any remote gem server.
00:40:00 But you can update Bundler. Bundler 1.11.2 supports a mirror config.
00:40:06 So if you use the mirror config, it will automatically tell Gem Stash where it’s getting the gems.
00:40:13 There’s a new index format coming, making bundler faster.
00:40:21 If you want to try it out, it’s awesome. I work for onsite.com.
00:40:29 If you want Gem Stash stickers, come see me. Thank you!
00:40:36 Now for something completely different: I’m here to talk about emotions and how they can impact you as a developer.
00:40:47 I’m John Sawers, the CTO and co-founder of Data Simply.
00:40:55 These are the places you can find me online.
00:41:01 Given that most of us don’t understand emotions, let’s see what we can learn if we model our emotional system as an API.
00:41:13 Here are the core endpoints; they handle all our basic emotions.
00:41:22 But it's not that simple because there are hundreds of aliases that redirect to these endpoints.
00:41:29 Things like losing your job or having a baby can cause massive hits on these endpoints.
00:41:38 But method bodies can be complex with massive traffic to that core API.
00:41:45 The bad news? Any person, event, or situation can call any of these endpoints.
00:41:52 How you react to those feelings is up to you, but it takes work to undo our habitual responses.
00:41:58 Let’s talk about how your feeling server works.
00:42:06 When that API hit comes in, the download starts, but the server can be flaky and can't really tell you how big that payload is.
00:42:12 So it feels kind of infinite as the feelings happen.
00:42:19 When the big feelings hit, we feel like if we let them in, they will never stop.
00:42:27 Experts have shown that feelings can only last about 20 minutes.
00:42:32 If you express them fully, they’ll be gone in 20 minutes or less.
00:42:38 How do we get to this expression? We get to decide when and where we process feelings.
00:42:45 This isn’t like waiting in line at Starbucks; we need to go to a safe place.
00:42:53 You can work on expressing these feelings.
00:43:00 I give you a few examples, but there’s so much more to it.
00:43:08 Starting with anger: toddlers are brilliant at anger.
00:43:15 They throw a fit, kick, scream, and fall out on the floor.
00:43:22 Five minutes later, they’re fine; they go off to play.
00:43:30 That works when you’re really angry.
00:43:35 Start by saying things like 'I feel angry about...' and talk about what's causing the feeling.
00:43:43 This can be difficult, especially since we’re trained not to do this.
00:43:48 You can practice this before feelings come up, and thus start to let them come.
00:43:56 And keep going while you feel foolish; it’ll pass.
00:44:03 Why? Because unprocessed feelings can make us feel powerless.
00:44:10 Feeling powerless can affect our thinking.
00:44:20 But if we process feelings well, we can understand ourselves and others.
00:44:26 We can choose constructive responses.
00:44:38 So, what does it mean to be a better developer?
00:44:45 If your emotional state isn't distracting you, you will be a better human.
00:44:51 Knowing your own feelings helps you understand others, thus leading to better interactions.
00:44:58 If you can handle family issues, hiring, firing, or giving talks, you'll be better.
00:45:04 So practice some of these techniques, and everything will get better!
00:45:10 Thank you! I’m just scratching the surface of this.
00:45:20 You can find more about this on my Twitter or talk to me.
00:45:29 I’m giving a full version of this talk at the Abstractions Conference in Pittsburgh in August.
00:45:37 It's a great conference; you should totally come!
00:45:45 Alright, ready to go!
00:45:52 My name is Matthew, and I want to talk about a project I’ve been working on.
00:45:59 It’s called MultiZip, and I’ll tell you about it through a couple of stories.
00:46:05 First is the story that I encountered in my previous job.
00:46:11 The problem starts within a data center, entirely alone: no connection to the outside world.
00:46:17 Someone performed chmod -x on chmod itself. Now solve it.
00:46:21 A disclaimer: this talk is not about the value of the interview problem.
00:46:29 This talks about possible solutions from my former coworkers.
00:46:36 So, if you want to solve this, many programming languages can do it.
00:46:44 Or you can use a non-programming language solution.
00:46:49 You can create a new file that compiles; then you can cat chmod onto itself.
00:46:58 You can also copy cat to create a new executable file and fix the permission.
00:47:05 If your system allows it, you can likely use tar to handle permission.
00:47:12 You can create an archive stating the permissions you want for the file.
00:47:20 If you can access the other machines in the data center, you could send chmod back.
00:47:27 CPIO allows you to manipulate files, with byte info that can be changed.
00:48:15 With a bit of regular expressions and shell wizardry, we can do this.
00:48:20 You could use inodes and check the structures to manipulate them and run chmod.
00:48:35 Another idea involves using a different operating system in the container.
00:48:42 Like busybox, but I am actually a Vim guy.
00:48:48 So if you want to know more, I’ll be upstairs.
00:48:53 Thank you!
00:48:57 Hello everyone, I hope you’re enjoying this conference.
00:49:10 My name is Tian. Apparently this is the Chinese spelling, so probably people won’t get that.
00:49:18 I work for Reinteractive, a Rails shop in Australia.
00:49:25 Today, I’ll present a project I’ve been working on.
00:49:31 It’s another Rails admin called Wab.
00:49:37 The repo is under the Reinteractive SL Wab.
00:49:46 For most existing Rails admin interfaces, we normally have DSL problems.
00:49:52 DSL is designed to handle just one domain.
00:50:00 The interfaces typically try to tackle everything.
00:50:06 This makes me remember my old days using Dreamweaver for PHP.
00:50:12 Everything is mixed in one page.
00:50:22 You might wait for existing interfaces to evolve, but I couldn’t wait.
00:50:31 Wab is my solution and it simply integrates with your Rails.
00:50:38 You just put the gem W in your Rails file and mount it in your routes.
00:50:45 It has common features like searchable forms, pagination, and validates.
00:50:59 This gives you some insight into the features.
00:51:05 This is the index page which shows the table.
00:51:10 It lists model names using a decorator.
00:51:16 The text provides a one-to-many relationship.
00:51:24 All defined models will show up automatically.
00:51:31 The show page lists all columns and associations defined in your model.
00:51:49 The edit page does validation for you.
00:51:56 If there's an error, it highlights the problem. This is a user-friendly mechanism.
00:52:03 So it handles both the display and user cases effectively. Thank you!
00:52:10 I'd like to sing 'Let It Go' as a round with everyone!
00:52:17 Thank you! So hi everybody!
00:52:24 Okay cool! I'm Stephanie Marks, a web developer at UL.
00:52:30 I am here to talk about GeoCities.
00:52:37 Can you raise your hand if you were alive in 1996?
00:52:43 Can you raise your hand if you've ever heard of GeoCities?
00:52:52 Thank you for being my people!
00:52:58 GeoCities was a web hosting service founded in 1994.
00:53:03 Yahoo acquired it in 1999, and at one point, it was the third most visited site on the web.
00:53:10 It had around 38 million user-built pages. It shut down in 2009.
00:53:17 Putting my awful websites on GeoCities helped me become a developer.
00:53:26 The design style holds a special place in my heart.
00:53:35 There are lessons we can take from this style.
00:53:41 So, first, hit counters!
00:53:47 They showed you the increments for users who viewed the website.
00:53:54 It makes you feel less alone as a user.
00:54:02 Next—under construction banners!
00:54:08 They demonstrate your site is being updated without harsh judgment.
00:54:14 That’s totally okay to always make tweaks.
00:54:21 They immediately allow you to express change.
00:54:27 Lastly: Comic Sans!
00:54:35 Comic Sans is the most hated font, but it’s friendly!
00:54:42 It made GeoCities sites feel warm and welcome.
00:54:48 Designing is about making users feel at home.
00:54:55 I learned that we can infuse significance and warmth into web design.
00:55:01 Thank you for listening to me talk about this era!
Explore all talks recorded at RailsConf 2016
+106