One of the great things about the Ruby programming language is its diverse community. Self-organized user groups, events and conferences have sprouted up in countries and cities around the world. In Japan, the home of Ruby, there are Rubyist meetups happening many times every day, with many well-known gatherings such as Asakusa.rb clustered in Tokyo.
That being said, with notable exceptions such as the Tokyo Rubyist Meetup, most of the gatherings in Japan are held in Japanese for a predominantly local audience. When these local Ruby gatherings do occasionally feature international participants, these participants tend to be (short-term) visitors to Japan, and so do not typically become regular members.
At Degica we wanted to start a local Rubyist meetup in Tokyo which (among other things) has a more consistently diverse membership. We also wanted to diversify the focus of the meetup, using the Ruby “community spirit” as a springboard for discussing a broader set of topics beyond Ruby itself (other programming languages, technology, and anything related).
Thus was born Kichijoji.rb. Together with Kray.jp, another company of Rubyists with offices nearby, we decided to launch a new Rubyist meetup in Kichijoji. Kichijoji is a popular area in the west of Tokyo, well-known among Japanese for its reputation as the place most Tokyoites wished they lived.
For the venue, we looked for a place with a cozy atmosphere, space for about 20 people, a location close to the station, and a reasonable price, and we found all those things and more in PicoPico Cafe. The cafe also happens to be the headquarters of Lexaloffle, the company behind Voxatron, whose creator Joseph White is creating the future of video games.
With our venue set, we were ready to hold our first meetup, which we did on March 11th, to great turnout. For the first gathering we had three speakers plus a short intro by myself introducing the event.
Data Encryption with Amazon KMS
Kazunori Kajihiro (@k2nr) started with a talk about Data Encryption with Amazon KMS. The talk focused on one way to satisfy the strict PCI DSS v3 Payment Card Industry Data Security Standard when credit card information is stored in an application.
@k2nr introduced an approach whereby card data is encrypted with data-encrypting keys, which are themselves encrypted using Amazon’s Key Management System and stored (encrypted) in the database. When decrypting, a separate billing server fetches the encrypted data-encrypting key from the DB and decrypts it using KMS’s
decrypt API. Encrypting the data keys and storing them outside of the main application server means that even an attacker who gained access to that server would not be able to access the encrypted card data.
Masahiro Saito (@camelmasa) introduced the audience to Hound CI, a tool developed at Thoughtbot, and how we use it at Degica to maintain coding style across projects on Github. Hound CI comments on pull requests in GitHub pull requests, enforcing stylistic rules that can be configured.
There are two ways to use Hound CI, one is to use it as a service, for $12/month. The code is open source, however, so if you want you can also host it yourself. Hosting Hound CI yourself has the advantage that you can customize the rules applied to different repositories, however there is one gotcha @camelmasa mentioned: you need to disable the Stripe payment page by installing the hound_breeder gem.
A lot of questions after @camelmasa’s talk focused on how to decide on style rules to apply to different projects. He mentioned that it is much easier to introduce Hound CI to a new project than it is to suddenly apply it to an existing codebase; in the latter case, he recommended introducing loose rules, and slowly make them stricter with feedback from the group.
Taku Nakajima (@essa) spoke last about ngx_mruby, a fast, memory-efficient web server extension for nginx using mruby, and an alternative to extensions such as mod_lua. @essa explained that mruby only includes a small subset of Ruby, so you cannot use common commands such as
require to import dependencies, but instead have to compile them beforehand.
He described a use case where nginx adds a label to the html of a Rails application running in different environments (“staging”/”staged”), which due to implementation details of the server configuration is not possible for the application to do itself.
ngx_mruby provides a simple way to get the job done.
We plan to hold Kichijoji.rb meetups regularly every second Wednesday of the month, which means the next one will be held on Wednesday, April 8th. We will be announcing the event soon on Doorkeeper, and already have a bunch of interesting talks scheduled, don’t miss it! Make sure to join the join the community to receive regular updates about upcoming events. If you would be interested in giving a short 20 minute talk yourself, please ping us on Twitter with your idea.