RubyHack 2018 Schedule

Overview of OO, Functional, Logical, and Procedural programming: Everything old is new again. Node developers are turning to functional techniques to handle concurrency challenges. Developers used to almost unlimited memory are having to learn techniques from assembly to handle the limited resources in IoT devices. Having a solid grounding in the different paradigms of programming and in several different languages makes it easier for developers to adapt as the “problem of the day changes”. It allows them to learn new programming languages faster. And this talk aims to cram the best of an 18 week college course on different parts of computing into 45 minutes.

How bad a shape would you be in if an attacker was able to exploit a remote code execution vulnerability in your web application? When designing web applications that deal with confidential information, you should have a plan to limit your exposure when vulnerabilities are exploited. This presentation will discuss many ways to add defense in depth to your ruby web applications, including separate database users, file system access limiting, system call filtering, privilege dropping, child process re-execution, and memory protection, with lessons learned from production deployments.

We live in a dynamic, data-responsive world. We must create living APIs to feed the ever evolving needs of a wide array of applications. GraphQL, an unassuming alternative to REST, empowers our creations by serving fast, flexible responses in a type-safe and predictable fashion. Faster apps, rapid iteration, and living documentation means everyone wins.

In this talk, we’ll compare GraphQL with our existing API standard, REST. We’ll then learn some GraphQL basics and see what it looks like to serve GraphQL from a Rails application. We’ll finish by discussing how to incorporate GraphQL into your existing project.

Everything! Ok, maybe not everything but more than you might suspect. Unicode is great but implementing all written languages comes with a price. Find out about the current state of Ruby support, learn about Unicode normalization forms, hear me try to pronounce “mojibake”.

Interfaces give classes a way to guarantee they behave in compatible ways. How can such a guarantee be afforded in Ruby without a language construct to provide it? Explore getting the same assurances through testing and behavior-orientation.

Tests are great and we should write them all the time! Wait, what exactly were we getting out of them again? In this talk we'll expose some of the lies we've been taught about testing, like "testing is awesome", "testing is hard" and "you can't test-drive exploratory code". Good tests don't just catch bugs; they guide our thinking, shape our code, document our reasoning and even teach maintainers how to use our API... but only if we write them to be that way. If you like testing (or just wish you did), this talk is for you.

Almost all ruby projects use Git for version control, but if you increase the integration of git with your ruby or rails environment, it can help you work a lot less and have more quality in the software, and even automate your deployments.

Over the past 5 months, Code Sponsor went from an idea to a viable way for developers to fund their open source projects. In December, I shut down the company due to compliance issues. This talk covers what I’ve learned about funding open source, the different funding options, and what it takes to find funding.

Ever noticed how flexible the use of blocks can make Ruby code? They allow us to reuse code easily, and to dynamically define not only method names but also method bodies, thereby essentially making metaprogramming possible. In this talk we properly define blocks as closures. We discuss scope gates and how blocks manage to get around them, and how lambdas take this even further by allowing us to use variables defined in a different scope from where the lambda is executed inside the lambda body. We also take a look at what goes on in the Ruby stack and heap which makes all of this possible.

Starting as a junior dev is tough. Working remotely, fighting frustration to learn a new framework, or even just toiling in an office with little supervision -- these all make it even tougher. What can junior devs do to ensure growth and success in this new career? And how can supervisors and managers help shape these enthusiastic caterpillars into beautiful coding butterflies?

We're all faking it, but in the meantime we accomplish great things. That's what programmers do! If you’re getting started don’t let the fear that everyone around you knows so much more keep you from trying. If you’ve programmed and want to do it professionally then you are a programmer. Everyone is this room probably knows something you don’t and that’s fine because you know things they don’t. There's more to know than you could ever understand, in that way you're the same as the best programmer to ever live.