Video recording and production done by Ruby Kaigi.
There are so many testing frameworks available to us that we sometimes overlook a completely valid, and sometimes preferable option: writing our own.
The drivers team at MongoDB focused over the last year on conforming to common APIs and algorithms but we needed a way to validate our consistency. We therefore ended up building our own testing DSL, REST service, and individual test frameworks.
Using these common tests and the Ruby driver's test suite as examples, this talk will demonstrate when existing test frameworks aren't the best choice and show how you can build your own.
Speakers: @mametter & the judges
The result presentation of TRICK 2015, an esoteric Ruby programming contest, will take place. You can (perhaps) enjoy some winning entries of unearthly Ruby code selected by esoteric judges.
Science & Technology
Speaker: Will Leinweber
Developer happiness is what brought me to Ruby in the first place. And of all the new compiled languages, Crystal is the only one that shares this value. The syntax and idioms are entirely Ruby inspired.
Although Crystal looks very similar to Ruby, there are big differences between the two. Crystal is statically typed and dispatched. While there are no runtime dynamic features, the compile-time macros solve many of the same problems.
In this session, we’ll take a close look at these differences as well as the similarities, and what Ruby developers can learn from this exciting language.
Speaker: Yuki Nishijima
Whenever you make a typo on Google or a git … cmd, they’ll automagically correct it for you. It’s great, but have you ever wondered why programming languages don’t have such a cool feature? The next major version of Ruby will! The did_you_mean gem was built to add on a “Did you mean?” experience and Ruby 2.3 will ship with it.
So what does the whole story look like? How can you use it in your app or gem? How does it correct typos? What even is a typo?
Let's learn how to take advantage of this new feature in Ruby 2.3 and save ourselves from typos forever!
Speaker: Hsing-Hui Hsu
When you type print "Hello, world!", how does your computer
know what to do? Humans are able to naturally parse spoken language by
analyzing the role and meaning of each word in context of its
sentence, but we usually take for granted the way computers make sense
of the code we write.
By exploring the way our brains construct grammars to parse sentences,
we can better understand how parsers are used for computering --
whether it be in the way Ruby and other languages are implemented or
in webserver routing -- and recognize when they may be the right tool
to use in our own code.
Speaker: Yukihiro "Matz" Matsumoto
Speaker: Shota Nakano
Introducing how mruby comes to term with the embedded board's poor resource.
I suggest a solution that they can mount an external NOR Flash chip as RAM cache.
Although mruby is a minimal implementation of Ruby, it requires huge RAM as is Embed field. A lot of embedded board has poor RAM less than 128KB, except for rich embedded board, like Raspberry Pi.
An external NOR Flash as mruby RAM cache is cheap solution. Typically, NOR Flash's writing frequency is limited, 100 thousand times. I also introduce performance measurement to reduce mruby RAM writting.
Speakers: Kohei Suzuki, Takashi Kokubun
Have you ever thought about performance of your Ruby code? If not, you might write ineffective code and slow down your application. Poor performance disappoints the users of your app causing you to lose their confidence.
In this talk, we show the process of creating faster Haml implementations: Faml and Hamlit. You will see how to improve the performance of your code.
We will show you the typical structure of template engines first, so experience with them is not required. After this talk, you'll be able to optimize your application using the techniques we will show you.
Speaker: Kevin Menard
"Metaprogramming is a powerful technique that sets Ruby apart from other contemporary languages. It allows compact and elegant solutions to seemingly intractable problems. Serving as the foundation of some of the mostly widely used frameworks and DSLs in the Ruby ecosystem, it’s arguably the single most defining feature of Ruby. Unfortunately, that expressive power has traditionally come at the expense of performance.
We’ll show you how JRuby+Truffle has eliminated the cost of metaprogramming so Rubyists can write idiomatic Ruby without having to worry about hidden performance trade-offs."
Speaker: Matthew Gaudet
What happens you have a virtual machine full of powerful technology and you start pulling out the language independent parts, with plans to open source these technologies?
You get the ability to experiment! This talk covers a set of experiments where IBM has tested out language-agnostic runtime technologies inside of CRuby, including a GC, JIT and more-- all while still running real Ruby applications, including Rails.
We want to share results from these experiments, talk about how we connected to CRuby, and discuss how this may one day become a part of everyone's CRuby.
Speakers: Terence Lee, zzak
Many projects rely on command-line tools to provide an efficient and powerful interface to work.
Building tools for everyone can be difficult, because of conflicting environment or OS.
How can we build command-line apps that work for everyone and still write Ruby?
This talk will discuss how to use mruby-cli to build cross-platform apps in Ruby.
Our goal will be to build a CLI app using mruby and produce a self-contained binary that can be shipped to end users.
Since mruby is designed to be embedded and statically compiled, it's also really good at packaging ruby code.
Speaker: Fernando Hamasaki de Amorim
Most applications written in Ruby are great, but also exists evil code applying WOP techniques. There are many workarounds in several programming languages, but in Ruby, when it happens, the proportion is bigger. It's very easy to write Ruby code with collateral damage.
You will see a collection of bad Ruby codes, with a description of how these codes affected negatively their applications and the solutions to fix and avoid them. Long classes, coupling, misapplication of OO, illegible code, tangled flows, naming issues and other things you can ever imagine are examples what you'll get.
Speaker: Masahiro Nagano / @kazeburo
Rhebok is High Performance Rack Handler/Web Server. 2x performance when compared against Unicorn.
In this presentation, I'll introduce the Rack interface spec, the architecture of widely used rack servers, and technology that supports performance of Rhebok includes prefork_engine, picohttpparser, system calls.
Speakers: Yehuda Katz, Godfrey Chan
Ruby is not the fastest language in the world, there is no doubt about it. This doesn't turn out to matter all that much – Ruby and its ecosystem has so much more to offer, making it a worthwhile tradeoff a lot of the times.
However, you might occasionally encounter workloads that are simply not suitable for Ruby. In this talk, we will explore building a native extension with Rust to speed up parts of Rails. (No prior experience with Rust required!) What does Rust has to offer in this scenario over plain-old C? Let's find out!
Science & Technology
Speaker: Laurent Sansonetti
In this presentation we will give a quick and gentle introduction to RubyMotion, a Ruby toolchain to write cross-platform apps for iOS and Android. Then, we will cover 3 of its latest features: Apple Watch, Apple TV and a cross-platform game engine. We will do live demos and coding.
[Due to copyright reasons, mute audio in some parts of the movie]
Speaker: Julian Cheal
Web apps are great and everything, but imagine using Ruby to fly drones and make them dance to the sounds of dubstep! Or to control disco lights and other robots! Sounds fun, right? In this talk, we will not only explore how we can write code to make this possible, but it will also be full of exciting, interactive (and possibly dangerous ;) ) demos!
Speaker: Ippei Obayashi
KMC, Kyoto university Microcomputer Club, a computer circle in Kyoto University, holds one day game programming camp for newcomers (undergraduate students interested in KMC and programming) in April and May to invite an enjoyable programming world.
As you know, Ruby is one of the best languages to learn programming itself and used in the camp to build a simple game within one day. This talk provides experiences and messages coming from the events, and explains the history of frameworks used in the event. This talk give you a hint to educate beginners.
Speaker: Franck Verrot
PostgreSQL 9.1 introduced Foreign Data Wrappers, as an implementation of SQL/MED foreign tables, to provide transparent access to external data. Restricted to being written in C, writing FDWs can be a hard task.
In this talk we will learn just enough of mruby's (the ISO-compliant version of Ruby) internals to understand how one can embed mruby in an external program (like PostgreSQL), and start writing Foreign Data Wrappers in Ruby.
Speaker: Kouhei Sutou
This talk describes about the history of testing framework in Ruby.
Ruby 2.2 bundles two testing frameworks. They are minitest and test-unit. Do you know why two testing frameworks are bundled? Do you know that test-unit was bundled and then removed from Ruby distribution? If you can't answer these questions and you're interested in testing framework, this talk will help you.
This talk describes about the history of bundled testing framework in Ruby and some major testing frameworks for Ruby in chronological order.
Speaker: Naohisa Goto
I'm using Fujitsu SPARC Enterprise server whose OS is Oracle (former Sun) Solaris 10. In Solaris, there is a number of minor differences from other major OS like Linux and Mac OS X, and a number of changes have been made to run Ruby (CRuby) without failure. I'd like to talk about these changes as a user of the Solaris OS.
The following topics will be included in this presentation.
Tips to build Ruby and other free software on Solaris
Recent changes to Ruby (CRuby) needed for Solaris
Bugs potentially affected to all platforms but revealed by running on Solaris
Speaker: KOSAKI Motohiro
Speaker: Masaki Matsushita
In this talk, I will present how to extend your Ruby code with Golang.
Since Go 1.5, you can build C compatible binaries by using buildmode c-shared/c-archive. This is a very exciting feature for rubyists.
First, I'd like to show you how to use Go code from Ruby with FFI and fiddle.
Then, I will talk about how to build gems with Golang.
Speaker: Yurie Yamane
Linuxの入っているハードウェアをあえてLinuxを使わないでTOPPERS EV3RT というRTOS を入れたり、bare metal の状態にしてmrubyを動かします。
今回の対象はLEGO Mindstorms EV3とraspberry pi。
Speaker: TAGOMORI "moris" Satoshi
This talk describes the architecture of data analytics platform service of Treasure Data, what we use Ruby/JRuby for and what we don't use Ruby for. We will discuss the many reasons, not only for productivity and performance.
Data analytics platform architecture is very far from well-known web service architecture. There are huge scale queues, workers, schedulers and distributed processing clusters, besides well-known parts like web application servers written in RoR and RDBMSs.
Speaker: SHIBATA Hiroshi / @
When you need to understand a new library or framework, you might try to invoke the test suite with "rake test" or "rake spec". CRuby also has a test suite like many libraries and frameworks, written in Ruby. But, It's different from typical ruby libraries. Therefore many Rubyists don't know how to run the CRuby test suite.
This is because CRuby's test suite has historical and complex structures. In this talk, I explain the details of the CRuby test suite and protips for CRuby's testing technology.
Speaker: Paolo Perrotta / @nusco
Refinements are cool. They are the biggest new language feature in Ruby 2. They help you avoid some of Ruby's most dangerous pitfalls. They make your code cleaner and safer.
Oh, and some people really hate them.
Are Refinements the best idea since blocks and modules, or a terrible mistake? Decide for yourself. I'll tell you the good, the bad and the ugly about refinements. At the end of this speech, you'll understand the trade-offs of this controversial feature, and know what all the fuss is about.
Speaker: Evan Phoenix
Speaker: Christophe Philemotte / @_toch
The news is everywhere: some weird disease makes the dead walking. We do not know yet if it is highly contagious. What should we do? What we do everyday: writing code.
This couldn't be a better moment to use an agent based model — a technique that simulates interactions between agents in a environment to understand their effects as a whole. For such, we'll visit its minimal Ruby implementation, address some common design, simulate the Zombie epidemic, visualize it, and test different survival strategies to hopefully find the best one.
We can code, we'll be prepared ... or not.
Speaker: Yutaka HARA / @yhara
Recently, functional programming with type inference has become popular, let's try to make it! But what if you don't know where to start...? For such a Rubyist, this talk will explain from basics of language implementation to the Hindley-Milner type inference. We can make a functional language!
Speaker: Josh Kalderimis / @joshk
Travis CI found itself growing a great SaaS product, when Enterprise users began unexpectedly asking to use our product on-premise. Our small team had to quickly understand:
The maintenance implications for different ways to package our app.
How to provide enterprise customers great support, despite the new constraints.
How to prioritize Enterprise-specific features.
This talk is the story of how we added an Enterprise offering to our existing hosted Continuous Integration service, the bumps we hit along the way, and what we would do differently now.
Speaker: Mayumi EMORI / @emorima
Thread in Ruby 1.8.6 often got stuck and I had to implement my own Thread monitoring framework. How is it improved in the latest release, Ruby 2.2.3? Now can we use an implementation that I couldn't use with 1.8.6 because of the broken Thread?
Does this happen to you?
Ruby on Rails seemed very cool to me! And Rubyists are always happy to build applications with it!
However, front-end development is becoming important today.
Then I found Opal, and my dream of writing Ruby on the front-end is possible!
Recently, React.js, a kind of Virtual DOM, has become very popular in the front-end community.
It's not only intended for front-end web, there is also ReactNative for other platforms too.
I think many Rubyists are still lost, so I created a Virtual DOM implementation in Ruby called Hyalite.
All right, Opal, Hyalite ... tools have been gathered. Let's build web applications on server-side and front-end with Ruby!