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!