Start...End time | Track name |
---|---|
02:00 - 03:00 UTC |
tomoya ishida
Lang: ja
Track: Large Hall
Writing Weird CodeRuby is a great language to write readable code, and also to write unreadable weird code. In this talk, I will demonstrate how fun it is, and talk about the large effect of writing lots of weird code. Memo |
04:30 - 05:00 UTC |
Masato Ohba
Lang: ja
Track: Small Hall
Unlocking Potential of Property Based Testing with RactorRuby's ease in test-writing and its rich ecosystem are widely acclaimed. However, traditional testing methods, relying on developer-created cases, often miss edge-case bugs. This talk introduces a testing method and a tool to generate numerous cases automatically, known as 'property based testing'. It's not only a transformative solution to detect bugs but also a nice use case of Ractor because the tool generates dozens to hundreds of cases that can run in parallel. I'll explore how Ractor enables efficient execution of property based testing through parallel processing. This combination promises faster, more comprehensive testing, reducing reliance on developer expertise for bug detection. This talk aims to unlock Ruby's full testing potential by highlighting the not-well-known test method. Memo |
05:10 - 05:40 UTC |
Hiroshi SHIBATA
Lang: ja
Track: Small Hall
Long journey of Ruby standard libraryRuby has a lot of standard libraries from Ruby 1.8. I promote them democratically with GitHub today via default and bundled gems. So, I'm working to extract them for Ruby 3.4 continuously and future versions. It's long journey for me. After that, some versions may suddenly happen `LoadError` at `require` when running `bundle exec` or `bin/rails`, for example `matrix` or `net-smtp`. We need to learn what's difference default/bundled gems with standard libraries. In this presentation, I will introduce what's the difficult to extract bundled gems from default gems and the details of the functionality that Ruby's `require` and `bundle exec` with default/bundled gems. You can learn how handle your issue about standard libraries. Memo |
05:50 - 06:20 UTC |
Shunsuke Mori (kokuyou)
Lang: ja
Track: Small Hall
Let's use LLMs from Ruby 〜 Refine RBS codes using LLM 〜Large Language Models (LLMs) have evolved rapidly over the past few years and there have already been many practical applications in a variety of fields. Though Python is recognized as a de facto standard language to use LLMs, we are Rubyists so we would like to explore how we use LLMs in the Ruby language. In this session, I will explain the basics of Large Language Models(LLMs), and then cover Langchain.rb as a tool to use LLMs from the Ruby language. The development of RBS Goose, which is a tool to refine RBS type signatures, is a good practical example. We’ll share how it works including prompt construction, as well as the tips for LLMs development and our evaluation of its performance, including accuracy and speed, at the combination of various prompts, Few-Shot examples, and LLMs. Memo |
07:00 - 07:30 UTC |
Mari Imaizumi
Lang: ja
Track: Small Hall
Exploring Reline: Enhancing Command Line UsabilityReline is a pure Ruby implementation of GNU Readline; GNU Readline allows you to write configuration in `.inputrc`, and Reline reads this configuration file and sets key bindings. However, there are many things that GNU Readline can do that Reline cannot. This session will introduce those features and talk about their implementation in Reline. Memo |
07:40 - 08:10 UTC |
Koichi Sasada
Lang: en
Track: Large Hall
Ractor Enhancements, 2024This talk presents recent updates to Ractor, which enables parallel and concurrent programming on Ruby. Ractor still lacks fundamental features. For example, we cannot use “require” method and “timeout” methods on non-main Ractors because of synchronization and implementation issues. We will discuss such problems and how to solve them. From a performance point of view, we have introduced the M:N thread scheduler in Ruby 3.3 and we will show the performance analysis with recent improvements. Memo |
02:00 - 03:00
Ruby is a great language to write readable code, and also to write unreadable weird code. In this talk, I will demonstrate how fun it is, and talk about the large effect of writing lots of weird code.
04:30 - 05:00
Ruby's ease in test-writing and its rich ecosystem are widely acclaimed. However, traditional testing methods, relying on developer-created cases, often miss edge-case bugs. This talk introduces a testing method and a tool to generate numerous cases automatically, known as 'property based testing'. It's not only a transformative solution to detect bugs but also a nice use case of Ractor because the tool generates dozens to hundreds of cases that can run in parallel. I'll explore how Ractor enables efficient execution of property based testing through parallel processing. This combination promises faster, more comprehensive testing, reducing reliance on developer expertise for bug detection. This talk aims to unlock Ruby's full testing potential by highlighting the not-well-known test method.
05:10 - 05:40
Ruby has a lot of standard libraries from Ruby 1.8. I promote them democratically with GitHub today via default and bundled gems. So, I'm working to extract them for Ruby 3.4 continuously and future versions. It's long journey for me. After that, some versions may suddenly happen `LoadError` at `require` when running `bundle exec` or `bin/rails`, for example `matrix` or `net-smtp`. We need to learn what's difference default/bundled gems with standard libraries. In this presentation, I will introduce what's the difficult to extract bundled gems from default gems and the details of the functionality that Ruby's `require` and `bundle exec` with default/bundled gems. You can learn how handle your issue about standard libraries.
05:50 - 06:20
Large Language Models (LLMs) have evolved rapidly over the past few years and there have already been many practical applications in a variety of fields. Though Python is recognized as a de facto standard language to use LLMs, we are Rubyists so we would like to explore how we use LLMs in the Ruby language. In this session, I will explain the basics of Large Language Models(LLMs), and then cover Langchain.rb as a tool to use LLMs from the Ruby language. The development of RBS Goose, which is a tool to refine RBS type signatures, is a good practical example. We’ll share how it works including prompt construction, as well as the tips for LLMs development and our evaluation of its performance, including accuracy and speed, at the combination of various prompts, Few-Shot examples, and LLMs.
07:00 - 07:30
Reline is a pure Ruby implementation of GNU Readline; GNU Readline allows you to write configuration in `.inputrc`, and Reline reads this configuration file and sets key bindings. However, there are many things that GNU Readline can do that Reline cannot. This session will introduce those features and talk about their implementation in Reline.
07:40 - 08:10
This talk presents recent updates to Ractor, which enables parallel and concurrent programming on Ruby. Ractor still lacks fundamental features. For example, we cannot use “require” method and “timeout” methods on non-main Ractors because of synchronization and implementation issues. We will discuss such problems and how to solve them. From a performance point of view, we have introduced the M:N thread scheduler in Ruby 3.3 and we will show the performance analysis with recent improvements.
Start...End time | Track name |
---|---|
01:20 - 02:20 UTC |
Samuel Williams
Lang: en
Track: Large Hall
Leveraging Falcon and Rails for Real-Time InteractivityIn the rapidly evolving landscape of web-based gaming, Ruby's potential for building dynamic, real-time interactive experiences is often underrated. This talk aims to shatter this misconception by demonstrating the powerful synergy between Falcon, an asynchronous web server, and Ruby on Rails, the stalwart of web application frameworks. We will embark on a journey to design and implement a real-time interactive game from the ground up, showcasing how Ruby, when coupled with Falcon's concurrency capabilities, can be a formidable tool in the gaming domain. Key focus areas will include leveraging Falcon's event-driven architecture for managing high-throughput, low-latency game data, and integrating it seamlessly with Rails to create an engaging user experience. Attendees will gain insights into the nuances of real-time web communication in Ruby, efficient handling of WebSockets, and the application of Rails' robust features in a gaming context. Memo |
02:30 - 03:00 UTC |
Masataka Kuwabara
Lang: en
Track: Large Studio
Community-driven RBS repositoryOne of the most significant problems of RBS was managing libraries' RBS files. Libraries' RBS files are important for RBS to be widely used. I've developed an `rbs collection` for libraries in recent years. And it improved libraries' RBS management for RBS users. See my talk at [RubyKaigi Takeout 2021](https://rubykaigi.org/2021-takeout/presentations/p_ck_.html). However, there was still a problem if the users wanted to contribute RBS by writing libraries RBS. Now, the third-party RBS file repository is based on a community-driven system. Anyone can contribute to the repository smoothly. I'll describe how I improved this problem, and request you open PRs to the repository! Memo |
04:30 - 05:00 UTC |
Soutaro Matsumoto
Lang: en
Track: Large Hall
Embedding it into Ruby codeOne of the fundamental design principles of RBS is its separation from Ruby code. It's a different language. The type definitions are written in separate files. In this talk, we will review the design, discuss the pros and cons, and share the lessons learned. Yeah..., I mean, I'm working for embedding RBS type declarations into Ruby code. Memo |
05:10 - 05:40 UTC |
Masaki Hara
Lang: en
Track: Large Studio
Getting along with YAML comments with Psychpsych-comments allows you to manipulate YAML documents without discarding comments. This talk involves how we tried to automate YAML authoring, how we have gone wrong by (ab)using YAML tags for annotations, and how we solved the problem by bringing this library into being. Audiences will get a grasp of YAML's depths and know how a small library helps automation. Memo |
05:50 - 06:20 UTC |
Koichi ITO
Lang: ja
Track: Small Hall
RuboCop: LSP and PrismDo you remember the "Smarter, Faster" concept for Ruby 4.0? RuboCop now includes the built-in LSP as an experimental feature. This feature was essential to meet modern developer experience demands. Ruby has some LSP implementations and among them, I will focus on the "Smarter, Faster" concept that RuboCop, the de facto standard Linter and Formatter, is aiming for. Currently, RuboCop uses the Parser gem for Ruby syntax parsing. In addition to this, there is a plan to introduce the Prism Ruby parser as an experimental option. I will also talk about their purposes and designs. RuboCop will enhance your developer experience by incorporating its built-in LSP. You can receive RuboCop in its current state and future vision. Memo |
08:20 - 09:20 UTC |
|
01:20 - 02:20
In the rapidly evolving landscape of web-based gaming, Ruby's potential for building dynamic, real-time interactive experiences is often underrated. This talk aims to shatter this misconception by demonstrating the powerful synergy between Falcon, an asynchronous web server, and Ruby on Rails, the stalwart of web application frameworks. We will embark on a journey to design and implement a real-time interactive game from the ground up, showcasing how Ruby, when coupled with Falcon's concurrency capabilities, can be a formidable tool in the gaming domain. Key focus areas will include leveraging Falcon's event-driven architecture for managing high-throughput, low-latency game data, and integrating it seamlessly with Rails to create an engaging user experience. Attendees will gain insights into the nuances of real-time web communication in Ruby, efficient handling of WebSockets, and the application of Rails' robust features in a gaming context.
02:30 - 03:00
One of the most significant problems of RBS was managing libraries' RBS files. Libraries' RBS files are important for RBS to be widely used. I've developed an `rbs collection` for libraries in recent years. And it improved libraries' RBS management for RBS users. See my talk at [RubyKaigi Takeout 2021](https://rubykaigi.org/2021-takeout/presentations/p_ck_.html). However, there was still a problem if the users wanted to contribute RBS by writing libraries RBS. Now, the third-party RBS file repository is based on a community-driven system. Anyone can contribute to the repository smoothly. I'll describe how I improved this problem, and request you open PRs to the repository!
04:30 - 05:00
One of the fundamental design principles of RBS is its separation from Ruby code. It's a different language. The type definitions are written in separate files. In this talk, we will review the design, discuss the pros and cons, and share the lessons learned. Yeah..., I mean, I'm working for embedding RBS type declarations into Ruby code.
05:10 - 05:40
psych-comments allows you to manipulate YAML documents without discarding comments. This talk involves how we tried to automate YAML authoring, how we have gone wrong by (ab)using YAML tags for annotations, and how we solved the problem by bringing this library into being. Audiences will get a grasp of YAML's depths and know how a small library helps automation.
05:50 - 06:20
Do you remember the "Smarter, Faster" concept for Ruby 4.0? RuboCop now includes the built-in LSP as an experimental feature. This feature was essential to meet modern developer experience demands. Ruby has some LSP implementations and among them, I will focus on the "Smarter, Faster" concept that RuboCop, the de facto standard Linter and Formatter, is aiming for. Currently, RuboCop uses the Parser gem for Ruby syntax parsing. In addition to this, there is a plan to introduce the Prism Ruby parser as an experimental option. I will also talk about their purposes and designs. RuboCop will enhance your developer experience by incorporating its built-in LSP. You can receive RuboCop in its current state and future vision.
08:20 - 09:20
Start...End time | Track name |
---|---|
01:10 - 02:20 UTC |
CRuby Committers
Lang: ja
Track: Large Hall
Ruby Committers and the WorldCRuby committers on stage! Memo |
02:30 - 03:00 UTC |
Takashi Kokubun
Lang: en
Track: Large Hall
YJIT Makes Rails 1.7x FasterHave you enabled Ruby 3.3 YJIT? You’re using a much slower Ruby if you haven’t. YJIT makes Railsbench 1.7x faster. In production, YJIT presents a 17% speedup to millions of requests per second at Shopify. Why does YJIT make Ruby so much faster? In this talk, you’ll explore the latest YJIT optimizations that have a huge impact on your application’s performance. Once you understand what you're missing out on, you can't help but enable YJIT. Memo |
04:30 - 05:00 UTC |
Mike McQuaid
Lang: en
Track: Small Hall
Using "modern" Ruby to build a better, faster HomebrewHomebrew is a popular macOS package manager in the Ruby community and is also written in Ruby. When it was first created, it used the (fairly old) Ruby supplied by macOS and, until recently, has been tied to this version. Learn in this talk how and why Homebrew now ships its own Ruby to all users, modern Ruby tooling we now rely heavily on (e.g. Sorbet, RuboCop, etc.), how Ruby versions and our love of ActiveSupport have affected the performance of Homebrew and what we have planned in future to make Homebrew better, faster and more Ruby-like. Memo |
05:10 - 05:40 UTC |
Masatoshi SEKI
Lang: ja
Track: Large Hall
ERB, ancient and futureERB was released in 1999. 25th anniversary. In this talk, I will explain what I was thinking when designing the ERB API 25 years ago. I will also explain how supports block methods. Memo |
05:50 - 06:20 UTC |
Vladimir Dementyev
Lang: en
Track: Large Studio
Ruby Mixology 101: adding shots of PHP, Elixir, and moreHow often have you heard, “I wish Ruby had X from Y”? Developers tend to desire features they love in one language to be available in another. That’s why, for example, we got pattern matching and shorthand Hashes added to Ruby. What’s next? What will inspire the next Ruby syntax addition? Crystal? Elixir? Zig (have you heard about it)? PHP (why not)? Let’s embark on a fantastic journey of exploring syntax features from other languages, such as method overloading or null coalescing assignment, and how to port them to Ruby. But why is it fantastic? I want to turn fantasy into reality and show how we can experiment with Ruby syntax additions without waiting for official releases with experimental features. Memo |
07:00 - 07:30 UTC |
Shigeru Nakajima
Lang: ja
Track: Small Hall
Using Ruby in the browser is wonderful.Ruby 3.2 released ruby.wasm, allowing Ruby to run in the browser as WebAssembly. Several features were missing for comfortable programming. For example, require_relative to load other scripts, the new method to initialize JavaScript objects, and some converters between Ruby and JavaScript. I wrote three Ruby programs for the browser, found the missing features, and implemented them. I will introduce my work on ruby.wasm and talk a bit about features I will add in the future. Those who listen to this talk will feel that using Ruby in the browser is wonderful. Memo |
07:40 - 08:40 UTC |
|
01:10 - 02:20
CRuby committers on stage!
02:30 - 03:00
Have you enabled Ruby 3.3 YJIT? You’re using a much slower Ruby if you haven’t. YJIT makes Railsbench 1.7x faster. In production, YJIT presents a 17% speedup to millions of requests per second at Shopify. Why does YJIT make Ruby so much faster? In this talk, you’ll explore the latest YJIT optimizations that have a huge impact on your application’s performance. Once you understand what you're missing out on, you can't help but enable YJIT.
04:30 - 05:00
Homebrew is a popular macOS package manager in the Ruby community and is also written in Ruby. When it was first created, it used the (fairly old) Ruby supplied by macOS and, until recently, has been tied to this version. Learn in this talk how and why Homebrew now ships its own Ruby to all users, modern Ruby tooling we now rely heavily on (e.g. Sorbet, RuboCop, etc.), how Ruby versions and our love of ActiveSupport have affected the performance of Homebrew and what we have planned in future to make Homebrew better, faster and more Ruby-like.
05:10 - 05:40
ERB was released in 1999. 25th anniversary. In this talk, I will explain what I was thinking when designing the ERB API 25 years ago. I will also explain how supports block methods.
05:50 - 06:20
How often have you heard, “I wish Ruby had X from Y”? Developers tend to desire features they love in one language to be available in another. That’s why, for example, we got pattern matching and shorthand Hashes added to Ruby. What’s next? What will inspire the next Ruby syntax addition? Crystal? Elixir? Zig (have you heard about it)? PHP (why not)? Let’s embark on a fantastic journey of exploring syntax features from other languages, such as method overloading or null coalescing assignment, and how to port them to Ruby. But why is it fantastic? I want to turn fantasy into reality and show how we can experiment with Ruby syntax additions without waiting for official releases with experimental features.
07:00 - 07:30
Ruby 3.2 released ruby.wasm, allowing Ruby to run in the browser as WebAssembly. Several features were missing for comfortable programming. For example, require_relative to load other scripts, the new method to initialize JavaScript objects, and some converters between Ruby and JavaScript. I wrote three Ruby programs for the browser, found the missing features, and implemented them. I will introduce my work on ruby.wasm and talk a bit about features I will add in the future. Those who listen to this talk will feel that using Ruby in the browser is wonderful.
07:40 - 08:40