Ruby po japońsku. Relacja z RubyKaigi
Dziesiątego kwietnia wysiadam z pociągu na linii Tokio-Matsumoto. Stacja w górskim miasteczku w bardzo charakterystyczny sposób oznajmia podróżnym, dokąd właśnie dotarli. Dzisiaj ruch na dworcu jest znacznie większy niż zwykle. Niewykluczone, że może mieć z tym coś wspólnego wywieszony przy wyjściu baner.
Spis treści
RubyKaigi
RubyKaigi to jedna z najstarszych konferencji dotyczących Ruby. Powstała w 2006 roku i ściąga tysiące programistów Ruby z całego świata (chociaż w większości z Japonii, ale o tym za chwilę). Odbywa się za każdym razem w innym mieście i odwiedzając kolejne edycje, można zwiedzić sporą część kraju kwitnącej wiśni. Kaigi (会議) oznacza właśnie spotkanie lub konferencję.
Prezentacje oraz prelekcje trwają trzy dni i prezentowane są na wielu równoczesnych trackach. Dotyczą wszystkiego, co ma związek z Ruby, jednak z jednym małym zastrzeżeniem — Ruby on Rails jest tu tematem tabu i organizatorzy nie przyjmują prezentacji na temat tego frameworka. Dlaczego? Nie udało mi się ustalić jednej konkretnej przyczyny, ale same Railsy mają kilka, jeśli nie kilkanaście swoich dużych konferencji, a reszta tematów w środowisku Ruby jest traktowana raczej po macoszemu. Wydaje się więc, że prezentacje z RubyKaigi mogą być odskocznią od utartego schematu i pokazaniem, że w Ruby da się napisać coś więcej niż kolejną aplikację w Railsach na potrzeby startupu budującego MVP w miesiąc.
A co da się napisać? Na przykład:
- Silnik do gier oparty o Vulkan
- Rozszerzenie do Google Chrome w WASM
- Robota do trenowania Kickboxingu
Większa część prezentacji skupia się jednak na jeszcze bardziej niszowym temacie, jakim jest rozwój samego języka i jego ekosystemu. Możemy spotkać tutaj autorów Ruby i niektórych popularnych gemów, możemy porozmawiać z ludźmi utrzymującymi infrastrukturę np. RubyGems i dowiedzieć się, jak można samemu dołączyć do community.
Tematem dominującym w tym roku był zdecydowanie Ractor. Ruby nie jest dobrym językiem do programowania wielowątkowego. Uzyskanie współbieżności i izolacji danych na wątkach jest trudne, a wręcz niemożliwe. Matz wielokrotnie w wywiadach powtarzał, że żałuje dodania do Ruby wątków w obecnej formie i od kilku już lat próbuje zaadresować ten problem. Ractor jest modelem współbieżności actor-based i obchodzi problemy z wielowątkowością, udostępniając dla każdego wątku osobnego locka. Dane mogą być współdzielone tylko jeśli są immutable.
Minie jeszcze chwila, zanim projekty będą wykorzystywać ten mechanizm (chociaż Ractory są dostępne już od jakiegoś czasu), ale nawet będąc szeregowym programistą Ruby on Rails, nie twórcą gemów czy frameworków, skorzystamy na tym, otrzymując szybsze i lepiej skalowalne serwery aplikacji.
Było też kilka prezentacji o static type checking w Ruby. Temat również znany od kilku lat, ale ostatnio cieszący się szerszą adopcją. Type checking pojawiał się również na poprzedniej dostępnej dla zagranicznych gości RubyKaigi 2019. Soutaro Matsumoto, twórca Steep (narzędzia do sprawdzania typów) i formatu RBS, zamykał konferencję swoim keynotem. Jeśli odwiedzacie konferencje Ruby w Polsce, to mieliście go okazję spotkać na ostatniej edycji grill.rb we Wrocławiu.
Jeśli interesuje cię powyższy temat albo na przykład to, jak działa JIT w Ruby, ewentualnie w jaki sposób lintery parse’ują kod, to RubyKaigi jest zdecydowanie dla Ciebie. Oczywiście nie trzeba na nie jechać, prezentacje są udostepniane na YouTube, ale pytania autorom zdecydowanie warto zadać osobiście. Najlepszy track na każdej konferencji to przecież właśnie…
Hallway track
Hallway track — czyli nieoficjalny track korytarzowy, gdzie można porozmawiać zarówno z wystawiającymi się na konferencji firmami, przechadzającymi się tu i ówdzie prelegentami, jak i z innymi uczestnikami konferencji. To zazwyczaj — moim skromnym zdaniem — najciekawsza część konferencji. A sław tutaj jest co niemiara.
Aaron Patterson (znany szerzej jako tenderlove, twórca m.in. Nokogiri) przyniósł ze sobą manetkę skrzyni biegów do samochodu, którą oprogramował do sterowania VIMem. W przeddzień RubyKaigi odbywała się też mała konferencja dla miłośników mechanicznych klawiatur — KeebKaigi, w której również uczestniczył. Złośliwi mogliby powiedzieć, że organizatorzy RubyKaigi mieli dość dźwięku stukania mechanicznych klawiatur podczas swojej konferencji. Miałem okazję z Aaronem porozmawiać i zapytać go o kilka pull requestów do Ruby (i Railsów, chociaż o to nieco ciszej z uwagi na otoczenie 😉 ). Aaron jest niesamowicie aktywnym kontrybutorem w wielu projektach i był w stanie odpowiedzieć na większość pytań od ręki, a nawet zrobić review na miejscu i udzielić dobrego feedbacku.
Yukihiro Matsumoto (czyli Matz) to oczywiście człowiek-legenda. Matz od pewnego czasu ogranicza wyjazdy na europejskie konferencje, więc trudniej go spotkać osobiście. Jego prelekcja tyczyła się historii języka Ruby, który zbliża się już do trzydziestki. Była to głównie retrospekcja sukcesu, pokazanie, jak ważna była nie tylko technologia, ale też marketing i budowanie community. Matzowi zadałem kilka pytań odnośnie historii Ruby: jeden z konkursów na konferencji tyczył się „starożytnej” wersji Ruby —0.49, ale Matz nie znał odpowiedzi na pytania o tę wersję. Wspomniał o tym, że początki samego języka są dla niego już nieco mętną historią. Zapytałem też o jego pracę poza Ruby: sam chciałby mieć więcej czasu, żeby móc eksperymentować z innymi swoimi projektami. Matz dalej uwielbia języki, na jego GitHubie znajdziecie na przykład inny jego twór — język do strumieniowego przetwarzania danych streem. Tradycyjnie wspomniał też, że nigdy nie używał Railsów 😉
Maciej Mensfeld — z naszego lokalnego podwórka, autor Karafki oraz Mend Supply Chain Defender (dawniej Diffend.io). Maciej opowiadał o atakach supply chain, miał kilka ciekawych war stories o atakach na RubyGems i o tym, jak wygląda od kuchni obsługa zgłoszeń krytycznych błędów bezpieczeństwa w infrastrukturze OpenSource. Polecam jego prezentację, żeby uświadomić sobie, że spora część naszych projektów nadal przypomina odcinek XKCD o zależnościach w projektach.
Konferencja po japońsku
Japonia to kraj graczy (a także hazardzistów 😉 ), a RubyKaigi ten trend odzwierciedla. Większość stoisk sponsorów miała jakiś konkurs lub maszynę do losowania małej nagrody. Były też ogólnokonferencyjne zabawy, jak np. zbieranie pieczątek od wszystkich sponsorów oraz od wszystkich obecnych na konferencji autorów książek.
Pytania konkursowe w większości stoisk tyczyły się głównie egzotycznej składni lub różnic w wersjach Ruby.
Chcecie się sprawdzić? Oto przykładowe pytania:
Zagadka z hashami
Dla lepszej widoczności trzeba odpowiedzieć, co zwróci kawałek kodu:
irb> {nil:1}[nil] # Do wyboru: # nil # 1 # "" # Error
irb> p {nil: 1} # Do wyboru: # nil # {nil: 1} # {} # Error
irb> {1: 1} => Error irb> 1.tap(|o| o+=1).to.s => "1" irb> {}.tap{|h|h[1]=1}[1] # Do wyboru: # nil # 1 # {} # Error
Głosowanie odbywa się przez przyklejenie kropki pod odpowiedzią, nagród nie ma (za wyjątkiem drobnego upominku za samo zagłosowanie).
Pradawny Ruby
Co zwróci dany kawałek kodu w Ruby 0.49?
def foo print("foo") end def bar foo bar() exit()
Możliwe odpowiedzi:
- Syntax error
- Argument error
- Infinite loop
- nothing happens
- print „foo”, then exit
Nie podam wam odpowiedzi, jeśli ja się musiałem pomęczyć z all-ruby, żeby sprawdzić swoją odpowiedź, to wy też. 😉
Inne atrakcje
Dostępne też były lodówki otwierane za pomocą kodów QR (i publicznie dostępna Grafana, gdzie można było obserwować temperaturę lodówek i stan otwarcia ich drzwiczek). W środku od rana znajdowały się tam soki z jabłek z Matsumoto, wieczorem piwo z lokalnego browaru. Wszystko to sponsorował Cookpad, który chociaż sponsoruje praktycznie wszystko, co z Ruby i Railsami związane, nie jest popularny, ani nawet rozpoznawany w Polsce.
Od Japończyków dla Japończyków
Japonia przez ostatnie dwa lata była jeszcze bardziej odizolowanym krajem niż wcześniej. Pandemia odcisnęła swoje piętno. Na RubyKaigi 2019 angielski przewijał się tu i ówdzie, firmy były otwarte na rozmowy nawet z kandydatami, którzy nie władają biegle japońskim. W 2023 roku sytuacja wygląda inaczej i angielski niestety zanikł. Posiłkując się podstawowym japońskim, można się dogadać, ale trend otwierającej się na świat konferencji jakby trochę przygasł.
Widać też, że Japonia od dawna produkuje rzeczy na swój rynek. Yahoo Auctions przebija tam nadal eBay, a zamiast StackOverflow dominuje Qiita. Serio, nawet pytania do Google zadane po angielsku będąc w Japonii przekierują was najpewniej do Qiita. Sam język Ruby i jego bugtracker jeszcze kilka lat temu były dostępne głównie po japońsku, co drastycznie zawężało pulę dostępnych kontrybutorów. Jeśli chcecie pojechać w przyszłym roku na RubyKaigi (które odbędzie się na tropikalnej wyspie Okinawa, co będzie dodatkową atrakcją) polecam uzbroić się w Google Translate.
Niektóre prelekcje odbywają się w języku japońskim. Na szczęście organizatorzy zapewniają tłumaczenie zarówno w formie tekstowej, jak i dźwiękowej, używając słuchawek rozdawanych przy wejściu na konferencję. Tłumaczenia kilka lat temu pozostawiały wiele do życzenia, ale w tym roku były zaskakująco dobre i można było bez obaw posłuchać nawet bardzo technicznych prelekcji.
Japoński można też poćwiczyć podczas lunchu w lokalnej restauracji. W cenie biletu otrzymuje się kilka kuponów do wykorzystania w restauracjach na terenie miasta, co ma zachęcić do spróbowania lokalnej kuchni i zwiedzania okolicy.
Czy warto?
Czy warto jechać na RubyKaigi? Bilety na konferencję nie są drogie w porównaniu z innymi konferencjami w Europie. Koszty utrzymania w Japonii wbrew powszechnej opinii też nie są aż tak wysokie. Za dobry obiad można zapłacić więcej w Warszawie, niż w Matsumuto. Największym kosztem są bilety lotnicze oraz czas stracony na leczenie jet laga. Dodatkowo loty z Europy muszą omijać Rosję i Ukrainę z uwagi na wojnę w tej drugiej, co wydłuża przelot do piętnastu godzin.
Polecam połączyć wyjazd z urlopem i zwiedzaniem kraju. Japonii jako takiej reklamować nie trzeba, ale data konferencji przypada niedługo po hanami, kiedy turystów jest nieco mniej, więc można odhaczyć atrakcje turystyczne w mniejszym tłoku i bez wywindowanych cen za hotele. No i fotka z Matzem to zawsze dobry punkt w waszym CV, oto moja:
Do zobaczenia na RubyKaigi 2024!