What we're about
Upcoming events (5)
What if the Ruby String library ‘reverse’ method or its underlying C implementation had a bug? What if it produced unexpected results with certain types of inputs? e.g. strings with unicode characters. How would you catch and fix such a bug? How would you explain the unexpected results?
The Ruby String library ‘reverse’ method is implemented in C. The debugging tools in this talk apply to Ruby programs, and help provide useful insights into the underlying C implementation.
2. Novelty and Originality
The ‘use unicode_normalize to address certain string reversal issues’ appears to be known to certain developers. The novel idea in this talk is the analysis of Ruby and C implementation to explain the problem and possible solutions.
Vishal started his career at Lucent Technologies (Bell Labs Innovations), where he used C/C++ to develop software for CDMA wireless communication systems. At The Boeing Company, he used Ruby/Rails to develop U.S. government intelligence community software. Vishal enjoys going to the beach and loves family vacations.
This talk presents a step-by-step approach to debugging Ruby programs by diving into their underlying C implementation. It uses a string with unicode characters to demonstrate the problem and provides insights into the reversal process by understanding their byte-level representation.
This talk starts with a high-level view of the Ruby String library ‘reverse’ method implementation. It introduces the idea of using a Virtual Machine (VM) to build Ruby from source. We learn about the Unicode standard and encoding fundamental principles. We explore the ‘unicode_normalize’ implementation and how it addresses ‘reverse’ method problems. Along the way, we use commands/tools like grep, chars, code_points, each_byte, printf and gdb to provide insight into Ruby library methods.
6. Bottom Line
This talk aims to improve confidence in understanding bugs and/or unexpected results in the current application language (e.g. Ruby) as well as the underlying (e.g. C) implementations. I hope to inspire the Ruby community to explore the internals of Ruby strings and provide recommendations for further exploration.
(all in Eastern Time zone)
- 5:30 Meeting start, welcome
- 5:40 First time attendees introductions, ice breaker
- 6:00 Speaker start
- 7:00 Jobs & Hiring Announcements