Baskin Robbins wishes it had as many flavors as there are JS frameworks, build tools, and cool new "low-level" languages. You just want to solve a problem, not have a 500-framework bake-off! And how will you know whether you picked the right one? Don't flip that table, because we'll use the "hype cycle" and the history of Ruby and Rails as a guide to help you understand which front-end and back-end technologies are a fit for your needs now and in the future.
One of the most fascinating things about this topic is the fact that it is almost never discussed in the community despite it being a primitive that is deeply involved in Enumerators! I became fascinated with this topic when I wanted to performance optimize Ruby for standard technical interview questions, like FizzBuzz and Fibonacci. I discovered that using Enumerator.new and then defining a basic Fibonacci was far quicker than defining a Fibonacci method with the same logic, and soon found that this was due in part to the concurrency built into Enumerators stemming from Fiber. The fact that this primitive is so incredibly engrained in Enumerators (which Rubyists use in virtually every project!) and yet has so little discussion surrounding it makes it the perfect topic to teach developers both old and young something interesting that they weren't aware of before. Understanding Fibers will help developers better understand Ruby better as a language, but also is another tool to add to their repertoire that is simultaneously esoteric and valuable, an exceedingly rare combination.
Collaboration and gaming web software using websockets need a way to mitigate impersonation attacks. Using the togetherjs protocol as an example, we will see how a participant can tamper with messages to impersonate other collaborators and how to prevent these attacks.
I was fortunate to spend a year and half working exclusively on open source software. Along the way, I learned that open source development requires a slightly different approach. In this talk, I will share my story along with some of the lessons I learned.
Teaching computers to play games has been a pursuit and passion for many programmers. Game playing has led to many advances in computing over the years, and the best computerized game players have gained a lot of attention from the general public (think Deep Blue and Watson).
Using the Ricochet Robots board game as an example, let's talk about what's involved in teaching a computer to play games. Along the way, we'll touch on graph search techniques, data representation, algorithms, heuristics, pruning, and optimization.
Sometimes we can forget that there's more under the (networking) sun than HTTP. Rapid7's Metasploit team has been working for awhile on a new, pure-Ruby library for Microsoft's SMB protocol. Doing work like this means analyzing wire traffic, working with binary structs, and wrapping everything up into a nice, clean set of abstractions.
We'd like to share the developer workflows and lessons learned. If you've ever wondered how to set about building a library for a binary protocol, how to reverse-engineer the byte-by-byte traffic on a network, or thought it would be cool to understand Ruby's networking capabilities from the ground up, this talk is for you!
Phoenix is an Elixir web framework for building productive, reliable applications with the performance to take on the modern computing world. Together, we’ll review what makes Phoenix great and how it uses Elixir to optimize code for performance – without sacrificing programmer productivity. Along the way, we’ll see neat features like live-reload and generators and how Phoenix’s realtime layer takes on the modern web.
A juicy, melt in your mouth brisket. A beautifully orchestrated application. These don't just happen. They take experience, which is evolutionary. I have a technique for smoking a brisket, born out of iteration and experimentation, that makes a pretty good brisket. Software development and cooking have a lot in common. I'll tell you about my brisket, but really I'll talk about learning to process information quicker and more efficiently. This not only gives answers a place to land, but tastes good too.
Software connects people and ideas, but what if your ideas are flawed? Cognitive biases derail software development efforts. This talk can help you recognize and overcome them. Gain the benefits of patterns and examples through thoughtful mastery, without being bound by them.
Software engineering pushes us to our limits, not only of cognition, but, perhaps surprisingly, of character. Using the cardinal virtues as a framework, we can see that developers need courage to continue learning, temperance to prioritize goals, a sense of justice by which to discern obligations, and wisdom to optimize our path. By being honest about where we lack virtue, and implementing steps to develop character, we can perform test-driven development, or TDD, on ourselves. This process can help us grow not only as engineers, but as human beings.