July 26 - 27, 2019 @Taipei
CHANG YUNG-FA FOUNDATION International Convention Center, Taipei
All Session Recordings are Uploaded!
Aug 11, 2019
We've uploaded all recordings to our Youtube channel in the playlist: https://ubin.io/kVg4cG .
The URL of intepretation service has been released!
Jul 26, 2019
We offer interpretation service and have just opened at: https://rubyconftw2019.auxala.com , open the URL on your smartphone browser and listen from your earphone!
The subjectof Aaron's keynote has been changed!
Jul 26, 2019
The subject of Aaron's keynote has been changed to "Compacting GC for MRI", check it!
Matz's session has been published!
Jun 26, 2019
The details of Matz's keynote have been released, check it out!
After Hack 2019 Event Released!
Jun 26, 2019
We've just released the After Hack event at: https://ubin.io/zyQR5j, this is a kind of Hackathon meetup on the day just after the conference, check it out!
議程時序調整 / Keynote Schedule Adjustment
Jun 17, 2019
基於講者行程，我們對調了 @c9s 與 @tenderlove 議程的時間順序，請您參照最新議程表 / Due to speaker's request, we have exchanged the time between @c9s and @tenderlove, you can find the newest schedule table on the Schedule section.
徵稿與徵求贊助 / Calling for Speaker and Sponsorship
Feb 20, 2019
今年的 RubyConf Taiwan 將在 7 月 26、27 日於張榮發基金會國際會議中心舉辦，目前正在徵稿與徵求贊助中！
RubyConf Taiwan 2019 will be at CHANG YUNG-FA FOUNDATION International Convention Center between 26 and 27th July 2019!
Call For Paper：https://cfp.rubyconf.tw/activities/2019
Brief introduction of Ruby3 and further.
Language-based virtual machines were designed and implemented from different backgrounds, concepts and thinking.
In this talk, we will peek into the implementation of some language VMs (especially CRuby) to understand the complex internal parts.
Modern servers are capable of supporting millions of clients, both in terms of requests per second, and simultaneous connections. However, unless scalability is a priority, it can be very difficult to utilise the available hardware efficiently. Overheads in the application code, frameworks and operating system can act as force multipliers which increase memory pressure, latency and resource utilisation. We discuss the challenges encountered when scaling Ruby to one million concurrent WebSocket connections, and investigate the changes required to make it possible.
In this talk we will cover an implementation for a compacting GC in MRI. MRI's implementation presents unique challenges for implementing a compacting GC. In this talk, we will cover compactor implementation and algorithms, challenges presented by MRI's implementation, compaction reference verification, and results of compactor benchmarks.
In applications that persist data, getting the current state of the system is trivial. But often the question is not only where are we now, but how did we get here? This talk is a jargon-free introduction to the concept of event sourcing, using a Ruby application as an example.
Rails 6 is shaping to be one of the biggest releases in some time for Rails. With tons of new stuff being added like Action Mailbox, Action Text, Multiple DBs support, Parallel Testing, Zietwerk, Webpacker as a default and more!
Lets take a look at all these exciting new things and how they improve your existing applications as well as how you can start using the new frameworks for different use cases in your applications.
While most of Rails has evolved over time, the view layer hasn’t changed much. At GitHub, we are incorporating the lessons of the last decade into a new paradigm: components. This approach has enabled us to leverage traditional object-oriented techniques to test our views in isolation, avoid side-effects, refactor with confidence, and perhaps most importantly, make our views first-class citizens in Rails.
I did merge Bundler into Ruby core repository and shipped bundler as the standard library on Ruby 2.6. It helps to a preparation of the fresh Ruby install and easy to use gem and bundle commands.
I'm going to show the features of Bundler and RubyGems and the integration plan of RubyGems and Bundler. Also, I will show the issues of the current status. You can resolve them after my talk.
As all Interpreted Programming Languages, Ruby projects' source code can be easily viewed in distribution. If your project supports self-hosted deployment, it may be hard to protect your copyrights. This talk would summarize existing methods, and tries to introduce some tricks in protecting your copyrights.
在 Ruby 中我們經常的會使用
#each 來遍歷陣列或者一些物件，不過我們卻很少思考他是怎麼運作的。尤其是在仔細探索之後，會發現 Ruby 的迭代器跟其他我們熟悉的語言有所不同。而且，在比較新版本的 Ruby 中還提供了
這些特性到底是怎麼運作的，我們是否可以用 Ruby 將其實作呢？讓我們從閱讀 Ruby 原始碼的過程中，一步步的了解這個我們最常使用的方法。
We often use #each to loop through array and friends in Ruby, but we seldom think about how it actually works. Ruby's iterator is quite different compared with other languages, for instance we have uncommon methods like #lazy. How exactly do they work and can we implement them in Ruby? Let's dive in Ruby source code and find out.
We know observing performance is tedious and tiresome. But what if we continue to write codes that poison the repo and later become legacy which somehow results in software regression? Because of the situation like this, we all want the code itself to be readable, explainable and performant by default, so others are able to benefit from reading it and leaning from the codebase.
By giving some real world examples, I hope it will help programmers to clearly understand the step by step procedure to structure their codes with more conventional ways of approaching modern software principles. Bringing the happiness to yourself, and also to others.
Cast your mind back to the year 1995. Gansta's Paradise is the top hit of the year. Friends is the hottest show on TV.
And just days after I turn nine, Matz releases Ruby publicly for the first time.
In this talk I go back to Ruby 0.95 and see what it takes to get it running on modern hardware.
JRuby is the fastest and most scalable way to run web applications built with Ruby or Rails. This past year we've continued work on better database support, more Ruby optimizations, and tighter integration with recent JDK releases. In this talk, I'll cover:
隨著 Rails 專案成長到一定規模，需要處理的商業邏輯也越來越複雜時，如果還是使用 Rails 原先的 MVC 架構或其提倡的一些模式，看著日漸膨脹的 model ，而同一時間，排山倒海的 validation / callback 拆分的需求不斷襲來、頁面顯示邏輯有越來越多的情境時，團隊很有機會遇到進退維谷的情境。
因此，想跟各位分享團隊在應用 Trailblazer 到 Rails 專案兩年多來的經驗，它所帶來的好處、地雷，以及團隊的成果與專案風貌的改變。在這個分享裡，會有 Trailblazer 框架簡介與相關主要幾個組成的說明，跟團隊選用它的理由，以及到目前為止導入過程遇到的問題與經驗分享，最後談談選用任何技術框架解決問題時，可能會為個人或團隊帶來的思維改變。
- What is Trailblazer really?
- Why we have Trailblazer in our project?
- Experience about adapting Trailblazer to our system
- Beyond Trailblazer
We have been working on a project to provide an option to type checker for Ruby3. The primary goal of the project had been to develop a type checker, but we finally found that the development of type checker is insufficient. We have to define a language to write type definition and a protocol to ship gems with their type definitions. We should provide everything users will need to start type checking.
In this talk, I will explain the overview of the project. I also will introduce my type checker called Steep and let you know how it can improve your Ruby programming experience.
Writing performant code is hard. Writing performant ruby code that does lots of stuff is really hard. CocoaPods got to be pretty slow “at scale”, and this is the story of how we made our pod install times bearable again.
Ruby/Rails 這十幾年的發展，已累積不少好用的開發模型套件，諸如 Model, Value, Dispatch, Form, Presenter, Decorator, Validator, Job, Mailer, Uploader, Service, Spec, Auth, Police, Audit, Deploy 等，要將這些技巧融入後端程式，並銜接前端應用的需求，需要有彈性的配套，方便開發者應付隕石墜落式的開發需求。
此次將以後端 Ruby/Rails 為主軸，討論如何利用現有的套件，或自行開發的模組，架構出符合自己習慣的前後端整合開發配套。
This talk will tell how to use gems and self crafted modules to assemble a rails application suitable for frontend/backend separated development.
Kubernetes is becoming the new standard of infra and the emerging cloud platform GCP has integrated it as its powerful GKE.
When a Rails app comes to GKE and GCP, we need to have different approaches for deploying, running and observing it from what we used to.
The sharing will cover what we went from the VM fashion to the current GKE setup, and also the good and the challenge to run on GCP.
The serverless framework is very popular for the last 5 years. AWS Lambda is the most important service in the Serverless framework.
AWS Lambda supports Ruby runtime on November 29, 2018. Now we can develop AWS lambda with Ruby. But what situation should we use AWS Lambda?
The key point in this talk is "Why we choose AWS Lambda as a solution on a large-scale system?".
The first question is "What are pain points when we want to implement a new feature on a large-scale system?".
And then let's think about "How AWS Lambda solve these pain points?".
I will share some experiences about developing features with AWS Lambda. Discussing what situation should we use AWS Lambda.
Here’s what you will learn:
- What is AWS Lambda?
- What is the serverless framework?
- What is event-driven programming?
- What are pain points when we develop features on large-scale system?
- How AWS Lambda solves these pain points?
- How to develop AWS Lambda with ruby?
無伺服器架構是最近幾年非常熱門的話題，同時也是 AWS 極力推廣的重點之一，而 AWS lambda 是實現無伺服器架構最重要的一環。
AWS Lambda 在去年的 11 月底宣布支援 Ruby，現在我們可以用 Ruby 來開發了，但是在怎麼樣的場景之下我們該使用 AWS Lambda 呢？
今天探討的軸心為「為什麼在大型系統中我們選擇使用 AWS Lambda 作為解決方案？」 從「大型架構會遇到哪些開發上的困難點」，引出「AWS Lambda 如何解決這些難點」。
接著分享使用 AWS Lambda 實際開發經驗。綜合評估 AWS Lambda 的優缺點，判斷 AWS Lambda 是不是值得使用。
- AWS Lambda 是什麼東西？
- AWS Lambda 如何解決難點？
- 如何開發 AWS Lambda？
- 開發 AWS Lambda 時需要注意哪些事項。
Debugging occupies a large part of our development time. If only we could debug faster and more comfortably, our coding time would be more happier.
In this talk, I'll introduce Ruby's deep functions for example TracePoint, AST, DTrace adopter and others, and talk about how to make great power for debugging applications from them. And I also talk about some gems using the techniques that I've published.
Calculating gradient or differential is a very common task when working in Math heavy field like Machine Learning. But deriving gradient by hand is time-consuming and error-prone. Automatic Differentiation(AD) can calculate gradient of arbitrary function automatically. AD is efficient(for human) and correct(without human error).
Autodiff (johnlinvc/autodiff) brings AD to Ruby. Let's explore the magical world of Automatic Differentiation.
I would like to introduce a new library “Charty” for visualization in Ruby.
I will talk about real-world use cases and how Charty can solve them.
In our EC service called "Cookpad Mart", we develop Ruby x IoT system which not just works but works with reliability.
By the way, do you cook? Is it easy to get very fresh meats, fishes or vegetables around your home? Cookpad Mart makes it possible for customers to purchase fresh foods directly from farmers, meat shops and fish stores. We deliver ordered foods to pick-up points near your home, so you can pick them up anytime you like, without waiting for the delivery at your home or paying delivery fees.
To deliver fresh foods in the day of orders, we built a new distribution system consisting of several IoT devices: label printing devices, temperature sensors, location sensors and label readers.
In this talk, I explain our development of the label printing system. We set up label printing devices at all sellers’ shop and print labels for each food every day. We have to print the labels without any failures because they are for sellers, deliverers and customers to sort or to pick up foods, but it is difficult to monitor and to control many such edge devices like printers. Then, we solved it with a simple idea. I will talk about how to make the label printers reliable with Ruby and IoT technology.
What if you could use mruby to develop your own Dreamcast games? Well, now you can!
I have developed and released an "mruby on Dreamcast" environment and a simple game for it (in mruby, of course).
It is still at an ealry stage, but you can write simple games with it.
As I am no expert in C, mruby, or Dreamcast programming, I encounterd problems.
Those problems included, but were not limited to:
* Dreamcast library and mruby build errors
* Having no easy way of getting the binary to run on the hardware that gives me access to debug print statements
* A lot of information being obscure and hard to find, over the years
In this presentation, I would like to introduce you to developing mruby programs on Dreamcast, as well as share my story on how I solved and worked around problems.
I will try to get you interested in mruby and development on old game consoles, as well as give you some insight into what might happen if you attempt to revive an old platform for use with modern languages.
We offer Simultaneous Interpretation Service (Mandarin to English) on all Mandarin sessions.
July 26, 2019
18:30 - 21:30