Podcasts about RubyKaigi

  • 29PODCASTS
  • 91EPISODES
  • 52mAVG DURATION
  • 1MONTHLY NEW EPISODE
  • May 4, 2025LATEST
RubyKaigi

POPULARITY

20172018201920202021202220232024


Best podcasts about RubyKaigi

Latest podcast episodes about RubyKaigi

Yarukinai.fm
272. 一番好きな妖精

Yarukinai.fm

Play Episode Listen Later May 4, 2025 59:14


話したこと Nintendo Switch 2 公式サイト マリオカート8 デラックス 公式 鳥類弁護士の事件簿 小3の壁・9歳の壁とは?学童問題や勉強のつまずきが増える時期の乗り越え方 - リアルミーキャリア 『バカの壁』 養老孟司 新潮社 The Wall 村上春樹『街とその不確かな壁』特設サイト 新潮社 RubyKaigi 2025 - RubyKaigi 2025 ぷちきゅあ くるるん サンリオ San-xネット 奥村優子 - allcinema 機動戦士Gundam GQuuuuuuX(ジークアクス) 公式サイト Qi (ワイヤレス給電) - Wikipedia UGREEN MagFlow RELAX E01 Apple Watch Ultra 2 公式 チープとは名ばかり! 高見え必至のチープカシオ27本をセレクション - 価格.comマガジン Fitbit と Google AI のランニング インサイトを搭載した Google Pixel Watch 3 CIO Mate Magnet Stand エレコム マグネットパッド MAGKEEP NEEWER マグネット式スマホ三脚マウントアダプター iPhoneケースのMagSafe対応化 LG Smart Monitor Swing Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 会社員 須貝(sugaishun) 会社員

Yarukinai.fm
270. サブスクなに登録したか忘れちゃう

Yarukinai.fm

Play Episode Listen Later Apr 20, 2025 62:53


話したこと opトーク RubyKaigi 2025 公式サイト 松山市公式観光情報サイト 海苔弁専門店「一のや」公式サイト 高級海苔弁ブーム解説(テレ朝news) 「1000円のり弁」を食べてみたレビュー(ロケットニュース24) オレンジジュース先物、四半期ベースで記録的下落の方向-需要低迷 - Bloomberg 価格高騰で日本から消えかけていた「オレンジジュース」に復活の兆し…果汁の価格急落で「販売再開の予定は?」「安くなりますか?」各社メーカーに聞いてみた(集英社オンライン) - Yahoo!ニュース 海苔の価格が高騰 セブン-イレブンではおにぎりの値上げも #エキスパートトピ(矢野きくの) - エキスパート - Yahoo!ニュース マネー・ショート 華麗なる大逆転 - Wikipedia まいばすけっと公式サイト サブスク Notion 料金プラン比較 Money Forward クラウド「ひとり法人プラン」告知 Google Workspace 料金一覧 GitHub Copilot 公式ページ Devin AI 公式サイト(Cognition Labs) cline RAG とは何ですか? - 検索拡張生成 AI の説明 - AWS Model Context Protocol 退職代行モームリ 最高のノートアプリ - Evernoteでノートを整理しましょう 引越手続き一括サービス「引越れんらく帳」 マイナンバーカードの保険証利用について(被保険者証利用について) 2030年の広告ビジネス デジタル化の次に来るビジネスモデルの大転換 Amazon オンライン薬局情報ページ 肩の上の秘書 ~ 本音と建て前 – 哀しき道化師 角川文庫『神への長い道』 - 小松左京ライブラリ Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 会社員 駿河(snowlong) 在宅社長

Code and the Coding Coders who Code it
Episode 43 - Stan Lo

Code and the Coding Coders who Code it

Play Episode Listen Later Dec 3, 2024 32:45 Transcription Available


What drives a seasoned developer from Taiwan to London, and how does one translate a passion for Ruby into groundbreaking projects? Hear from Stan Lo of Shopify's RubyDX team as he shares his captivating journey and his significant impact on the Ruby development landscape. From his essential work on the debug gem and IRB to his current efforts with the Sorbet type checker and Prism parser, Stan delves into the technical intricacies of using C++ for performance and memory management. Gain unique insights into the collaborative decision-making process at Shopify that guided his transition from the Ruby LSP to focusing on Sorbet's integration.We also tackle the hurdles of progressing Ruby's Sorbet parser to Prism and the challenges of maintaining comprehensive Ruby documentation. Discover the importance of community-driven contributions, and how small acts like fixing typos can have a profound impact on the Ruby ecosystem. Experience Stan's personal anecdotes, from climbing adventures to mastering calisthenics, and explore the innovative shift from VS Code to Cursor, amplifying his development experience through AI capabilities. As we gear up for future events like RailsConf and RubyKaigi, there's an air of excitement for community reunions and ongoing projects. Join us for a blend of technical discussion, personal stories, and a call to action for all Ruby enthusiasts.Send us some love.HoneybadgerHoneybadger is an application health monitoring tool built by developers for developers.HoneybadgerHoneybadger is an application health monitoring tool built by developers for developers.Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.Support the showReady to start your own podcast?This show is hosted on Buzzsprout and it's awesome, not to mention a Ruby on Rails application. Let Buzzsprout know we sent you and you'll get a $20 Amazon gift card if you sign up for a paid plan, and it helps support our show.

yancanfm
54. RubyKaigi 2024、アメリカの新卒?!

yancanfm

Play Episode Listen Later Jun 19, 2024 39:36


yancanfm(やんきゃんえふえむ)は、ニューヨークと東京に住むエンジニアふたりでお届けする雑談系テックポッドキャストです。RubyKaigi 2024Yak Shaving Tシャツ■ いま聴いてるよボタン ■あ…ありのまま今起こった事を話すぜ!しよう一発投稿聴いてるよボタン! ← Xに一発投稿!あなたの1ポストでりほやんとりさきゃんの戦闘力をあげよう■ おたより ■ハッシュタグ ⁠#yancanfm⁠ で感想や質問をお待ちしています!Waveboxもあります!かわいい絵文字が押せます。

Studyplus Engineering Podcast
26: RubyKaigi 2024 参加レポート

Studyplus Engineering Podcast

Play Episode Listen Later May 31, 2024 44:32


第26回はRubyKaigi 2024の参加レポートをお送りします。SREグループの水口がホストを務め、サーバーグループの山田さん、Webアプリケーショングループの川井さん、羽鳥さんをゲストにお迎えしました。 Show Notes RubyKaigiとは メンバーのRubyKaigi参加歴 セッションの感想 沖縄の食事・観光地について 私たちのKaigiEffect 出演者 水口 (プロダクト部 SREグループ) 山田 (プロダクト部 サーバーグループ) 川井 (プロダクト部 Webアプリケーショングループ) 羽鳥 (プロダクト部 Webアプリケーショングループ) 採用情報 スタディプラスでは一緒に働くエンジニアを募集しております。カジュアル面談もやっておりますので、ご興味のある方は下記リンクからご応募ください。 ⁠⁠⁠⁠⁠⁠⁠スタディプラスの採用情報⁠⁠

Yarukinai.fm
228. 沖縄のプール

Yarukinai.fm

Play Episode Listen Later May 26, 2024 40:06


話したこと RubyKaigi 2024 - RubyKaigi 2024 Namespace, What and Why - RubyKaigi 2024 【タイミー】スキマ時間にすぐ働ける!700万人が利用している単発バイトアプリ yuru28 と yarukinaifm Events - RubyKaigi 2024 AI Travel:出張の手間とコストを削減 県民の定番「締めのステーキ」とは? 人気を呼ぶ千円ステーキ 「やっぱりステーキ」県外進出 Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 39歳男性。既婚。二児の父です。 須貝(sugaishun) 会社員

Yarukinai.fm
227. あがりが遅すぎる

Yarukinai.fm

Play Episode Listen Later May 19, 2024 42:48


話したこと RubyKaigi 2024 - RubyKaigi 2024 「行くべき52か所」に山口市を選定 ニューヨーク・タイムズ オークス2024特集 戸崎圭太 - Wikipedia 【ヴィクトリアマイル2024結果情報】単勝208.6倍の14番人気テンハッピーローズが春マイル女王の座に輝く 三連単91万6640円 GPT-4oとは?ChatGPT最新AIモデル GPT-4o の使い方や料金を詳しく解説 Yarukinai.fm - LISTEN zenncast - 技術トレンドをAIがラジオに変換 AIラジオ『zenncast』の技術構成(プロンプトつき) 『スト6』イベント「第4回 CRカップ スト6」結果。人気配信者&格ゲーマーのチーム戦 CRかずのこ! 「スト6」プロゲーマー・かずのこ選手が「Crazy Raccoon」に加入(GAME Watch) - Yahoo!ニュース ブランカ 『ストリートファイター6』より、かわいい「ブランカちゃん人形」が ついにカプコン直営アミューズメント店舗に登場! 豪鬼 「ストリートファイター6」 販売本数が全世界で300万本を突破。eスポーツ展開や幅広いコラボ,新コンテンツなどが人気を支える Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 39歳男性。既婚。二児の父です。 駿河(snowlong) 在宅社長

Breaking Change
v1 - Initial Commit

Breaking Change

Play Episode Listen Later Jan 10, 2024 107:19


I finally gave up and recorded a podcast. And now I'm writing show notes. I tried not to let this happen but here I am typing this and it's happening. Forgive me. This is a podcast for anybody who shares my interests and likes passing the time with a friendly, opinionated voice in their head. I have done thousands of hours of chores and errands over the years listening to mostly agreeable, sometimes interesting 1.5-3 hour podcasts to keep my mind busy. Now it's time for me to give back, I guess. Here's the deal: e-mail me at podcast@searls.co and I'll talk about whatever you want me to talk about. Write whatever you want into that e-mail body: ask a question about video games, ask for my take on a new technology, ask for relationship advice, tell me my podcast sucks. You write it, I'll read it. Okay, here's what I covered in version one of Breaking Change: What's new: I made a massive pot of Japanese curry rice for my buddy Len, who hosts his own actually real podcast I'm building a couple apps for my better half's business, which makes Becky my product owner and me her developer—what could go wrong?! Weather in Orlando has been freezing so please pity me and my inability to deal with temparatures below 65º F Follow-up: I made a video about speaking: Secrets of Great Conference Talks I wrote a post about careering: Only you can give meaning to your career I shipped a newsletter about the book The Courage to Be Disliked: Searls of Wisdom Newsletter I exhorted my fellow Rubyists: Why you should come to this RubyKaigi in 2024 Pun break: I asked and @tenderlove agreed to write me a pun for each episode of Breaking Change that I will read for the first time live as I record to the camera If you want to know the pun, you'll just have to listen to the podcast Actually, I'm going to rate the puns, so I've decided to (extremely inadvisably) share this Numbers spreadsheet publicly News: I am currently wearing the XREAL Air 2 glasses when working in public to prepare everyone around me to get ready for the Vision Pro landing onto my face next month I paid for GPT Plus and it's just uncanny sometimes how good it is compared to Google Search, thanks in part to how much worse Google Search has gotten. There's no other way I'd have found these tweezers The original Workflow Team is angling to be the first group to sell their company to Apple twice by forming a new AI desktop automation startup Standard Ruby might have made it into Rails 8, but it didn't, and I basically completely agree with DHH that it shouldn't: David's original issue The new bikeshed David built David's blog post about style guides I revisited the whole POSSE meme for web sites and how I'm building another app to integrate with my feed2gram gem to help people escape Instagram I started using ActiveStorage and this thread was absolutely vital to figuring it out (the Rails Guide could probably use a few updates, but the real issue is the API is probably due to be pruned a bit) Tailwind still feels like the Correct™ approach to styling web sites, but Rails needs a better answer for rendering forms with it. In lieu of an official solution, Daniel Huss described an approach I've been using since late 2022 with a custom FormBuilder subclass Speaking of correct approaches, I'm convinced Stimulus and HTMX are basically the right way to handle JavaScript in most apps, but I'll be damned if I don't have to totally relearn Stimulus's API every time I use it I think I forgot to mention it, but Stimulus Components is a neato project that I'd love to see more of—little modular, prepackaged actions that are (mostly) free of gnarly dependencies and import-map friendly Entertainment Playing Harvest Moon 64 and immediately falling for min-maxing the hell out of it instead of just playing the game Bullets and Blockbusters is a great YouTube channel on films, especially "what if" scenarios Searls After Dark is less great, but also on YouTube. Please subscribe to my channel so I can hit 1000 followers and disable ads on all my videos! Foundation is fine, but slow Monarch: Legacy of Monsters is… bad, I think? I'm muscling through it Letterkenny and Shoresy never disappoint, however Mailbag: Empty! Nobody knew I was going to start a podcast, least of all me, so nobody e-mailed me. Get featured on my next installment by emailing podcast@searls.co Phew. Until next time, I guess.

The Bike Shed
411: Celebrating and Recapping 2023!

The Bike Shed

Play Episode Listen Later Dec 19, 2023 38:40


Stephanie is hosting a holiday cookie swap. Joël talks about participating in thoughtbot's end-of-the-year hackathon, Ralphapalooza. We had a great year on the show! The hosts wrap up the year and discuss their favorite episodes, the articles, books, and blog posts they've read and loved, and other highlights of 2023 (projects, conferences, etc). Olive Oil Sugar Cookies With Pistachios & Lemon Glaze (https://food52.com/recipes/82228-olive-oil-sugar-cookies-recipe-with-pistachios-lemon) thoughtbot's Blog (https://thoughtbot.com/blog) Episode 398: Developing Heuristics For Writing Software (https://www.bikeshed.fm/398) Episode 374: Discrete Math (https://www.bikeshed.fm/374) Episode 405: Sandi Metz's Rules (https://www.bikeshed.fm/405) Episode 391: Learn with APPL (https://www.bikeshed.fm/391) Engineering Management for the Rest of Us (https://www.engmanagement.dev/) Confident Ruby (https://pragprog.com/titles/agcr/confident-ruby/) Working with Maybe from Elm Europe (https://www.youtube.com/watch?v=43eM4kNbb6c) Sustainable Rails Book (https://sustainable-rails.com/) Episode 368: Sustainable Web Development (https://www.bikeshed.fm/368) Domain Modeling Made Functional (https://pragprog.com/titles/swdddf/domain-modeling-made-functional/) Simplifying Tests by Extracting Side Effects (https://thoughtbot.com/blog/simplify-tests-by-extracting-side-effects) The Math Every Programmer Needs (https://www.youtube.com/watch?v=wzYYT40T8G8) Mermaid.js sequence diagrams (https://mermaid.js.org/syntax/sequenc) Sense of Belonging and Software Teams (https://www.drcathicks.com/post/sense-of-belonging-and-software-teams) Preemptive Pluralization is (Probably) Not Evil (https://www.swyx.io/preemptive-pluralization) Digging through the ashes (https://everythingchanges.us/blog/digging-through-the-ashes/) Transcript: JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: I am so excited to talk about this. I'm, like, literally smiling [chuckles] because I'm so pumped. Sometimes, you know, we get on to record, and I'm like, oh, I got to think of something that's new, like, my life is so boring. I have nothing to share. But today, I am excited to tell you about [chuckles] the holiday cookie swap that I'm hosting this Sunday [laughs] that I haven't been able to stop thinking about or just thinking about all the cookies that I'm going to get to eat. It's going to be my first time throwing this kind of shindig, and I'm so pleased with myself because it's such a great idea. You know, it's like, you get to share cookies, and you get to have all different types of cookies, and then people get to take them home. And I get to see all my friends. And I'm really [chuckles] looking forward to it. JOËL: I don't think I've ever been to a cookie swap event. How does that work? Everybody shows up with cookies, and then you leave with what you want? STEPHANIE: That's kind of the plan. I think it's not really a...there's no rules [laughs]. You can make it whatever you want it to be. But I'm asking everyone to bring, like, two dozen cookies. And, you know, I'm hoping for a lot of fun variety. Myself I'm planning on making these pistachio olive oil cookies with a lemon glaze and also, maybe, like, a chewy ginger cookie. I haven't decided if I'm going to go so extra to make two types, but we'll see. And yeah, we'll, you know, probably have some drinks and be playing Christmas music, and yeah, we'll just hang out. And I'm hoping that everyone can kind of, like, take home a little goodie bag of cookies as well because I don't think we'll be going through all of them. JOËL: Hearing you talk about this gave me an absolutely terrible idea. STEPHANIE: Terrible or terribly awesome? [laughs] JOËL: So, imagine you have the equivalent of, let's say, a LAN party. You all show up with your laptops. STEPHANIE: [laughs] JOËL: You're on a network, and then you swap browser cookies randomly. STEPHANIE: [laughs] Oh no. That would be really funny. That's a developer's take on a cookie party [laughs] if I've ever heard one. JOËL: Slightly terrifying. Now I'm just browsing, and all of a sudden, I guess I'm logged into your Facebook or something. Maybe you only swap the tracking cookies. So, I'm not actually logged into your Facebook, but I just get to see the different ad networks it would typically show you, and you would see my ads. That's maybe kind of fun or maybe terrifying, depending on what kind of ads you normally see. STEPHANIE: That's really funny. I'm thinking about how it would just be probably very misleading and confusing for those [laughs] analytics spenders, but that's totally fine, too. Might I suggest also having real cookies to munch on as well while you are enjoying [laughs] this browser cookie-swapping party? JOËL: I 100% agree. STEPHANIE: [laughs] JOËL: I'm curious: where do you stand on raisins in oatmeal cookies? STEPHANIE: Ooh. JOËL: This is a divisive question. STEPHANIE: They're fine. I'll let other people eat them. And occasionally, I will also eat an oatmeal cookie with raisins, but I much prefer if the raisins are chocolate chips [chuckles]. JOËL: That is the correct answer. STEPHANIE: [laughs] Thank you. You know, I understand that people like them. They're not for me [laughs]. JOËL: It's okay. Fans can send us hate mail about why we're wrong about oatmeal cookies. STEPHANIE: Yeah, honestly, that's something that I'm okay with being wrong about on the internet [laughs]. So, Joël, what's new in your world? JOËL: So, as of this recording, we've just recently done thoughtbot's end-of-the-year hackathon, what we call Ralphapalooza. And this is sort of a time where you kind of get to do pretty much any sort of company or programming-related activity that you want as long as...you have to pitch it and get at least two other colleagues to join you on the project, and then you've got two days to work on it. And then you can share back to the team what you've done. I was on a project where we were trying to write a lot of blog posts for the thoughtbot blog. And so, we're just kind of getting together and pitching ideas, reviewing each other's articles, writing things at a pretty intense rate for a couple of days, trying to flood the blog with articles for the next few weeks. So, if you're following the blog and as the time this episode gets released, you're like, "Wow, there's been a lot of articles from the thoughtbot blog recently," that's why. STEPHANIE: Yes, that's awesome. I love how much energy that the blog post-writing party garnered. Like, I was just kind of observing from afar, but it sounds like, you know, people who maybe had started posts, like, throughout the year had dedicated time and a good reason to revisit them, even if they had been, you know, kind of just, like, sitting in a draft for a while. And I think what also seemed really nice was people were just around to support, to review, and were able to make that a priority. And it was really cool to see all the blog posts that are queued up for December as a result. JOËL: People wrote some great stuff. So, I'm excited to see all of those come out. I think we've got pretty much a blog post every day coming out through almost the end of December. So, it's exciting to see that much content created. STEPHANIE: Yeah. If our listeners want more thoughtbot content, check out our blog. JOËL: So, as mentioned, we're recording this at the end of the year. And I thought it might be fun to do a bit of a retrospective on what this year has been like for you and I, Stephanie, both in terms of different work that we've done, the learnings we've had, but maybe also look back a little bit on 2023 for The Bike Shed and what that looked like. STEPHANIE: Yes. I really enjoyed thinking about my year and kind of just reveling and having been doing this podcast for over a year now. And yeah, I'm excited to look back a little bit on both things we have mentioned on the show before and things maybe we haven't. To start, I'm wondering if you want to talk a little bit about some of our favorite episodes. JOËL: Favorite episodes, yes. So, I've got a couple that are among my favorites. We did a lot of good episodes this year. I really liked them. But I really appreciated the episode we did on heuristics, that's Episode 398, where we got to talk a little bit about what goes into a good heuristic, how we tend to come up with them. A lot of those, like, guidelines and best practices that you hear people talk about in the software world and how to make your own but then also how to deal with the ones you hear from others in the software community. So, I think that was an episode that the idea, on the surface, seemed really basic, and then we went pretty deep with it. And that was really fun. I think a second one that I really enjoyed was also the one that I did with Sara Jackson as a guest, talking about discrete math and its relevance to the day-to-day work that we do. That's Episode 374. We just had a lot of fun with that. I think that's a topic that more developers, more web developers, would benefit from just getting a little bit more discrete math in their lives. And also, there's a clip in there where Sara reinterprets a classic marketing jingle with some discrete math terms in there instead. It was a lot of fun. So, we'd recommend people checking that one out. STEPHANIE: Nice. Yes. I also loved those episodes. The heuristics one was really great. I'm glad you mentioned it because one of my favorite episodes is kind of along a similar vein. It's one of the more recent ones that we did. It's Episode 405, where we did a bit of a retro on Sandi Metz' Rules For Developers. And those essentially are heuristics, right? And we got to kind of be like, hey, these are someone else's heuristics. How do we feel about them? Have we embodied them ourselves? Do we follow them? What parts do we take or leave? And I just remember having a really enjoyable conversation with you about that. You and I have kind of treated this podcast a little bit like our own two-person book club [laughs]. So, it felt a little bit like that, right? Where we were kind of responding to, you know, something that we both have read up on, or tried, or whatever. So, that was a good one. Another one of my favorite episodes was Episode 391: Learn with APPL [laughs], in which we basically developed our own learning framework, or actually, credit goes to former Bike Shed host, Steph Viccari, who came up with this fun, little acronym to talk about different things that we all kind of need in our work lives to be fulfilled. Our APPL stands for Adventure, Passion, Profit, and Low risk. And that one was really fun just because it was, like, the opposite of what I just described where we're not discussing someone else's work but discovered our own thing out of, you know, these conversations that we have on the show, conversations we have with our co-workers. And yeah, I'm trying to make it a thing, so I'm plugging it again [laughs]. JOËL: I did really like that episode. One, I think, you know, this APPL framework is a little bit playful, which makes it fun. But also, I think digging into it really gives some insight on the different aspects that are relevant when planning out further growth or where you want to invest your sort of professional development time. And so, breaking down those four elements led to some really insightful conversation around where do I want to invest time learning in the next year? STEPHANIE: Yeah, absolutely. JOËL: By the way, we're mentioning a bunch of our favorite things, some past episodes, and we'll be talking about a lot of other types of resources. We will be linking all of these in the show notes. So, for any of our listeners who are like, "Oh, I wonder what is that thing they mentioned," there's going to be a giant list that you can check out. STEPHANIE: Yeah. I love whenever we are able to put out an episode with a long list of things [laughs]. JOËL: It's one of the fun things that we get to do is like, oh yeah, we referenced all these things. And there is this sort of, like, further reading, more threads to pull on for people who might be interested. So, you'd mentioned, Stephanie, that, you know, sometimes we kind of treat this as our own little mini, like, two-person book club. I know that you're a voracious reader, and you've mentioned so many books over the course of the year. Do you have maybe one or two books that have been kind of your favorites or that have stood out to you over 2023? STEPHANIE: I do. I went back through my reading list in preparation for this episode and wanted to call out the couple of books that I finished. And I think I have, you know, I mentioned I was reading them along the way. But now I get to kind of see how having read them influenced my work life this past year, which is pretty cool. So, one of them is Engineering Management for the Rest of Us by Sarah Drasner. And that's actually one that really stuck with me, even though I'm not a manager; I don't have any plans to become a manager. But one thing that she talks about early on is this idea of having a shared value system. And you can have that at the company level, right? You have your kind of corporate values. You can have that at the team level with this smaller group of people that you get to know better and kind of form relationships with. And then also, part of that is, like, knowing your individual values. And having alignment in all three of those tiers is really important in being a functioning and fulfilled team, I think. And that is something that I don't think was really spelled out very explicitly for me before, but it was helpful in framing, like, past work experiences, where maybe I, like, didn't have that alignment and now identify why. And it has helped me this year as I think about my client work, too, and kind of where I sit from that perspective and helps me realize like, oh, like, this is why I'm feeling this way, and this is why it's not quite working. And, like, what do I do about it now? So, I really enjoyed that. JOËL: Would you recommend this book to others who are maybe not considering a management path? STEPHANIE: Yeah. JOËL: So, even if you're staying in the IC track, at least for now, you think that's a really powerful book for other people. STEPHANIE: Yeah, I would say so. You know, maybe not, like, all of it, but there's definitely parts that, you know, she's writing for the rest of us, like, all of us maybe not necessarily natural born leaders who knew that that's kind of what we wanted. And so, I can see how people, you know, who are uncertain or maybe even, like, really clearly, like, "I don't think that's for me," being able to get something out of, like, either those lessons in leadership or just to feel a bit, like, validated [laughs] about the type of work that they aren't interested in. Another book that I want to plug real quick is Confident Ruby by Avdi Grimm. That one was one I referenced a lot this year, working with newer developers especially. And it actually provided a good heuristic [laughs] for me to talk about areas that we could improve code during code review. I think that wasn't really vocabulary that I'd used, you know, saying, like, "Hey, how confident is this code? How confident is this method and what it will receive and what it's returning?" And I remember, like, several conversations that I ended up having on my teams about, like, return types as a result and them having learned, like, a new way to view their code, and I thought that was really cool. JOËL: I mean, learning to deal with uncertainty and nil in Ruby or maybe even, like, error states is just such a core part of writing software. I feel like this is something that I almost wish everyone was sort of assigned maybe, like, a year into their programming career because, you know, I think the first year there's just so many things you've got to learn, right? Like basic programming and, like, all these things. But, like, you're looking maybe I can start going a little bit deeper into some topic. I think that some topic, like, pretty high up, would be building a mental model for how to deal with uncertainty because it's such a source of bugs. And Avdi Grimm's book, Confident Ruby, is...I would put that, yeah, definitely on a recommended reading list for everybody. STEPHANIE: Yeah, I agree. And I think that's why I found myself, you know, then recommending it to other people on my team and kind of having something I can point to. And that was really helpful in the kind of mentorship that I wanted to offer. JOËL: I did a deep dive into uncertainty and edge cases in programs several years back when I was getting into Elm. And I was giving a talk at Elm Europe about how Elm handles uncertainty, which is a little bit different than how Ruby does it. But a lot of the underlying concepts are very similar in terms of quarantining uncertainty and pushing it to the edges and things like that. Trying to write code that is more confident that is definitely a term that I used. And so Confident Ruby ended up being a little bit of an inspiration for my own journey there, and then, eventually, the talk that I gave that summarized my learnings there. STEPHANIE: Nice. Do you have any reading recommendations or books that stood out to you this year? JOËL: So, I've been reading two technical books kind of in tandem this year. I have not finished either of them, but I have been enjoying them. One is Sustainable Rails by David Bryant Copeland. We had an episode at the beginning of this year where we talked a little bit about our initial impressions from, I think, the first chapter of the book. But I really love that vocabulary of writing Ruby and Rails code, in particular, in a way that is sustainable for a team. And that premise, I think, just gives a really powerful mindset to approach structuring Rails apps. And the other book that I've been reading is Domain Modeling Made Functional, so kind of looking at some domain-driven design ideas. But most of the literature is typically written to an object-oriented audience, so taking a look at it from more of a functional programming perspective has been really interesting. And then I've been, weirdly enough, taking some of those ideas and translating back into the object-oriented world to apply to code I'm writing in Ruby. I think that has been a very useful exercise. STEPHANIE: That's awesome. And it's weird and cool how all those things end up converging, right? And exploring different paradigms really just lets you develop more insight into wherever you're working. JOËL: Sometimes the sort of conversion step that you have to do, that translation, can be a good tool for kind of solidifying learnings or better understanding. So, I'm doing this sort of deep learning thing where I'm taking notes as I go along. And those notes are typically around, what other concepts can I connect ideas in the book? So, I'll be reading and say, okay, on page 150, he mentioned this concept. This reminds me of this idea from TDD. I could see this applying in a different way in an object-oriented world. And interestingly, if you apply this, it sort of converges on maybe single responsibility or whatever other OO principle. And that's a really interesting connection. I always love it when you do see sort of two or three different angles converging together on the same idea. STEPHANIE: Yeah, absolutely. JOËL: I've written a blog post, I think, two years ago around how some theory from functional programming sort of OO best practices and then TDD all kind of converge on sort of the same approach to designing software. So, you can sort of go from either direction, and you kind of end in the same place or sort of end up rediscovering principles from the other two. We'll link that in the show notes. But that's something that I found was really exciting. It didn't directly come from this book because, again, I wrote this a couple of years ago. But it is always fun when you're exploring two or three different paradigms, and you find a convergence. It really deepens your understanding of what's happening. STEPHANIE: Yeah, absolutely. I like what you said about how this book is different because it is making that connection between things that maybe seem less related on the surface. Like you're saying, there's other literature written about how domain modeling and object-oriented programming make more sense a little bit more together. But it is that, like, bringing in of different schools of thought that can lead to a lot of really interesting discovery about those foundational concepts. JOËL: I feel like dabbling in other paradigms and in other languages has made me a better Ruby developer and a better OO programmer, a lot of the work I've done in Elm. This book that I'm reading is written in F#. And all these things I can kind of bring back, and I think, have made me a better Ruby developer. Have you had any experiences like that? STEPHANIE: Yeah. I think I've talked a little bit about it on the show before, but I can't exactly recall. There were times when my exploration in static typing ended up giving me that different mindset in terms of the next time I was coding in Ruby after being in TypeScript for a while, I was, like, thinking in types a lot more, and I think maybe swung a little bit towards, like, not wanting to metaprogram as much [laughs]. But I think that it was a useful, like you said, exercise sometimes, too, and just, like, doing that conversion or translating in your head to see more options available to you, and then deciding where to go from there. So, we've talked a bit about technical books that we've read. And now I kind of want to get into some in-person highlights for the year because you and I are both on the conference circuit and had some fun trips this year. JOËL: Yeah. So, I spoke at RailsConf this spring. I gave a talk on discrete math and how it is relevant in day-to-day work for developers, actually inspired by that Bike Shed episode that I mentioned earlier. So, that was kind of fun, turning a Bike Shed episode into a conference talk. And then just recently, I was at RubyConf in San Diego, and I gave a talk there around time. We often talk about time as a single quantity, but there's some subtle distinctions, so the difference between a moment in time versus a duration and some of the math that happens around that. And I gave a few sort of visual mental models to help people keep track of that. As of this recording, the talk is not out yet, so we're not going to be able to link to it. But if you're listening to this later in 2024, you can probably just Google RubyConf "Which Time Is It?" That's the name of the talk. And you'll be able to find it. STEPHANIE: Awesome. So, as someone who is giving talks and attending conferences every year, I'm wondering, was this year particularly different in any way? Was there something that you've, like, experienced or felt differently community-wise in 2023? JOËL: Conferences still feel a little bit smaller than they were pre-COVID. I think they are still bouncing back. But there's definitely an energy that's there that's nice to have on the conference scene. I don't know, have you experienced something similar? STEPHANIE: I think I know what you're talking about where, you know, there was that time when we weren't really meeting in person. And so, now we're still kind of riding that wave of, like, getting together again and being able to celebrate and have fun in that way. I, this year, got to speak at Blue Ridge Ruby in June. And that was a first-time regional conference. And so, that was, I think, something I had noticed, too, is the emergence of regional conferences as being more viable options after not having conferences for a few years. And as a regional conference, it was even smaller than the bigger national Ruby Central conferences. I really enjoyed the intimacy of that, where it was just a single track. So, everyone was watching talks together and then was on breaks together, so you could mingle. There was no FOMO of like, oh, like, I can't make this talk because I want to watch this other one. And that was kind of nice because I could, like, ask anyone, "What did you think of, like, X talk or like the one that we just kind of came out of and had that shared experience?" That was really great. And I got to go tubing for the first time [laughs] in Asheville. That's a memory, but I am still thinking about that as we get into winter. I'm like, oh yeah, the glorious days of summer [laughs] when I was getting to float down a lazy river. JOËL: Nice. I wasn't sure if this was floating down a lazy river on an inner tube or if this was someone takes you out on a lake with a speed boat, and you're getting pulled. STEPHANIE: [laughs] That's true. As a person who likes to relax [laughs], I definitely prefer that kind of tubing over a speed boat [laughs]. JOËL: What was the topic of your talk? STEPHANIE: So, I got to give my talk about nonviolent communication in pair programming for a second time. And that was also my first time giving a talk for a second time [laughs]. That was cool, too, because I got to revisit something and go deeper and kind of integrate even more experiences I had. I just kind of realized that even if you produce content once, like, there's always ways to deepen it or shape it a little better, kind of, you know, just continually improving it and as you learn more and as you get more experience and change. JOËL: Yeah. I've never given a talk twice, and now you've got me wondering if that's something I should do. Because making a bespoke talk for every conference is a lot of work, and it might be nice to be able to use it more than once. Especially I think for some of the regional conferences, there might be some value there in people who might not be able to go to a big national conference but would still like to see your talk live. Having a mix of maybe original content and then content that is sort of being reshared is probably a great combo for a regional conference. STEPHANIE: Yeah, definitely. That's actually a really good idea, yeah, to just be able to have more people see that content and access it. I like that a lot. And I think it could be really cool for you because we were just talking about all the ways that our mental models evolve the more stuff that we read and consume. And I think there's a lot of value there. One other conference that I went to this year that I just want to highlight because it was really cool that I got to do this: I went to RubyKaigi in Japan [laughs] back in the spring. And I had never gone to an international conference before, and now I'm itching to do more of that. So, it would be remiss not to mention it [laughs]. I'm definitely inspired to maybe check out some of the conferences outside of the U.S. in 2024. I think I had always been a little intimidated. I was like, oh, like, it's so far [laughs]. Do I really have, like, that good of a reason to make a trip out there? But being able to meet Rubyists from different countries and seeing how it's being used in other parts of the world, I think, made me realize that like, oh yeah, like, beyond my little bubble, there's so many cool things happening and people out there who, again, like, have that shared love of Ruby. And connecting with them was, yeah, just so new and something that I would want to do more of. So, another thing that we haven't yet gotten into is our actual work-work or our client work [laughs] that we do at thoughtbot for this year. Joël, I'm wondering, was there anything especially fun or anything that really stood out to you in terms of client work that you had to do this year? JOËL: So, two things come to mind that were novel for me. One is I did a Rails integration against Snowflake, the data warehouse, using an ODBC connection. We're not going through an API; we're going through this DB connection. And I never had to do that before. I also got to work with the new-ish Rails multi-database support, which actually worked quite nice. That was, I think, a great learning experience. Definitely ran into some weird edge cases, or some days, I was really frustrated. Some days, I was actually, like, digging into the source code of the C bindings of the ODBC gem. Those were not the best days. But definitely, I think, that kind of integration and then Snowflake as a technology was really interesting to explore. The other one that's been really interesting, I think, has been going much deeper into the single sign-on world. I've been doing an integration against a kind of enterprise SAML server that wants to initiate sign-in requests from their portal. And this is a bit of an alphabet soup, but the term here is IdP-initiated SSO. And so, I've been working with...it's a combination of this third-party kind of corporate SAML system, our application, which is a Rails app, and then Auth0 kind of sitting in the middle and getting all of them to talk to each other. There's a ridiculous number of redirects because we're talking SAML on one side and OIDC on the other and getting everything to line up correctly. But that's been a really fun, new set of things to learn. STEPHANIE: Yeah, that does sound complicated [laughs] just based on what you shared with me, but very cool. And I was excited to hear that you had had a good experience with the Rails multi-database part because that was another thing that I remember being...it had piqued my interest when it first came out. I hope I get to, you know, utilize that feature on a project soon because that sounds really fun. JOËL: One thing I've had to do for this SSO project is lean a lot on sequence diagrams, which are those diagrams that sort of show you, like, being redirected from different places, and, like, okay, server one talks to server two talks, to the browser. And so, when I've got so many different actors and sort of controllers being passed around everywhere, it's been hard to keep track of it in my head. And so, I've been doing a lot of these diagrams, both for myself to help understand it during development, and then also as documentation to share back with the team. And I found that Mermaid.js supports sequence diagrams as a diagram type. Long-term listeners of the show will know that I am a sucker for a good diagram. I love using Mermaid for a lot of things because it's supported. You can embed it in a lot of places, including in GitHub comments, pull requests. You can use it in various note systems like Notion or Obsidian. And you can also just generate your own on mermaid.live. And so, that's been really helpful to communicate with the rest of the team, like, "Hey, we've got this whole process where we've got 14 redirects across four different servers. Here's what it looks like. And here, like, we're getting a bug on, you know, redirect number 8 of 14. I wonder why," and then you can start a conversation around debugging that. STEPHANIE: Cool. I was just about to ask what tool you're using to generate your sequence diagrams. I didn't know that Mermaid supported them. So, that's really neat. JOËL: So, last year, when we kind of looked back over 2022, one thing that was really interesting that we did is we talked about what are articles that you find yourself linking to a lot that are just kind of things that maybe were on your mind or that were a big part of conversations that happened over the year? So, maybe for you, Stephanie, in 2023, what are one or two articles that you find yourself sort of constantly linking to other people? STEPHANIE: Yes. I'm excited you asked about this. One of them is an article by a person named Cat Hicks, who has a PhD in experimental psychology. She's a data scientist and social scientist. And lately, she's been doing a lot of research into the sense of belonging on software teams. And I think that's a theme that I am personally really interested in, and I think has kind of been something more people are talking about in the last few years. And she is kind of taking that maybe more squishy idea and getting numbers for it and getting statistics, and I think that's really cool. She points out belonging as, like, a different experience from just, like, happiness and fulfillment, and that really having an impact on how well a team is functioning. I got to share this with a few people who were, you know, just in that same boat of, like, trying to figure out, what are the behaviors kind of on my team that make me feel supported or not supported? And there were a lot of interesting discussions that came out of sharing this article and kind of talking about, especially in software, where we can be a little bit dogmatic. And we've kind of actually joked about it on the podcast [chuckles] before about, like, we TDD or don't TDD, or, you know, we use X tool, and that's just like what we have to do here. She writes a little bit about how that can end up, you know, not encouraging people offering, like, differing opinions and being able to feel like they have a say in kind of, like, the team's direction. And yeah, I just really enjoyed a different way of thinking about it. Joël, what about you? What are some articles you got bookmarked? [chuckles] JOËL: This year, I started using a bookmark manager, Raindrop.io. That's been nice because, for this episode, I could just look back on, what are some of my bookmarks this year? And be like, oh yeah, this is the thing that I have been using a lot. So, an article that I've been linking is an article called Preemptive Pluralization is (Probably) Not Evil. And it kind of talks a little bit about how going from code that works over a collection of two items to a collection of, you know, 20 items is very easy. But sometimes, going from one to two can be really challenging. And when are the times where you might want to preemptively make something more than one item? So, maybe using it has many association rather than it has one or making an attribute a collection rather than a single item. Controversial is not the word for it, but I think challenges a little bit of the way people typically like to write code. But across this year, I've run into multiple projects where they have been transitioning from one to many. That's been an interesting article to surface as part of those conversations. Whether your team wants to do this preemptively or whether they want to put it off and say in classic YAGNI (You Aren't Gonna Need It) form, "We'll make it single for now, and then we'll go plural," that's a conversation for your team. But I think this article is a great way to maybe frame the conversation. STEPHANIE: Cool. Yeah, I really like that almost, like, a counterpoint to YAGNI [laughs], which I don't think I've ever heard anyone say that out loud [laughs] before. But as soon as you said preemptive pluralization is not evil, I thought about all the times that I've had to, like, write code, text in which a thing, a variable could be either one or many [laughs] things. And I was like, ooh, maybe this will solve that problem for me [laughs]. JOËL: Speaking of pluralization, I'm sure you've been linking to more than just one article this year. Do you have another one that you find yourself coming up in conversations where you've always kind of like, "Hey, dropping this link," where it's almost like your thing? STEPHANIE: Yes. And that is basically everything written by Mandy Brown [laughs], who is a work coach that I actually started working with this year. And one of the articles that really inspired me or really has been a topic of conversation among my friends and co-workers is she has a blog post called Digging Through the Ashes. And it's kind of a meditation on, like, post burnout or, like, what's next, and how we have used this word as kind of a catch-all to describe, you know, this collective sense of being just really tired or demoralized or just, like, in need of a break. And what she offers in that post is kind of, like, some suggestions about, like, how can we be more specific here and really, you know, identify what it is that you're needing so that you can change how you engage with work? Because burnout can mean just that you are bored. It can mean that you are overworked. It can mean a lot of things for different people, right? And so, I definitely don't think I'm alone [laughs] in kind of having to realize that, like, oh, these are the ways that my work is or isn't changing and, like, where do I want to go next so that I might feel more sustainable? I know that's, like, a keyword that we talked about earlier, too. And that, on one hand, is both personal but also technical, right? It, like, informs the kinds of decisions that we make around our codebase and what we are optimizing for. And yeah, it is both technical and cultural. And it's been a big theme for me this year [laughs]. JOËL: Yeah. Would you say it's safe to say that sustainability would be, if you want to, like, put a single word on your theme for the year? Would that be a fair word to put there? STEPHANIE: Yeah, I think so. Definitely discovering what that means for me and helping other people discover what that means for them, too. JOËL: I feel like we kicked off the year 2023 by having that discussion of Sustainable Rails and how different technical practices can make the work there feel sustainable. So, I think that seems to have really carried through as a theme through the year for you. So, that's really cool to have seen that. And I'm sure listeners throughout the year have heard you mention these different books and articles. Maybe you've also been able to pick up a little bit on that. So, I'm glad that we do this show because you get a little bit of, like, all the bits and pieces in the day-to-day, and then we aggregate it over a year, and you can look back. You can be like, "Oh yeah, I definitely see that theme in your work." STEPHANIE: Yeah, I'm glad you pointed that out. It is actually really interesting to see how something that we had talked about early, early on just had that thread throughout the year. And speaking of sustainability, we are taking a little break from the show to enjoy the holidays. We'll be off for a few weeks, and we will be back with a new Bike Shed in January. JOËL: Cheers to a new year. STEPHANIE: Yeah, cheers to a new year. Wrapping up 2023. And we will see you all in 2024. JOËL: On that note, shall we wrap up the whole year? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!!! AD: Did you know thoughtbot has a referral program? If you introduce us to someone looking for a design or development partner, we will compensate you if they decide to work with us. More info on our website at tbot.io/ referral. Or you can email us at referrals@thoughtbot.com with any questions.

Software Sessions
Sara Jackson on Teaching in Kanazawa (RubyConf 2023)

Software Sessions

Play Episode Listen Later Nov 18, 2023 44:17


Sara is a team lead at thoughtbot. She talks about her experience as a professor at Kanazawa Technical College, giant LAN parties in Rochester, transitioning from Java to Ruby, shining a light on maintainers, and her closing thoughts on RubyConf. Recorded at RubyConf 2023 in San Diego. -- A few topics covered: Being an Assistant Arofessor in Kanazawa Teaching naming, formatting, and style Differences between students in Japan vs US Technical terms and programming resources in Japanese LAN parties at Rochester Transitioning from Java to Ruby Consulting The forgotten maintainer RubyConf Other links Sara's mastodon thoughtbot This Week in Open Source testdouble Ruby Central Scholars and Guides Program City Museum Japan International College of Technology Kanazawa RubyKaigi Applying mruby to World-first Small SAR Satellite (Japanese lightning talk) (mruby in space) Rochester Rochester Institute of Technology Electronic Gaming Society Tora-con Strong National Museum of Play Transcript You can help correct transcripts on GitHub. [00:00:00] Jeremy: I'm here at RubyConf, San Diego, with Sara Jackson, thank you for joining me today. [00:00:05] Sara: Thank you for having me. Happy to be here. [00:00:07] Jeremy: Sara right now you're working at, ThoughtBot, as a, as a Ruby developer, is that right? [00:00:12] Sara: Yes, that is correct. Teaching in Japan [00:00:14] Jeremy: But I think before we kind of talk about that, I mean, we're at a Ruby conference, but something that I, I saw, on your LinkedIn that I thought was really interesting was that you were teaching, I think, programming in. Kanazawa, for a couple years. [00:00:26] Sara: Yeah, that's right. So for those that don't know, Kanazawa is a city on the west coast of Japan. If you draw kind of a horizontal line across Japan from Tokyo, it's, it's pretty much right there on the west coast. I was an associate professor in the Global Information and Management major, which is basically computer science or software development. (laughs) Yep. [00:00:55] Jeremy: Couldn't tell from the title. [00:00:56] Sara: You couldn't. No.. so there I was teaching classes for a bunch of different languages and concepts from Java to Python to Unix and Bash scripting, just kind of all over. [00:01:16] Jeremy: And did you plan the curriculum yourself, or did they have anything for you? [00:01:21] Sara: It depended on the class that I was teaching. So some of them, I was the head teacher. In that case, I would be planning the class myself, the... lectures the assignments and grading them, et cetera. if I was assisting on a class, then usually it would, I would be doing grading and then helping in the class. Most of the classes were, uh, started with a lecture and then. Followed up with a lab immediately after, in person. [00:01:54] Jeremy: And I think you went to, is it University of Rochester? [00:01:58] Sara: Uh, close. Uh, Rochester Institute of Technology. So, same city. Yeah. [00:02:03] Jeremy: And so, you were studying computer science there, is that right? [00:02:07] Sara: I, I studied computer science there, but I got a minor in Japanese language. and that's how, that's kind of my origin story of then teaching in Kanazawa. Because Rochester is actually the sister city with Kanazawa. And RIT has a study abroad program for Japanese learning students to go study at KIT, Kanazawa Institute of Technology, in Kanazawa, do a six week kind of immersive program. And KIT just so happens to be under the same board as the school that I went to teach at. [00:02:46] Jeremy: it's great that you can make that connection and get that opportunity, yeah. [00:02:49] Sara: Absolutely. Networking! [00:02:52] Jeremy: And so, like, as a student in Rochester, you got to see how, I suppose, computer science education was there. How did that compare when you went over to Kanazawa? [00:03:02] Sara: I had a lot of freedom with my curriculum, so I was able to actually lean on some of the things that I learned, some of the, the way that the courses were structured that I took, I remember as a freshman in 2006, one of the first courses that we took, involved, learning Unix, learning the command line, things like that. I was able to look up some of the assignments and some of the information from that course that I took to inform then my curriculum for my course, [00:03:36] Jeremy: That's awesome. Yeah. and I guess you probably also remember how you felt as a student, so you know like what worked and maybe what didn't. [00:03:43] Sara: Absolutely. And I was able to lean on that experience as well as knowing. What's important and what, as a student, I didn't think was important. Naming, formatting, and style [00:03:56] Jeremy: So what were some examples of things that were important and some that weren't? [00:04:01] Sara: Mm hmm. For Java in particular, you don't need any white space between any of your characters, but formatting and following the general Guidelines of style makes your code so much easier to read. It's one of those things that you kind of have to drill into your head through muscle memory. And I also tried to pass that on to my students, in their assignments that it's. It's not just to make it look pretty. It's not just because I'm a mean teacher. It is truly valuable for future developers that will end up reading your code. [00:04:39] Jeremy: Yeah, I remember when I went through school. The intro professor, they would actually, they would print out our code and they would mark it up with red pen, basically like a writing assignment and it would be like a bad variable name and like, white space shouldn't be here, stuff like that. And, it seems kind of funny now, but, it actually makes it makes a lot of sense. [00:04:59] Sara: I did that. [00:04:59] Jeremy: Oh, nice. [00:05:00] Sara: I did that for my students. They were not happy about it. (laughs) [00:05:04] Jeremy: Yeah, at that time they're like, why are you like being so picky, right? [00:05:08] Sara: Exactly. But I, I think back to my student, my experience as a student. in some of the classes I've taken, not even necessarily computer related, the teachers that were the sticklers, those lessons stuck the most for me. I hated it at the time. I learned a lot. [00:05:26] Jeremy: Yeah, yeah. so I guess that's an example of things that, that, that matter. The, the aesthetics or the visual part for understanding. What are some things that they were teaching that you thought like, Oh, maybe this isn't so important. [00:05:40] Sara: Hmm. Pause for effect. (laughs) So I think that there wasn't necessarily Any particular class or topic that I didn't feel was as valuable, but there was some things that I thought were valuable that weren't emphasized very well. One of the things that I feel very strongly about, and I'm sure those of you out there can agree. in RubyWorld, that naming is important. The naming of your variables is valuable. It's useful to have something that's understood. and there were some other teachers that I worked with that didn't care so much in their assignments. And maybe the labs that they assigned had less than useful names for things. And that was kind of a disappointment for me. [00:06:34] Jeremy: Yeah, because I think it's maybe hard to teach, a student because a lot of times you are writing these short term assignments and you have it pass the test or do the thing and then you never look at it again. [00:06:49] Sara: Exactly. [00:06:50] Jeremy: So you don't, you don't feel that pain. Yeah, [00:06:53] Sara: Mm hmm. But it's like when you're learning a new spoken language, getting the foundations correct is super valuable. [00:07:05] Jeremy: Absolutely. Yeah. And so I guess when you were teaching in Kanazawa, was there anything you did in particular to emphasize, you know, these names really matter because otherwise you or other people are not going to understand what you were trying to do here? [00:07:22] Sara: Mm hmm. When I would walk around class during labs, kind of peek over the shoulders of my students, look at what they're doing, it's... Easy to maybe point out at something and be like, well, what is this? I can't tell what this is doing. Can you tell me what this does? Well, maybe that's a better name because somebody else who was looking at this, they won't know, I don't know, you know, it's in your head, but you will not always be working solo. my school, a big portion of the students went on to get technical jobs from after right after graduating. it was when you graduated from the school that I was teaching at, KTC, it was the equivalent of an associate's degree. Maybe 50 percent went off to a tech job. Maybe 50 percent went on to a four year university. And, and so as students, it hadn't. Connected with them always yet that oh, this isn't just about the assignment. This is also about learning how to interact with my co workers in the future. Differences between students [00:08:38] Jeremy: Yeah, I mean, I think It's hard, but, group projects are kind of always, uh, that's kind of where you get to work with other people and, read other people's code, but there's always that potential imbalance of where one person is like, uh, I know how to do this. I'll just do it. Right? So I'm not really sure how to solve that problem. Yeah. [00:09:00] Sara: Mm hmm. That's something that I think probably happens to some degree everywhere, but man, Japan really has groups, group work down. They, that's a super generalization. For my students though, when you would put them in a group, they were, they were usually really organized about who was going to do what and, kept on each other about doing things maybe there were some students that were a little bit more slackers, but it was certainly not the kind of polarized dichotomy you would usually see in an American classroom. [00:09:39] Jeremy: Yeah. I've been on both sides. I've been the person who did the work and the slacker. [00:09:44] Sara: Same. [00:09:46] Jeremy: And, uh, I feel bad about it now, but, uh, [00:09:50] Sara: We did what we had to do. [00:09:52] Jeremy: We all got the degree, so we're good. that is interesting, though. I mean, was there anything else, like, culturally different, you felt, from, you know, the Japanese university? [00:10:04] Sara: Yes. Absolutely. A lot of things. In American university, it's kind of the first time in a young person's life, usually, where they have the freedom to choose what they learn, choose where they live, what they're interested in. And so there's usually a lot of investment in your study and being there, being present, paying attention to the lecture. This is not to say that Japanese college students were the opposite. But the cultural feeling is college is your last time to have fun before you enter the real world of jobs and working too many hours. And so the emphasis on paying Super attention or, being perfect in your assignments. There was, there was a scale. There were some students that were 100 percent there. And then there were some students that were like, I'm here to get a degree and maybe I'm going to sleep in class a little bit. (laughs) That is another major difference, cultural aspect. In America, if you fall asleep in a meeting, you fall asleep in class, super rude. Don't do it. In Japan, if you take a nap at work, you take a nap in class, not rude. It's actually viewed as a sign of you are working really hard. You're usually working maybe late into the night. You're not getting enough sleep. So the fact that you need to take maybe a nap here or two here or there throughout the day means that you have put dedication in. [00:11:50] Jeremy: Even if the reason you're asleep is because you were playing games late at night. [00:11:54] Sara: Yep. [00:11:55] Jeremy: But they don't know that. [00:11:56] Sara: Yeah. But it's usually the case for my students. [00:11:59] Jeremy: Okay. I'm glad they were having fun at least [00:12:02] Sara: Me too. Why she moved back [00:12:04] Jeremy: That sounds like a really interesting experience. You did it for about two years? Three years. [00:12:12] Sara: So I had a three year contract with an option to extend up to five, although I did have a There were other teachers in my same situation who were actually there for like 10 years, so it was flexible. [00:12:27] Jeremy: Yeah. So I guess when you made the decision to, to leave, what was sort of your, your thinking there? [00:12:35] Sara: My fiance was in America [00:12:37] Jeremy: Good. [00:12:37] Sara: he didn't want to move to Japan [00:12:39] Jeremy: Good, reason. [00:12:39] Sara: Yeah, he was waiting three years patiently for me. [00:12:44] Jeremy: Okay. Okay. my heart goes out there . He waited patiently. [00:12:49] Sara: We saw each other. We, we were very lucky enough to see each other every three or four months in person. Either I would visit America or he would come visit me in Kanazawa. [00:12:59] Jeremy: Yeah, yeah. You, you couldn't convince him to, to fall in love with the country. [00:13:03] Sara: I'm getting there [00:13:04] Jeremy: Oh, you're getting Oh, [00:13:05] Sara: it's, We're making, we're making way. [00:13:07] Jeremy: Good, that's good. So are you taking like, like yearly trips or something, or? [00:13:11] Sara: That was, that was always my intention when I moved back so I moved back in the Spring of 2018 to America and I did visit. In 2019, the following year, so I could attend the graduation ceremony for the last group of students that I taught. [00:13:26] Jeremy: That's so sweet. [00:13:27] Sara: And then I had plans to go in 2020. We know what happened in 2020 [00:13:32] Jeremy: Yeah. [00:13:33] Sara: The country did not open to tourism again until the fall of 2022. But I did just make a trip last month. [00:13:40] Jeremy: Nice [00:13:40] Sara: To see some really good friends for the first time in four years. [00:13:43] Jeremy: Amazing, yeah. Where did you go? [00:13:46] Sara: I did a few days in Tokyo. I did a few days in Niigata cause I was with a friend who studied abroad there. And then a few days in Kanazawa. [00:13:56] Jeremy: That's really cool, yeah. yeah, I had a friend who lived there, but they were teaching English, yeah. And, I always have a really good time when I'm out there, yeah. [00:14:08] Sara: Absolutely. If anyone out there visiting wants to go to Japan, this is your push. Go do it. Reach out to me on LinkedIn. I will help you plan. [00:14:17] Jeremy: Nice, nice. Um, yeah, I, I, I would say the same. Like, definitely, if you're thinking about it, go. And, uh, sounds like Sara will hook you up. [00:14:28] Sara: Yep, I'm your travel guide. Technical terms in Japanese [00:14:31] Jeremy: So you, you studied, uh, you, you said you had a minor in Japanese? Yeah. So, so when you were teaching there, were you teaching classes in English or was it in Japanese? [00:14:42] Sara: It was a mix. Uh, when I was hired, the job description was no Japanese needed. It was a very, like, Global, international style college, so there was a huge emphasis on learning English. They wanted us to teach only in English. My thought was, it's hard enough learning computer science in your native language, let alone a foreign language, so my lectures were in English, but I would assist the labs in japanese [00:15:14] Jeremy: Oh, nice. Okay. And then, so you were basically fluent then at the time. Middle. Okay. Yeah. Yeah. Hey, well, I think if you're able to, to help people, you know, in labs and stuff, and it's a technical topic, right? So that's gotta be kind of a, an interesting challenge [00:15:34] Sara: I did learn a lot of new computer vocabulary. Yes. [00:15:39] Jeremy: So the words are, like, a lot of them are not the same? Or, you know, for, for specifically related to programming, I guess. [00:15:46] Sara: Hmm. Yeah, there are Japanese specific words. There's a lot of loan words that we use. We. Excuse me. There's a lot of loan words that Japanese uses for computer terms, but there's plenty that are just in Japanese. For example, uh, an array is hairetsu. [00:16:08] Jeremy: Okay. [00:16:08] Sara: And like a screen or the display that your monitor is a gamen, but a keyboard would be keyboard... Kībōdo, probably. [00:16:20] Jeremy: Yeah. So just, uh, so that, they use that as a loan word, I guess. But I'm not sure why not the other two. [00:16:27] Sara: Yeah, it's a mystery. [00:16:29] Jeremy: So it's just, it's just a total mix. Yeah. I'm just picturing you thinking like, okay, is it the English word or is it the Japanese word? You know, like each time you're thinking of a technical term. Yeah. [00:16:39] Sara: Mm hmm. I mostly, I, I I went to the internet. I searched for Japanese computer term dictionary website, and kind of just studied the terms. I also paid a lot of attention to the Japanese professors when they were teaching, what words they were using. Tried to integrate. Also, I was able to lean on my study abroad, because it was a technical Japanese, like there were classes that we took that was on technical Japanese. Computer usage, and also eco technology, like green technology. So I had learned a bunch of them previously. [00:17:16] Jeremy: Mm. So was that for like a summer or a year or something [00:17:20] Sara: It was six weeks [00:17:21] Jeremy: Six weeks. [00:17:21] Sara: During the summer, [00:17:22] Jeremy: Got it. So that's okay. So like, yeah, that must have been an experience like going to, I'm assuming that's the first time you had been [00:17:30] Sara: It was actually the second time [00:17:31] Jeremy: The second [00:17:32] Sara: Yeah. That was in 2010 that I studied abroad. [00:17:35] Jeremy: And then the classes, they were in Japanese or? Yeah. Yeah. That's, uh, that's, that's full immersion right there. [00:17:42] Sara: It was, it was very funny in the, in the very first lesson of kind of just the general language course, there was a student that was asking, I, how do I say this? I don't know this. And she was like, Nihongo de. [00:17:55] Jeremy: Oh (laughs) ! [00:17:56] Sara: You must, must ask your question only in [00:17:59] Jeremy: Yeah, Programming resources in Japanesez [00:17:59] Jeremy: yeah. yeah. That's awesome. So, so it's like, I guess the, the professors, they spoke English, but they were really, really pushing you, like, speak Japanese. Yeah, that's awesome. and maybe this is my bias because I'm an English native, but when you look up. Resources, like you look up blog posts and Stack Overflow and all this stuff. It's all in English, right? So I'm wondering for your, your students, when, when they would search, like, I got this error, you know, what do I do about it? Are they looking at the English pages or are they, you know, you know what I mean? [00:18:31] Sara: There are Japanese resources that they would use. They love Guguru (Google) sensei. [00:18:36] Jeremy: Ah okay. Okay. [00:18:38] Sara: Um, but yeah, there are plenty of Japanese language stack overflow equivalents. I'm not sure if they have stack overflow specifically in Japanese. But there are sites like that, that they, that they used. Some of the more invested students would also use English resources, but that was a minority. [00:19:00] Jeremy: Interesting. So there's a, there's a big enough community, I suppose, of people posting and answering questions and stuff where it's, you don't feel like, there aren't people doing the same thing as you out there. [00:19:14] Sara: Absolutely. Yeah. There's, a large world of software development in Japan, that we don't get to hear. There are questions and answers over here because of that language barrier. [00:19:26] Jeremy: Yeah. I would be, like, kind of curious to, to see, the, the languages and the types of problems they have, if they were similar or if it's, like, I don't know, just different. [00:19:38] Sara: Yeah, now I'm interested in that too, and I bet you there is a lot of research that we could do on Ruby, since Ruby is Japanese. [00:19:51] Jeremy: Right. cause something I've, I've often heard is that, when somebody says they're working with Ruby, Here in, um, the United States, a lot of times people assume it's like, Oh, you're doing a Rails app, [00:20:02] Sara: Mm hmm. [00:20:03] Jeremy: Almost, almost everybody who's using Ruby, not everyone, but you know, the majority I think are using it because of Rails. And I've heard that in Japan, there's actually a lot more usage that's, that's not tied to Rails. [00:20:16] Sara: I've also heard that, and I get the sense of that from RubyKaigi as well. Which I have never been lucky enough to attend. But, yeah, the talks that come out of RubyKaigi, very technical, low to the metal of Ruby, because there's that community that's using it for things other than Rails, other than web apps. [00:20:36] Jeremy: Yeah, I think, one of the ones, I don't know if it was a talk or not, but, somebody was saying that there is Ruby in space. [00:20:42] Sara: That's awesome. Ruby's everywhere. LAN parties in college [00:20:44] Jeremy: So yeah, I guess like another thing I saw, during your time at Rochester is you were, involved with like, there's like a gaming club I wonder if you could talk a little bit about your experience with that. [00:20:55] Sara: Absolutely, I can. So, at RIT, I was an executive board member for three or four years at the Electronic Gaming Society. EGS for short, uh, we hosted weekly console game nights in, the student alumni union area, where there's open space, kind of like a cafeteria. We also hosted quarterly land parties, and we would actually get people from out of state sometimes who weren't even students to come. Uh, and we would usually host the bigger ones in the field house, which is also where concerts are held. And we would hold the smaller ones in conference rooms. I think when I started in 2006, the, the, the LANs were pretty small, maybe like 50, 50 people bring your, your, your huge CRT monitor tower in. [00:21:57] Jeremy: Oh yeah, [00:21:57] Sara: In And then by the time I left in 2012. we were over 300 people for a weekend LAN party, um, and we were actually drawing more power than concerts do. [00:22:13] Jeremy: Incredible. what were, what were people playing at the time? Like when they would the LANs like, [00:22:18] Sara: Yep. Fortnite, early League of Legends, Call of Duty. Battlegrounds. And then also just like fun indie games like Armagedtron, which is kind of like a racing game in the style of [00:22:37] Jeremy: okay. Oh, okay, [00:22:39] Sara: Um, any, there are some like fun browser games where you could just mess with each other. Jackbox. Yeah. [00:22:49] Jeremy: Yeah, it's, it's interesting that, you know, you're talking about stuff like Fortnite and, um, what is it? Battlegrounds is [00:22:55] Sara: not Fortnite. Team Fortress. [00:22:58] Jeremy: Oh Team Fortress! [00:22:59] Sara: Sorry. Yeah. Oh, yeah, I got my, my names mixed up. Fortnite, I think, did not exist at the time, but Team Fortress was big. [00:23:11] Jeremy: Yeah. that's really cool that you're able to get such a big group there. is there something about Rochester, I guess, that that was able to bring together this many people for like these big LAN events? Because I'm... I mean, I'm not sure how it is elsewhere, but I feel like that's probably not what was happening elsewhere in the country. [00:23:31] Sara: Yeah, I mean, if you've ever been to, um, DreamHack, that's, that's a huge LAN party and game convention, that's fun. so... EGS started in the early 2000s, even before I joined, and was just a committed group of people. RIT was a very largely technical school. The majority of students were there for math, science, engineering, or they were in the computer college, [00:24:01] Jeremy: Oh, okay. [00:24:01] Sara: GCIS, G C C I S, the Gossano College of Computing and Information Sciences. So there was a lot of us there. [00:24:10] Jeremy: That does make sense. I mean, it's, it's sort of this, this bias that when there's people doing, uh, technical stuff like software, um, you know, and just IT, [00:24:21] Sara: Mm hmm. [00:24:23] Jeremy: there's kind of this assumption that's like, oh, maybe they play games. And it seems like that was accurate [00:24:27] Sara: It was absolutely accurate. And there were plenty of people that came from different majors. but when I started, there were 17, 000 students and so that's a lot of students and obviously not everyone came to our weekly meetings, but we had enough dedicated people that were on the eboard driving, You know, marketing and advertising for, for our events and things like that, that we were able to get, the good community going. I, I wasn't part of it, but the anime club at RIT is also huge. They run a convention every year that is huge, ToraCon, um. And I think it's just kind of the confluence of there being a lot of geeks and nerds on campus and Rochester is a college town. There's maybe like 10 other universities in [00:25:17] Jeremy: Well, sounds like it was a good time. [00:25:19] Sara: Absolutely would recommend. Strong Museum of Play [00:25:22] Jeremy: I've never, I've never been, but the one thing I have heard about Rochester is there's the, the Strong Museum of Play. [00:25:29] Sara: Yeah, that place is so much fun, even as an adult. It's kind of like, um, the, the Children's Museum in Indiana for, for those that might know that. it just has all the historical toys and pop culture and interactive exhibits. It's so fun. [00:25:48] Jeremy: it's not quite the same, but it, when you were mentioning the Children's Museum in, um, I think it's in St. Louis, there's, uh, it's called the City Museum and it's like a, it's like a giant playground, you know, indoors, outdoors, and it's not just for kids, right? And actually some of this stuff seems like kind of sketch in terms of like, you could kind of hurt yourself, you know, climbing [00:26:10] Sara: When was this made? [00:26:12] Jeremy: I'm not sure, but, uh, [00:26:14] Sara: before regulations maybe. ha. [00:26:16] Jeremy: Yeah. It's, uh, but it's really cool. So at the, at the Museum of Play, though, is it, There's like a video game component, right? But then there's also, like, other types of things, [00:26:26] Sara: Yeah, they have, like, a whole section of the museum that's really, really old toys on display, like, 1900s, 1800s. Um, they have a whole Sesame Street section, and other things like that. Yeah. From Java to Ruby [00:26:42] Jeremy: Check it out if you're in Rochester. maybe now we could talk a little bit about, so like now you're working at Thoughtbot as a Ruby developer. but before we started recording, you were telling me that you started, working with Java. And there was like a, a long path I suppose, you know, changing languages. So maybe you can talk a little bit about your experience there. [00:27:06] Sara: Yeah. for other folks who have switched languages, this might be a familiar story for you, where once you get a job in one technology or one stack, one language, you kind of get typecast after a while. Your next job is probably going to be in the same language, same stack. Companies, they hire based on technology and So, it might be hard, even if you've been playing around with Ruby in your free time, to break, make that barrier jump from one language to another, one stack to another. I mean, these technologies, they can take a little while to ramp up on. They can be a little bit different, especially if you're going from a non object oriented language to an object oriented, don't. Lose hope. (laughs) If you have an interest in Ruby and you're not a Rubyist right now, there's a good company for you that will give you a chance. That's the key that I learned, is as a software developer, the skills that you have that are the most important are not the language that you know. It's the type of thinking that you do, the problem solving, communication, documentation, knowledge sharing, Supporting each other, and as Saron the keynote speaker on Wednesday said, the, the word is love. [00:28:35] Jeremy: [00:28:35] Sara: So when I was job hunting, it was really valuable for me to include those important aspects in my skill, in my resume, in my CV, in my interviews, that like, I'm newer to this language because I had learned it at a rudimentary level before. Never worked in it really professionally for a long time. Um, when I was applying, it was like, look, I'm good at ramping up in technologies. I have been doing software for a long time, and I'm very comfortable with the idea of planning, documenting, problem solving. Give me a chance, please. I was lucky enough to find my place at a company that would give me a chance. Test Double hired me in 2019 as a remote. Software Consultant, and it changed my life. [00:29:34] Jeremy: What, what was it about, Ruby that I'm assuming that this is something that you maybe did in your spare time where you were playing with Ruby or? [00:29:43] Sara: I am one of those people that don't really code in their spare time, which I think is valuable for people to say. The image of a software developer being, well, if you're not coding in your spare time, then you're not passionate about it. That's a myth. That's not true. Some of us, we have other hobbies. I have lots of hobbies. Coding is not the one that I carry outside of the workplace, usually, but, I worked at a company called Constant Contact in 2014 and 2015. And while I was there, I was able to learn Ruby on Rails. [00:30:23] Jeremy: Oh, okay. So that was sort of, I guess, your experience there, on the job. I guess you enjoyed something about the language or something about Rails and then that's what made you decide, like, I would really love to, to... do more of this [00:30:38] Sara: Absolutely. It was amazing. It's such a fun language. The first time I heard about it was in college, maybe 2008 or 2009. And I remember learning, this looks like such a fun language. This looks like it would be so interesting to learn. And I didn't think about it again until 2014. And then I was programming in it. Coming from a Java mindset and it blew my mind, the Rails magic also, I was like, what is happening? This is so cool. Because of my typecasting sort of situation of Java, I wasn't able to get back to it until 2019. And I don't want to leave. I'm so happy. I love the language. I love the community. It's fun. [00:31:32] Jeremy: I can totally see that. I mean, when I first tried out Rails, yeah, it, like, you mentioned the magic, and I know some people are like, ah, I don't like the magic, but when, I think, once I saw what you could do, And how, sort of, little you needed to write, and the fact that so many projects kind of look the same. Um, yeah, that really clicked for me, and I really appreciated that. think that and the Rails console. I think the console is amazing. [00:32:05] Sara: Being able to just check real quick. Hmm, I wonder if this will work. Wait, no, I can check right now. I [00:32:12] Jeremy: And I think that's an important point you brought up too, about, like, not... the, the stereotype and I, I kind of, you know, showed it here where I assumed like, Oh, you were doing Java and then you moved to Ruby. It must've been because you were doing Ruby on the side and thought like, Oh, this is cool. I want to do it for my job. but I, I thought that's really cool that you were able to, not only that you, you don't do the programming stuff outside of work, but that you were able to, to find an opportunity where you could try something different, you know, in your job where you're still being paid. And I wonder, was there any, was there any specific intention behind, like, when you took that job, it was so that I can try something different, or did it just kind of happen? I'm curious what your... The appeal of consulting [00:32:58] Sara: I was wanting to try something different. I also really wanted to get into consulting. [00:33:04] Jeremy: Hmm. [00:33:05] Sara: I have ADHD. And working at a product company long term, I think, was never really going to work out for me. another thing you might notice in my LinkedIn is that a lot of my stays at companies have been relatively short. Because, I don't know, I, my brain gets bored. The consultancy environment is... Perfect. You can go to different clients, different engagements, meet new people, learn a different stack, learn how other people are doing things, help them be better, and maybe every two weeks, two months, three months, six months, a year, change and do it all over again. For some people, that sounds awful. For me, it's perfect. [00:33:51] Jeremy: Yeah, I hadn't thought about that with, with consulting. cause I, I suppose, so you said it's, it's usually about half a year between projects or is It [00:34:01] Sara: varies [00:34:01] Jeremy: It varies widely. [00:34:02] Sara: Widely. I think we try to hit the sweet spot of 3-6 months. For an individual working on a project, the actual contract engagement might be longer than that, but, yeah. Maintainers don't get enough credit [00:34:13] Jeremy: Yeah. And, and your point about how some people, they like to jump on different things and some people like to, to stick to the same thing. I mean, that, that makes a lot of, sense in terms of, I think maintaining software and like building new software. It's, they're both development, [00:34:32] Sara: Mm hmm. [00:34:32] Jeremy: they're very different. Right. [00:34:35] Sara: It's so funny that you bring that up because I highly gravitate towards maintaining over making. I love going to different projects, but I have very little interest in Greenfield, very little interest in making something new. I want to get into the weeds, into 10 years that nobody wants to deal with because the weeds are so high and there's dragons in there. I want to cut it away. I want to add documentation. I want to make it better. It's so important for us to maintain our software. It doesn't get nearly enough credit. The people that work on open source, the people that are doing maintenance work on, on apps internally, externally, Upgrades, making sure dependencies are all good and safe and secure. love that stuff. [00:35:29] Jeremy: That's awesome. We, we need more of you. (laughs) [00:35:31] Sara: There's plenty of us out there, but we don't get the credit (laughs) [00:35:34] Jeremy: Yeah, because it's like with maintenance, well, I would say probably both in companies and in open source when everything is working. Then Nobody nobody knows. Nobody says anything. They're just like, Oh, that's great. It's working. And then if it breaks, then everyone's upset. [00:35:51] Sara: Exactly. [00:35:53] Jeremy: And so like, yeah, you're just there to get yelled at when something goes wrong. But when everything's going good, it's like, [00:35:59] Sara: A job well done is, I was never here. [00:36:02] Jeremy: Yeah. Yeah. Yeah. I don't know how. To, you know, to fix that, I mean, when you think about open source maintainers, right, like a big thing is, is, is burnout, right? Where you are keeping the internet and all of our applications running and, you know, what you get for it is people yelling at you and the issues, right? [00:36:23] Sara: Yeah, it's hard. And I think I actually. Submitted a talk to RubyConf this year about this topic. It didn't get picked. That's okay. Um, we all make mistakes. I'm going to try to give it somewhere in the future, but I think one of the important things that we as an industry should strive for is giving glory. Giving support and kudos to maintenance work. I've been trying to do that. slash I have been doing that at ThoughtBot by, at some cadence. I have been putting out a blog post to the ThoughtBot blog called. This week in open source, the time period that is covered might be a week or longer in those posts. I give a summary of all of the commits that have been made to our open source projects. And the people that made those contributions with highlighting to new version releases, including patch level. And I do this. The time I, I, I took up the torch of doing this from a co worker, Mike Burns, who used to do it 10 years ago. I do this so that people can get acknowledgement for the work they do, even if it's fixing a broken link, even if it's updating some words that maybe don't make sense. All of it is valuable. [00:37:54] Jeremy: Definitely. Yeah. I mean, I, I think that, um, yeah, what's visible to people is when there's a new feature or an API change and Yeah, it's just, uh, people don't, I think a lot of people don't realize, like, how much work goes into just keeping everything running. [00:38:14] Sara: Mm hmm. Especially in the world of open source and Ruby on Rails, all the gems, there's so many different things coming out, things that suddenly this is not compatible. Suddenly you need to change something in your code because a dependency, however many steps apart has changed and it's hard work. The people that do those things are amazing. [00:38:41] Jeremy: So if anybody listening does that work, we, we appreciate you. [00:38:45] Sara: We salute you. Thank you. And if you're interested in contributing to ThoughtBot open source, we have lots of repos. There's one out there for you. Thoughts on RubyConf [00:38:54] Jeremy: You've been doing programming for quite a while, and, you're here at, at RubyConf. I wonder what kind of brings you to these, these conferences? Like, what do you get out of them? Um, I guess, how was this one? That sort of thing. [00:39:09] Sara: Well, first, this one was sick. This one was awesome. Uh, Ruby central pulled out all the stops and that DJ on Monday. In the event, in the exhibit hall. Wow. Amazing. So he told me that he was going to put his set up on Spotify, on Weedmaps Spotify, so go check it out. Anyway, I come to these conferences for people. I just love connecting with people. Those listening might notice that I'm an extrovert. I work remotely. A lot of us work remotely these days. this is an opportunity to see some of my coworkers. There's seven of us here. It's an opportunity to see people I only see at conferences, of which there are a lot. It's a chance to connect with people I've only met on Mastodon, or LinkedIn, or Stack Overflow. It's a chance to meet wonderful podcasters who are putting out great content, keeping our community alive. That's, that's the key for me. And the talks are wonderful, but honestly, they're just a side effect for me. They just come as a result of being here. [00:40:16] Jeremy: Yeah, it's kind of a unique opportunity, you know, to have so many of your, your colleagues and to just all be in the same place. And you know that anybody you talk to here, like if you talk about Ruby or software, they're not going to look at you and go like, I don't know what you're talking about. Like everybody here has at least that in common. So it's, yeah, it's a really cool experience to, to be able to chat with anybody. And it's like, You're all on the same page, [00:40:42] Sara: Mm hmm. We're all in this boat together. [00:40:45] Jeremy: Yup, that we got to keep, got to keep afloat according to matz [00:40:49] Sara: Gotta keep it afloat, yeah. [00:40:51] Jeremy: Though I was like, I was pretty impressed by like during his, his keynote and he had asked, you know, how many of you here, it's your first RubyConf and it felt like it was over half the room. [00:41:04] Sara: Yeah, I got the same sense. I was very glad to see that, very impressed. My first RubyConf was and it was the same sort of showing of [00:41:14] Jeremy: Nice, yeah. Yeah, actually, that was my first one, too. [00:41:17] Sara: Nice! [00:41:19] Jeremy: Uh, that was Nashville, Yeah, yeah, yeah. So it's, yeah, it's really interesting to see because, the meme online is probably like, Ah, Ruby is dead, or Rails is dead. But like you come to these conferences and yeah, there's, there's so many new people. There's like new people that are learning it and experiencing it and, you know, enjoying it the same way we are. So I, I really hope that the, the community can really, yeah, keep this going. [00:41:49] Sara: Continue, continue to grow and share. I love that we had first timer buttons, buttons where people could self identify as this is my first RubyConf and, and then that opens a conversation immediately. It's like, how are you liking it? What was your favorite talk? [00:42:08] Jeremy: Yeah, that's awesome. okay, I think that's probably a good place to start wrapping it. But is there anything else you wanted to mention or thought we should have talked about? [00:42:18] Sara: Can I do a plug for thoughtbot? [00:42:20] Jeremy: yeah, go for it. [00:42:21] Sara: Alright. For those of you out there that might not know what ThoughtBot does, we are a full software lifecycle or company lifecycle consultancy, so we do everything from market fit and rapid prototyping to MVPs to helping with developed companies, developed teams, maybe do a little bit of a Boost when you have a deadline or doing some tech debt. Pay down. We also have a DevOps team, so if you have an idea or a company or a team, you want a little bit of support, we have been around for 20 years. We are here for you. Reach out to us at thoughtbot.com. [00:43:02] Jeremy: I guess the thing about Thoughtbot is that, within the Ruby community specifically, they've been so involved with sponsorships and, and podcasts. And so, uh, when you hear about consultancies, a lot of times it's kind of like, well, I don't know, are they like any good? Do they know what they're doing? But I, I feel like, ThoughtBot has had enough, like enough of a public record. I feel It's like, okay, if you, if you hire them, um, you should be in good hands. [00:43:30] Sara: Yeah. If you have any questions about our abilities, read the blog. [00:43:35] Jeremy: It is a good blog. Sometimes when I'm, uh, searching for how to do something in Rails, it'll pop up, [00:43:40] Sara: Mm hmm. Me too. Every question I ask, one of the first results is our own blog. I'm like, oh yeah, that makes sense. [00:43:47] Jeremy: Probably the peak is if you've written the blog. [00:43:50] Sara: That has happened to my coworkers They're like, wait, I wrote a blog about this nine years ago. [00:43:55] Jeremy: Yeah, yeah. So maybe, maybe that'll happen to you soon. I, I know definitely people who do, um, Stack Overflow. And it's like, Oh, I like, this is a good answer. Oh, I wrote this. (laughs) yeah. Well, Sara, thank you so much for, for chatting with me today. [00:44:13] Sara: Absolutely, Jeremy. Thank you so much for having me. I was really glad to chat today.

Giant Robots Smashing Into Other Giant Robots
482: Evil Martians with Irina Nazarova

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Jul 6, 2023 33:46


Irina Nazarova is CEO of Evil Martians, a product development consultancy that works with startups and established businesses while creating open-source products and services. Victoria talks to Irina about getting a sense of what people are interested in learning about or what kind of problems they have, how consulting and product development complement each other, and of course, the question on everyone's minds: Is Evil Martians really evil?

The Bike Shed
391: Learn with APPL

The Bike Shed

Play Episode Listen Later Jul 5, 2023 40:45


Stephanie went to her first WNBA game. Also: Bingo. Joël's new project has him trying to bring in multiple databases to back their ActiveRecord models. He's never done multi-database setups in Rails before, and he doesn't hate it. Stephanie shares bits from a discussion with former Bike Shed host Steph Viccari about learning goals. Four elements stood out: Adventure (try something new) Passion (topic) Profit (from recent learnings) Low-risk (applicable today) = APPL Stephanie and Joël discuss what motivates them, what they find interesting vs. what has immediate business value, and how they advocate for themselves in these situations. They ponder if these topics can bring long-term value and discuss the impact that learning Elm had on Joël's client work. Elm (https://elm-lang.org/) Practical Object-Oriented Design in Ruby (https://www.poodr.com/) Design Patterns in Ruby (http://designpatternsinruby.com/) Quarter Life (https://www.penguinrandomhouse.com/books/579928/quarterlife-by-satya-doyle-byock/) Working Iteratively (https://thoughtbot.com/blog/working-iteratively) Transcript: JOËL: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Joël Quenneville. STEPHANIE: And I'm Stephanie Minn. And together, we're here to share a bit of what we've learned along the way. JOËL: So, Stephanie, what's new in your world? STEPHANIE: All right, I have a new-new thing and an old-new thing to share with you today. So the new-new thing is that I went to my first WNBA game [laughs] last week, which is also my third professional sports game ever, probably. I am not a sports person. But a rather new friend of mine invited me to go with her because they are fans, and so I was like, yeah, sure. I'll try anything once. And I went, and I had a great time. It was very exciting. I mean, I know the basic rules of basketball, right? Get the ball in the hoop. But I was very surprised to see how fast-paced it was. And, you know, I was like, wow, like, this is so much fun. There's so much going on, like, the music, you know, the crowd. It was very energizing. And then my friend actually told me that that was a pretty slow game, [chuckles] relative to how they normally go. And I was like, oh, wow, like, if that was slow, then I can't wait for a real competitive [laughs] game next time. So that's my new-new thing. I had a good time. Will do it again. I'm just, like, a 15-minute bike ride from the stadium for our team in Chicago. It's called The Sky. That's our WNBA team. So yeah, I'm looking forward to being basketball Stephanie, I guess. [chuckles] JOËL: That's really cool. How does the speed compare to other sports you've gone to see? STEPHANIE: I think this is why I was interested because I've really only seen baseball, for which I know very little. And that, I think, is, like, a much slower-paced kind of sport. Yeah, I have some memories of going to, like, college football games, which also, like, quite slow. I just remember standing around for a while. [laughs] So I think basketball might be the thing for me, at least in terms of engaging my interest. JOËL: You want something that actually engages you with the sport the whole time. It's not just a social event themed around occasionally watching someone do something. STEPHANIE: Yes, exactly. I also enjoyed the half-time performances, you know, there was just, like, a local dance team. And I thought that was all just very fun. And, yes, I had a lot to, you know, just, like, point to and ask questions about because there was just so much going on, as opposed to sitting and waiting, at least that was my experience [laughs] at other kinds of sports games. As for the old-new thing, now that it's summer, there is a local bar near me that does bingo every week. But it's not just normal bingo. It's called veggie bingo, which I realize is kind of confusing [chuckles] if you just, like, call it veggie bingo, but it's bingo where you win vegetables or, like, produce from local community gardens and other, you know, small batch food items. And I had a great time doing it last year. I met some new friends. It just became our weekly hangout. And so I'm looking forward to doing that again. And, I don't know, I'm just glad I have fun things to share about what's new in my world now that the weather is warm and I'm doing stuff again. I feel like there was one point in the winter where I was coming [chuckles] onto the show and sharing how I had just gotten a heated blanket in the middle of winter, and that was the most exciting thing going on for me. So it feels good to be able to bring up some new stuff. JOËL: Seasonality is a thing, right? And, you know, there are rhythms in life. And sometimes things are more fast-paced, sometimes they're a bit slower. That's really exciting. Did you take any produce home, or did you win anything when you went to play? STEPHANIE: I did. I won a big bag of produce the last time that I went. At this point, it was last season. But it was right before I was about to go on vacation. So I ended up -- JOËL: Oh no. STEPHANIE: [chuckles] Right. I ended up not being able to, you know, keep it in the fridge and just giving it away to my friends who did not win. So I think it was a good situation overall. That's my tip, is go to bingo or any kind of prize-winning hang out as a group, and then you can share the rewards. It's very exciting. Even if you don't win, you know, like, probably someone else at your table will win, and that is equally fun. JOËL: I think the closest I've been to that experience is going to play, like, bar trivia with some friends and then winning a gift card that covers our dinner and drinks for the evening. STEPHANIE: Yeah, yeah, that's great. I used to go to a local trivia around me too. The best part about bingo, though, is that it requires no skill at all. [laughs] I, yeah, didn't realize, again, how into these kinds of things I would be until I just tried it out. Like, that was...bingo is another thing I don't think I would have internally decided to go do. But yeah, my friends just have all these great ideas about fun things to do, and I will happily join them. So, Joël, what's new in your world? JOËL: So I've recently started a new client project. And one of the really interesting things that I've been doing on this project is trying to bring in multiple databases to back our ActiveRecord models. This is a Rails app. I've never done multi-database setups in Rails before. It's been a feature since Rails 6, but this is my first time interacting with that system. And, you know, it's actually pretty nice. STEPHANIE: Really? It ended up being pretty straightforward or pretty easy to set up? JOËL: Yeah. There's a little bit of futzing around you have to do with the database YAML configuration file. And then what you end up doing is setting up another base class for your ActiveRecord models to inherit from. So, typically, you have that application record that you would inherit from for your primary database. But for other databases, if you want a model to be backed by a table from that system, then you would have a separate base class that all of those models inherit from, and that's pretty much it. Everything else just works. A bunch of your Rake tasks get a little bit different. So you've got to, like, configure your setup scripts and your test scripts and all that thing a little bit differently. But yeah, you can just query, do all the normal things you do with an ActiveRecord model, but it's reading from a different database. STEPHANIE: That's really cool that it ended up being pretty painless. And I'm thinking, for the most part, as a developer, you know, working in that kind of codebase; maybe they don't really need to know too much about the details of the other databases. And they can just rely on the typical Rails conventions and things they know how to do via Rails. Do you suspect that there might be some future where that might become a gotcha or something that someone has to debug a little further because of the multi-database setup? JOËL: There are some infrastructure things, but I think I'm handling all of them upfront. So like I said, configuring various setup scripts, or test scripts, or CI, that kind of thing to make sure that they all work. Once that's all done, I think it should pretty much just work. And people can use them like they would normal ActiveRecord models. The one gotcha is that you can't join models across two different databases. You can't use ActiveRecord to write a query that would try to join two tables that are in different databases because the SQL won't allow for that. So, if you're ever trying to do something like that or you have some kind of association where you're trying to do some special join, that would not work. So, if somebody attempts that, they might get an unexpected error. Other than that, I think it just keeps working as normal, and people can treat it more or less as if it's one database. STEPHANIE: That's interesting. How do you model relationships between tables on the two different databases, then? Like, how would that work? JOËL: I've not gotten that far yet. For some things, I imagine just it's two queries. I'm not sure if the ActiveRecord associations handle that automatically for you. I think they probably will. So you probably can get away with an association where one model lives in one database. Let's say your article lives in one database, and it has many comments that live in a different database. Because then you would make one query to load the article, get the article ID, and then you would do another query to the second database and say, hey, find all the comments with this article ID, which is already, I think, what ActiveRecord does in one single database. It is making two queries. It's just that now those two queries are going to be two different databases rather than to a single one. STEPHANIE: Interesting. Okay. I did think that maybe ActiveRecord did some fancy join thing under the hood. And when you mentioned that that wouldn't be possible when the two tables are on different databases, I was kind of curious about how that would work. But that makes sense. That would be really cool if it is, you know, that straightforward. And, hopefully, it just doesn't become too big of an issue that comes back to haunt someone later. JOËL: Right. So pretty much, if there is a situation where you were relying on a JOIN, you will now have to make two separate queries and then combine the results yourself. STEPHANIE: Right. I also want to give you kudos for doing all the good work of setting it up so that, hopefully, future developers don't have to think about it. JOËL: Kudos to the Rails team as well. It's nice to have that just kind of built into the framework. Again, it's not something I've needed in, you know, a decade of doing Rails, but then, you know, now that I have run into a situation where I need that, it just works out of the box. So that's been really nice. So, a couple of weeks ago, we talked about the fact that we were going through review season and that we had to fill out reviews for ourselves then also fill out peer reviews for each other. You had brought up a really interesting conversation you had about reaching out to other people and trying to get feedback on what kind of review or feedback would be helpful for them. STEPHANIE: I did, yeah. Though, I think in this case, the person writing that feedback actually reached out to me, but certainly, it goes both ways. Spoiler alert - that person was Steph Viccari, former [laughs] host of The Bike Shed. JOËL: So Steph also reached out to me with similar questions. And that spawned a really interesting conversation around personal goals and what it looks like, particularly when it comes to what to learn next in technology. We started discussing things, and I listed out some different things that I was interested in. And then just kind of out of nowhere, Steph just pulls out this, like, oh, I noticed these four elements. And I'm going to list them out here because it's really cool. So these four elements were adventure, so trying something new. Passion, so something that's really exciting to you. Profit something where you can leverage some recent things that you've done to get more value out of some work you've already done. And then finally, low risk, something that would be applicable today. And it just kind of turns out that this makes a funny little acronym: APPL. And apples are often a symbol of learning. So that was kind of a fun coincidence. STEPHANIE: I love when someone is able to just pull apart or to tease out pieces of, you know, something that you might have just, like, kind of dumped all of into a message or something, and then to get, like, a second eye to really pick out the themes is so valuable, I think. And I'm obsessed with this framework. I think we might have come across something new that could really be helpful for a lot of other people. JOËL: It's definitely...I think it shows capacity for a higher level of thinking when someone's able to just look at a bunch of concrete things and say, wait a minute; I'm seeing some larger themes emerge from what you're talking about. And I always really appreciate it when I'm having a conversation with someone, and they're like, "Hey, I think what I'm hearing is this." And you're like, "Whoa, you're totally right. And I did not even know that that's where I was going." STEPHANIE: Absolutely. I'd love to go through this acronym and talk about a few different things that we've learned in our careers that kind of correspond with each of these elements. JOËL: Yeah, that sounds great. So I think, you know, the first one here is adventure, trying something new. So, what's something where you tried something new or adventurous that you think was worthwhile? STEPHANIE: Hosting this podcast. [laughs] It was a huge adventure for me and a really big stretch, I think. And that's what the idea of adventure evokes for me is, like, maybe it's uncharted territory for you, and you might have some reservations about it. But, you know, obviously, the flip side of an adventure is how fun and exciting and just new and stimulating it can be. And so I think, yeah, like, when I first started doing this with you, and even when you first asked me, I was pretty nervous. I was really hesitant. It took me a long time to, you know, think it over. I was like, do I want to commit to something that I have never done before, and it's, like, a pretty longer-term commitment? And I'm really glad I did it. It's certainly been an adventure. It's, you know, got its ups and downs. You know, not every week do I feel like that went really well, like, that was a great episode. Sometimes I'm like, that was just an okay episode, [laughs] and, you know, that's fine too. But I feel like this was really important in helping me feel more confident in sharing my technical opinions, helping me feel more comfortable just kind of, like, sharing where I am and not feeling like I should be somewhere else, like, some other level or have already known something. Like, the point is for us to share the journey week by week, and that was something that was really hard for me. So being on this Bike Shed adventure with you has been very valuable for me. JOËL: Yeah, it's sharing these new things we've learned along the way. STEPHANIE: Literally. Yes. What about you? Do you have something adventurous that you learned? JOËL: I think an important inflection point where I tried something new was when I learned the Elm programming language. So I had mostly done procedural languages back in the day. And then I got into Ruby, did a lot of OO. And then I got into Elm, which is statically-typed, purely functional, all these things that are kind of opposite of Ruby in some ways. But I think it shares with Ruby that same focus on developer happiness and developer productivity. So, in some ways, I felt really at home. But I had to learn just a whole new way of programming. And, one, it's cool. I have a new tool in my belt. And I think it's been a couple of years just learning how to use this language and how to be effective with it. But then afterwards, I spent a couple of years just kind of synthesizing the lessons learned there and trying to see, are there broader principles at play here? Are there ideas here that I can bring back to my work in Ruby? And then maybe even are there some ideas here that intersect with some theories and things that I know from Ruby? So maybe some ways of structuring data or structuring code from functional programming where some best practices there kind of converge on similar ideas as maybe some object-oriented best practices, or maybe some ideas from test-driven development converge on similar ideas from functional programming. And I think that's where, all of a sudden, I was unlocking all these new insights that made me a better Ruby developer because I'd gone on an adventure and done something completely out of left field. STEPHANIE: Yeah, absolutely. Do you remember what was hard about that when you first embarked on learning Elm? JOËL: All the things you're used to doing, you just can't do. So you don't have looping constructs in Elm. The only thing you can do is recursion, which, you know, it's been a long time since CS classes. And you don't typically write recursion in Ruby. So I had to learn a whole new thing. And then it turns out that most people don't write recursion. There's all these other ways of doing things that you have to learn. You have to learn to do folds or to use maps and things like that. Yeah, you're just like, oh, how do I do X in Elm? And you have to figure it out. And then maybe sometimes it turns out you're asking the wrong question. So it's like, oh, how do I do the equivalent of a for loop with array indexes in Elm to, like, iterate through a data structure? And it's like, well, kind of here's technically the way you could do that, but you would never solve a problem in that way. You've got to learn a new way of thinking, a new way of approaching problems. And I think it was that underlying new paradigm that was really difficult to get. But once I did get it, now that I have two paradigms, I think it made me a much more solid developer. STEPHANIE: Right. That sounds very humbling, too, to kind of have to invert what you thought you knew and just be in that, you know, beginner's mindset, which we've talked about a little bit before. JOËL: I think in some ways now being on the other side of it, it's similar to the insights you get from speaking multiple human languages, so being bilingual or trilingual or something like that where instead of just having assumptions about, oh, this is just how language works, because that's how your personal language works, now that you have more than one example to draw on, you can be like, oh, well, here's how languages tend to do things differently. Here's how languages are similar. And I think it gives you a much better and richer feeling for how languages work and how communication works. And similar to having multiple paradigms in programming, I think this has given me a much richer foundation now for exploring and building programs. STEPHANIE: That's really cool. I guess that actually leads quite well into the next element, which is passion. Because once you've tried some new things, you get the information of do I like this thing, or do I not like this thing? And then from there, you know, you gravitate towards the things you are passionate about to get a deeper understanding. And it becomes less about like, oh, just testing out the waters and like, knowing, hey, like, I constantly find myself thinking about this, like, let me keep going. JOËL: Yeah. Or sometimes, it's deciding what do I want to learn next? And you just pick something that's interesting to you without necessarily being like, oh, strategically, I think this is another paradigm that's going to expand my mind. Or this is going to make me, you know, help me get that promotion next quarter, purely based off of interest. Like, this sounds fun. STEPHANIE: That's really interesting because I think I actually came to it from a different angle, where one thing that I think was very helpful in my learning that came just, like, completely internally, like, no one told me to do this was reading books about design patterns. And that was something that I did a couple of years into my career because I was quite puzzled, I suppose, by my day-to-day experience in terms of wanting to solve a problem or develop a feature but not having a very good framework for steps to go about it, or not feeling very confident that I had a good strategy for doing it. It was very, for me, it felt very just kind of, like, throwing pasta to the wall and seeing what would stick. And I was really interested in reducing that pain, basically. And so that led me to read books. And, again, that was not something, like, someone was like, hey, I really think that you could benefit from this. It was just like, well, I want to improve my own experience. And, you know, some of the ones that I remember reading (And this was based off of recommendations from others kind of when I floated the idea.) was, you know, Sandi Metz's Practical Object-Oriented Design in Ruby. Design Patterns in Ruby by Ross Olsen. Those were just, like, purely out of interest. Yeah, I guess I'm curious, for you, what fun and passion look like. JOËL: Yeah, I think one thing that's a really fun side effect of passion learning is that I find that I tend to learn a lot faster and go a lot deeper, or I get more for every individual hour I put into learning just because passion or interest is such a multiplier. Similar to you, I think I went through a time where I was just gobbling up everything I could see on design patterns, and code structure, things like that. Yeah, I've always been really excited about data modeling in general and how to structure programs to make them easy to change while also not putting a high maintenance burden on it, learning those trade-offs, learning those principles, learning a lot of those ideas. I think that desire came out of some pain I felt pretty early on in my programming career, where I was just writing purely self-taught at this point from a few tutorials online. Code beyond a few hundred lines would just kind of implode under the weight of its own complexity. And so, like, I know that professional programmers are writing massively larger programs that are totally fine. So what am I missing? And so I think that sort of spurred an interest. And I've kind of been chasing that ever since. Even though I'm at the point where that is no longer a problem in my daily life, it is still an interest that I keep. STEPHANIE: Yeah. If I were to pull out another interest of yours that I've noticed that kind of seems in the same realm of, you know, you can just chase this forever, is working incrementally, right? And just all the ways that you can incorporate that into your day-to-day. And I know that's something we've talked about a lot. But I think that's really cool because, yeah, it just comes from just a pure desire on your own front to, like, see how far you can take it. JOËL: I think you pulled out something interesting there. Because sometimes, you have an interest in a whole new topic, and sometimes the interest is more about taking something I already know and just seeing can I take it to an extreme? What happens when I really go to the boundaries of this idea? And maybe I don't need to go there ever for a client project. But let me put up a proof of concept somewhere and try it out just for the fun of it to see can I take this idea, then push it to an extreme and see does it break at an extreme? Does it behave weirdly? And that is just an enriching journey in and of itself. Have you ever done, like, a...maybe not a whole learning journey but, you know, taken a few hours, or maybe even, like, some time on one of our investment Fridays to just explore some random idea and try it out? And it's like, huh, that was cool; that was a journey. And then maybe you move on to something next week because it's not like a big planned thing. But you're taking a few hours to dig into something totally random. STEPHANIE: I actually think I'm less inclined to do that than maybe you or other folks are. I find the things I choose to spend my time on do have to feel more relevant to me in the moment or at least in my day-to-day work. And I think that actually is another excellent transition into the last couple of elements in the APPL framework that we've now coined. The next being profit or, I guess, the idea of being valuable to you in your job in that moment, I suppose. Or I guess not even in that moment, but kind of connecting what you're learning to something that would provide you value. So I know you were talking about learning Elm, and now you're able to see all of the value that it has provided, but maybe at the time, that was a little bit less of your focus. But for me, I find that, like, a driver for how I choose to spend my time. Often it's because, yeah, for the goal of reducing pain. Being consultants, we work on a lot of different projects, sometimes in different frameworks, or languages, or new technologies. Like, you've mentioned having to, just now, on your new client project learning how to interact with different databases, and it sounds like older software that you might not have encountered before. And I think that ends up falling higher on my priority list depending on the timing of what I'm currently working on is, oh, like, you know, TypeScript is something that has, like, kind of come and go as my projects have shifted. And so when it comes back to working on something using it, I'm like, oh, like, I really want to focus on this right now because it has very clear value to me in the next three to six months, or however long. But I have also noticed that once I'm off of that project, that priority definitely recedes. JOËL: Yeah, I think that plays into that final element as well of the APPL, the low risk things that are applicable today that have value right now. Those tend to be things like, oh, I see that I'm going to be scheduled on a client that needs this technology next month. Maybe I should learn that, or maybe I should refresh this idea or go a little bit deeper because this is something new that I'm going to need. So, at some point, I knew that there was a Python project coming down the line. I was like, okay, well, maybe I'm going to spend a couple of Fridays digging into some Django tutorials and compare and contrast with Rails. STEPHANIE: The low-risk element is interesting to me because I found it to be a challenging balance to figure out how much time to invest in becoming really comfortable in a new technology. I find myself sometimes learning just enough to get what I need to get done. And then other times really feeling like, wow, like, I wish I knew this better because that would make my life easier, or I would just feel a lot better about what I'm doing. And kind of struggling with when to spend that time, especially when there's, you know, other expectations of me in terms of my delivery. JOËL: Yeah, that almost sounds like a contrast between technologies that fall in that low-risk bucket, like, immediately useful, versus ones that fall in the passion bucket that you're interested in taking deeply and maybe even to an extreme. STEPHANIE: That's really interesting. What I like about this list of themes that we've pulled out is that, like, one thing can fall into a number of different categories. And so it's really quite flexible. It actually reminds me of a book that I just finished reading. The book is called Quarterlife. And the thing that stuck out to me the most is the author, who is a psychotherapist; she has basically come up with two types of people, or at least two things, that end up being really big drivers of, like, human motivation and behavior. And that's stability types and meaning types, and the goal is to have a little bit of both. So you may be more inclined towards stability and wanting to learn the things that you need to know for your job, to do well in your role, kind of like we were talking about to reduce that pain, to feel a little more in control, or have a little more autonomy over your day to day and how you work. And then there's the seeking meaning, and when we talked about adventure and passion, it kind of reminded me of that. Like, those are things that we do because we want to feel something or understand something or because it's fun. And ironically, this list of four things has two that kind of fall into each category. And ultimately, the author, she, you know, was very upfront about needing both in our lives. And I thought that was a really cool distinction. And it was helpful for me to understand, like, oh yeah, like, in the early years of my career, I did really focus on learning things that would be profitable, or valuable, or low risk because those were the things that I needed in my job, like, right now. And I am now feeling stable enough to explore the meaningful aspects and feel excited by trying out things that I think I just wasn't ready for back in the day. But it actually sounds like you may kind of have a different leaning than I do. JOËL: That is really interesting. I think what was really fascinating as you mentioned those two sort of types of people. And, in my mind, now I'm immediately seeing some kind of two-dimensional graph, and now we've got four quadrants. And so are we leaning towards stability versus...was it adventure was the other one? Or meaning. STEPHANIE: Meaning, yes. JOËL: So now you've got, like, your quadrant that is high stability, high meaning, low stability, high meaning, like, all those four quadrants. And maybe these four things happen to fall into that, or maybe there's some other slightly different set of qualities that you could build a quadrant for here. One that is interesting, and I don't know how closely it intersects with this idea of stability versus meaning, is how quickly the things you learn become useful. So that low risk, like that L from APPL, those are things that are immediately useful. So you put a little bit of work learning this, and you can immediately use it on the job. In fact, that's probably why you're learning it. Whereas me going off and learning Elm is not because we've got any clients in the pipeline using Elm. It's purely for interest. Is it going to pay off? I think most learning pays off long-term, especially if it helps you build a richer understanding of the different ways software works or helps you have new mental models, new tools for doing things. And so I think, you know, 5, 6, 7 years later, learning Elm has been one of the highest payoff things that I've done to kind of take my coding career to the next level. That being said, I would not have seen that at the time. So the payoff is much more long-term. How do you kind of navigate when you're trying to learn something, whether you want something with a short-term payoff or a longer-term payoff? STEPHANIE: Yeah, that's so interesting. I wonder if there was maybe someone who could have helped you identify the ways that Elm could have possibly paid off. And I know, you know, you're looking back on it in retrospect, and it's easy to see, especially after many years and a lot of deep thinking about it. But kind of referring back to this idea of seeking meaning and that just being important to feeling happy at your job, like, maybe it was just valuable because you needed to scratch that itch and to experience something that would be interesting or stimulating in that way to prevent burning out or something like that. JOËL: Oh, I like that. So the idea that you're learning a thing, not specifically because you're expecting some payoff in the long term but because of the joy of learning, is reward in and of itself, and how that actually keeps you fresh in the moment to keep going on a career that might, you know, last 5, 10, 20, 30 years, and how that keeps you refreshed rather than like, oh, but, like, I'm going to see a payoff in five years where now, all of a sudden, I'm faced with a problem. And I can be like, ah, yes, of course, monads are what we need here. And that's a nice side effect, but maybe not the main thing you look for when you're going for something in that passion bucket. STEPHANIE: Yeah, absolutely. To go back to your question a little bit, I had mentioned that I was wondering if there was someone who could help point out ways that your interests might be useful. And I think that would be a strategy that I would try if I find myself in that conundrum, I suppose, of, like, being like, hey, like, this is really interesting to me. I'm not able to see any super immediate benefits, but maybe I can go find an expert in this who can share with me, like, from their experience, what diving deep into that topic helped them. And if that's something that I need to then kind of justify to a manager or just kind of explain, like, hey, this is why I'm spending my time doing this is because of this insight that I got from someone else. That would be, I think, a really great strategy if you find yourself needing to kind of explain your reasoning. But yeah, I also think it's, like, incredibly important to just have passion and joy in your work. And that should be a priority, right? Even if it's not immediately clear, the tangible or valuable to the company benefits in the current moment. JOËL: And I think what I'm hearing is that maybe it's a bit of a false premise to say there are some things that you follow for passion that only pay off in the long term. Because if you are in it for passion, then you're getting an immediate payoff regardless. You may also get an additional payoff in the long term. But you're absolutely getting some kind of payoff immediately as well. STEPHANIE: Yeah, I think that's true for adventure because knowing what you don't like is also really valuable information. So, if you try something and it ends up not panning out for you, you know, I think some people might feel a little bit disappointed or discouraged. They think, oh, like, they kind of wasted time. But I don't know; I think that's all part of the discovery process. And that brings you closer and closer to, yeah, knowing what you want out of your learning and your career. JOËL: So I'm really curious now. This whole, you know, APPL framework came out of a very random conversation. Is this something that maybe you're going to take into your own sort of goal-setting moving forward? Maybe try to identify, like, okay, what is something adventurous that I want to do, something I want to do for passion, something that I think for profit, and then something low risk? And then maybe have that inform where you put some energy in the next quarter, the next year, whatever timeline you're planning for. STEPHANIE: Yeah, I thought about this a little bit before we started recording. But one very loose goal of mine...and this actually, I think, came up a little more tangibly after coming back from RubyKaigi and being so inspired by all of the cool open-source tooling and hearing how meaningful it was for people to be working on something that they knew would have an impact on a lot of people in their development experience. Having an impact is something that I feel very passionate about and very interested in. And the adventure part for me might be, like, dabbling a little bit into open-source tooling and seeing if there might be a project that I would be interested or comfortable in dipping my feet into. What about you? Do you have anything in the near or long-term future that might fall into one of these buckets? JOËL: So I do have a list of things. I don't know that I will pursue all of them or maybe any of them. But here's my kind of rough APPL here. So something adventurous, something new would be digging into the language Rust. Again, the idea is to try a completely new paradigm, something low-level, something typed, something that deals with a lot of memory, something that does well with concurrency and parallelism. These are all things that I've not explored quite as much. So this would be covering new ground. Something that is a passion, something that's interesting to me, would be formal methods, so I'm thinking maybe a language like TLA+ or Alloy. Data modeling, in general, is something that really excites me. These techniques that I think build on some of the ideas that I have from types but that go, like, to an extreme and also in a slightly different direction are really intriguing to me. So, if there's something that maybe I'm staying up in the evenings to do, I think that might be the most intriguing thing for me right now. Something that might be more profitable, I think, would be digging into the world of data science, particularly looking at Notebooks as a technology. Right now, when I need to crunch data, I'm mostly just doing spreadsheets. But I think there are some really cool things that we could do with Notebooks that come up in client work. I manage to do them when you're with a random command-line script or sometimes with Excel. But I think having that tool would probably be something that allows me to do that job better. And then, finally, something low-risk that I know we could use on a client project would be digging in more into TypeScript. I know just enough to be dangerous, but we do TypeScript all the time. And so, mastering TypeScript would definitely be something that would pay off on a client project. STEPHANIE: I love that list. Thank you for sharing. JOËL: Also, I just want to note that there are only four things here. It doesn't fully spell APPL because there's no E at the end. And so when I see the acronym now, I think it looks like a stock ticker. STEPHANIE: It really does. But I think it's pretty trendy to have an acronym that's basically a word or a noun but then missing a vowel so... JOËL: Oh, absolutely. Time to register that applframework.com domain. STEPHANIE: Yeah, I agree. I also love what you said. You called it a rough APPL. And that was very [laughs] evocative for me as well. And just thinking about an apple that someone has, like, bitten into a little bit [laughs] and has some rough edges. But yeah, I hope that people, you know, maybe find some insight into the kinds of learnings and goals that they are interested in or are thinking about. And using these themes to communicate it to other people, I think, is really important, or even to yourself. Maybe yourself first and then to others because that's how your co-workers can know how to support you. JOËL: That's really interesting that you are thinking of it in terms of a tool for communication to others. I think when I first encountered this idea, it was more as a tool of self-discovery, trying to better understand why I was interested in different things and maybe better understanding how I want to divide up the energy that I have or the time that I have into different topics. But I can definitely see how that would be useful for communicating with team members as well. STEPHANIE: On that note, shall we wrap up? JOËL: Let's wrap up. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.

Giant Robots Smashing Into Other Giant Robots
479: Wistia with Brendan Schwartz

Giant Robots Smashing Into Other Giant Robots

Play Episode Listen Later Jun 15, 2023 38:45


Brendan Schwartz is the Co-Founder and CTO of Wistia, software that makes it easy to find, engage, and grow your audience with video. Victoria talks to Brendan about the latest updates on the platform, interesting problems he found that Wistia was able to remove and help his team get to speed and velocity, and the personal value that drives his decision-making. Wista (https://wistia.com/) Follow Wistia on Twitter (https://twitter.com/wistia) or LinkedIn (https://www.linkedin.com/company/wistia/). Follow Brendan Schwartz on LinkedIn (https://www.linkedin.com/in/brendanschwartz/), Twitter (https://twitter.com/brendan), or visit his website (https://brendanschwartz.com/). Follow thoughtbot on Twitter (https://twitter.com/thoughtbot) or LinkedIn (https://www.linkedin.com/company/150727/). Become a Sponsor (https://thoughtbot.com/sponsorship) of Giant Robots! Transcript: VICTORIA: This is the Giant Robots Smashing Into Other Giant Robots Podcast, where we explore the design, development, and business of great products. I'm your host, Victoria Guido. And with me today is Brendan Schwartz, Co-Founder and CTO of Wistia, software that makes it easy to find, engage, and grow your audience with video. Brendan, thank you for joining us. BRENDAN: Thanks so much for having me. VICTORIA: And I believe this will be your third time, at least, on the Giant Robots Podcast, right? BRENDAN: Yes, I think this is my third appearance. Thank you for having me back. VICTORIA: Yes. BRENDAN: Is there anything I receive? What is it when you host SNL in a [crosstalk 00:39]. VICTORIA: You get a jacket. BRENDAN: A jacket, yeah. VICTORIA: Yeah, we should. BRENDAN: [laughs] VICTORIA: We should do a Giant Robots jacket or something from returned guests. I love it. So it's been great to follow along your journey here. So, for those who don't know, like, what is Wistia? And I'll say, just a precursor, that thoughtbot is a client of Wistia. So we use it ourselves. But why don't you just give us a little bit about what is the product and what makes it different? BRENDAN: Sure. And thank you so much for being a customer all these years. You kind of hit it at the top, but we help businesses of all sizes thrive with video. And so we serve mostly marketers. To dive a little bit into the history of the business, we'll be around seven...is that right? 17 years. It sounds like a long time when I say it out loud, [laughs] 17 years this June. And, for most of our history, we were, I'd say, a video-hosting platform for marketers. So if you want to put video on your website, track who's watching it, how they're watching it, and integrate that data with your other marketing systems, that was our focus and what we did. And over, I'd say, the past two years, we've brought in that focus to help businesses with all aspects of their video marketing from creating video...We recently introduced a live video product for webinars and for live events last fall. We just launched last week, which I'm very excited about native video recording in the Wistia platform. So you can record your webcam and your screen. And there's also a very simple video editor in the platform, which has been really powerful for folks to make small adjustments to content or to atomize content, take out highlights or sections of things, and to be able to publish them to their audiences. VICTORIA: Thank you for providing that context. And I'm curious if there were any, like, environmental or market forces that pushed you in that direction with the latest updates on the platform. BRENDAN: So, like I mentioned, we...in a large part, our success came (We're a relatively small team.) it came from being focused. And so for, you know, that decade or more, there were a lot of things that we had heard from the market or from customers. Like, live video was an obvious one we had been asked for a really long time. When will Wistia do live? When will Wistia do live? And, you know, our approach to that is we want to be really good and excellent at the things that we do and be focused. And I think that has served us well over the time that we've existed. And some of that came out of; I'd say, the really early days of the company where...it's funny, [laughs] we've always built Wistia, you know, sometimes we say in the shadow of YouTube, so YouTube and seeing YouTube. My co-founder was the first person who showed me YouTube in 2005, I think it was, and that was part of the inspiration to start Wistia. We are both really into video. And we saw that and having video be more accessible on the web, we knew was something that was going to change the world. There was a question...this sounds kind of dated nowadays to say, but there was a question if you were starting a business, you know, let's say, in 2006 or 2007 or '8, right? What are you going to do when Google enters your space? [laughs] It was a funny one for us to answer because we said...well, I forgot when YouTube was bought by Google. It was maybe in 2006 or something like that. Like, Google is already in our space, and it's free. So that was always an interesting challenge. And the way that we were successful there [laughs]...obviously, YouTube is at a much larger scale [laughs] and level of success than Wistia is. But to the extent we have a business at all against a very well-known and free competitor from those early days, it was being really focused on our customers and keeping the product footprint fairly small. Our business changed a lot during the pandemic. There were some obvious things, right? Video was used a lot more. So existing customers had a lot more usage. We saw an influx of customers, people who maybe were late to adopt video in their organization, and then that became a much obvious way that people could reach their audiences and grow. So that was something of a tailwind for us. And then it also forced us to kind of take a step back and look at the market in general with clear eyes. It was a funny moment, I think, for me and my co-founder because in the years leading up to that, you know, it had been like 12,13 years of doing Wistia, and it felt like we had solved a lot of problems in the product. We were still building new things, but they were for the most mature part of our audience or the most advanced marketers, which was pretty fun. But it felt like a lot of the problems had been solved. We were always, like, is the product done? Is the product complete? And when we took a step back and looked at the market, what we had found was that we had kind of just, like, got ourselves into this, you know, more mature corner of the market. But in a large part, because of COVID, so many businesses, existing and new businesses, were very new to video and were using video in new ways. And people who had been using video, their solutions to do that were super fragmented. You'd have one product that is providing...[laughs] You might have a different product you're using for internal meetings, video meetings, and that's different than a live event product, that's different than a webinar product, that's different than where you might publish your videos or host your videos, which is different than how you'd, like, analyze your performance. And as video became more important to organizations, that fragmentation of the solutions was something that was super painful. And we had heard from a lot of people who were Wistia customers and people who were not...having this as an all-in-one platform was something that they really desired, which I was also kind of, you know, we were, like, cynical about a little bit, right? Because if [laughs] you're in the world of product, it's like you can ask, you know, if you had a magic wand, what would you want? And someone says, "Oh, I want it all in one. And if you could just do everything for me, that would be so great." You know, it's hard to say, is that what people really want? And what gave us more confidence at that was, correct, is when we started digging into some of the details and hearing about existing workflows that existed that marketers have to deal with, including ourselves. We do a lot of content marketing. A lot of the really interesting things you could do in a product that is all in one it opens up new opportunities. And you could just imagine...you've hosted a webinar before. Almost always, it's the best practice that you host a webinar; after you're finished, you probably have a good marketing asset there. You should publish it to your website. You usually need to do some light editing. Maybe you're going to take off the Q&A before you publish it. And you put it on your website. And then, a while later, you're like, was this effective? Did it work? And then you have to, you know, probably have a spreadsheet somewhere. You have to go into the tool used to host the webinar to figure out who was watching it and [laughs] who registered. Did they attend? And then where's the data for how it performed on your website? How many people watched it? Did you get subscribers if you were, you know, had an email gate on that content? It's cumbersome, and it's a mess. And then, you know, the most motivated people who are well-resourced have the time to do that and analyze the performance. But then a lot of marketers who are on smaller teams they just don't have time to do that, which means a lot of content gets under-utilized or under-marketed. So a lot of evidence and motivation to change what we were doing and expand the product footprint. So that had us make a big investment in our product design and engineering teams, and we almost...we doubled them in about 18 months. And then that kind of set us on this journey that we started maybe two years ago to greatly expand what we're doing. VICTORIA: Well, that's great. So just to play that back, staying close and focused on your customers almost had you to a point of being stable with your product until COVID happened. And you have this increased demand for video that opened it up to almost have Wistia be like a startup again and create a whole new feature branch, right? BRENDAN: Yeah, that's exactly right. And that was really fun and motivating. I mean, we...that early-stage energy and not having all the answers to things where stuff is a little bit, you know, less-researched, and it's faster paced is something that I really like. That was a big shift for the company. So there was some, I don't know, I think we had some self-doubt a little bit if I'm honest, of, you know, when you've been so focused for so long. Like, can we do this? Like, will we be able to create something really good with this expanded footprint, and what resources that take? And is it going to take shifting the culture and mindset of the team, like, in ourselves? But, I don't know, that's kind of why I started the [laughs] business in the first, like, the adventure and not knowing what's next is very appealing. So that's been the fun part of it. VICTORIA: And how did you go about shifting that mindset? Or even what was the moment where you realized that you needed to go after this shift? And how did you start lobbying everyone around you to get on board? BRENDAN: A lot of those customer interviews and market interviews, we worked with an outside firm. We worked with Boston Consulting Group, who was a really great partner. We have obviously worked with folks outside. We hadn't worked with somebody; I'd say, at that scale in terms of kind of, like, tie-in with our company strategy today. But that was really helpful to have a partner, especially to push us. We got to something different than we had been doing, I mean, not dramatically so. But it was expanding what we were doing. So that was really helpful. It helped...that put some structure around it to what we had, and the whole company knew this was happening and was along for the ride. So I'd say the communication and getting to a clear strategy was something we did pretty well, and telling that story internally. I'd say where we didn't do as well [laughs] and were maybe late to make some decisions is how the culture would need to change to support that strategy. Again, like I said, we've doubled the product design and engineering teams. That is now feeling in a pretty good spot, but that was a lot of growth for us. And was, I'd say, pretty messy along the way. So the beginning, I'd say, was clear, and I think communicated well. And then I feel like in the middle it was, I don't know, a big mess where we got maybe a year in, and we're like, wow, we have this new strategy, but we really haven't executed much on it. Some of these things we're building are taking a lot longer than we thought. Our velocity doesn't feel great. Like, maybe we didn't plan some of this stuff out. Like, we've hired a lot of people, but, like, are they productive yet? And so, yeah, I think we were in a pretty [laughs] tough spot maybe last summer. We were a year into this strategic shift, but it didn't feel like we were really moving against it as much as we had hoped. VICTORIA: It makes sense that it would take some time to change strategic direction and then get to that high-velocity point that you would expect. Were there other blockers that you found you were able to remove to get the team back up to that high velocity on delivering features for clients? BRENDAN: [laughs] Well, it's funny that you say that. I wish; I mean, that is pretty obvious, I think, and obvious in retrospect. But, for some reason, when you're in this, or when we were in this, you're impatient, and you want it faster. And I think probably [laughs] having some clear expectations would have made the ride a little smoother along the way for this. I feel like I have to remind myself of this pretty frequently. I mean, Wistia is not big. We're 180 people or so but certainly bigger than...I can think back to various other sizes. Doing that strategic shift it takes time for leadership, let's say, or me to shift my mindset about some of those things. And then once you've changed your mind, you kind of... it's easy, or at least for me, to discount the time it took and all the information it took to lead to that, which needs to cascade through an organization. And so that's where some of that impatience...or just the piece you said about, yeah, it makes sense that this would take time. I was like -- VICTORIA: [laughs] [inaudible 11:56] BRENDAN: [laughter] You're like, once you've got it, you're like, wow, this is so exciting. Let's go. Let's go. And everybody is like, what are you talking about? VICTORIA: Yeah. My background has been in, like, Federal IT consulting. So you're used to kind of the pace of things being a little slower. And I think people forget that as an organization gets to any amount of size, that kind of bureaucracy tends to creep in. And, like you're saying, the information just needs to cascade down throughout everybody. I think my original question was, were there any blockers or interesting problems you found that you were able to remove and help your team get to that speed or velocity you really wanted? BRENDAN: Yeah, there were a lot. I think most of them and most of the hardest ones to move centered around cultural change, and they weren't necessarily so clear at the onset. And so, you know, one thing that kind of partway into the strategy change that became clear is, and you had said it, it's like going from, you know, basically thinking of ourselves as being in a late stage or more mature market to being in an early-stage environment. And the type of culture that, you know, succeeds in those worlds is different. One thing that we've learned along the way at Wistia that we have employed and I think been successful with is this concept that when you update your strategy as a company, you should be thoughtful and, like, make conscious updates to your culture and values. And so much is that...so you're saying culture is the way that you work. You want that to be in support of strategy. And I remember when I first heard this concept, and we were earlier into our journey. I was like, what is this, like, corporate nonsense? Culture is just this, like, intangible, you know, it's this sum of how everyone works. And it's, like, this beautiful symphony of values. [laughs] It was a more kind of, like, idealistic [laughs] view of it or more organic view of it, which I think is reasonable. But you can also be intentional about your culture. So when we wrestled with that the first time...this was many years ago when we updated. I forgot even what the strategic changes at the time. But we updated our values, and we set about making a conscious cultural change. So when we changed the strategy this time, we did the same thing. I'd say we were a little bit late doing it, like, getting to it. But we did do it. And so some of that was there were certain things...so, for instance, being so focused. We had a really lean team. And we were optimizing for things like predictability of outcomes and needing to be correct. So, for instance, if you're only going to make...let's just, like, say, on the product side. Like, if you're only going to be able to ship or do, you know, a few big improvements to the product per year, like, you're well served to kind of go slowly and make sure those have a reasonable chance of success. This was, like, the culture and the mode that we were in. That doesn't really work very well when you're in an early-stage environment where things are pretty unpredictable and things are moving really quickly. So that was an example of something that we kind of identified, and we're like, we're going to need to change this. So it was this shift from teams feeling the need to be correct and really well-researched about something to moving towards; I'd say, you need to talk to a lot of customers to build customer intuition in order to make decisions faster. But that shouldn't be the case that; for every product decision you need to make, you have to talk to 5 or 10 customers to validate that. You should be able to build an intuition to be able to make those decisions faster, and we should be more tolerant of failure. And so, we should work in a more incremental style. I mean, some of this is, like, super familiar to anybody [laughs] listening to this, right? It's like a more agile style. So work more incrementally, like, work incrementally towards great as opposed to, you know, this big thing that's going to be super polished and correct from the jump. VICTORIA: I think that's really interesting. And it's not necessarily wrong to be so thorough in your changes when you're in that steady state, and you, like, know what clients you have, and you have a pretty well-defined product. But it's interesting that it took quite a bit of effort, it sounds like, to shift back into a flow state where you're incrementally doing changes very frequently to get that new product and find those new customers that you're targeting. BRENDAN: And it continues to be. We've made a lot of progress on this. And maybe it's helpful...I don't know if it's helpful to folks listening to dive into some of the details of how we went about making those changes. It's still really difficult, right? There's a lot of things in tension. So I'd say in our previous mode, one thing we were pretty good about is when something was released, it was well-tested. It was high quality. It was, like, well-communicated. Throughout the org, people knew what was coming. Obviously, there were hiccups with that, but, like, that's the side of the spectrum that we were on there. And then in this mode where we're building faster and more incrementally, we have a lot of internal tension in terms of quality, like, is this good enough? Is this first version good enough? Are we going to make a bad first impression? And so, obviously, you do this for a...it's a set of trade-offs, right? There's no free lunch, but that is still very much we're trying to find the right balance. VICTORIA: Right. So, like, in your role as CTO, how do you make people feel comfortable failing [laughs] [inaudible 17:06] describing. BRENDAN: Some of this cultural change, I think, it's been interesting to go through because some of the properties of how we had been working are, you know, things that are part of the way I like to work. Like, it makes me uncomfortable to release something that you know the flaws in it. And that's an old kind of startup advice that I think is generally right. Like, if you release something and it doesn't make you a little bit uncomfortable, you have waited too long. [laughs] Advice is very easy and abstract. It's hard to apply. Like, there's a huge spectrum there of, like, how uncomfortable [laughs] you want to be. But I will say that that's been something that's been, yeah, hard to reconcile with. And I guess that the piece that I'm able to do in my role is, like, remind folks where we're headed, right? So the first version can be a bit rough. What matters is what happens after that. So, if we're quick to listen to customers, to fix those things, to correct that, and people can see that momentum, I think that matters for a lot. And I think that's, like, something...I've been telling that story repeatedly. Internally, I've had other leaders, and that's what we've really been leaning on is, like, we've adjusted how we're delivering customer value. And that we're going to push things out that might be a little bit more raw, but where we ultimately are going to get them to and get them to quickly is something that we're really proud of. So that has helped. And then, I'd say we still haven't figured out, which is, again, like, in these smaller increments, things can be a failure, and that's okay as long as we learn something and correct and move forward. And one thing that's been a little bit tricky to recognize, too, is there's some places where you have some experiment, and you're not actually sure if there's a market or if there's a need for a feature. So you might do something, and it really doesn't land well. And then you learn something about the market or the customer base and say, okay, that isn't what people needed. But, in a lot of places that we're building product, like, let's say, take live video, for example. [laughs] When we launch a live video product, it may be a failure. Like, the first version may not be completely right or may be a failure. But the customer need for [laughs] a live video for a webinar exists, right? So that's not the type of failure that you go, oh, I guess there's not [laughs] a market there. Or, it's like, you go back and say, okay, how do we need to improve this to make it work? I don't think we have the right language internally around that. You know, there are certain areas where it's like a failure, and then it's like, okay, we've learned not to do that again. And there's other areas where it's like, we're going to keep...[laughs] not we're going to keep failing. I mean, there are goals to succeed, right? But we're going to keep improving this until we get it to work because we know there is a market here, and there is a customer need. VICTORIA: Making a culture where it's acceptable to run experiments [chuckles] and as long as you're learning from the failures. And honestly, it sounds like you all are very connected to your customer. Like, you're talking to them regularly. You're testing out features with them and getting that feedback. And that sounds like that's really what you want to focus on and want your whole team to focus on. BRENDAN: Yes, yeah, exactly. Mid-Roll Ad: As life moves online, bricks-and-mortar businesses are having to adapt to survive. With over 18 years of experience building reliable web products and services, thoughtbot is the technology partner you can trust. We provide the technical expertise to enable your business to adapt and thrive in a changing environment. We start by understanding what's important to your customers to help you transition to intuitive digital services your customers will trust. We take the time to understand what makes your business great and work fast yet thoroughly to build, test, and validate ideas, helping you discover new customers. Take your business online with design‑driven digital acceleration. Find out more at tbot.io/acceleration or click the link in the show notes for this episode. VICTORIA: You mentioned a little bit about your values. So, what would you say is, like, your most important personal value that drives your decision-making at Wistia? BRENDAN: So, like I mentioned, we've changed our values over time when we've changed strategy. And we think of our values as a decision-making framework, not as a set of things that we value. For instance, if you go on our website on wistia.com, I think about/values, about/company. It's somewhere. And you can see our values. It's not a list of everything that Wistia values or even the things that we value the most. For example, Wistia has, like, creativity is something that I value a lot that is very built into Wistia's culture that we value a lot, but it's not a listed value. It used to be at one point, and then we found that as a decision-making tool, it wasn't very helpful. [laughs] If you're faced with a decision, and you say, okay, one of the values is creativity, how do I make this more creative, right? VICTORIA: [laughs] BRENDAN: That's not usually the question you want to ask. So we have, over the years, shifted towards the values are a decision-making framework. And I'd say the one value that has stood the test of time in there is simplicity, which is not unique to Wistia, but it's something that I care a lot about personally. It's served us well as a business. It's almost always harder to get to a simple solution or answer than it is to get to a complex one. It takes a lot of failure. Sometimes there isn't a simple solution, but I think it's always worth the pursuit of trying to find one. And that's served us well in keeping a focused and easy-to-use product. I think that's fairly self-evident [laughs] why that matters to customers. And it's something that I think it's hard to do as you grow, and add, and get bigger. And it's an important feature of the product. And it's an important feature of, I don't know, companies' internal policies or the employee experience. The simpler something is, it's easier to understand. I think the more someone who works inside your company can wrap their arms around more of that context or, you know, more of the product, more of the all the ins and outs of how it is to work there, the better informed they'll be, the better faster they'll be able to make decisions, and the better work they'll be able to do. So, yeah, simplicity, minimalism, those are things I think that have served us well over the years. VICTORIA: Oh, I appreciate that. I could see how that could apply to how you're writing your code, or how you're designing a feature, or even your pricing structure. BRENDAN: Yeah, and I don't think...we definitely don't always get it right. So, you know, all of this is aspirational, but I think it's the right thing to aspire to. VICTORIA: Right. Oh, I'm familiar. [laughter] It's like that, I mean, the Marie Kondo, like, keeping it simple and organized. It's definitely aspirational [laughter] in my personal life as well. But that makes sense. Okay, I have a fun one for you. What is your favorite viral video style that you think people should do more of on Wistia? [laughs] BRENDAN: Oh, whoa. That's a hot-button one. [laughs] I think we have long said...this, like, feels like it takes me back to when we first started Wistia. The term viral and viral video was a new thing for the internet, I guess because video on the internet was still fairly new. I've always been on the side of this, like, hardworking video. And most of our customers are B2B businesses, so these are, like, marketing teams at B2B companies. I'm sure a lot of people who are listening to this have seen some very cringeworthy, you know, attempts at a viral video made by various corporations. Those usually don't land well. There are some people out there maybe that can crack this and make something that is viral through some art and science, but most everybody else cannot. VICTORIA: [laughs] BRENDAN: It's like, not something that can be kind of, like, bottled and captured. So we've always been on the side of, like, be authentic, be yourself, make these harder-working videos. But -- VICTORIA: I think that's generally good advice for businesses that was, like, maybe don't try to just do viral trends...[laughs] Like, make your own authentic content. But you personally now, like, yeah, if you were going to do whatever the latest TikTok trend is, which one would you pick? BRENDAN: You know, okay, maybe here's one. So we have always been, as I described it, on the side of, like, do not do this. It is, like, almost always going to be cringe-worthy. But do you remember...I don't know what year this is from, the Harlem Shake. It was mostly kind of a business trend, right? You'd play this track, the Harlem Shake, and have, like, when the beat dropped, it would go from normal office to everyone dancing in a costume. VICTORIA: Oh, that's fun. BRENDAN: So it was, like, a fun trend. But it was...we were and still are, I'd say, fairly, like, anti-trend. I don't know what, you know, like, contrarian when it comes to marketing trends or things like that. But then, when this happened, we were like, this will be really funny. We should set a calendar reminder to do this, like, ten years in the future. Actually, the last onsite that we had; unfortunately, it was the last day. Our head of production [laughs] who, like, we kind of had this, like, running joke of he randomly saw a news article. I think that it was the 10-year anniversary of the Harlem Shake [laughs] or whatever. He's like, oh, this would be...this is the perfect time to do this, now that it's so, so, so out of vogue. But, you know, people, like, maybe have fond memories of it. And now this is so out of fashion. I think it could be funny to do it. [laughs] VICTORIA: Yeah, right. You don't want to do it just because it's the trend. But if it fits your personality and your business, then I think it would make sense. BRENDAN: Yeah. VICTORIA: I've heard that there might be a Wes Anderson style. [laughs] And I wanted to do a Wes Anderson goes to RailsConf video, but I'm actually meeting this -- BRENDAN: Did you do it? VICTORIA: I didn't do it. I'm not actually good enough. I think tomorrow I'm meeting with the Wistia customer success team. [laughs] I'm going to ask them to help me. BRENDAN: Oh yes, we'll help you. VICTORIA: Yes. BRENDAN: I do like...that trend is nice. That feels like a; I don't know, like, less aggressive. I've seen a lot of those, and they don't feel, I don't know, cringeworthy to me because maybe it's a nice shell in which to put some personality and content, as opposed to -- VICTORIA: Just being goofy or whatever, yeah. [laughs] BRENDAN: Yeah, I don't know exactly how to describe it. But I think that one works better. Yeah, someone at Wistia did that the other day in the office, and people enjoyed it a lot. That was more for, like, internal consumption. But those ones are nice. VICTORIA: Yeah. Well, I like the idea of bringing some of these editing tools to marketing teams where they can maybe not create viral videos all the time but do a lot of very highly editing and having it all in one place as well. Like you mentioned, I do run webinars, [laughs] and I'm familiar with the bouncing around between different tools to get everything to work. And there's even sometimes, like, security issues with different types of video-hosting tools. So I think there's a lot to offer for a marketing team who may not have as many resources to do the individual pieces. BRENDAN: Yeah, that's a story we've heard, yeah, from a lot of customers. And we have a lot of video resources internally because we're a video company, and we invest a lot in that. But even so, yeah, if you talk to folks on our marketing team, they'd say it's hard to get those resources, especially if you have something small that you want to do. I think it's always better if the person who has the need can easily do the thing themselves, right? More and better work gets done that way versus if it's, like, this chain of having to, like, ask other people because then you're like, should I really ask? It's like, do I want to, you know, spend social capital or budget on this thing? Will it work, will it not? But you can be, I think, faster and also experiment more when you have those tools available to you. VICTORIA: Yeah, no, that makes sense. Because I don't know if it's worth [laughs] me spending my team's time to make this Wes Anderson video, but I want to do it for fun. So we'll see if I can do it at RubyKaigi next week. BRENDAN: You should. That's great. That's, like, the perfect example of it because I feel like, yeah, well, maybe not. You might be sheepish to be like, yeah, I'm going to spend, like, ten grand with this, like, contractor to make this Wes Anderson...and to be like, what do you...what? What are you doing? VICTORIA: [laughs] That makes sense. BRENDAN: But if you do it, I think, you know, it's very likely it'll be really well-received, and you'll learn something about your audience. And then that could, like, blossom into, you know, a whole bunch of other things. I feel like that's been the case for us in our content marketing. We've long said, and this is, like, much more commonplace now, but one of the advantages of having a video producer in-house, like, is exactly that you now are employing someone full-time. And so you've, you know, like, maybe knocked off, like, the major pieces of content that a business would make with video, some of the obvious things. But then it's exactly what you're talking about that, oh, we could take a risk, and we could try this. And that's where you learn and figure out new things and things that are different than your competitors might be doing or more creative approaches. VICTORIA: Oh, That's great. You know, something I like to ask everybody who comes on the show, and it will be super interesting since you've been on a few times before, but if you could go back in time to your younger self when you first started Wistia, what advice would you give yourself? BRENDAN: Patient...One funny thing of when we started Wistia, we had really unrealistic expectations. I don't think that's [laughs] unique when starting a business when you're young. But yeah, I was 22 or 23, as was my co-founder, Chris. And we really honestly thought—this is, like, this is cringeworthy to say—that we would either be really successful and, in six months, build this great business and sell it to Facebook or now Meta, right? But that was, like, a hot company at the time. So we'd be wildly successful and sell to Facebook in six months, or we would fail in obscurity. That was, like, our honest-to-goodness business plan, which is so naive. [laughs] And here we are, you know, 17 years later and having a wonderful time. So I guess I would say, I mean, it's the most cliché advice, and you're young, and you never listen to stuff like this, but it's, like, enjoy the journey. [laughter] Things haven't always been easy. And there are, you know, hard challenges and, like, times filled with self-doubt. But even in those moments, if you have support from people around you, if you can learn to enjoy the growth and the journey, that is what keeps you motivated to do something for a long period of time. And usually, you know, people who stay focused on something for a long period of time you figure it out and can be successful. This sounds like the most generic advice as I say this out loud. VICTORIA: [laughs] BRENDAN: It really is. Enjoy the journey. [laughs] VICTORIA: Enjoy the journey. But I think that's common. And even actually talking with Chad a few weeks ago and interviewing him about thoughtbot, is his younger self would tell him to have more fun [laughs] during the whole process and really enjoy it. And I think it's also interesting that you had either the most optimistic and the most [laughs] pessimistic as options and, like, nothing in between [laughter] that you expected would happen. Which is funny because I have people ask me, like, is there still money in building apps and building new products? And it's like, yeah, like, it feels like there's these big people in the space, and they're doing everything you could think of possible. But there's still niche market that you can pursue [laughs], right? And there is still the ways that you can differentiate yourself as a product. BRENDAN: Yeah, I think that's exactly right. What advice would you give to your younger self? VICTORIA: Oh, me? I think, you know, probably something similar. Like, I feel like all of the times in my life where I've been, like, what am I going to do next and been really stressed out about it, within, like, three to six months, I found a new job, or I found something better where life improved a hundred-fold. [laughter]. So I think that's something even now I like to keep in mind is, like, if things turned down badly, like; usually, things turn around in a few months after that, [laughs] and a lot of times for the better. And that's, you know, true with, like, moving to California across the country from DC a few years ago. And yeah, a few other points like that. I think the other part I think about is who I might have invested more time in and who I would have invested less time in. And like what you were saying, like, having the support of people around you, and finding the people who really have your back and support you, and, for people who don't, maybe letting go a little sooner. [laughs] BRENDAN: Oh, interesting. Yeah, that's good advice. Yeah, I feel like both of those things are things I should probably remind myself of more frequently. [laughs] VICTORIA: Right? And have more fun, which means...there's another quote I heard that's, like, when people travel back in time, they're worried about changing a small thing that will affect the future. But people don't think that they can make small changes now that will affect their future big time. BRENDAN: Oh, that's a good one. I haven't heard that. But that's a good one. VICTORIA: Well, super cool. Just to kind of really summarize or go back to some things we mentioned already about video, just how important do you think video really is to marketing in the current landscape for businesses? BRENDAN: I mean, [laughs] I'm a very biased party, but I think it is becoming increasingly more important. I think it is the default way a lot of people want to consume information. This is a whole other tip that we didn't talk about with what's happening in the world of generative AI. And I'm sure a lot of people listening to this have voice cloning and how good those things have been getting. I think it's going to make the value of authentic connections in video much more important in the short and medium term. And there's some challenging questions about how do you tell what's real in an environment where we've gone past the uncanny valley in terms of generating, you know, an avatar of me or you with the perfect voice clone? But I think people are going to rely a lot on video to break through. VICTORIA: Yeah, that makes a lot of sense. It's going to be just more video world [laughs] as it goes. What does success look like for Wistia six months from now and even five years from now, the longer term? BRENDAN: I think for six months from now, so there's a lot of new areas of the product that we've added. And, in the next six months, we should be able to make pretty substantial progress to have those parts of the product have really solid adoption and repeated usage by customers. I think that's what success looks like, which we're seeing it now for our editors, probably the farthest along, that it has really good adoption among the customer base, and repeat usage, which I think is, like, a really good sign of success for a product. Live is still really early for us. You don't get a lot of shots if something goes wrong with a live event. [laughs] You know, I'd be pretty quick to look for another platform. And that's a pretty mature market where there are a lot of really strong competition. I think if we can get to a place in six months where we've got, you know, a few hundred customers using that every week or every month, we'd feel like we're on a path towards success. And the five-year version, I don't know, we recently started making three-year goals for the company a few years ago that have been pretty helpful to have as an anchoring. We have not made a five-year goal. But the thing I'm very excited about right now and what we're doing is, again, like, live is a small example. The market for live itself is much bigger than the market that traditionally Wistia has been in, and just in terms of video hosting, which itself has always grown a lot over the years. And it's itself a big market, as is video recording and creating video. So we have entered into a bunch of new markets that are all really quite large. And it's pretty humbling to be in a spot where I feel like we have a really solid base with a lot of in-depth knowledge of marketing and our customer to be able to build a really excellent product for that set. We're playing in a much bigger market than I ever thought we would. VICTORIA: It's like, success already achieved. [laughter] BRENDAN: Well, I don't know. It doesn't feel that way. It doesn't feel that way. But -- [laughs] VICTORIA: Maybe next time you come on the podcast, you'll have another success story to share with us. [laughs] BRENDAN: I hope so. Yeah, I feel like that's always the case, right? It's like, yeah, there are moments where we're certainly very proud of what we've been able to achieve. But most of my time is spent [laughs] in the headspace of, you know, why are we so slow? Why is the product not good enough? Why are we, you know, like, all the stuff that's going wrong, right? Which drives you to be better and is exciting. VICTORIA: Right. That makes sense. Well, hopefully, this helps remind you all the good stuff that you all have done so far, too. BRENDAN: [laughs] VICTORIA: I'm really excited to hear about just how your values drive your decisions and then how that goes to the rest of the team and how closely you're listening to your customers, too, on the product. I think those are all just really great cultural examples and ways to build great products. So, thank you for sharing your story with me. And you can subscribe to the show and find notes along with a complete transcript for this episode at giantrobots.fm. And if you have questions or comments, you can email us at hosts@giantrobots.fm. And you can find me on Twitter at @victori_ousg. This podcast is brought to you by thoughtbot and produced and edited by Mandy Moore. ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com. Special Guest: Brendan Schwartz.

The Bike Shed
387: RubyKaigi 2023 with Mina Slater

The Bike Shed

Play Episode Listen Later Jun 6, 2023 31:22


Stephanie is joined by very special guest, fellow thoughtboter, Senior Developer, and marathon trainer Mina Slater. Mina and Stephanie had just been traveling together for two weeks, sponsored by WNB.rb for RubyKaigi in Matsumoto, Japan, and together, they recount their international adventure! RubyKaigi (https://rubykaigi.org/2023/) WNB.rb (https://www.wnb-rb.dev/) Understanding the Ruby Global VM Lock by observing it by Ivo Anjo (https://rubykaigi.org/2023/presentations/KnuX.html#day1) gvl-tracing (https://github.com/ivoanjo/gvl-tracing) Justin Searls' RubyKaigi 2023 live coverage (https://blog.testdouble.com/field-reports/ruby-kaigi/) Prioritizing Learning episode (https://www.bikeshed.fm/362) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn and today. I'm joined by a very special guest, fellow thoughtboter Mina Slater. Mina, would you like to introduce yourself to our audience? MINA: Yeah. Hi, everyone. I am Mina. I am a Senior Developer on Mission Control, which is thoughtbot's DevOps and SRE team. STEPHANIE: So, Mina, what's new in your world? MINA: Well, I start marathon training this week. So I hope that this conversation goes well and lasts you for three months because you're probably not going to see or hear from me all summer. STEPHANIE: Yes. That sounds...it sounds hard, to be honest, marathon training in the summer. When I was doing a bit more running, I always thought I would wake up earlier than I did and, you know, beat the heat, and then I never would, and that really, like, was kind of rough. MINA: Yeah, actually, I was thinking about my plans for today. I didn't wake up early enough to run in the morning. And so I was calculating, like, okay, by midday, it's going to be too hot. So I'm going to have to wait until, like, 6:00 p.m. [laughs] STEPHANIE: Yeah, yeah. Or, if you're like me, there's a very real chance that you just skip it altogether. [laughter] MINA: Well, I have a deadline, so... [laughs] STEPHANIE: That's true. When is your marathon race? MINA: This is actually the first year I'm doing two in a calendar year. So I'm doing Berlin in September. And then, three weeks after that, I'm going to run one in Detroit. STEPHANIE: Nice. At least you'll be ready. You'll, like, have done it. I don't know; it kind of sounds maybe a bit more efficient that way. [laughs] MINA: Theoretically. But, you know, ask me in October. I'll let you know how it goes. STEPHANIE: That's true. You might have to come back on as a guest. [laughs] MINA: Just to talk about how it went. [laughs] STEPHANIE: Yeah, exactly. MINA: So that's what's new with me. What's new in your world, Steph? STEPHANIE: So, a while back on a previous Bike Shed episode, I talked about joining this client team and, in their daily team syncs, in addition to just sharing what we were up to and what we were working on, we would also answer the question what's something new to us. And that was a space for people to share things that they learned or even just, like, new things that they tried, like food, or activities, or whatnot. And I really enjoyed it as a way to get to know the team, especially when I was new to that client project. And recently, someone on the team ended up creating a random question generator. So now the question for the daily sync rotates. And I've been having a lot of fun with that. Some of the ones that I like are, what made you laugh recently? What's currently playing on your Spotify or YouTube? No cheating. MINA: [laughs] STEPHANIE: And then, yesterday, we had what's for dinner? As the question. And I really liked that one because it actually prompted me to [chuckles] think about what I was going to do for dinner as opposed to waiting till 5:00 p.m. and then stressing because I'm already hungry but don't have a plan [chuckles] for how I'm going to feed myself yet. So it ended up being nice because I, you know, kind of was inspired by what other people mentioned about their dinner plans and got my stuff together. MINA: That's shocking to me because we had just come off of two weeks of traveling together. And the one thing I learned about you is that you plan two meals ahead, but maybe that is travel stuff. STEPHANIE: I think that is extremely correct. Because when you're traveling, you're really excited about all the different things that you want to eat wherever you are. And so, yeah, we were definitely...at least I was planning for us, like, two or three meals [laughs] in advance. MINA: [laughs] STEPHANIE: But, when I'm at home, it is much harder to, I don't know, like, be motivated. And it just becomes, like, a daily chore. [laughs] So it's not as exciting. MINA: I think I'm the same way. I just had a whole bunch of family in town. And I was definitely planning dinner before we had breakfast because I'm like, oh, now I have to be responsible for all of these people. STEPHANIE: Yeah. I just mentioned the questions because I've been really having fun with them, and I feel a lot more connected to the team. Like, I just get to know them more as people and the things they're interested in, and what they do in their free time. So, yeah, highly recommend adding a fun question to your daily syncs. MINA: Yeah, we started doing that on Mission Control at our team sync meetings recently, too, where the first person...we actually have an order generator that somebody on the team wrote where it takes everyone's first and last name and scramble them and then randomizes the order. So you kind of have to figure out where in the queue you are and who's coming up next after you. But the first person that goes in the queue every day has to think of an icebreaker question. STEPHANIE: That's kind of a lot of pressure [laughs] for a daily meeting, especially if you're having to unscramble names and then also come up with the icebreaker question. I personally would be very stressed [laughs] by that. But I also can see that it's...I also think it's very fun, especially for a small team like yours. MINA: Yeah, yeah, just seven of us; we get to know really well what letters are in everyone's names. But I was first today, and I didn't have an icebreaker question ready. So I ended up just passing. So that's also an option. STEPHANIE: That's fair. Maybe I'll link you to our random question generator, so you can find some inspiration. [laughs] MINA: Yeah, it's a ChatGPT situation. STEPHANIE: So you mentioned that you and I had just been traveling together for two weeks. And that's because Mina and I were at RubyKaigi in Matsumoto, Japan, earlier this May. And that's the topic of today's episode: Our Experience at RubyKaigi. And the really cool thing that I wanted to mention was that this was all possible because Mina and I were sponsored by WNB.rb, which is a global community of women and non-binary people working in Ruby. And I've mentioned this group on the show before, but I wanted to plug it again because I think that this was something really special that we got to do. WNB runs a lot of initiatives, like, meetups and panels supporting people to speak at conferences and book clubs. And, you know, just many different programming events for supporting women and non-binary Rubyists in their career growth. And they are recently beginning a new initiative to sponsor folks to attend conferences. And Mina, you and I were the first people to get to try this out and go to an international conference. So that was really awesome. It was something that I don't think I would have done without the support from WNB. MINA: And you almost didn't do. I think there was a lot of convincing [chuckles] that went on at the beginning to kind of get you to, like, actually consider coming with me. STEPHANIE: It's true. It's true. I think you had DMed me, and you were, like, so, like, RubyKaigi, like, eyeball emoji. [laughs] I was, I think, hesitant because this was my first international conference. And so there was just a lot of, like, unknowns and uncertainty for me. And I think that's going to be part of what we talk about today. But is there anything that you want to say about WNB and how you felt about being offered this opportunity? MINA: Yeah. When Emily and Jemma, the founders of WNB, approached us with this opportunity and this offer, I think I was...taken aback is not really quite the right words but, like, surprised and honored, really, I think it's a better word. Like, I was very honored that they thought of us and kind of took the initiative to come to us with this offer. So I'm really grateful for this opportunity because going to RubyKaigi, I think it's always something that was on my radar. But I never thought that...well, not never. I thought that I had to go as a speaker, which would have been, like, a three to five-year goal. [laughs] But to be able to go as an attendee with the support of the group and also of thoughtbot was really nice. STEPHANIE: Yeah, absolutely. That investment in our professional development was really meaningful to me. So, like you, I'm very grateful. And if any of our listeners are interested in donating to WNB.rb and contributing to the community's ability to send folks to conferences, you can do so at wnb-rb.dev/donate. Or, if you work for a company that might be interested in sponsoring, you can reach out to them at organizers@wnb-rb.dev. MINA: I highly recommend doing that. STEPHANIE: So, one of the questions I wanted to ask you about in terms of your RubyKaigi experience was, like, how it lined up with your expectations and if it was different or similar to what you were expecting. MINA: Yeah, I have always heard that when people talk about RubyKaigi as a conference and about its contents, the word that everyone uses to describe it is technical. I have already had sort of a little bit of that expectation going in. But I think my interpretation of the word technical didn't really line up with how actually technical it was. And so that was one thing that was different than what I had expected. STEPHANIE: Could you elaborate on what was surprising about the way that it was technical? MINA: Yeah. I think that when I hear technical talks and having been to some Ruby and Rails confs here in the States, when I hear about technical talks, it's a lot more content about people using the technology, how they use Ruby to do certain things, or how they use Rails to achieve certain goals in their day-to-day work or side projects. But it seems at RubyKaigi; it is a lot more about the language itself, how Ruby does certain things, or how interpreters implement Ruby, the language itself. So I think it's much more lower-level than what I was expecting. STEPHANIE: Yeah, I agree. I think you and I have gone to many of Ruby Central conferences in the U.S., like RubyConf and RailsConf. So that was kind of my comparison as well is that was, you know, the experience that I was more familiar with. And then, going into this conference, I was very surprised that the themes of the talks were, like you said, very focused on the language itself, especially performance, tooling, the history and future of Ruby, which I thought was pretty neat. Ruby turns 30, I think, this year. And one thing that I noticed a lot was folks talking about using Ruby to reflect on itself and the possibilities of utilizing those capabilities to improve our experience as developers using the language. MINA: Yeah. I think one of the things I was really fascinated by is...you had mentioned the performance. There were several talks about collecting how Ruby performs at certain levels. And I thought that that was quite interesting and things I had never thought about before, and I'm hoping to think about in the future. [laughs] STEPHANIE: Yeah. One talk that I went to was Understanding the Ruby Global VM Lock by Ivo Anjo. And that was something that, you know, I had an awareness of that Ruby has this GVL and certain...I had, like, a very hand-wavy understanding about how, like, concurrency worked with Ruby because it hasn't been something that I've really needed to know too deeply in my day-to-day work. Like, I feel a little bit grateful not to have run into an issue where I had to, you know, dive deep into it because it was causing problems. [laughs] But attending that talk was really cool because I liked that the speaker did give, like, an overview for folks who might be less familiar but then was able to get really deep in terms of, like, what he was doing workwise with improving his performance by being able to observe how the lock was being used in different threads and, like, where it might be able to be improved. And he shared some of his open-source projects that I'll link in the show notes. But, yeah, that was just something that I was vaguely aware of and haven't yet, like, needed to know a lot about, but, you know, got to understand more by going to this conference. And I don't think I would have gotten that content otherwise. MINA: Yeah, I agree. The talk that you are referencing is one of my favorite as well. I think, like you, kind of this vague idea of there's things going on under the hood in Ruby is always there, but to get a peek behind the curtain a little bit was very enlightening. I wrote down one of the things that he said about how highly optimized Ruby code can still be impacted and be slow if you don't optimize GVL. And he also shared, I think, some strategies for profiling that layer in your product, if that is something you need, which I thought was really cool. STEPHANIE: Yeah. I think I had mentioned performance was a really big theme. But I didn't realize how many levers there were to pull in terms of the way Ruby is implemented or the way that we are able to use Ruby that can improve performance. And it's really cool to see so many people being experts at all of those different components or aspects of making Ruby fast. [laughs] MINA: Yeah. I think that part of the work that we do on Mission Control is monitoring performance and latency for our clients. And while I don't expect having to utilize some of the tools that I learned at RubyKaigi, I expect being aware of these things helping, I think, in the long run. STEPHANIE: Yeah, absolutely. Joël and I have talked on the show about this idea of, like, push versus pull learning. So push, being you consume content that may not be relevant to you right now but maybe will be in the future. And you can remember, like, oh, I watched a talk on this, or I read something about this, and then you can go refer back to it. As opposed to pull being, like, I have this thing that I don't understand, but I need to know right now, so I'm going to seek out resources about it. And I think we kind of landed on that both are important. But at Kaigi, especially, this was very much more push for me where there's a lot of things that I now have an awareness of. But it's a little different, I think, from my experience at Ruby Central conferences where I will look at the schedule, and I will see talks that I'm like, oh, like, that sounds like it will be really relevant to something I'm working through on my client project or, like, some kind of challenging consulting situation. And so the other thing that I noticed that was different was that a lot of the U.S. conferences are more, I think like business and team challenges-focused. So the talks kind of incorporate both a technical and socio-cultural aspect of the problems that they were solving. And I usually really like that because I find them very relatable to my day-to-day work. And that was something that was less common at Kaigi. MINA: Also, that I've never been to a conference that is more on the academic side of things. So I don't know if maybe that is more aligned with what Kaigi feels like. STEPHANIE: Yeah, that's true. I think there were a lot of talks from Ruby Committers who were just sharing, like, what they've been working on, like, what they've been thinking about in terms of future features for Ruby. And it was very much at the end of those talks, like, I'm open to feedback. Like, look out for this coming soon, or, like, help contribute to this effort. And so it was interesting because it was less, like, here are some lessons learned or, like, here are some takeaways, or, like, here's how we did this. And more like, hey, I'm, you know, in the middle of figuring this out, and I'm sharing with you where I'm at right now. But I guess that's kind of the beauty of the open-source community is that you can put out a call for help and contributions. MINA: Yeah, I think they call that peer review in the academic circles. STEPHANIE: [laughs] That's fair. MINA: [laughs] STEPHANIE: Was there anything else that you really enjoyed about the conference? MINA: I think that one of my favorite parts, and we've talked about this a little bit before, is after hours on the second day, we were able to connect with Emori House and have dinner with their members. Emori House is a group that supports female Kaigi attendees specifically. I think it's that they, as a group, rent out an establishment or a house or something, and they all stay together kind of to look out for each other as they attend this very, I think, male-dominated conference. STEPHANIE: Yeah. I loved that dinner with folks from Emori House too. I think the really cool thing to me is that it's just community and action, you know, like, someone wanted to go to this conference and make it easier for other women to go to this conference and decided to get lodging together and do that work of community building. And that social aspect of conferences we hadn't really talked about yet, but it's something that I really enjoy. And it's, like, one of the main reasons that I go to conferences besides learning. MINA: Yeah, I agree. At the Ruby Central conferences, one of my favorite parts is always the hallway track, where you randomly meet other attendees or connect with attendees that you already knew. And like I mentioned, this dinner with Emori House happened on the second night. And I think by midday second day; I was missing that a little bit. The setup for RubyKaigi, I noticed, does not make meeting people and organizing social events as easy as I had been used to, and part of that, I'm sure, is the language barrier. But some places where I had met a lot of the people that I call conference friends for Ruby Central conferences had been at the lunch table. And Kaigi sets up in a way where they send you out with food vouchers for local restaurants, which I thought was really cool. But it doesn't make meeting people and organizing groups to go out together with people you don't already know a little more difficult. So meeting Emori House on the second night was kind of exactly what I had been missing at the moment. STEPHANIE: Yeah, agreed. I also really thrive off of more smaller group interactions like organically, you know, bumping into people on the hallway track, ideally. I also noticed that, at Kaigi, a lot of the sponsors end up hosting parties and meetups after the conference in the evenings. And so that was a very interesting social difference, I think, where the sponsors had a lot more engagement in that sense. You and I didn't end up going to any of those drink-ups, are what they're called. But I think, similarly, if I were alone, I would be a little intimidated to go by myself. And it's kind of one of those things where it's like, oh, if I know someone, then we can go together. But, yeah, I certainly was also missing a bit of a more organic interaction with others. Though, I did meet a few Rubyists from just other places in East Asia, like Taiwan and China. And it was really cool to be in a place where people are thinking about Ruby differently than in the U.S. I noticed in Japan; there's a lot more energy and enthusiasm about it. And, yeah, just folks who are really passionate about making Ruby a long-lasting language, something that, you know, people will continue to want to work with. And I thought that was very uplifting because it's kind of different from what the current industry in the U.S. is looking like in terms of programming languages for the jobs available. MINA: It's really energizing, I think, to hear people be so enthusiastic about Ruby, especially, like you said, when people ask me what I do here, I say, "Developer," and they say, "Oh, what language do you work in?" I always have to be kind of like, "Have you heard of Ruby?" [laughs] And I think it helps that Ruby originated in Japan. They probably feel a little bit, like, not necessarily protective of it, but, like, this is our own, and we have to embrace it and make sure that it is future-facing, and going places, and it doesn't get stale. STEPHANIE: Right. And I think that's really cool, especially to, you know, be around and, like, have conversations about, like you said, it's very energizing. MINA: Yeah, like you mentioned, we did meet several other Rubyists from, like, East Asian countries, which doesn't necessarily always happen when you attend U.S.-based or even European-based conferences. I think that it is just not as...they have to travel from way farther away. So I think it's really cool to hear about RubyConf Taiwan coming up from one of the Rubyists from Taiwan, which is awesome. And it makes me kind of want to go. [laughs] STEPHANIE: Yeah, I didn't know that that existed either. And just realizing that there are Rubyists all over the world who want to share the love of the language is really cool. And I am definitely going to keep a lookout for other opportunities. Now that I've checked off my first international conference, you know, I have a lot more confidence about [laughs] doing it again in the future, which actually kind of leads me to my next question is, do you have any advice for someone who wants to go to Kaigi or wants to go to an international conference? MINA: Yeah, I think I have both. For international conferences in general, I thought that getting a buddy to go with you is really nice. Steph and I were able to...like, you and I were able to kind of support each other in different ways because I think we're both stressed [laughs] about international travel in different ways. So where you are stressed, I'm able to support, and where I'm stressed, you're able to support. So it was really nice and well-rounded experience because of that. And for RubyKaigi specifically, I would recommend checking out some of the previous year's talks before you actually get there and take a look at the schedule when it comes out. Because, like we said, the idea of, I think, technical when people use that word to describe the content at RubyKaigi is different than what most people would expect. And kind of having an idea of what you're getting into by looking at previous videos, I think, will be really helpful and get you in the right mindset to absorb some of the information and knowledge. STEPHANIE: Yeah, absolutely. I was just thinking about...I saw in Ruby Weekly this week Justin Searls had posted a very thorough live blogging of his experience at Kaigi that was much more in the weeds of, like, all of the content of the talks. And also had tips for how to brew coffee at a convenience store in Japan too. So I recommend checking that out if folks are curious about...especially this year before the videos of the talks are out. I think one thing that I would do differently next time if I were to attend Kaigi or attend a conference that supports multiple languages...so there were talks in Japanese and English, and the ones in Japanese were live interpreted. And you and I had attended, like, one or two, but it ended up being a little tough to follow because the slides were a little bit out of sync with the interpretation. I definitely would want to try again and invest a little more into attending talks in Japanese because I do think the content is still even different from what we might be seeing in English. And now that I know that it takes a lot of mental energy, just kind of perhaps loading up on those talks in the morning while I'm still, you know -- MINA: [laughs] STEPHANIE: Fresh-faced and coffee-driven. [laughs] Rather than saving it for the afternoon when it might be a little harder to really focus. MINA: I think my mental energy has a very specific sweet spot because definitely, like, late in the afternoon would not be good for that. But also, like, very early in the morning would also not be very good for that because my coffee hasn't kicked in yet. STEPHANIE: That's very real as well. MINA: Do you think that there is anything that the conference could have done to have made your experience a little tiny bit better? Is there any support that you could have gotten from someone else, be it the conference, or WNB, or thoughtbot, or other people that you had gone with that could have enhanced this experience? STEPHANIE: Hmm, that's an interesting question. I'm not really sure because I was experiencing so many new things -- MINA: [laughs] STEPHANIE: That that was kind of, like, what was top of mind for me was just getting around even just, like, looking at all the little sponsor booths because that was, like, novel for me to see, like, different companies that I've never heard of before that I think when I asked you about expectations earlier, like, I actually came in with not a lot of expectations because I really was just open to whatever it was going to be. And now that I've experienced it once, I think that I have a little more of an idea of what works for me, what I like, what I don't like. And so I think it really comes down to it being quite a personal experience and how you like to attend conferences and so -- MINA: For sure. STEPHANIE: At the end of the day, yeah, like, definitely recommend just going if that opportunity is available to you and determining for yourself how you want that experience to be. MINA: Certainly. I think just by being there you learn a lot about what you like in conferences and how we like to attend conferences. On a personal level, I'm also an organizer with Ruby Central with their scholarship committee. And that's somewhere where we take new Rubyists or first-time conference attendees and kind of lower the barrier for them to attend these conferences. And the important part I wanted to get to is setting them up with a mentor, somebody who has attended one of these conferences before that can kind of help them set goals and navigate. And I thought that someone like that would...at RubyKaigi, being both our first times, might be useful. STEPHANIE: Yeah, absolutely. I think that's totally fair. One thing I do really like about the Ruby Central conferences is the social support. And I think you had mentioned that maybe that was the piece that was a little bit missing for you at this conference. MINA: Yeah. I know that someone had asked early on, I think, like, the night before the conference officially kicked off, whether there is a Slack or Discord space for all conference attendees so that people can organize outings or meals. And that is definitely something that at least the Ruby Central conferences have, and I imagine other conferences do too, that was missing at Kaigi as well. STEPHANIE: I'm wondering if you would go to Kaigi again and maybe be that mentor for someone else. MINA: I think so. I think I had different feelings about it when we were just leaving the conference, kind of feeling like some of these things that I'm learning here or that I'm being made aware of rather at RubyKaigi will come up important in the future, but maybe not right away. So then I was kind of walking away with a sense of, like, oh, maybe this is a conference that is important, but I might deprioritize if other opportunities come up. But then I started to kind of, like, jot down some reflections and retroing with myself on this experience. And I thought what you mentioned about this being the sort of, like, the push learning opportunity is really nice because I went in there not knowing what I don't know. And I think I came out of it at least being a little bit aware of lots of things that I don't know. STEPHANIE: Yeah, yeah. Maybe, like, what I've come away with this conversation is that there is value in conferences being different from each other, like having more options. And, you know, one conference can't really be everything for everyone. And so, for you and I to have had such a very different experience at this particular conference than we normally do, that has value. It also can be something that you end up deciding, like, you're not into, and then you know. So, yeah, I guess that is kind of what I wanted to say about this very new experience. MINA: Yeah, having new experiences, I think, is the important part. It's the same idea as you want to get a diverse group of people in the room together, and you come out with better ideas or better products or whatever because you have other points of view. And I think that attending conferences, even if not around the world, that are different from each other either in academia or just kind of, like, branching out of Ruby Central conferences, too, is a really valuable experience. Maybe conferences in other languages or language-agnostic conferences. STEPHANIE: Yeah, well said. On that note, shall we wrap up? MINA: Let's do it. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeeeeee!!!!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.

The Bike Shed
386: Value Objects Revisited: The `Tally` Edition

The Bike Shed

Play Episode Listen Later May 31, 2023 41:08


If you're in the market for bicycle shorts, Joël's got you. Stephanie just returned from RubyKaigi in Japan and shares details of her trip. Recently at thoughtbot, there have been conversations around an interesting data modeling exercise. Joël and Stephanie discuss the following: Value Objects vs. Hashes Doing Math on Compound Numbers Monoids and Folding Naming Concepts in Code This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. Ruby Kaigi (https://rubykaigi.org/2023/) Google Translate Lens (https://lens.google/) Video on city parks (https://www.youtube.com/watch?v=qnyikrFlGdU) Enumerable#tally (https://ruby-doc.org/3.2.2/Enumerable.html#method-i-tally) Hash#merge (https://ruby-doc.org/3.2.2/Hash.html#method-i-merge) Monoids (https://blog.ploeh.dk/2017/10/06/monoids/) Enumerable#all? (https://ruby-doc.org/3.2.2/Enumerable.html#method-i-all-3F) Value of specialized vocabulary (https://www.bikeshed.fm/356) Gist with Joël's code solution (https://gist.github.com/JoelQ/3056a0a6e8b5488faa5caeef630cd702) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. JOËL: And I'm Joël Quenneville. And together, we're here to share a little bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: I've made an unusual purchase this week. I went out and bought a pair of bicycle shorts. And, for those who are not aware, these are special shorts that have padding built into them. Typically, they're, like, skin-tight, but I got, I guess, what are called mountain biking shorts. So, they kind of look more like the cut of a normal short. But they've got this, like, built-in padding for biking. STEPHANIE: So. Just to confirm, you did get these shorts for biking purposes, right? JOËL: Yes. I purchased these shorts for biking purposes. STEPHANIE: Okay. [laughs] JOËL: And I got these because I was talking to a friend about this and mentioning that this was, like, probably the most ambitious cycling thing I've ever done in my life. And they recommended if you have not done bike shorts, you really should get them. They make a big difference. STEPHANIE: Wow. Okay, I have two thoughts here. First of all, you prefaced this saying that this was an unusual purchase. So I thought maybe that you bought these bike shorts for some other purpose. [laughs] But I am excited to talk about this because I've also been curious about trying bike shorts. I bike a lot in Chicago in the summer, and I've been doing, like, longer rides on the Lakefront trail. And one of my goals, actually, this summer is to do a bikepacking trip. But I have not been super comfortable on longer rides. And I was just thinking that this might be something really helpful to make them a little more enjoyable. JOËL: So, is the kind of biking that you're doing closer to what might be considered commuting? STEPHANIE: Yeah, mostly commuting. But also, just, like, going on long rides on the weekends, in addition to this, hopefully, forthcoming bikepacking trip up to a state park. So not too long, maybe, like, 60 miles, but definitely long enough to start getting a little uncomfy on your seat. JOËL: Yeah, is 60 miles, like, in one day? STEPHANIE: Yeah, exactly. JOËL: That's a lot. Yeah, the friend who recommended biking shorts to me told me that pretty much anything over maybe 10 miles is worth getting shorts. STEPHANIE: Wow, okay. I clearly have been suffering [laughs] for way too long, then. Tell me more about your cycling trip. JOËL: So this is a bikes plus beer trip. Basically, I plotted a bunch of breweries in Belgium on a map and constructed an itinerary that could hit a bunch of them while keeping fairly short rides between towns. And the goal is to do maybe 30-35 miles in a day. And so I'll be going probably, like, cycling in the morning, and then exploring and drinking in the afternoon and evening. STEPHANIE: That sounds amazing. That's really cool to do a little bit of a tour of the area and then also traveling by bike. JOËL: Yeah, I'm excited because other modes of transport really just give you the origin and the destination, whereas cycling, you kind of get all of the in-between places. You get a much better feel for the area that you're in. And you can make all these unexpected stops if you want. You can make detours. So I feel like you get the sort of being in the moment, being in the place effect that you would have as a pedestrian but with a much longer reign. STEPHANIE: Yeah, absolutely. That's exactly what I was going to say. I love cycling. And there's something really special about being able to be present in your surroundings and seeing people on the street or a cool building as you're going. But also going at a speed where it feels very fun and very freeing to just be cycling through a town and making stops when you want to, and traveling greater distances than you could be able to on foot. JOËL: So I just received these bike shorts yesterday in the mail. So today, at the end of the day, I'm going out for a bike ride, and I'm going to see if they perform as advertised. STEPHANIE: That's exciting. Keep us posted [laughs] on if you end up liking them or not. JOËL: Yeah, yeah. The next episode or two, I'll have to report bike shorts; yay or nay? STEPHANIE: Yeah, The Bike Shed will now become bike gear reviews. JOËL: The name will actually line up, then with what the people googling, it might think it actually is. Stephanie, what's new in your world? STEPHANIE: Speaking of vacation, I just got back from a two-and-a-half-week trip myself. I mentioned on the podcast a couple of episodes ago, I think, that I was traveling to Japan for RubyKaigi, an international Ruby Conference over in Japan. And then I spent another week in Taiwan, just on my own time. So, yeah, I had a really big, long trip, and it was really great. It was my first time going abroad in a really long time. It was my first time being somewhere where I didn't speak the language. So, in Japan...I don't speak any Japanese. And it was both challenging and also, like, not too bad. I found my way around through a lot of gesturing and smiling, and nodding. [laughs] And, hopefully, people were able to understand what I was trying to communicate. Also, pointing at menus, I highly recommend going to places that have pictures of the food, and then you can just point when you want to order. [laughs] JOËL: So, did you find that English was not particularly useful then in Japan as a tourist? STEPHANIE: Yeah, I would say so. The next thing was that most signs were translated. So we ended up taking public transportation a lot. And that was quite easy to navigate, especially since I have kind of navigated subways in other cities before, and reading the signs is no problem. But when you're trying to communicate with locals, that was a little harder. JOËL: Did you use any, like, apps on your phone or anything like that to help navigate kind of the different language? STEPHANIE: Yeah, the Google Translate Lens app. I can't remember exactly what it is. But this was my first time really using it. And I was really impressed by how it was able to translate things that you're using your camera to take pictures of, or just, like, having your camera view. I did feel a little silly, like, holding my phone up to everything and trying [laughs]...so I could understand what I was reading. But for menus that did not have pictures, that was my backup strategy. [laughs] JOËL: Did you ever have to have your phone translate something and then just show your phone to someone else? STEPHANIE: No, I didn't have to go that far. Though I do think that it has a feature where you can have someone speak into the phone, and it will translate that into your native language. And then you respond by speaking into it and then playing the sound for them, which, you know, I bet really works in a pinch. But I think that required a little more investment into the interaction [laughs] with the other person than I was ready for. Like I said, the gesturing served me quite well. JOËL: I got the experience of being on the other side of that a while back. So, here in Boston, I was just walking down the street, and someone stopped me and just holds up their phone. And they've typed something in Chinese on there. And they hit a button, and it comes in English. STEPHANIE: [laughs] JOËL: And they're asking for directions. And I think I typed a sentence back on their phone in English, and then they hit the translate button and got it back in Chinese. We went back and forth a few times. And eventually, I think he got what he wanted, and we went our separate ways. And I was kind of amazed that this whole interaction happened. STEPHANIE: Yeah, that's really cool. JOËL: Yeah, kudos to that person for having the courage to stop someone on the street when you don't speak their language. STEPHANIE: Yeah, absolutely. I think even when I was struggling to communicate with someone because of the language barrier, I could tell from their gesturing in return that we were, like, willing to help each other out. And that, like, there was still an ability to find some kind of connection, even though, you know, we didn't completely understand each other. And that was definitely one thing that I really enjoyed was being in a place with, you know, people different from me and having that exposure. It's been a really long time since I've got to experience that, and that was really valuable. JOËL: So, other than the conference, what would you say are some highlights of the trip for you, maybe one from Japan and one from Taiwan? STEPHANIE: So one of my favorite things about being in Tokyo was all the green space that was around. I ended up walking a lot just to explore the neighborhoods. And I always just stumbled across a local park or even a shrine that had really great nature around it, a lot of big trees. You know, some, like, water features, maybe like a pond, and a lot of really fun plants that I got to learn about. And, yeah, that was really nice, especially in such a dense urban area, like, coming across green space to just sit for a little while. And it was such a nice relief from the density and busyness of a big city. That was just one thing that I was really impressed by being in Japan. JOËL: That's really cool. I think that really speaks to the quality of their urban planning. I know that the stereotype of Tokyo that I have in my mind is that it's, like, you know, ultra-modern, ultra-urban, you know, it's the largest city in the world. So the idea that they've taken the time to set up all these little parks everywhere is really endearing. Particularly, I think the idea of smaller parks at the neighborhood level where you don't need, you know, something massive like, let's say, New York's Central Park, which is, you know, really cool. But having just a little green space in your neighborhood where you can, like, stop by, I think it's a wonderful upgrade to local people's quality of life. I was recently listening to a video on YouTube from a city planning channel talking about just all the thinking that goes behind city parks, and having them at different scales, and how that impacts the residents of different areas. So it's really cool to hear that Tokyo has done a great job with that. STEPHANIE: Yeah, absolutely. I think part of the joy of just stumbling upon it was that you know, even when I wasn't seeking it out, it would just come along during my walks. And, yeah, it really was very refreshing. JOËL: What about Taiwan? STEPHANIE: So, in Taiwan, what I really enjoyed about it it's a bit of a smaller island. And so you can actually get to a lot of places within a few days. And a lot of folks take day trips out to the coast from Taipei. And I was able to do a two-day trip to another county that had some hot springs, and I got to enjoy an outdoor hot springs in the rain. And that was really nice because it was, like, surrounded by trees. And it happened to be raining that morning, but, you know, we were all kind of already getting wet, so it didn't really matter. And it was just, like, this really serene and gorgeous experience being able to enjoy that. And I think that was another place where I was in a very urban area, and then being able to escape a little bit was really nice. JOËL: That sounds like a magical moment. Have you visited hot springs before, or was this your first time going to a hot spring? STEPHANIE: I have been to a few in the U.S. before. I like to take road trips to national parks. And there are some really great hot springs in the U.S. as well. And so this was kind of something that I really wanted to do somewhere else just to experience it elsewhere. And, yeah, I'm really glad to have checked that off my bucket list. JOËL: That's really cool. I've never been to a hot spring, and it sounds like a fun thing to do. So it's on my kind of greater bucket list. It's maybe not a top-five thing to do, but definitely, something I want to do one day. STEPHANIE: Cool. Love it. That was vacation talk from Joël and Stephanie. [laughs] MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! JOËL: So recently at thoughtbot, we've been having conversations around this really interesting data modeling exercise, where let's say this is a company, and you want to purchase T-shirts for everyone at the company. You have already some T-shirts on hand because you've done this kind of thing before in a couple of different warehouses. And you need to know how many new T-shirts you need to order in order to have enough for everyone. So as long as you keep things simple, the math is pretty easy because you sum the number of people at your company, and then you sum the number of shirts across all of your warehouses, and that gives you the T-shirts that you need, the T-shirts that you have. You get the difference between those two numbers, and that tells you how many new T-shirts you need to order. Where things get more complicated is once you start introducing T-shirt sizes, and that's where the fun data modeling comes in. If everyone at your company has a T-shirt size that they want and then at your warehouses, you store...the object that represents a warehouse stores a hash of sizes and how many of each size you have. Now, how do you do all this, like, summing across things? And it's not really just a single number that you want. Now you need to know how many small, mediums, and larges. And, sometimes, you've got a hash. Sometimes you've got just symbols on a user, and you've got a sum across hashes. Maybe do some differences across hashes. And it gets kind of tricky to work with. So that's sort of the problem as it's initially presented. And we've been having a really interesting conversation around different ways to try to solve it in a way that's really kind of clean and nice. STEPHANIE: Yeah, that's interesting because what you described sounds like the first iteration of solving the problem is, oh, the warehouse stores this information as a hash. So maybe I will create a new hash for the counts of T-shirt sizes that I need and then do the comparison on those two hashes. It sounds like maybe there was some unwieldiness or maybe even some duplicated code there. Is that what you think you all were trying to solve by modeling this differently? JOËL: I think we kind of quickly hit some limitations with hashes. One thing that is fun before we start trying to combine a bunch of hashes is that some of the data exists as a hash on the warehouses. But to get the T-shirts that we need, all we have are an array of users and a size on all of them. And we can use this fun method from Enumerable called Tally to give us a kind of Tally hash that is just a mapping of size, two counts of that size in the array. And so that's a really fun method. You don't get to bring it out that often in Ruby. And it's nice because that hash format happens to match the same format as the hashes stored on the warehouse objects. STEPHANIE: Right. So now you're comparing apples to apples. But it sounds like maybe this hash representation does hold some kind of significance. JOËL: Yeah. I guess, for me, I tend to see anytime you're doing fancier operations on a hash more than just reading in and out; it probably wants to be some kind of value object. And, in this case, we kind of want to do math on hashes. I think the equation is kind of still the same thing. We're trying to get the difference between the two, between the want versus have, but you can't just subtract one hash from another directly. There's some things that you can do with the hash merge method that allows you to pass a custom block and do some things there. But we're going to have to do this sort of repeatedly. And now we're kind of leaking some of that knowledge a little bit. So it feels like something where you might want to actually name this concept and make it an object of its own that can then have its own kinds of domain operations as methods on it. STEPHANIE: Yeah, I like that a lot. Because even just as I was thinking about it when you are storing data like that in just a hash, what do you call it? Like, what do you name it? I think I've seen things like that named, like, T-shirt data, or, like, warehouse data, or warehouse T-shirt counts, or T-shirt counts. You know, that is when it starts to diverge, and you end up maybe seeing the same, like, data represented, but it being named different things in different parts of the code. And I, in experience, have found that very painful. JOËL: Yeah, because I guess you could have, like, T-shirts on hand from your warehouse; that's one hash. But the hash generated from the users might get called something like user preferences. And if you're reading through that code and you see a hash, and you're like, okay, do these two hashes that I'm looking at, maybe in a test, just kind of coincidentally have the same keys? Or are these kind of fundamentally the same thing? Or is the idea of, like, T-shirts on hand like a stock different from, like, a preference? And do they represent different things that just happen to be similar in this particular scenario? STEPHANIE: Right. And especially if then there are methods where you're passing that data structure that really represents the same thing. But you're passing it as arguments, and then, suddenly, one variable name, user preferences, or user T-shirt preferences becomes, you know, T-shirt count. That has been really confusing for me before. JOËL: One thing that does get, I think, clunky very quickly is that you have all of these warehouse objects that have that hash of, like, stock on hand on them. And what you really want is a kind of aggregate object that tells you not what's the stock on hand for one warehouse but across all warehouses. So you've got to go through, I guess, that array of warehouses and somehow kind of aggregate all of those hashes together. And because they're already tallies, you can't just do Enumerable Tally on it anymore. You've got to find some way to combine them together, and that gets tricky really quickly. STEPHANIE: Right. I can see they're starting to be, like, nested loops, especially if you're just working with primitives. JOËL: I think some initial implementations that we saw ended up doing either, like, some kind of reduce block or eachwithobject, or something like that, which are, I think, fine solutions here. But what lives inside of those blocks is what gets complicated. And I don't know about you, but I feel like if I'm reading through some code and then all of a sudden I see a reduce block, and it's, like, ten lines of logic with maybe some, like, nested things, like, maybe some nested loops or some conditions inside of it, that's kind of intimidating. Reduce is not a super easy method to wrap your head around, especially when the block has got a lot of logic. STEPHANIE: Yeah, that's a really good point. It definitely gives me pause. And I have to, like, you know, commit to reading the method in its entirety to fully understand [laughs] what's going on. JOËL: Sometimes, like, really pause and, like, annotate with comments and all this stuff. STEPHANIE: So, what did you end up thinking about in terms of solving that problem of aggregating the sums of all the different T-shirt sizes for each warehouse? JOËL: So I think, for me, oftentimes, it's easier to make the problem a little bit smaller, solve that smaller problem, and then try to kind of scale up back up again and particularly when you're dealing with something like reducing or aggregating a large collection. Like, forget about dealing with a collection. Just how could I combine two items of this type? So if I had two of these hashes. And forget about fitting it for an array. But if I have two of these hashes, how could I combine them together? And you could do this with hash merge. I wanted to do things a little bit more encapsulated. And because I also knew that we're building some more logic around these, I actually wrote a custom object. I called it a tally, maybe inspired by that Enumerable method, and implemented an operator plus on this tally object. So a tally object can plus another tally object. And the response from that is you get a third tally object that's gone through all of the keys and summed them together. So it's kind of an aggregate sum. STEPHANIE: This is a cool example of a method that's a verb also representing a noun to name the return value, right? So the Tally method on Enumerable returns a hash, which we have been talking about for a while as, like, a data structure that's, you know, perfectly fine, but maybe we can leverage turning it into like you said, a value object to give it more meaning or to make it easier to work with. And it seems like the naming part just kind of fell into your lap. JOËL: Yeah, tally is interesting in that it is both a noun and a verb in English. I'm not sure what the grammatical term for that kind of word is. STEPHANIE: So, once you extracted this new class out, what insights or observations did you have about this problem? JOËL: What becomes really cool about this is that once you have a way of combining two objects together, reduce is a way to just kind of scale that up to an arbitrary number. And so, just like you can sum an array of numbers by reducing plus over the array. Because I have plus on my tally object, I can reduce plus operator over an array of tally objects. And they all just kind of sum together in a single tally that's the combination of all of them. So this is really cool. What used to be an intimidating reduce block, the intimidating logic gets moved into a plus method, which I think is much more approachable. Because I can go in the context of an object and say, okay, I've got this tally object, and I'm trying to add it to another tally object. And we're just going one key at a time, adding them together. Simple enough. And then in the place where we're reducing, all we're saying is list of tallies reduce plus. And I know that pattern already because I do it with integers to sum them together. And so now I've just got this really simple one-line in the scary part. And the actual complex logic is much more approachable. STEPHANIE: That is very cool. I found it really interesting that this came about because we were trying to do math on these two hashes. So it seems like, you know, a tally because it represents a score or, like, a number. Like, we were able to implement those plus operators and get to a simple solution because we're working with numbers. JOËL: Yeah, I think it might be fair to describe it as maybe a compound number is the term that I use. I don't know if that's mathematically correct. Oftentimes, when you're dealing with things that represent a number or something that's represented numerically but that might have more than one number involved in it. But you still want to do math with this kind of compound, multi-number value anyway. And one example that you might have is, let's say, a point in 2D space. You have an X coordinate and a Y coordinate. And you can do math on points. In fact, there's a whole field of math to deal with that kind of thing. That's an important thing that you have to do. You might want to be able to add or subtract points. You might want to do certain types of multiplication on them. And so just because something has more than one number associated to it doesn't mean that it can't be used for math. In fact, oftentimes, that's where the fancier math does come into play. But when we treat them as primitives, and we just have, let's say, our XY pair was a hash, or, like, a two-element array, then we lose the ability to do math nicely. If we create, let's say, a point class that has an X and Y, and then we define plus, we define minus, we define scalar and vector multiplication, things like that, now we can do all those operations. And we can treat it like math, even though it's not just a simple integer anymore. STEPHANIE: Yeah, I like that a lot because we do end up working with data, you know, maybe even from our database. But then, inevitably, we want to, like, learn something about it. And so I was thinking about how frequently I use GROUP BY in MySQL queries and how, oftentimes, I care about counts, or, like, number of records. And perhaps this is why we see, like, the hash primitive used so frequently in codebases that then become pretty complicated once we're trying to, like I mentioned, like, learn something about it or, like, compare things or whatever logic that we need to do. And transforming them into objects that then know how to do math on themselves [laughs] is very cool. JOËL: Hashes are interesting because they're pretty much just basic data structures. And I think, very often, they're sort of pre-objects. They're things that want to eventually become objects. And, oftentimes, what I find is that hashes get passed around a system. And various other classes or subsystems all have bits of logic that act on the hash because the hash can't own that. And so you end up with the logic around the concept of whatever the hash represents kind of scattered and maybe duplicated across three or four places in the application. And then, all of a sudden, if you give that a name, if you create a class for it, you can pull all of that logic into one place. And, all of a sudden, it probably cleans up all of the surrounding places because now they don't have to care about the implementation of exactly what operating on the hash is. But, also, it means that these operations generally have, like, nice domain names. And, in the case of a complex number, you might even have that represented through math operations, like, plus or minus. And that allows your code to read really nicely. STEPHANIE: Right. Which gets me thinking about how I mentioned, like, tally as a noun, and, you know, you implemented your custom class. But do you think there's any value in the idea of a tally being specifically like a hash-like thing with a number as the value for each key, like, that existing as a more general class for people to use? JOËL: Oh, that's interesting. So, in my personal implementation, I hard-coded values for small, medium, and large because those were the T-shirt sizes from the example. But you're talking about some sort of generic tally object that maybe would be a gem or something like that that people could use that represents counts of arbitrary things or multiple counts of arbitrary things that might then implement some common math operators so that you could add or subtract them. STEPHANIE: Yeah, exactly. Because I was just thinking, you know, like I mentioned, I often represent that when I count number of records in my database. Or even I can recall a problem that I encountered previously where I had to figure out the number of orders for an e-commerce store based on the location. And I held that in a hash data structure, but really, it's a tally. [laughs] And so, yeah, I think that maybe we've kind of stumbled across a very useful representation of very common problems. JOËL: Yeah, I can see there being use for a generic version of this. Maybe that's your chance to go out and create some open source, or maybe this already exists. We should maybe research that first. STEPHANIE: Yeah, if any one of our listeners know, [laughs] send us an email. JOËL: So something that was really interesting to me about all of these changes, introducing the value object, cleaning up the reduce, all that stuff, is that, in the end, once the...there was this object that represented the sort of aggregate compound value, the tally, then the equation stayed the same. And I can just slot in those variables as before. Whereas previously, when we switch from just a single count to this, like, we need to take into account sizes that, like, broke the initial implementation of the code. So it's funny how you sort of go from a simple implementation and then a new requirement, which breaks it. But then just changing the hash to be an object all of a sudden made the original code, which didn't really need to change; it just worked again. STEPHANIE: Hmm. That's really interesting because it makes me think about how maybe the primitives were perfectly fine, you know, in the first set of requirements, and not until, like, an additional complexity or something new emerged that we needed to reach for an object that could support the change. JOËL: Yeah. And I think I'd argue that if you're doing just raw T-shirt count, an integer is probably the right value to use there. But if you're doing counts broken out by T-shirt size, then having an object that's a single thing that responds to plus and minus so that you can use it in the same equation where you're saying sum up all of these things from the warehouse, and then do a difference with the T-shirts that we need that becomes really nice. STEPHANIE: Do you think there was some value in going through the hash implementation first, though, and then arriving at using a more custom object? I'm curious, kind of, like, what that journey was like. JOËL: It's hard to say. I would say maybe yes. But I could also see someone who's done this a lot, who's built the sort of heuristics, the instincts around this could immediately be like, oh, wait, we're trying to sum hashes here. Clearly, these need to be objects. Clearly, what we need is something that implements a plus operator that we can reduce. STEPHANIE: Yeah, I like that a lot. Because part of, you know, knowing what to reach for is having seen it enough times and seeing patterns, right? JOËL: This reminds me of a particular pattern that comes from the world of functional programming. It has a kind of scary-sounding name. It's monoid, not monad, monoid. And the idea in the context of Ruby is it's some kind of object that implements a plus method. So two of these objects can combine each other. And typically, you also have some sort of empty version of this object or some sort of, like, zero value. And there's a few rules that go around, like, kind of how this object has to behave. Like, you can't just put any implementation you want in that plus method. Certain requirements that have to be met for it to be considered, like, a valid plus method in this pattern. But if you do meet those requirements, then arrays of this type of object are just inherently reducible because you can just reduce plus over them. And so I think anytime you're trying to aggregate some sort of unwieldy data structure, that's probably a useful pattern to have because, you know, wait, as long as I have a way to combine two items together and potentially some way to generate an empty state, I can aggregate this whole list. STEPHANIE: I'm curious, does that also apply to non-numerical values? JOËL: Yes, any kind of aggregation combination, whatever. So maybe what you're doing is you're combining strings together. STEPHANIE: Got it. JOËL: String concatenation is a form of combination. And so you could be reducing some kind of concatenation over an array of strings, and you end up with one aggregate string that's the combination of all of them. Sometimes, though, you're not just taking values and putting them next to each other so that what you have is kind of all of them at the same time. You might instead do some kind of comparison. An example here might be Boolean values. You might say the way that I'm sort of, quote, unquote, "aggregating" two values, two Boolean values is with the operator AND. And so you have two Boolean values, and you get a new sort of combo value out of them, that is, are both of these values true? STEPHANIE: Whoa, that's blowing my mind right now. Because I had never thought of the, like, AND operator on Booleans, essentially aggregating them into a single true or false value. [laughs] JOËL: It's kind of weird, right? But I guess we do the same thing with numbers. One plus one doesn't give us 11 unless you're writing JavaScript. STEPHANIE: [laughs] JOËL: You know, we get a new number too, that is some sort of, like, combination of the two. So, similarly, it kind of makes sense that two Booleans might combine to create a new sort of third Boolean value. Where it gets really interesting, though, is that once you have this sort of combination, if you try to reduce AND over an array of Booleans, what you effectively have created is Ruby's Enumerable all method that checks to say, are all values in this array true? STEPHANIE: Interesting. But really, the way that's implemented is just, like, a definition of what aggregate means for Booleans, right? JOËL: Right. But it's taking that idea of aggregating two values and scaling it up to an array of many values. So we know Boolean AND. Another way to think about it is, are both of these values true? Is the question it's trying to answer. And then we're scaling that out to say, is both of these values true for everything? So are all of these values true? Because we're going from two to many. STEPHANIE: Cool. So maybe the takeaway for some of our listeners could be, like, next time they find themselves having to deal with a collection or an Enumerable and, you know, using a reduce or, like, trying to break it down to compare two of those elements first, and figuring out how they want that interaction to work. Does that sound right? JOËL: Yeah, absolutely. Once you have a way to combine two elements together, if you want to scale it up to n elements, you just plug it into reduce, and it does the rest of the work for you. My big takeaways from this exercise were one: the value of creating custom objects. Wrapping primitives like hashes in an object and adding a few domain methods on them made such a difference in my final implementation. Secondly, I think it's what you're saying, this whole thing about breaking down complex reduce problems by figuring out how to combine two items and then just using reduce to scale it to an array. And then, finally, I think this is a point that we've mentioned on this podcast before, the value of specific vocabulary - being able to name things and patterns. And so knowing some of the details of this monoid pattern and having a name for it means that now I start seeing it in places. And so the moment I see, oh, wait, we're aggregating values; we're combining two values together and then doing this in a reduce, immediately, my mind goes, wait, that feels like monoid. And then, I can explore that with my custom object to try to make the code better. STEPHANIE: Yeah. And even if you don't remember the monoid part specifically, the idea of Tally, like, that is something that I think is really cool and really applicable to a lot of codebases. JOËL: So, for those who are interested in more practically what this code looks like, I've put this all in a Gist, and I'll link to it in the show notes. This was a really fun exercise for me because I used sort of two development techniques to help sort of build this out. One, I went with a kind of literate programming approach, where I had just a Ruby file and would have put in some big comment blocks talking about what the setup was, what I was trying to do, and then describing how I'd like to use the code, and then try to write code that made that happen. And then, for the actual objects that I was using under the hood, I used TDD to test drive and build them out. So you've got all of that in the Gist. We've got the tests and that sort of literate programming script that almost reads like a mini blog post, except it's executable Ruby. So, if you're curious to see about that, the link is in the show notes. STEPHANIE: That's a very cool format. I'm excited to take a look. On that note, shall we wrap up? JOËL: Let's wrap up. STEPHANIE: Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.

Ruby on Rails Podcast
Episode 471: RubyKaigi 2023 Recap (Brittany + Jemma)

Ruby on Rails Podcast

Play Episode Listen Later May 24, 2023 27:05


The moderator of Ruby Committers and the World, Jemma, answers all of Brittany's questions about her recent trip to Matsumoto, Nagano, Japan for RubyKaigi 2023. The pair talk about Matz's keynote, the panel and Jemma's recent work on YARP. Show Notes: RubyKaigi 2023 (https://rubykaigi.org/2023/) Field Report: RubyKaigi (https://blog.testdouble.com/field-reports/ruby-kaigi/) Shopify/yarp: Yet Another Ruby Parser (https://github.com/ruby/yarp) Stan Lo (https://dev.to/st0012) Rbspy (https://jvns.ca/juliasections/rbspy/) Sponsored By: Honeybadger (https://www.honeybadger.io/) If you want to simplify your stack, and lower your bills, it's time to check out Honeybager. Honeybadger combines all of those services into one easy to use platform—it's everything you need to keep production healthy and your customers happy. Get started today in as little as 5 minutes at Honeybadger.io (https://www.honeybadger.io/) with plans starting at free!

Yarukinai.fm
183. 新宿にまず行く

Yarukinai.fm

Play Episode Listen Later May 21, 2023 38:21


話したこと 最近の天気の話 169. ケミカル・ポッドキャスター THCOとHHCOが規制対象へ 危険性とリスクは? 二人体制になったチャットモンチー!最近彼女達はどうなったんや?という人の為に! RubyKaigi 2023 - RubyKaigi 2023 あずさ (列車) - Wikipedia 178. みんな何やってるのかな with darquro airweave(エアウィーヴ) カプセルホテル - Wikipedia 来年は沖縄かー RubyのYJITコンパイラをShopifyが本番に投入、Railsアプリを高速化。Rubyも本格的にJITの時代へ ゼルダの伝説 ティアーズ オブ ザ キングダム Tegra - Wikipedia Nintendo Switch(有機ELモデル) そーりんさん主催のストリートファイターV大会(4月場所第6戦)に出てみる「バルログで頑張るログ」 ジョイスティック 次元が違う..新型スティックコントローラーを実食! ゲーミングコントローラーのデッドゾーンとは はじめての人でも分かるホールセンサーの原理と種類 GameSir T4Kaleid PC コントローラー 【Apex Legends】デッドゾーン、反応曲線、入力範囲の限界について Nintendo Switch Proコントローラー ゲームボーイ - Wikipedia Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 38歳男性。既婚。二児の父です。 須貝(sugaishun) 会社員 駿河(snowlong) 在宅社長

Ossan.fm
241. サンクチュアリ

Ossan.fm

Play Episode Listen Later May 19, 2023 47:21


Yarukinai.fm
182. 20世紀だったらいけたかもしれない

Yarukinai.fm

Play Episode Listen Later May 14, 2023 43:47


話したこと 五月初収録 RubyKaigi 2023 - RubyKaigi 2023 GWやったこと 駿河さん 南畑ダム(再)[福岡県] - ダム便覧 黒部ダムオフィシャルサイト 福岡市民の祭り 博多どんたく港まつり モバイルどんたく(モバどん) マーク ニコニコ超会議2023 公式サイト 11万人以上が来場した「ニコニコ超会議2023」リアル会場–音声番組「ニュースの裏側」#179 幕張メッセ - 日本最大級のコンベンション施設 多摩動物公園公式サイト IKEAオンラインストア【公式】 【本当に50円…?】IKEAの新商品「プラントベースレモンソフト」が想像以上に”レモン”だった。 アケコン ファイティングスティックα Qanbaのコンパクトなアーケードスティック「Drone 2」が6月2日に国内発売。PS公式ライセンスを取得 アミューズメントマシンパーツ製造 三和電子株式会社 マックジャパン せんごくネット通販 (本田が春麗にサバ折りをする動画。サバ折りの進化 20種(official 18種)Street Fighter Evolution E.Honda sabaori in Chun-Li 長谷川真空管 オフィス家具通販のオフィスコム 生活のたのしみ展2023 ほぼ日LIVEコマァ〜ス 糸井重里 千葉 11日の震度5強地震 8人けが 地震活動や今後の雨に注意を 中華イヤホン LETSHUOER S12 これを基準にするとヤバいかも 14.8mm Planar Driver搭載「LETSHUOER S12」中華イヤフォン レビュー・音収録・波形比較 滑らかで低歪のハイエンド級サウンドを実現する最新平面駆動型中華イヤホンコレクション 2022 Shuoer S12 14.8mm Planar Magnetic Driver IEM — HiFiGo ヘッドホンの豆知識 vol.12 JA.AliExpress Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 38歳男性。既婚。二児の父です。 駿河(snowlong) 在宅社長

Remote Ruby
Remote Ruby RailsConf 2023 Panel

Remote Ruby

Play Episode Listen Later May 10, 2023 37:07


This is a special episode from RailsConf 2023 Atlanta, where we're having a Ruby Community Podcast LIVE!  Today, we have on the panel Brittany Martin, Co-host of The Ruby on Rails Podcast, our very own Jason Charnes, and Paul Bahr, Audio Editor from Peachtree Sound, who edits over a dozen tech podcasts. We also have some great guests joining us: Aaron “tenderlove” Patterson, Irina Nazarova, Justin Searls, and Britni Alexander, who was selected by the audience to be our fourth guest. Today, our guests share some stories about who they are and what they do, give shout-outs, and answer questions from our audience.  Hit download now to hear more! [00:04:30] We start with Aaron “Tenderlove” Patterson, sharing the origin of his nickname. [00:06:05] Since Aaron has switched companies over the years, he tells how his job has changed a lot, and how he spends one hundred percent doing open source at Shopify. [00:08:05] A question from the audience comes up on what Aaron is looking most forward to working on this year. He mentions some spoilers. [00:10:38] Since Aaron has been working Ruby and Rails for so long, Brittany asks if there's ever been a community that may have tempted him to leave. His answer is no.  [00:11:44] Aaron leaves us with a shout-out to Mushroom Hunting since he is a mycologist.  [00:12:46] Our next guest is Irina Nazarova, co-founder of Evil Martians, who tells us she had a dream that Brittany would invite her on a podcast. [00:15:44] Irina explains that consulting allows them to understand user needs, which they use to build useful tools.[00:16:44] She explains the open source products they build are a byproduct of consulting work, and they allocate resources to work on them once they show traction.[00:18:44] The focus here is on startups and if she recommends Ruby and Rails to startups.  [00:19:51] An audience question comes up for Irina on how does Evil Martians foster the environment for a great company blog? She tells us about her great editors and the blog articles that bring value to the company. [00:21:23] Irina makes a shout-out for people to support Ukraine during the war.[00:23:18] Next, we have joining us Justin Searls, co-founder of Test Double, and Britni Alexander, former employee at Mailchimp. They introduce themselves and tell us a little bit about what they do. [00:27:48] Justin discusses his favorite talk he's given, “How to Scratch an Itch.”[00:29:14] Britni tells us her ideal job and her struggle to balance being kind and direct. [00:30:05] Justin tells us about an upcoming project called, N.E.A.T, which is focused on discussing ways to make software better that are not related to technology. [00:32:15] Britni talks about what her ideal job would be. [00:33:05] We hear about the RubyKaigi conference in Japan and Justin's plans to attend and report on it. [00:35:30] Britni gives a shout-out to her friend Eileen for being her friend, and Justin expresses his gratitude for the opportunities and connections he's gained through the Ruby community. Moderator:Brittany MartinPanelists:Jason CharnesPaul BahrGuests:Aaron PattersonIrina NazarovaJustin SearlsBritni AlexanderSponsor:HoneybadgerLinks:Jason Charnes TwitterBrittany Martin TwitterThe Ruby on Rails Podcast Aaron Patterson TwitterTenderlove Making ShopifyIrina Nazarova TwitterEvil MartiansJustin Searls WebsiteJustin Searls TwitterTest DoubleTest Double N.E.A.T. communityHow to Scratch an Itch-Justin Searls talk at ng-conf (YouTube)Britni Alexander LinkedInRubyKaigi 2023RubyKaigi 2023 Field Report Blue Ridge Ruby 2023

The Bike Shed
382: Domain-Specific Languages

The Bike Shed

Play Episode Listen Later May 2, 2023 36:09


Joël has been integrating a third-party platform into a testing pipeline...and it has not been going well. Because it's not something she usually keeps up-to-date with, Stephanie is excited to learn about more of the open-source side of things in Ruby, what's new in the Ruby tooling world, and what folks are thinking about regarding the future of the language. Today's topic is inspired by an internal thoughtbot Slack thread about writing a custom matcher for Rspec. Stephanie and Joël contrast DSLs vs. Object APIs and also talk about: CanCanCan vs Pundit RSpec DSL When is a DSL helpful? Why not use both DSLs & Object APIs? Extensibility When does a DSL become a framework? This episode is brought to you by Airbrake (https://airbrake.io/?utm_campaign=Q3_2022%3A%20Bike%20Shed%20Podcast%20Ad&utm_source=Bike%20Shed&utm_medium=website). Visit Frictionless error monitoring and performance insight for your app stack. RubyKaigi 2023 (https://rubykaigi.org/2023/) Mystified by RSpec's DSL? by Jason Swett (https://www.codewithjason.com/mystified-rspecs-dsl-parentheses-can-add-clarity/) Building Custom RSpec Matchers with Regular Objects (https://thoughtbot.com/blog/building-custom-rspec-matchers-with-regular-objects) FactoryBot (https://github.com/thoughtbot/factory_bot) Writing a Domain-Specific Language in Ruby by Gabe Berke-Williams (https://thoughtbot.com/blog/writing-a-domain-specific-language-in-ruby) Capybara (https://teamcapybara.github.io/capybara/) Acceptance Tests at a Single Level of Abstraction (https://thoughtbot.com/blog/acceptance-tests-at-a-single-level-of-abstraction) CanCanCan (https://github.com/CanCanCommunity/cancancan) Pundit (https://www.capvidia.com/products/pundit) Discrete Math and Functional Programming (https://www.amazon.com/Discrete-Mathematics-Functional-Programming-VanDrunen/dp/1590282604) Transcript: STEPHANIE: Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Stephanie Minn. JOËL: And I'm Joël Quenneville. And together, we're here to share a little bit of what we've learned along the way. STEPHANIE: So, Joël, what's new in your world? JOËL: I've been integrating a third-party platform into our testing pipeline for my client. It has not been going well. We've been struggling a little bit, mostly just because tests just kind of crash. Our testing pipeline is pretty complex. It's a lot of one script, some environment variables, does a few things, shells out to another script, which is in a different language. Does a few more things, shells out to another script, maybe calls out to rake, calls out to a shell script. There are four or five of these in a chain, and it's a bit of a mess. Somewhere along in there, something is not compatible with this third-party service that we're trying to integrate with. I was pairing this week with a colleague. And we were able to reproduce a situation where we were able to get a failure under some conditions and a success under other conditions. So these are basically, if we run the whole chain of scripts that call each other from the beginning, we know we get a failure. And if we skipped entirely the chain of scripts that set up things and then just manually try to invoke a third-party service, that works. And so now we know that there's something in between that's incompatible, and now it's just about narrowing things down. There are a few different approaches we could take. We could try to sort of work our way forward. We know a known point where it breaks and then just try to start the chain one step further and see where it fails. We could try to get fancy and do a binary search, like split it in half and then half and half again. We ended up doing it the other way, where we started at the end. We had our known good point and then just stepping one step back and saying, okay, now we introduce the last script in the chain. Does that work? Okay, that pass is great. Let's go one step further; two scripts up in the chain. And at some point, we find, okay, here's the one script that fails. Now, what is it within this script? And it was a really fun debugging session where we were just narrowing things down until we found the source of the bug. STEPHANIE: Wow, that sounds pretty complicated. It just seems like there are so many layers going on. And it was really challenging to pinpoint where the source of the issue was. JOËL: Definitely. I think all the layers made it really complicated. But having a process that we could follow and then kind of narrowing it down made it almost mechanical to figure out where the bug was once we got to a point where we had a known good point and a known bad point. STEPHANIE: Yeah, that makes sense. Kind of sounds like if you are using git bisect or something like that to narrow down the scope of where the issue could be. I'm curious because this is like a bunch of shell scripts and rake tasks or commands or whatever. What would have made this debugging process easier? JOËL: I think having fewer scripts in this chain. STEPHANIE: [laughs] That's fair. JOËL: We don't need so many scripts that call out to each other in different languages trying to share data via environment variables. So we've got a bit of a Rube Goldberg machine, and we're trying to patch in yet another piece in there. STEPHANIE: Yeah, that's really tough. I was curious if there was, I don't know, any logging or any other clues that you were getting along the way because I know from experience how painful it is to debug that kind of code. JOËL: It's interesting because I feel like normally logging is something that's really useful. In this particular case, we run into an exception at some point. So it's more of under what conditions does the exception happen? The important thing was to find that there is a point where it breaks, and there's a point where it doesn't, and realizing that if we ran some of these commands just directly without going through the whole pipeline, that things did work and that we were not triggering that exception. So all of a sudden, now that tells us, okay, something in our pipeline is wrong. And then we can just start narrowing things down. So yeah, adventures in debugging. Sometimes it's really frustrating, but then when you have a good process, and you find the bug, it's incredibly satisfying. STEPHANIE: I like that you used a process that can be applied to many different problems, in this particular case, debugging a testing pipeline. Maybe not something that we do every day, but certainly, it comes up, and now we have tools to address those kinds of issues as well. JOËL: So my week has been up and down with all of this debugging. What's been new in your world? STEPHANIE: I've been doing some travel planning because I'm going to RubyKaigi in Japan. JOËL: Whoa. STEPHANIE: This is actually going to be my first international conference, so I'm really looking forward to that. I just have never been compelled to travel abroad to go to a tech conference. But I'm really looking forward to going to RubyKaigi because now I've been to the U.S.-based conferences a few times. And I'm excited to see how things are different at an international conference and specifically a RubyKaigi because, obviously, there's a lot of really cool Ruby work happening over there in Japan. So I'm excited to learn about more of the open-source side of things of Ruby, what's new in the Ruby tooling world, and just what folks are thinking about in terms of the future of the language. That's not something I normally keep super up-to-date on. But I'm excited to be around people who do think and talk about these things a lot and maybe get some new insights into my own work. JOËL: Do you find that you tend to keep up more with some of the frameworks like Rails rather than the underlying language itself? STEPHANIE: Yeah, that's a good question. I do think because the framework changes a little more frequently, new releases are kind of more applicable to the work that I'm doing. Whereas language updates or upgrades are a little bit less top of mind for me because the point is that it doesn't have to change [laughs] all that much, and we can continue to work with things as expected and not be disrupted. So it is definitely like a whole new world for me, but I'm really looking forward to it. I think it will be really interesting and just kind of a whole other space to explore that I haven't really because I've usually been focused on more of the web development and industry work side of things. JOËL: What's a Ruby feature that either is coming out in the future or that came out in the last couple of releases that got you really excited? STEPHANIE: I think the conversation about typing in Ruby is something that has been on my radar but has also been ebbing and flowing over time. And I did see a few talks at RubyKaigi this year that are going to talk about how to introduce gradual typing in Ruby. And now that it has been out for a little bit and people have been using it, how people are feeling about it, pros and cons, and kind of where they're going to take it or not take it from there. JOËL: Have you done much TypeScript? STEPHANIE: I have been working more in TypeScript recently but did spend most of my front-end work coding days in JavaScript. And so that transition itself was pretty challenging for me where I suddenly felt a language that I did know pretty well. I was having to be in that...in somewhat of a beginner's mindset again. Even just reading the code itself, there were just so many new things to be looking at in terms of the syntax. And it was a difficult but ultimately pretty rewarding experience because the way I thought about JavaScript afterwards was much more refined, I think. JOËL: Types definitely, I think, change the way you think about code; at least, that's been my experience. STEPHANIE: Yeah, absolutely. I haven't gotten the pleasure to work with types in Ruby just yet, but I've just heard different experiences. And I'm excited to see what experts have to say about it. JOËL: That's the fun of going to a conference. STEPHANIE: Absolutely. So yeah, if any listeners are also headed to RubyKaigi, yeah, look out for me. JOËL: I was recently having a conversation with someone about the fact that a lot of languages provide ways to sort of embed many languages within them. So the Lisp family of languages are really big into macros and metaprogramming. Some other languages are big into giving you the ability to build your own ASTs or have really strong parsing capabilities so that you can produce your own, again, mini-language. And Ruby does this as well. It's pretty popular among the Ruby community to build DSLs, Domain-Specific Languages using some of Ruby's built-in abilities. But it seems to be a sort of universal need or at the very least a universal desire among programmers. Have you ever found yourself as a code author wanting to embed a sort of smaller language within your application? STEPHANIE: I don't think I have, to be honest. It's a very interesting question. Because I think the motivation to build your own mini-language using Ruby would have to be you'd have to have a really good reason for it, and in my experience, I haven't quite encountered that yet. Because, yeah, it seems like a lot of upfront work, a lot of overhead to introduce something like that, especially if it's not necessarily either a really, really particular domain that others might find a use for, or it just doesn't end up seeming worthwhile if I can just write regular, old Ruby code. JOËL: I think you're not alone. I think the Ruby community has been kind of a bit of a pendulum here where several years ago, everything that could be made into a DSL was. Now the pendulum kind of has been swinging the other way. And we see DSLs, but they're not quite as frequent. For those who maybe have not experienced a DSL or aren't quite familiar with the concept, how would you describe the idea? STEPHANIE: I think I would describe domain-specific languages as a bit of a mini-language that is created for a very particular problem space in mind to make development for that domain easier. Oftentimes, I've also kind of seen people describe the benefit of DSLs as being able to read that language as if it were plain English. And so, in my head, I have kind of, at least in the Ruby world, right? We see that a lot in different gems. RSpec, for example, has its own internal DSL, and many people really enjoy it because it took the domain of testing. And the way you write it kind of is how you might read or understand it in English. And so it's a bit easier to talk about what you're expecting in your tests. JOËL: Yeah, it's so high-level and minimal and domain-specific that it almost stops feeling like it's a programming language and can almost feel like it's a high-level configuration for this very particular domain, sometimes even to the point where the idea is that a non-programmer could read it and understand what's going on. STEPHANIE: I think RSpec is actually one of the first Ruby DSLs that you might encounter when you're learning Ruby for the first time. And I've definitely seen developers who are new to Ruby, you know, they're writing code, and they're like, okay, I'm ready to write a test now. And the project uses RSpec because that's what most of us use in our Rails applications. And then they see, like you said, almost a configuration language, and they are really confused. They're not really sure what they're reading. They struggle with the syntax a lot. And it ends up being a point of frustration when they're first starting out if they're not just copying and pasting other existing RSpec tests. I'm curious if you've seen that before. JOËL: I've definitely seen that. And it's a little bit ironic because oftentimes, an argument for DSL is that it makes things simpler that you don't even have to know Ruby; you can just write it. It's simpler. It's easier to write. It's easier to understand. And to a certain extent, maybe that's true. But for someone who does know Ruby and doesn't know your particular little domain language, now they're encountering something that they don't know. And they're having to learn it, and they're having to struggle with it. And it might behave a little bit weirdly compared to how Ruby normally works. And so sometimes it doesn't make it easier for adoption. But it does look really good in a README. STEPHANIE: That's totally fair. I think the other thing that's interesting about RSpec is that a lot of it is really just stylistic. I actually read a blog post by Jason Swett and the headline of it was "Mystified by RSpec's DSL? Some parentheses can add clarity." And he basically goes on to tell us that really RSpec is just leaning on some of Ruby's syntactic sugar of omitting parentheses for method calls. And if you just add the parentheses back in your it blocks or your describes, it can read a lot more like regular Ruby. And you might have a better time understanding what's going on when you realize that we're just passing our descriptors as arguments along with some blocks. JOËL: That's ironic given that oftentimes, the goal of these is to make it look like not Ruby. STEPHANIE: I agree; it is ironic. [laughs] MID-ROLL AD: Debugging errors can be a developer's worst nightmare...but it doesn't have to be. Airbrake is an award-winning error monitoring, performance, and deployment tracking tool created by developers for developers that can actually help cut your debugging time in half. So why do developers love Airbrake? It has all of the information that web developers need to monitor their application - including error management, performance insights, and deploy tracking! Airbrake's debugging tool catches all of your project errors, intelligently groups them, and points you to the issue in the code so you can quickly fix the bug before customers are impacted. In addition to stellar error monitoring, Airbrake's lightweight APM helps developers to track the performance and availability of their application through metrics like HTTP requests, response times, error occurrences, and user satisfaction. Finally, Airbrake Deploy Tracking helps developers track trends, fix bad deploys, and improve code quality. Since 2008, Airbrake has been a staple in the Ruby community and has grown to cover all major programming languages. Airbrake seamlessly integrates with your favorite apps to include modern features like single sign-on and SDK-based installation. From testing to production, Airbrake notifiers have your back. Your time is valuable, so why waste it combing through logs, waiting for user reports, or retrofitting other tools to monitor your application? You literally have nothing to lose. Head on over to airbrake.io/try/bikeshed to create your FREE developer account today! JOËL: I think another drawback that I've seen with DSLs is that they oftentimes are more limited in their capabilities. So if the designer of the gem didn't explicitly think of your use case, then oftentimes, it can be really hard to extend or to support edge cases that are not specifically designed for that language in the way that plain Ruby is often much more flexible. STEPHANIE: Yeah, that's really interesting because when a gem does have some kind of DSL, a lot of effort probably went into making that the main interface that you would work with or you would use. And when that isn't working for your use case, the design of the underlying objects may or may not be helpful for the changes that you want to make. JOËL: I think it's interesting that you mentioned the underlying objects because those are often sort of not meant for public consumption when you're building a gem that's DSL forward. I think, in many cases, my ideal gem would make those underlying objects the primary interface and then maybe offer DSL as a kind of nice-to-have layer on top for those situations that maybe aren't as complex where writing things in the domain language might actually be quite nice. But keeping those underlying objects as the interface, it's nice to use and well-documented for the majority of people. STEPHANIE: Yeah, I like that too because then you can get the best of both worlds. So speaking of trying to make a DSL work for you, have you ever experienced having to kind of work around the DSL to get the functionality you were hoping to achieve? JOËL: So I think we're talking about the idea of having both a DSL and the underlying objects. And RSpec is a great example of this with their custom matchers. RSpec itself is a DSL, but then they also offer a DSL to allow you to create custom matchers. And it's not super well documented. I always forget how to define them, and so I oftentimes don't bother. It's just kind of too much of a pain for something that doesn't always provide that much value. But if it were easy, I would probably do it more. Eventually, I realized that you could use just regular Ruby objects as custom matchers. And they just seemed to respond to certain methods, just regular old objects and polymorphism. And all of a sudden, now I'm back into all of the tools and mechanisms that I am familiar with, like the back of my hand. I can write objects all day. I can TDD them. I can apply any patterns that I want to if I'm doing something really complicated. I can extract helpers. All of that works really well with the knowledge that I already have without having to sink a lot of time into trying to learn the built-in DSL. So, for the most part, now, when I define custom matchers, I'll often jump directly to creating a regular object and making it conform to the matcher interface rather than relying on the DSL for that. So once we go back to the test, now we're back in DSL land. Now we're no longer talking in terms of objects so much. We'll have some nice methods and they will all kind of read like English. So to pull a recent example that I worked on, I might say something like expect this policy object method to conform to this truth table. STEPHANIE: That's a really interesting example. It actually kind of sounds like it hits the sweet spot of what you were describing earlier in the sense that it has a really nice DSL, but also, you can create your own objects, and that has an interface that you can implement. And yes, have your cake and eat it too. [laughs] But the idea that then you're kind of converting it back to the DSL because that is just what we know, and it has become so normalized. I was talking earlier about okay; when is a DSL worthwhile? When is the use case a good reason to implement it? And especially for gems that I think that are really popular that we as a Ruby community have collectively used most of the time on our projects because we have oftentimes a lot of the same problems that we're solving. It seems like this has become its own shared language, right? JOËL: Yeah, there are definitely some DSLs that we all end up learning because they're just so prominent in the Ruby community, even Rails itself ships with several built-in DSLs. STEPHANIE: Yeah, absolutely. FactoryBot is another one, too. It is a gem by thoughtbot. And actually, in preparation to talk about DSLs with you today, I scoured our blog and found a really great blog post, "Writing a Domain-Specific Language in Ruby" by Gabe Berke-Williams. And it is basically like, here's how to write something like FactoryBot and creating your own little mini Ruby DSL for something that would be very similar to what FactoryBot does for fixtures. JOËL: That's a great resource, and we'll make sure to link that in the show notes. We've been talking about some of the limitations of DSLs or some aspects of them maybe that we personally don't like. What are maybe examples of DSLs that you do enjoy working with? STEPHANIE: Yeah, I have an example for this one. I really enjoy using Capybara's DSL for acceptance testing. I did have to go down the route of writing some custom selectors for...I just had some HTML elements within kind of a complicated table and was trying to figure out how to write some selectors so that I could write the test as if it were in, you know, quote, unquote, "plain English" like, within this table, expect some value. And that was an interesting journey. But I think that it really helped me have a better understanding of accessibility of just the underlying building blocks of the page that I was working with. And, yeah, I really appreciate being able to read those tests from a user perspective and kind of know exactly what they're doing when they're interacting with this virtual browser without having to run it in headful mode and see it for myself. JOËL: It's always great when a DSL can give you that experience of abstracting enough to where it makes the code delightful to work with while also not having too high a cost to learn or being too restrictive in what it allows you to do. Would you make a difference between something that's a DSL versus maybe just code that's written at a higher level of abstraction? So maybe to get back to your example with Capybara, it's really nice to have these nice custom matchers and all of these things to work with HTML pages. If I'm writing, let's say, a helper method at the bottom of a test, I don't think that feels quite like it's a DSL yet. But it's definitely a higher level than specifying CSS selectors. So would you make a difference between those two things? STEPHANIE: That's a good question. I think it's one of those you know it when you see it kind of questions because it just depends on the amount of abstraction, like you mentioned, and maybe even metaprogramming. That takes something from the core language to morph into what you could qualify as a separate language. What do you think about this? JOËL: Yeah, part of me almost wonders if this exists kind of on a continuum, and the boundary might be a little bit fuzzy. I think there might be some other qualifications that come with it as well. Even though DSLs are typically higher-level helpers, it's usually more than just that. There are also sort of slightly different semantics in the way that you would tend to use them to the point where while they may be just Ruby methods, we don't use them like Ruby methods, and even to the point that we don't think of them as Ruby methods. To go back to that article you mentioned from Jason, where just reminding people, hey, if you put params on this, all of a sudden, it helps you remember, oh, it's just a Ruby method instead of being like, oh, this is a language keyword or something. STEPHANIE: Yeah, I wonder if there's also something to the idea of domain specificity where it should be self-service within the domain that you're working. And then it has limitations once you are trying to do something separate from the domain. JOËL: Right, it's an element of focus to this. And I think it's probably also a language is not just one helper; it's a collection typically. So it's probably a series of high-level helpers, potentially. They might not be methods, even though that is ultimately one of the primary interfaces we use to run code in Ruby. So it's a collection of methods that are high-level, but the collection itself is focused. And oftentimes, they're meant to be used in a way where it's not just a traditional method call. STEPHANIE: Right. There's some amount of you bringing to the table your own use case in how you use those methods. JOËL: Yeah, so it might be mimicking a language keyword. It might be mimicking the idea of a configuration. We see that a little bit with ActiveRecord and some of the, let's say, the association and validation APIs. Those kind of feel like, yes, they're embedded in a class, but they feel like either keywords or even just straight-up configuration where you set key-value pairs of things to configure how a particular class is going to work. STEPHANIE: Yeah, that's true for a lot of things in Rails, too, if we're talking about routes and initializers as well. JOËL: So I've complained about some things I don't like about DSLs. I really like the routing DSL in Rails. STEPHANIE: Why is that? JOËL: I think it's very compact and readable. And that's an element that's really nice about DSLs is that it can make things feel very readable and, oftentimes, we read code more often than we write it. And routes have...I was going to say fewer edge cases, but I have seen some really gnarly route files that are pretty awful to work with, especially if you're mostly writing RESTful controllers, and I would recommend that people do. It's really nice to just be able to skim through a route file and be like, oh, these are the resources in my app and the actions I can do on each resource. And here are the ones that are nested. STEPHANIE: Yeah, it almost sounds like a DSL can provide guardrails towards the recommended way of tackling that particular domain. The routes DSL really discourages you from doing anything too complicated because they are encouraging you to follow the Rails convention. And so I think that goes back to the specificity piece of if you've written a DSL, it's because you've thought very deeply about this particular domain and how common problems show up and how you would want people to be empowered by the language rather than inhibited by it. JOËL: I think, thinking more about that, the word that comes to mind is declarative. When you read code that's written with DSLs, typically, it's very declarative. It's more just describing a thing as opposed to either procedural, a series of commands to do, or even OO, where you're composing objects and sending messages to each other. And so problems that lend themselves to being implemented through more descriptive and declarative approaches probably are really good candidates for a DSL. STEPHANIE: Yeah, I like that a lot because when we talk about domains, we're not necessarily talking about a business domain, which is kind of the other way that some folks think about that word. We're talking about a problem space. And the idea of the language being declarative to describe the problem space makes a lot of sense to me because you want it to be flexible enough for different use cases but all within the idea of testing or browser navigation or whatever. JOËL: Yeah. I feel like there's a lot of... there are probably more problems that can be converted to declarative solutions than might initially kind of strike you. Sometimes the problem isn't quite as bounded. And so when you want customizations that are not supported by your DSL, then it kind of falls apart. So I think a classic situation that might feel like something declarative is authorization. Authorization are a series of rules for who can access what, and it would seem like this is a great case for a DSL. Wouldn't it be great to have just one file you can just kind of skim, and we can just see all of the access rules? Access rules that are basically asking to be done declaratively. And we have gems like that. The original CanCan gem and then the successor CanCanCan are trying to follow that approach. Have you used either of those gems? STEPHANIE: I did use the CanCanCan gem a while ago. JOËL: What was your experience with that style of authorization? STEPHANIE: It has been a while but I do remember having to check that original file of like all the different authorizations kind of repeatedly coming back to it to remember, okay, for this rule, what should be allowed to happen here? JOËL: So I think that's definitely one of the benefits is that you have all of your rules stored in one place, and you can kind of scan through the list. My experience, though, is that in practice, it often kind of balloons up and has all of these edge cases in it. And in some earlier versions, I don't know if that's still a problem today, it could even be difficult to accomplish certain things. If you're going to say that access to this particular object depends not on properties of that object itself but on some custom join or association or something like that, that could be really clunky to do or sometimes impossible depending on how esoteric it is or if there's some really complex custom logic to do. And once you're doing something like that, you don't really want to have that logic in your...in this case, it would be the abilities file but inside because that's not really something you express via the DSL anymore. Now you're dropping into OO or procedural world. STEPHANIE: Right. It seems a bit far removed from where we do actually care about the different abilities, especially for one-off cases. JOËL: That is interesting because I feel like there's a bit of a read-versus write-situation happening there as well. It's particularly nice to have, I think, everything in one abilities file for reading and for auditing. I've definitely been in code where there's like three or four ways to authorize, and they're all being used inconsistently, and that's not nice at all. On the other hand, it can be hard with DSL sometimes to customize or to go beyond the rules that are built in. In the case of authorization, you've effectively built a little mini-rules engine. And if you don't have a good way for people to add custom rules without just embedding procedural code into your abilities file, it's going to quickly get out of hand. STEPHANIE: Yeah, that makes sense. On the topic of authorization, you did mention an example earlier when you were writing a policy object. JOËL: I've generally found that that's been my go-to pattern for authorization. I enjoy the Pundit gem that provides some kind of light scaffolding around working with policy objects, but it's a general pattern, and you can absolutely write your own. You don't need a gem for that. Now we're definitely not in the DSL world. We're not doing this declaratively. We're leaning very heavily on OO and saying we're just going to create objects. They talk to each other. They can do anything that any Ruby object can do and as simple or as complex as they need to be. So you have the full power of Ruby and all the patterns that you're used to using. The downside is it is a little bit harder to read and to kind of just audit what's happening in terms of permission because there's no high-level overview anymore. Now you've just got to look through a bunch of classes. So maybe that's the trade-off, flexibility, extensibility versus more declarative style and easy overview. STEPHANIE: That makes a lot of sense because we were talking earlier about guardrails. And because those boundaries do exist, that might not give us the flexibility we want compared to just writing regular Ruby objects. But yeah, we do get the benefit of, like you said, auditing, and at least if we don't try to do some really gnarly, custom stuff, [laughs] something that's easier to read and comprehend. JOËL: And, again, maybe that's where in the best of both worlds situation, you say, hey, I'm creating some form of rules engine, whether it's for describing routes, or authorization, permissions, or users can build custom business rules for a product or something like that. And it's all object-based under the hood. And then, we provide a DSL to make it nice to work with these rules. If a programmer using our gem wants to write a custom rule that just really extends what the ones we shipped can do, allow them to do that via the object API. We have all the objects available to you that underlie the DSL. Add more rules yourself. And then maybe those can be plugged back into the DSL like we saw with the RSpec and custom matchers. Or maybe you have to say, okay, if I have a custom rule object, now I have to just stay in the object space. And I think both of those solutions are okay. But now you've sort of kept those two worlds separate and still allowed people to extend. STEPHANIE: I like that as contributing to the language because language is never static. It changes over time. And that's a way that people can continue to evolve a language that may have been originally written at a certain time and place. JOËL: Moving on from DSLs, we got some listener feedback recently from James, who was listening to our episode on discrete math. And James really appreciated the episode and wanted to share a resource with us. This is the book "Discrete Math and Functional Programming" by Thomas VanDrunen. It's an introduction to discrete math as a theoretical concept taught side by side with the very practical aspect of learning to use the language standard ML, and both of those factor into each other. So you're kind of learning a little bit of theory and some practice, at the same time, getting to implement some discrete math concepts in standard ML to get a feel for them. Yeah, I've not read this book, but I love the concept of pairing a theoretical piece and a practical piece. So I'll drop a link to it in the show notes as well. Thank you, James. STEPHANIE: Yeah, thanks, James. And I guess this is just a little reminder that if our listeners have any feedback or questions they want to write in about, you can reach us at hosts@bikeshed.fm. JOËL: On that note. Shall we wrap up? STEPHANIE: Let's wrap up. Show notes for this episode can be found at bikeshed.fm. JOËL: This show has been produced and edited by Mandy Moore. STEPHANIE: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or even a review in iTunes. It really helps other folks find the show. JOËL: If you have any feedback for this or any of our other episodes, you can reach us @_bikeshed, or you can reach me @joelquen on Twitter. STEPHANIE: Or reach both of us at hosts@bikeshed.fm via email. JOËL: Thanks so much for listening to The Bike Shed, and we'll see you next week. ALL: Byeeeeeee!!!!!!! ANNOUNCER: This podcast is brought to you by thoughtbot, your expert strategy, design, development, and product management partner. We bring digital products from idea to success and teach you how because we care. Learn more at thoughtbot.com.

Yarukinai.fm
178. みんな何やってるのかな with darquro

Yarukinai.fm

Play Episode Listen Later Apr 2, 2023 44:59


話したこと きっかけツイート 楽天ラクマ(旧フリル) エンジニアの職務経歴書 〜正しい魅力の伝え方〜 - Qiita [B! エンジニア] エンジニアの職務経歴書 〜正しい魅力の伝え方〜 - Qiita 転職ドラフト Introducing GitHub Copilot X タイミー RubyKaigi 2023 チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計 コンウェイの法則と逆コンウェイの法則から組織構造を考える ベイスターズを暗黒時代にしたフロントの失策と畜生エピソード[ゆっくり解説] Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 38歳男性。既婚。二児の父です。 須貝(sugaishun) 会社員 だーくろ 会社員

All Ruby Podcasts by Devchat.tv
Optimizing Ruby User Experience With Ivo Anjo - RUBY 574

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Dec 22, 2022 72:44


Ivo Anjo is a Software Engineer at Datadog. His main focus is the Ruby Language. He is currently working on building a Ruby profiler and was a speaker at RubyKaigi 2022. He returns to the show with Chuck and Valentino to discuss the gvl-tracing gem, a Ruby gem that he recently created. It is a Ruby gem for getting a timeline view of Global VM Lock usage in your Ruby app. Additionally, he describes how this may be applied to improve performance and speed up Ruby Apps.About this Episode Features of gvl-tracing Gem Applying Global VM Lock to Ruby Applications How Ruby Profiler works All about Heap Sampling and its benefits Sponsors AppSignal Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links tracing ruby's (global) vm lock GVL Instrumentation API  ivoanjo/gvl-tracing [EN]Hunting Production Memory Leaks with Heap Sampling / @KnuX and @KJTsanaktsidis - YouTube Analyze Ruby Code Performance With Datadog Continuous Profiler | Datadog All About Queueing In Rails Applications / Nate Berkopec - YouTube Hunting Production Memory Leaks with Heap Sampling - RubyKaigi 2022 GitHub - zendesk/ruby_memprofiler_pprof: Experimental memory profiler for Ruby that emits pprof files. GitHub - bloomberg/memray: Memray is a memory profiler for Python subscribe to my newsletter! Ivo Anjo.me Twitter: @KnuX Picks Charles - Tenpenny Parks | Board Game - BoardGameGeek Charles - Keeper of the Lost Cities Ivo - Linus Torvalds' interview snippet where he mentions that “the Ruby people, strange people”, helped a lot in popularizing git Ivo - Real World Applications with the Ruby Fiber Scheduler - RubyKaigi 2022 Ivo - TRICK 2022 (Returns) - RubyKaigi 2022 Ivo - Megaruby - Running mruby/c programs on Sega Mega Drive - RubyKaigi 2022 Ivo - The Culture Map by Erin Meyer Valentino - First Ruby Friend  Valentino - Galactic Unicorn (Pico W Aboard) - Pimoroni

All Ruby Podcasts by Devchat.tv
Kaigi on Rails with Masafumi Okura - RUBY 569

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Nov 16, 2022 50:11


Masafumi Okura is a freelance software developer focusing on Ruby on Rails. He joined RubyKaigi 2022 as a helper staff and the chief organizer at Kaigi on Rails 2022 which took place last October. He joins the Rogues to share his experiences and some pointers on arranging a successful Conference amidst the pandemic. Topics discussed How Technology took part in creating a virtual event Recruiting and Inviting speakers for the conference Approaches used to make the process smooth and hassle-free for the speakers joining the event Obstacles experienced in organizing the event and how to overcome each one.  Sponsors Chuck's Resume Template Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links mrubykaigi 2022 SpatialChat Fukuoka.rb ruby-jp.slack.com okuramasafumi/gem_to_mgem GitHub - okuramasafumi/reversible GitHub - okuramasafumi/rspec-current.vim GitHub: okuramasafumi Picks Charles  - Irish Gauge  Charles - Ruby Remote Conference Charles - I Don't Want to Kill You  John - GitHub - rootstrap/yaaf John - Leather Coasters Masafumi -  Fukuoka mruby Kaigi 2022 EN Masafumi - GitHub - okuramasafumi/rspec-current.vim Valentino -  LunarVim

Ruby Rogues
Kaigi on Rails with Masafumi Okura - RUBY 569

Ruby Rogues

Play Episode Listen Later Nov 16, 2022 50:11


Masafumi Okura is a freelance software developer focusing on Ruby on Rails. He joined RubyKaigi 2022 as a helper staff and the chief organizer at Kaigi on Rails 2022 which took place last October. He joins the Rogues to share his experiences and some pointers on arranging a successful Conference amidst the pandemic. Topics discussed How Technology took part in creating a virtual event Recruiting and Inviting speakers for the conference Approaches used to make the process smooth and hassle-free for the speakers joining the event Obstacles experienced in organizing the event and how to overcome each one.  Sponsors Chuck's Resume Template Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links mrubykaigi 2022 SpatialChat Fukuoka.rb ruby-jp.slack.com okuramasafumi/gem_to_mgem GitHub - okuramasafumi/reversible GitHub - okuramasafumi/rspec-current.vim GitHub: okuramasafumi Picks Charles  - Irish Gauge  Charles - Ruby Remote Conference Charles - I Don't Want to Kill You  John - GitHub - rootstrap/yaaf John - Leather Coasters Masafumi -  Fukuoka mruby Kaigi 2022 EN Masafumi - GitHub - okuramasafumi/rspec-current.vim Valentino -  LunarVim

Ruby on Rails Podcast
Episode 440: World Traveler and Ruby 3.2 Preview (Brittany + Jemma)

Ruby on Rails Podcast

Play Episode Listen Later Oct 19, 2022 25:10


Object Shapes is merged and headed to Ruby 3.2! Fresh off of her world tour, Jemma catches up with Brittany about RubyKaigi, Euroku and Rails SaaS. After talking about Rubyconf Mini plans, the pair discuss the new Data.define feature coming to Ruby 3.2 as well. Show Notes & Links: Rubyconf Mini Tickets (https://www.eventbrite.com/e/rubyconf-mini-providence-rhode-island-registration-414698754137) Implement Object Shapes #6386 by jemmaissroff (https://github.com/ruby/ruby/pull/6386) Add Data class implementation: Simple immutable value object #6353 by zverok (https://github.com/ruby/ruby/pull/6353) New in Ruby 3.2 - Data.define (https://dev.to/baweaver/new-in-ruby-32-datadefine-2819) Sponsored By: Honeybadger (https://www.honeybadger.io/) Status Pages now come with incident management! Build confidence with a public status page that shows your live service status, incident history, and more—and bring your own domain! Transparency inspires trust—when your next outage happens, communication is key. Go to Honeybadger.io (https://www.honeybadger.io/) to learn more. Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails).

Ruby on Rails Podcast
Episode 437: It's Not Only Sauerkraut and Pickles (Brittany + Nick)

Ruby on Rails Podcast

Play Episode Listen Later Sep 28, 2022 30:52


After diving into CrossFit and their favorite comfort foods, Nick and Brittany talk all things conferences: RubyKaigi 2022, Rails SaaS and Rubyconf 2022. Nick ends the episode by sharing some cool Rails upgrade tooling he is working on. Show Notes & Links: CrossFit (https://www.crossfit.com/) RubyKaigi 2022 (https://rubykaigi.org/2022/) Rails SaaS Conference (https://railssaas.com/) Rubyconf 2022 (https://rubyconf.org/) Rubyconf Mini 2022 (https://www.rubyconfmini.com/) Sponsored By: Honeybadger (https://www.honeybadger.io/) Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeybadger.io (https://www.honeybadger.io/) and discover how Starr, Josh, and Ben created a 100% bootstrapped monitoring solution. AppSignal (https://www.appsignal.com/rorpodcast) Monitor your apps from A to Z: error tracking, performance insights, server metrics, uptime pages, custom dashboards, and more. AppSignal works for all popular Ruby frameworks and automatically instruments and creates beautiful dashboards for Sidekiq, Active Job, and other integrations. As a listener of The Ruby on Rails Podcast, you get a 10% discount and a box of sweet treats. Start your 30-day free trial at https://www.appsignal.com/rorpodcast (https://www.appsignal.com/rorpodcast).

Yarukinai.fm
153. スプラトゥーンで忙しい

Yarukinai.fm

Play Episode Listen Later Sep 18, 2022 44:27


話したこと ガチャポン ガシャポンのデパート池袋総本店 ガチャガチャの森 夏の王様、3Dスキャンで立体化したガシャポン「かぶとむし」が登場! アルティメットルミナスプレミアム 仮面ライダーセイバー カードダスドットコム 公式サイト ポケモンカードゲーム公式ホームページ「トレーナーズウェブサイト」 ハッピーセットのおもちゃ 池袋 乙女ロード 秋葉原 ガチオタに聞く! ガイドブックには載らない秋葉原の歩き方 サトームセンcm集 オノデン CM オノデン坊や 1995 オノデン坊や-秋葉原大好き- スプラトゥーン3 【スプラ3】ナワバトラーの場所と報酬一覧 ハイドラント 【スプラ3】フェスの投票率とお題 Nintendo Switch向けソフト『スプラトゥーン3』の国内販売本数が発売後3日間で345万本を突破 RubyKaigi 2022 Ruby 3.1正式リリース。Shopify開発のJITコンパイラ「YJIT」をメインラインにマージ 「RubyKaigi 2023: May 11-13, 2023; See you in Matsumoto! #rubykaigi」 Maker Faire Tokyo 2022 えきねっと(JR東日本) 「スマートEX」気軽にネット予約で新幹線を利用するなら! Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 37歳男性。既婚。二児の父です。 須貝(sugaishun) 会社員

Yarukinai.fm
152. スピリチュアルマーク

Yarukinai.fm

Play Episode Listen Later Sep 11, 2022 36:43


話したこと 料理の基本! キウイの切り方のレシピ動画・作り方 RubyKaigi 2022 出張 出張の日当手当は課税対象になる? 開業医の車の選び方 馬産地牧場マップ 一口馬主 サザエさんオープニング都道府県解説「サザエ観光案内所」 Apple発表 Appleイベント発表まとめ 新型iPhone・AirPods Proなど新ハード続々 「iPhone 14」シリーズ、引き続きLightning端子を採用。USB-C化ならず Apple Watchをお風呂やシャワーで使っても大丈夫?防水性能は? 【10/6発表予定】Pixel Watch登場で、Wear OSでもGoogle Pay FeliCa(おサイフケータイ)対応する未来は来るか? タロットカード 『クアリー ~悪夢のサマーキャンプ』情報まとめ。ストーリーや登場人物、進化したゲームシステムなどを紹介 Gammi タロットカード 占い ウェイト版 78枚【ライダータロット スタンダード 日本語解説書60ページ タロットポーチ付き】正規品 タロット - Wikipedia Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 37歳男性。既婚。二児の父です。 駿河(snowlong) 在宅社長

Ruby on Rails Podcast
Episode 434: All Things RubyConf Mini (Brittany + Jemma)

Ruby on Rails Podcast

Play Episode Listen Later Sep 7, 2022 28:51


Jemma, one of the co-organizers of RubyConf Mini, chats with Brittany on why she decided to organize RubyConf Mini (November 15 - November 17, 2022 in Providence, Rhode Island). The two co-hosts discuss CFPs, organizing challenges and more importantly, who should consider attending RubyConf Mini. They also celebrate Jemma getting her Japanese visa for RubyKaigi 2022. Show Notes & Links: RubyConf Mini (https://www.rubyconfmini.com/) RubyKaigi 2022 (https://rubykaigi.org/2022/) Sponsored By: Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails). Atlantis Technology (https://www.atlantistech.com/careers) Atlantis is looking for great engineers! Why work at Atlantis? You'll work with great people. You'll work on projects that change the world. No matter where you are in your career, they're prepared to help you advance it. Find out more here (https://www.atlantistech.com/careers).

Yarukinai.fm
150. ネットと息子が安定しない

Yarukinai.fm

Play Episode Listen Later Aug 28, 2022 39:54


話したこと EVO 2022 「EVO 2022」結果。アメリカ・ラスベガス、世界最大級の格闘ゲーム大会 ロボコップvsターミネーターが格ゲーで実現!『Mortal Kombat 11』へのロボコップ参戦にあわせて対戦する動画が公開 「EVO2022」の「SFV」部門、“日本を背負った”カワノ選手が見事優勝! - GAME Watch [EVO2022]「EVO Japan 2023」が発表に。2023年3月31日から4月2日にかけて東京ビッグサイトで開催 わかりにくいeスポーツ大会のトーナメント&リーグ方式【岡安学のeスポーツってなんだろう? 第3回】 UMISHO SIEが“Evo”の共同買収を発表。UFCなどを傘下に持つEndeavorグループと共同で世界的格闘ゲームトーナメントを傘下に Hit Box - The All Button Controller and Fightstick 『ストV』理論値最強? 物議を醸した”HitBox”、格ゲー大会のレギュレーションはどう順応していくべきか?【シブゲーアーカイブ】 【最速入力方法】レバーレスコントローラー(HitBox)の全てが詰まっている動画【スト5・カワノ】 これだけは理解して欲しいフレームの話 ウメハラジオ 第105回 - HitBoxのところ Capcom Pro Tour 2022 TOKYO GAME SHOW 2022 - 東京ゲームショウ2022 アークシステムワークス公式ホームページ スプラトゥーン3 スプラトゥーン3 Direct 2022.8.10 RubyKaigi 2022 SUMMER SONIC 2022 公式サイト 【フォートナイト】ドラゴンボールコラボまとめ!無料で神龍がもらえる!【FORTNITE】 カービィのグルメフェス 復活宣言を行ったサンソフトが最大16人マルチプレイ対応の『いっき 団結』など3タイトルを発表! Yarukinai.fmをサポートする 話してる人 マーク(tetuo41) 36歳男性。既婚。二児の父です。 須貝(sugaishun) 会社員

Ruby on Rails Podcast
Episode 430: Dearly Departed (Brittany + Jemma)

Ruby on Rails Podcast

Play Episode Listen Later Aug 10, 2022 27:09


After congratulating Jemma on her talk acceptance to RubyKaigi, the duo discuss how to handle when a co-worker is departing. From handling communication to acknowledging the importance of the departing, it's a topic that should resonate with many developers. They wrap up exclaiming over first #rubyfriend. Show Notes & Links: RubyKaigi 2022 (https://rubykaigi.org/2022/) Hire Me: I'm Excellent at Quitting by Brittany Martin - YouTube (https://www.youtube.com/watch?v=Jr0yGI7sKgI) first #rubyfriend (https://firstrubyfriend.org/) Sponsored By: Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails). Atlantis Technology (https://www.atlantistech.com/careers) Atlantis is looking for great engineers! Why work at Atlantis? You'll work with great people. You'll work on projects that change the world. No matter where you are in your career, they're prepared to help you advance it. Find out more here (https://www.atlantistech.com/careers).

nextstep.fm
#58 Rubykaigi Keynote Speakerが語るWebAssemblyのひみつ

nextstep.fm

Play Episode Listen Later Aug 5, 2022 121:50


Starring:k_katsumi, sonson_twit, d_date, kateinoigakukun, 1024jp AIを使ったプログラミング,絵画,それにまつわる著作権,WebAssemblyの技術について話しました. 1. AI,謎の挙動 https://twitter.com/niw/status/1543114893108203521?s=21&t=Z1KLQcqI_J1Q4asCEGYv6w 2. Transformer https://ja.wikipedia.org/wiki/Transformer_(%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%A2%E3%83%87%E3%83%AB) 3. 田中圭一と著作権 https://wirelesswire.jp/2016/12/58090/ 4. オリンピックロゴ問題 https://www.itmedia.co.jp/news/articles/1509/01/news146.html 5. Rubykaigi https://rubykaigi.org/2022/ 6. Keynote Speaker - Katei こと Yuta Saito 7. https://rubykaigi.org/2022/presentations/kateinoigakukun.html#sep08 8. WebAssembly https://mixil.mixi.co.jp/people/12242 9. カテイくんが明かすWebAssemblyのひみつ 10. Figmaの使い方 https://www.figma.com/ja/blog/webassembly-cut-figmas-load-time-by-3x/ 11. SwiftFiddle https://github.com/SwiftFiddle/swiftregex/pull/16 12. WebAssemblyにGC必要? https://zenn.dev/mizchi/articles/wasm-gc-proposal 13. 懐かしのiOS SDK Hacks https://www.oreilly.co.jp/books/9784873114729/ 14. 本を書く価値 15. みんな!Rubykaigiに行こう!

Ruby on Rails Podcast
Episode 423: Featuring Some of the Nicest People in Rubydom (Brittany + Nick)

Ruby on Rails Podcast

Play Episode Listen Later Jun 22, 2022 32:01


Brittany and Nick took a foray into handheld console gaming before celebrating Nick's new role at Shopify on the Ruby/Rails Infra team. They chatted about their favorite parts of Railsconf including Nick's Ruby Archaeology talk and Shopify's Railsconf Afterparty Twitter Space. Also, Past Rubies is back! Show Notes & Links: Unofficial RailsConf Afterparty today on Twitter Spaces | Shopify (https://twitter.com/ShopifyEng/status/1529182404060950528) Euruko 2022 CFP (https://2022.euruko.org/cfp/) RubyKaigi 2022 CFP (https://cfp.rubykaigi.org/events/2022) Ruby Weekly Issue 606 | Panel Feature (https://rubyweekly.com/issues/606) Past Rubies Subscription Signup (http://pastrubies.live/) Sponsored By: Honeybadger (https://www.honeybadger.io/) Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeybadger.io (https://www.honeybadger.io/) and discover how Starr, Josh, and Ben created a 100% bootstrapped monitoring solution. Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails).

Remote Ruby
Jason Joins Team HAML?

Remote Ruby

Play Episode Listen Later Jun 18, 2021 41:12


[00:00:58] We start off by Andrew telling us he's working in a weird area of the internet doing stuff with Adobe and the guys catch up on what's going on in their lives. [00:07:59] It's not a joke! Jason wants to talk about Haml, and how interested and excited he is to see they're working on it again (you can certainly hear the cheering from Andrew). ☺ Andrew talks about Haml released their “roadmap” for what they want to do and how they're trying to get some funds on Google sponsors. [00:09:55] Chris mentions lvh.me went down this week and a bunch of people were tweeting about it. [00:15:39] Andrew has a networking question and wants to know if he took a local domain on his computer but have that accessible to his WIFI for example, he wonders if you could get access to this but nowhere else.  [00:22:42] Speaking of JavaScript, Chris mentions there's some new enhancements to the Request.JS stuff that they talked about last week. [00:24:18] Andrew wonders if Turbo is more of a risk to use since the people that were building and maintaining Turbo have now moved on from basecamp. [00:33:51] We hear the CFP's are open for RubyConf 2021 and RubyKaigi 2021 and you have to hear Andrew's neurotic question he asks Jason. ☺[00:36:24] Jason and Chris chat about the visit they had with each other a few weeks ago and the events that took place, as well as some pretty funny stories shared that grossed Andrew out. Panelists:Jason CharnesChris OliverAndrew MasonSponsor:HoneybadgerLinks:Haml Become a sponsor to Haml-GitHibTweets about lvh.me-Levi CookSet window.Turbo on import #280-GitHubAutomatically inserts Turbo Stream responses #6-GitHubRubyKaigi Takeout 2021RubyConf 2021

All Ruby Podcasts by Devchat.tv
RUBY 490: Ruby 2.7 to 3.0

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Mar 23, 2021 67:36


Dave, John, and Luke get together to finish the discussion leading up to the Ruby 3.0 release. They talk about the different features and concerns that come with upgrading and/or using Ruby 3.0 and how it differs from Ruby 2.7. Panel Dave Kimura John Epperson Luke Stutters Sponsors Dev Heroes Accelerator Links Ruby | dockerhub Ruby on Whales: Dockerizing Ruby and Rails development | Evil Martians Background Job Processing Using Ractor (Ruby 3) by André Guimarães Sakata Parallelism in Ruby with Ractors by Lorenzo Barasti How Fast are Ractors? by Noah Gibbs Samuel Williams' Scalable Concurrency for Ruby 3 talk for RubyKaigi 2020 An Array of Possibilities: A Guide to Ruby Pattern Matching Picks Dave- Hotwire Dave- Angle Grinder John- GitHub | minimul/qbo_api John- GitHub | ruckus/quickbooks-ruby Luke- Creel: Godbolt Compiler Explorer Adventures Luke-  Creel: Branchless Programming Luke- Intel - From Inventors of the CPU to Laughing Stock [Part 2] Luke- Starving Threads In Ruby by Piotr Jatkowski

Devchat.tv Master Feed
RUBY 490: Ruby 2.7 to 3.0

Devchat.tv Master Feed

Play Episode Listen Later Mar 23, 2021 67:36


Dave, John, and Luke get together to finish the discussion leading up to the Ruby 3.0 release. They talk about the different features and concerns that come with upgrading and/or using Ruby 3.0 and how it differs from Ruby 2.7. Panel Dave Kimura John Epperson Luke Stutters Sponsors Dev Heroes Accelerator Links Ruby | dockerhub Ruby on Whales: Dockerizing Ruby and Rails development | Evil Martians Background Job Processing Using Ractor (Ruby 3) by André Guimarães Sakata Parallelism in Ruby with Ractors by Lorenzo Barasti How Fast are Ractors? by Noah Gibbs Samuel Williams' Scalable Concurrency for Ruby 3 talk for RubyKaigi 2020 An Array of Possibilities: A Guide to Ruby Pattern Matching Picks Dave- Hotwire Dave- Angle Grinder John- GitHub | minimul/qbo_api John- GitHub | ruckus/quickbooks-ruby Luke- Creel: Godbolt Compiler Explorer Adventures Luke-  Creel: Branchless Programming Luke- Intel - From Inventors of the CPU to Laughing Stock [Part 2] Luke- Starving Threads In Ruby by Piotr Jatkowski

Ruby Rogues
RUBY 490: Ruby 2.7 to 3.0

Ruby Rogues

Play Episode Listen Later Mar 23, 2021 67:36


Dave, John, and Luke get together to finish the discussion leading up to the Ruby 3.0 release. They talk about the different features and concerns that come with upgrading and/or using Ruby 3.0 and how it differs from Ruby 2.7. Panel Dave Kimura John Epperson Luke Stutters Sponsors Dev Heroes Accelerator Links Ruby | dockerhub Ruby on Whales: Dockerizing Ruby and Rails development | Evil Martians Background Job Processing Using Ractor (Ruby 3) by André Guimarães Sakata Parallelism in Ruby with Ractors by Lorenzo Barasti How Fast are Ractors? by Noah Gibbs Samuel Williams' Scalable Concurrency for Ruby 3 talk for RubyKaigi 2020 An Array of Possibilities: A Guide to Ruby Pattern Matching Picks Dave- Hotwire Dave- Angle Grinder John- GitHub | minimul/qbo_api John- GitHub | ruckus/quickbooks-ruby Luke- Creel: Godbolt Compiler Explorer Adventures Luke-  Creel: Branchless Programming Luke- Intel - From Inventors of the CPU to Laughing Stock [Part 2] Luke- Starving Threads In Ruby by Piotr Jatkowski

RWpod - подкаст про мир Ruby и Web технологии
35 выпуск 08 сезона. NativeScript 7.0, Underscore.js 1.11.0, Ruby Rightward assignments, RubyKaigi Takeout 2020 и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later Sep 6, 2020 46:11


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Ruby adds experimental support for Rightward assignments Rails 6 adds support to persist timezones of Active Job System of a test II: Robust Rails browser testing with SitePrism Mastering Low Level Caching in Rails What Is Canary Deployment? RubyKaigi Takeout 2020 - Ractor presentation by Koichi Sasada GitHub Actions (video) Web NativeScript 7.0 Released Underscore.js 1.11.0 11 Micro Frontends Frameworks You Should Know Designing a JavaScript Plugin System Browsers may throttle requestAnimationFrame CindyJS - a framework to create interactive (mathematical) content for the web Volt - free Bootstrap 5 dashboard Print.js - a tiny javascript library to help printing from the web

RWpod - подкаст про мир Ruby и Web технологии
09 выпуск 08 сезона. Rollup 2.0, Isomorphic-git 1.0, RubyKaigi 2020 and COVID-19, Chaskiq, Stryker, Vue Formulate и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later Mar 8, 2020 38:18


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Ruby 2.7 introduces numbered parameters as default block parameters Rails adds jitter to ActiveJob::Exceptions.retry_on RubyKaigi 2020 announcements on the Novel Coronavirus COVID-19 outbreak Hanami::API on Amazon AWS Lambda Writing a Ruby Gem Specification Optimizing full-text search with Postgres materialized view in Rails Converting Unix epoch timestamps to Ruby objects Chaskiq - a 100% open source conversational marketing platform build as an alternative for Intercom, Drift, and others FakeRedis - a fake implementation of redis-rb for machines without Redis or test environments Syntax Highlighting with Action Text Web Rollup 2.0 Released Isomorphic-git version 1.0 An Interactive Introduction to D3 The Node.js best practices list 7 Types of Native Errors in JavaScript You Should Know The JavaScript Beginner’s Handbook (2020 Edition) Awesome Demos Roundup #14 Inspirational Websites Roundup #13 Stryker - test your tests with mutation testing Vue Formulate - the easiest way to build forms with Vue Ls-lint - an extremely fast file and directory name linter

Rebuild
260: Doing It Myself Is Faster (kansai_takako)

Rebuild

Play Episode Listen Later Mar 2, 2020 88:51


閑歳孝子さんをゲストに迎えて、新型コロナウイルス、リモートワーク、定年、AI、映像研には手を出すな!、将棋などについて話しました。 Show Notes What Mike Pence’s past says about his ability to lead on coronavirus 新型コロナウィルス感染症 (COVID-19) に関する RubyKaigi 2020 の対応について Asana Files Paperwork To Go Public Through Direct Listing How Chinese tech giants are assisting in the battle against coronavirus with AI GDC postponed to later this year over coronavirus concerns Reflecting on the last nine years, and Fastly’s new CEO 個人型確定拠出年金iDeCo NISA(ニーサ):少額投資非課税制度 Personal Capital Lunch Money Visa is acquiring Plaid for $5.3 billion yyx990803/build-your-own-mint 神前 暁 "適当に打ち込んでみたけど、完全なベタ打ちでもそれなりに聞けるの凄いと思う #AIきりたん" ボカロ界の革命――無償のAI歌声合成ソフトが一般公開 “手塚治虫らしさ”をAIが学習、新作漫画「ぱいどん」誕生 「モーニング」に掲載 映像研には手を出すな! 劇場版『SHIROBAKO』 日本語ペラペラの外国人から見た日本語のいいところ アゲアゲ将棋実況 第5期叡王戦 本戦 二回戦 豊島将之名人 vs 千田翔太七段 Parasite (2019) オルタード・カーボン Watch Netflix’s first full Ghost in the Shell trailer - The Verge FORMULA 1 栄光のグランプリ FYRE Backjoy バランス シナジー

44BITS 팟캐스트 - 클라우드, 개발, 가젯
스탠다드아웃_068.log: 루비 2.7 릴리스, IRB 개선, 루비의 미래, RubyMine 등 w/ 펭귄

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Jan 30, 2020 72:41


스탠다드아웃 68번째 로그에서는 펭귄 님을 모시고 루비 2.7 릴리스, IRB 개선, 루비의 미래, RubyMine 등에 대해 이야기를 나눴습니다. 게스트: @say8425(펭귄 님) 참가자: @nacyo_t, @raccoonyy, @seapy 정기 후원 - stdout.fm are creating 프로그래머들의 팟캐스트 | Patreon 주제별 바로 듣기 00:00:00 68번째 에피소드 시작 00:01:35 단신: RDS 인증서 업데이트, EKS 요금 인하 등 00:13:08 게스트 펭귄 님 소개, 루비 카이기 00:26:02 IRB 개선 00:41:35 루비 2.7 그 외 변경 사항들 00:54:33 루비의 미래: 루비 3.0 01:02:28 루비 IDE RubyMine 단신 스탠다드아웃_067.log: RDS 인증서 업데이트, 파이썬 2.7 지원 종료, 스톡옵션 등 | 개발자 팟캐스트 stdout.fm 아마존 EKS(Amazon EKS) 50% 요금 인하 발표 - 시간당 0.10 USD | 44BITS 기술 블로그 G Suite Updates Blog: Manage Windows 10 devices through the G Suite Admin console Facebook: The Inside Story: Steven Levy: 9780735213159: Amazon.com: Books INSIGHTBOOK on Twitter: “Hackers의 지은이 스티븐 레비(Steven Levy)가 페이스북을 다룬 책 집필… 루비 카이기 RubyKaigi 2020 RubyKaigi 2020 - RubyKaigi | Doorkeeper RubyConf 2019 AWS re:Invent 마쓰모토시 - 위키백과, 우리 모두의 백과사전 북알프스 등산 | 마츠모토에 가보자 루비 2.7 릴리스 stdout_001.log: 루비 25주년, Github 장애 | 개발자 팟캐스트 stdout.fm 루비 2.7.0 릴리스 (일본어) 루비 2.7 여기에 주목! 패턴 매치, 컴팩션GC 등 릴리스 매니저에게 들어보았습니다 - 엔지니어허브 Announcing Office Scripts (Preview) - Microsoft Tech Community - 1093559 IRB 개선 The GNU Readline Library 루비(Ruby) 콘솔(IRB, PRY)에서 한글 입력하기 | 오늘부터 seapy는 Read–eval–print loop - Wikipedia pry/pry: A runtime developer console and IRB alternative with powerful introspection capabilities. Jupyter and the future of IPython — IPython ruby/reline: The compatible library with the API of Ruby’s stdlib ‘readline’ What’s new in Interactive Ruby Shell (IRB) with Ruby 2.7 – Saeloun Blog pasting in multiline irb is slow · Issue #43 · ruby/irb (일본어) RubyPrize 2019|최종 선정작 발표 How to update an anomaly detection monitor to account for local time zone 그 외 루비 2.7 관련 변경 사항 이야기 프로그래밍 언어 루비(Ruby) 2.7 릴리스 및 주요 변경 사항: 패턴 매칭 문법, REPL 개선, 위치 인자와 키워드 인자 분리, 번호 파라미터 등 | 44BITS 기술 블로그 Separation of positional and keyword arguments in Ruby 3.0 Feature #16123: Allow calling a private method with self. - Ruby master - Ruby Issue Tracking System Feature #4475: default variable name for parameter - Ruby master - Ruby Issue Tracking System Feature #14240: warn four special variables: $; $, $/ $ - Ruby master - Ruby Issue Tracking System Feature #14912: Introduce pattern matching syntax - Ruby master - Ruby Issue Tracking System Patterns — The Swift Programming Language (Swift 5.1) AWS 람다(AWS Lambda) 커스텀 런타임 만들기(feat. 루비 2.6.0) | 44BITS 기술 블로그 Feature #14799: Startless range - Ruby master - Ruby Issue Tracking System Ruby의 미래: 2020년 3.0 릴리스 예정 RubyConf 2019 - Opening Keynote - Ruby Progress Report by Yukihiro Matzumoto (Matz) - YouTube LaTeX - Wikipedia React v15.0 – React Blog A Type-level Ruby Interpreter for Testing and Understanding - RubyKaigi 2019 Sorbet · A static type checker for Ruby RubyMine after_commit (ActiveRecord::Transactions::ClassMethods) - APIdock RubyMine: JetBrains가 만든 Ruby on Rails IDE JetBrains: 전문가와 팀을 위한 개발자 툴 Chetan Puttagunta on Twitter: “JetBrains, a Prague based developer tools company…. JetBrains - Wikipedia TextMate: Text editor for macOS Ruby on Rails Screencasts - RailsCasts For Students: Free Professional Developer Tools by JetBrains

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_064.log: 원격 녹음, 우아한형제들 인수, 루비 2.7 릴리스, JapanTaxi 등

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Jan 2, 2020 66:08


stdout.fm 64번째 로그에서는 원격 녹음, 우아한형제들 인수, 루비 2.7 릴리스, JapanTaxi 등에 대해 이야기를 나눴습니다. 참가자: @nacyo_t, @raccoonyy, @seapy 발리에서 원격 녹음 발리섬 - 위키백과, 우리 모두의 백과사전 MixPre-3 II - Sound Devices Rogue Amoeba | Audio Hijack: Record Any Audio on MacOS Ubud - Google Maps Gojek Super App: Ojek Online, Taksi Online, Pesan Makan, Kirim Barang, Pembayaran GoFood: Aplikasi Pesan Antar Makanan Online 24 Jam | Gojek Internet in Indonesia - Wikipedia 우아한 형제들, 딜리버리 히어로에 인수 공정위, 요기요·배민 기업결합 신고서 접수 - ZDNet korea 공정위 ‘SKT-CJ헬로비전 합병 불허’ 최종 결론 | 연합뉴스 3년 전엔 No라더니…공정위 통신방송 허가 왜 | 한경닷컴 인사이드 빌 게이츠 | Netflix 공식 사이트 MS 분할 판결 내용과 향후 일정 - 매일경제 알라딘: 배드 블러드 David Boies - Wikipedia 카카오톡 주문하기 쿠팡이츠 배민도 코스닥 대신 해외로…국내 IPO 꺼리는 유니콘 기업 - 중앙일보 우버 공동창업자 캘러닉, 매매제한 풀리자 5억불 상당 지분 매각 | 연합뉴스 44bits 소식 44bits 프로젝트 2019년 결산: 블로그, 팟캐스트, 유튜브 인기 컨텐츠 등 | 44bits.io stdout_013.log: 도커를 굳이 왜 사용해야하나요? | 개발자 팟캐스트 stdout.fm stdout_037.log: 캡처보드, Cloudflare 장애, 44bits 테라폼 무크지 | 개발자 팟캐스트 stdout.fm AWS 솔루션 아키텍트 어소시에이트 자격증 취득 후기 - AWS 공인 자격증 준비와 합격자 혜택 | 44bits.io 깃헙(GitHub) 새로운 가격 정책 및 엔터프라이즈 플랜 발표 - 무료 플랜도 비공개 저장소를 무제한 사용 가능 | 44bits.io 마이크로소프트 빌드 2019, 윈도우 터미널 발표 - 파워셸, 커맨드 프롬프트 WSL 지원 | 44bits.io (일본어) 1년간 Publickey에서 가장 많이 읽힌 기사, 2019년 통합 랭킹 발표 - Publickey 루비 2.7 / Advent Calendar / JapanTaxi 등 Ruby 2.7.0 Released rubylang/ruby - Docker Hub RubyKaigi 2020 (일본어) Advent Calendar 2019 Ranking - Qiita (일본어) JapanTaxi주식회사 (일본어) JapanTaxi - Wikipedia (일본어) Recruit | JapanTaxi주식회사 (일본어) 경로탐색에서 자주 발생했던 커넥션 에러와의 만남과 이별 | JapanTaxi블로그 (일본어) JapanTaxi Advent Calendar 2019 - Qiita 카카오택시, 일본에서도 쓴다 | Bloter.net esa - A document sharing service for motivated teams

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stderr_052.log: Apple 고객 서비스 경험

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Oct 4, 2019 57:47


stdout.fm 52번째 에러 로그에서는 Apple 고객 서비스 경험 등에 대해서 이야기를 나눴습니다. 참가자: @nacyo_t, @raccoonyy, [@seapy][seapy] 게스트: @ecleya 쇼노트 Cam Link 4K | elgato.com ゆん@韓国 on Twitter: “삼성 서비스 센터에서 나와서 18년 8k TV (85Q900R)의 … - Twitter 공식 Apple 지원 RubyKaigi 2018 가로수길 - Apple Store - Apple (KR) (일본어) 애플 스토어 센다이 점 1월 25일에 폐점 - Engadget iPhone X 모델 식별하기 - Apple 지원

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_044.log: Form S-1, 컨테이너 런타임 rkt 아카이브, 슈프리마 개인정보 유출, 레일스5 업그레이드

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Aug 27, 2019 43:30


stdout.fm 44번째 로그에서는 Form S-1, 컨테이너 런타임 rkt 아카이브, 슈프리마 개인정보 유출, 레일스5 업그레이드 등에 대해서 이야기를 나눴습니다. 참가자: @seapy, @nacyo_t 주제별 바로듣기 준비중 주제별 바로듣기 기능 추가 stdout_043.log: 갤럭시 노트 10, 테슬라 모델 3, Go 언어 입문, 테라폼 삽질 공유회 | 개발자 팟캐스트 stdout.fm MediaElement.js - HTML5 video and audio unification framework Rebuild - Podcast by Tatsuhiko Miyagawa Amazon Transcribe – 자동 음성 인식 – AWS Cloud Translation documentation  |  Cloud Translation  |  Google Cloud WeWork, Cloudflare Form S-1 제출 Form S-1 - The We Company Form S-1 Cloudflare, Inc. Dart - 플리토/증권신고서(지분증권)/2019.07.04 캐리소프트, 상장 철회…“연내 재도전” | Bloter.net 단독 - 먹구름 낀 IPO…1조클럽 우아한형제들·야놀자 내년 IPO 포기 - 매일경제 소프트캠프, 코스닥 이전 상장 추진 - ZDNet korea 투자 사전 - 스팩(SPAC)이란? 컨테이너 런타임 rkt 프로젝트 아카이브 CNCF Archives the rkt Project - Cloud Native Computing Foundation Home - Open Containers Initiative Docker Seoul (Seoul, Korea (South)) | Meetup Open source, containers, and Kubernetes | CoreOS etcd-io/etcd: Distributed reliable key-value store for the most critical data of a distributed system Red Hat to Acquire CoreOS, Expanding its Kubernetes and Containers Leadership IBM closes Red Hat acquisition for $34 billion | TechCrunch 슈프리마 개인정보 유출 23기가에 달하는 개인 식별 정보와 생체 정보 노출시킨 슈프리마 Elasticsearch: RESTful, 분산형 검색 및 분석 | Elastic Open Distro for Elasticsearch | Open Distro Security for Elasticsearch is now free | Elastic Blog 슈프리마아이디, 증권신고서 제출…8월 코스닥 상장 추진 | 연합뉴스 당근마켓 레일스 5 업그레이드 Legacy SQL 함수 및 연산자  |  BigQuery  |  Google Cloud mperham/sidekiq: Simple, efficient background processing for Ruby Active Job Basics — Ruby on Rails Guides brandonhilkert/sucker_punch: Sucker Punch is a Ruby asynchronous processing library Log Management Rails 6.0: Action Mailbox, Action Text, Multiple DBs, Parallel Testing, Webpacker by default, and Zeitwerk | Riding Rails Cleaning up a huge ruby application - RubyKaigi 2019

NDS FM
019. RubyKaigi 2019/Classi株式会社/builderscon Tokyo 2019 (CfP)

NDS FM

Play Episode Listen Later Jun 16, 2019 55:00


NDS FM
019. RubyKaigi 2019/Classi株式会社/builderscon Tokyo 2019 (CfP)

NDS FM

Play Episode Listen Later Jun 16, 2019 55:00


Parallel Passion
30: Aaron Patterson

Parallel Passion

Play Episode Listen Later Jun 6, 2019 61:40


Aaron is on the Ruby core team, the Rails core team, and the team that takes care of his cat, Gorby puff.  During the day he works for a small technology company called GitHub.  Someday he will find the perfect safety gear to wear while extreme programming. Show Notes Aaron at RailsConf 2013 (https://www.youtube.com/watch?v=5kgUL_FfUZY) Ruby (https://www.ruby-lang.org/en/) RubyKaigi (https://rubykaigi.org/) Andouillette (https://en.wikipedia.org/wiki/Andouillette) ErgoDox (https://www.ergodox.io/) Cherry MX Switches (https://www.keyboardco.com/blog/index.php/2012/12/an-introduction-to-cherry-mx-mechanical-switches/) ErgoDox EZ (https://ergodox-ez.com/) Planck (https://olkb.com/planck) Planck Light (https://drop.com/buy/massdrop-x-olkb-planck-light-mechanical-keyboard/talk) Alfred (https://www.alfredapp.com/) Gorby Thunderhorse (https://twitter.com/gorbypuff) Recommendations Ruby on Rails (https://rubyonrails.org/) Working Effectively with Legacy Code (https://www.amazon.com/o/ASIN/0131177052/parpaspod-20) Ruby Community (https://www.ruby-lang.org/en/community/) Aaron Patterson Twitter (https://twitter.com/tenderlove) Instagram (https://instagram.com/tenderlove) Personal Page (http://tenderlovemaking.com/) Parallel Passion Patreon (https://www.patreon.com/parpaspod) Twitter (https://www.twitter.com/parpaspod) Instagram (https://www.instagram.com/parpaspod) Facebook (https://www.facebook.com/parpaspod) Credits Wesual Click (https://unsplash.com/@wesual) for the header photo Tina Tavčar (https://twitter.com/tinatavcar) for Parallel Passion logo Jan Jenko (https://twitter.com/JanJenko) for intro/outro music

RWpod - подкаст про мир Ruby и Web технологии
20 выпуск 07 сезона. RubyKaigi 2019: A speaker's report, JAMstack, Svelte 3, Storeon, Blueprint, Ant Design, Ola и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later May 19, 2019 30:42


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Migrating millions of Redis keys without downtime, RubyKaigi 2019: A speaker's report и Rails 6 adds db:prepare rake task Facebook Messenger Bot Using Webhooks и How to use Action Mailbox in Rails 6 Web Faster smarter JavaScript debugging in Firefox DevTools, An introduction to the JAMstack: the architecture of the modern web и Getting Started with Svelte 3 Storeon: “Redux” in 173 bytes, Blueprint - a React-based UI toolkit for the web, Ant Design - a design system with values of Nature and Determinacy for better user experience of enterprise applications, Ola - smooth animation library for interpolating numbers, Tourguide.js - a simple, lightweight product tour js library и Frontity - a framework to build super fast WordPress themes using React

UniFa Developer's Podcast
10. RubyKaigi 2019 に初スポンサー&初参加しました

UniFa Developer's Podcast

Play Episode Listen Later May 15, 2019 39:08


収録日 2019/05/10 (Fri) Show Notes RubyKaigi 2019 Rubyの国内最大規模の年次カンファレンス 期間: 2019/04/18(木)〜20(土) 場所: 福岡国際会議場(福岡空港から地下鉄ですぐ) 前回は仙台 参加者数: 約1,500名 世界40ヶ国から セッション数: 4トラック 66セッション スポンサーブース: 40以上 公用語は英語 日本語 → 英語 の同時通訳はあり 英語 → 日本語 の通訳はなし 公式ノベルティ: Tシャツ, パーカー, 靴下, ステッカー GOLDスポンサーしました 午睡チェックのサービスパンフレット&ステッカー配布 ブース出したりノベルティ工夫しないとあまりアピールにならない 様々なスポンサー: シャトルバス, ランチ屋台, 朝食, タクシー など スポンサーブーススタンプラリー 博多織のオリジナルキーケース オリジナルピンズ 各社ノベルティ RubyKaigi 2019 前夜祭 - Ippudo Party!! - オフィシャルパーティー: 川端商店街貸切(400m) コード懇親会 セッションピックアップ Cleaning up a huge ruby application Ovto: Frontend web framework for Rubyists All bugfixes are incompatibilities Ruby Committers vs the World The Year of Concurrency Pattern matching - New feature in Ruby 2.7 Optimization Techniques Used by the Benchmark Winners RubyGemsのMFAは必ず有効に セッション動画 スライドまとめ(unofficial) 来年は長野県松本市で開催 We’re hiring!! Rubyエンジニア インフラエンジニア ディレクター QA

RWpod - подкаст про мир Ruby и Web технологии
19 выпуск 07 сезона. GitHub Package Registry, Opal 1.0, React Native for Windows, Hybrid Lazy Loading, Hybrids, Cssfx.dev и прочее

RWpod - подкаст про мир Ruby и Web технологии

Play Episode Listen Later May 12, 2019 32:34


Добрый день уважаемые слушатели. Представляем новый выпуск подкаста RWpod. В этом выпуске: Ruby Introducing GitHub Package Registry, Opal 1.0 и RubyKaigi and the Path to Ruby 3 A Guide to Function Composition in Ruby, FactoryTrace - simple tool to maintain factories and traits from FactoryBot и RubyKaigi 2019 (videos) Web Microsoft launches React Native for Windows, A Denial of Service vulnerability discovered in the Axios JavaScript package - affecting all versions of the popular HTTP client, The new evergreen Googlebot и Hands-on with Portals: seamless navigations on the Web Hybrid Lazy Loading: A Progressive Migration To Native Lazy Loading, How to Choose the Best Static Site Generator for Your 2019 Project, Dinoql - a customizable GraphQL style query language for interacting with JavaScript objects, Hybrids - a UI library for creating Web Components, which favors plain objects and pure functions и Cssfx.dev - beautifully simple click-to-copy CSS effects

Random Facts Club
1. 日本語Tech系Podcastに「最も詳しい」男 (suginoy)

Random Facts Club

Play Episode Listen Later Apr 30, 2019 28:13


関連リンク RubyKaigi 2019 日本語Tech系Podcastいろいろ - Qiita Rebuild - Podcast by Tatsuhiko Miyagawa mozaic.fm yatteiki.fm r7kamura/yattecast backspace.fm Aston Microphones アストンマイクロフォンズ / AST-ORIGIN オリジン コンデンサーマイク Podcast Freaks noracast Logic Pro X Adobeマスター講座 | Web、CG、映像、プログラミングの通信講座「デジハリ・オンラインスクール」 Pocket Casts ‎Overcast

Random Facts Club
1. 日本語Tech系Podcastに「最も詳しい」男 (suginoy)

Random Facts Club

Play Episode Listen Later Apr 30, 2019 28:13


関連リンク RubyKaigi 2019 日本語Tech系Podcastいろいろ - Qiita Rebuild - Podcast by Tatsuhiko Miyagawa mozaic.fm yatteiki.fm r7kamura/yattecast backspace.fm Aston Microphones アストンマイクロフォンズ / AST-ORIGIN オリジン コンデンサーマイク Podcast Freaks noracast Logic Pro X Adobeマスター講座 | Web、CG、映像、プログラミングの通信講座「デジハリ・オンラインスクール」 Pocket Casts ‎Overcast

Remote Ruby
Rails 6, Ruby 3, and RailsConf

Remote Ruby

Play Episode Listen Later Apr 26, 2019 54:19


RailsConf is right around the corner! Chris and Jason discuss using Rails 6.0.0rc1, the news out of RubyKaigi about Ruby 3x3, and peruse the RailsConf schedule. (Also, special shoutout to our beta Jumpstart Pro users)

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_027.log: 샌프란시스코 여행, Google Cloud Next 2019 w/ subicura

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Apr 24, 2019 85:29


stdout.fm 27번째 로그에서는 @subicura 님을 모시고 샌프란시스코 여행과 구글 클라우드 넥스트 참관기에 대해서 이야기를 나눴습니다. 참가자: @seapy, @nacyo_t, @raccoonyy 게스트: @subicura RubyKaigi 2020 나고야 공항 - 마쓰모토 역까지 경로 - 구글 맵 무안국제공항 - 위키백과, 우리 모두의 백과사전 Seocho.rb 첫 번째 모임: 서버리스 루비 | Festa! Subicura’s Blog 초보를 위한 도커 안내서 - 도커란 무엇인가? Google Cloud Next ’19 | April 9-11 | San Francisco Moscone Center - Google 지도 아르고넛호텔 - 어 노블 하우스 호텔 특가 호텔예약, 2019 (샌프란시스코, 미국) 호텔추천 | 호텔스닷컴 stdout_003.log: GitHub Universe, HashiConf w/ @Outsideris | 개발자 팟캐스트 stdout.fm Apple Park Visitor Center - Apple iPad mini 구입하기 - Apple (KR) Samsung Galaxy Fold Non-Review: We Are Not Your Beta Testers - WSJ 구글플렉스 - Google 지도 Android lawn statues - Wikipedia MPK 12, facebook hq building - Google 지도 알라딘: 카오스 멍키 - 혼돈의 시대, 어떻게 기회를 낚아챌 것인가 Trust, but Verify: What Facebook’s Electronics Vending Machines Say About the Company - The Atlantic Chrome 원격 데스크톱 - 확장 프로그램 (일본어) Drecon은 올 해 RubyKaigi 2019에서 야타이 스폰스로 참여합니다! - Tech Inside Drecom #rubykaraoke - Twitter Search / Twitter Jeff Bezos and Robert Downey Jr. will headline re:MARS fest in Vegas – GeekWire Google I/O Viewing Party 2019 | Festa! Google - Site Reliability Engineering Home | OCI Micronaut | OCI Micronaut Framework on Twitter: “Love it when we run into fellow #micronautfw enthusiasts at events! @subicura … LogRocket | Logging and Session Replay for JavaScript Apps stdout_016.log: 정부의 SNI 기반 인터넷 접속 차단 w/ han | 개발자 팟캐스트 stdout.fm Many popular iPhone apps secretly record your screen without asking | TechCrunch Continuous Integration and Delivery - CircleCI HashiCorp: Multi-Cloud Management, Security, Automation Anthos  |  Anthos  |  Google Cloud Canalys Newsroom- Cloud market share Q4 2018 and full year 2018 Announcing the AWS China (Beijing) Region Google Cloud announces new regions in Seoul and Salt Lake City | Google Cloud Blog Apple’s HomePod delayed until next year - The Verge Apple cancels AirPower wireless charger - The Verge BigQuery - 분석 데이터 웨어하우스  |  BigQuery  |  Google Cloud Amazon Athena – 서버리스 대화식 쿼리 서비스 – AWS AWS CloudTrail – Amazon Web Services 데이터 파티셔닝 - Amazon Athena Bringing the best of open source to Google Cloud customers | Google Cloud Blog Memorystore  |  Google Cloud Cloud Code  |  Google Cloud AWS Toolkit for Visual Studio Code Atom Cloud Run  |  Google Cloud Cloud Functions - 이벤트 기반 서버리스 컴퓨팅  |  Cloud Functions  |  Google Cloud AWS Fargate – 서버 또는 클러스터를 관리할 필요 없이 컨테이너를 실행 Pricing  |  Cloud Run  |  Google Cloud API 관리  |  Apigee  |  Google Cloud Outsider on Twitter: “뉴스레터에 올릴 글을 모을 때 한국어로 된 글이 많지 않다는 것에 … Outsider’s Dev Story - Newsletter itcle - 페이지 읽기 오류 BigQuery - 분석 데이터 웨어하우스  |  BigQuery  |  Google Cloud Google announces new AI, smart analytics tools | ZDNet

44BITS 팟캐스트 - 클라우드, 개발, 가젯
루비 카이기 2019, 쿡패드, 일본 개발 커뮤니티 w/ shia

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Apr 17, 2019 147:58


stdout.fm 26번째 로그에서는 루비 카이기 2019, 쿡패드, 일본 개발 커뮤니티 등에 대해서 이야기를 나눴습니다. RubyKaigi 2019 stdout_006.log: KT 서울 서북부 통신 장애, AWS re:Invent 201…

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_026.log: 루비 카이기 2019, 쿡패드, 일본 개발 커뮤니티 w/ shia

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Apr 17, 2019 147:58


stdout.fm 26번째 로그에서는 루비 카이기 2019, 쿡패드, 일본 개발 커뮤니티 등에 대해서 이야기를 나눴습니다. 참가자: @seapy, @nacyo_t 게스트: @riseshia RubyKaigi 2019 stdout_006.log: KT 서울 서북부 통신 장애, AWS re:Invent 2018 | 개발자 팟캐스트 stdout.fm 대한민국 vs 일본홋카이도 면적 비교.jpg : 클리앙 홋카이도 이부리 동부 지진 - 위키백과, 우리 모두의 백과사전 2016년 경주 지진 - 위키백과, 우리 모두의 백과사전 도호쿠 지방 태평양 해역 지진 - 위키백과, 우리 모두의 백과사전 도카이 지진 - 위키백과, 우리 모두의 백과사전 Japan Earthquakes 2011 Visualization Map - YouTube 후쿠오카현 - 위키백과, 우리 모두의 백과사전 Cleaning up a huge ruby application - RubyKaigi 2019 (일본어) 쿡패드 CloudNative Days Fukuoka 2019 - #CNDF2019 Yahoo! JAPAN 소프트뱅크 그룹, 야후재팬 지분 48%로 확대 - 매일경제 CloudNative Days Fukuoka 2019 - #CNDF2019 LINE Fukuoka Corporation | ホーム Google Map - 쿡패드 주식회사 Seoul Ruby Meetup (서울, 한국(대한민국)) | Meetup ROR Lab. - Home 파이콘 한국 2019 asakusarb.esa.io #cndf2019 - Twitter Search TweetDeck 언콘퍼런스 - 위키백과, 우리 모두의 백과사전 Seoul.js Lightning Talk | Festa! Sendagaya.rb | Doorkeeper PyJog - Home Seocho.rb 첫 번째 모임: 서버리스 루비 | Festa! Docker Meetup Tokyo #2 - connpass RubyKaigi 2016 대각빌딩: 네이버 지도 AWSKRUG - AWS 한국사용자모임 (일본어) AWS 전업의 클래스메서드 | 시스템 설계 운용 기술 지원 (일본어) AWS 도입 사례: 쿡패드 Duet Display - Ex-Apple Engineers Turn Your iPad Into An Extra Display Disqus Hits Sites with Unwanted Advertising, Plans to Charge Large Publishers a Monthly Fee to Remove Ads – WordPress Tavern 세계최대의 레시피사이트, 쿡패드 이야기 - 매일경제 마카롱 - 위키백과, 우리 모두의 백과사전 (일본어) 쿡패드 주식회사: 주방을 갖춘 오피스, 그 진의를 찾아서! - Careertasu LINQ 매거진 (일본어) 쿡패드 개발자 블로그 (일본어) 쿡패드 마트 Last mile - Wikipedia (일본어) 하테나 북마크 프로그래밍 클라우드 기술 블로그 — 44bits.io 번역 - 최신 네트워크 로드 밸런싱 및 프록시 소개 | 人生は儚く短い。 AWS System Manager: Parameter Store를 사용한 AWS 구성 데이터 관리 기법 (일본어) 원코인 회의실 NEW OPEN!! 후쿠오카 - Spacee “핸드폰 고장 난 줄”..KT고객, LTE 속도저하 불만 폭주 | Daum 뉴스 루비(Ruby) 2.6 릴리즈 및 주요 문법 변경 사항 소개 | 44bits.io Hackathon on the Other Side of the World? GOT’s Mikako Discusses the Indian Hiring Project That Won Her Mercari’s 2nd Quarter MVP Award - mercan(メルカン) Programming Language Elixir DAYBIT Stripe is building a Ruby typechecker – Byteconf – Medium direnv/direnv: Unclutter your .profile Support of Ruby 2.3 has ended Three stories about Global Cooking – Source Diving (일본어) M3 Inc 日, 의사들이 매일 찾는 의료정보포털 m3.com - 뉴스 - KOTRA 해외시장뉴스 후쿠오카시 인구 146만명으로, 6위 교토시를 맹추격 상세보기|자치교류정보주 후쿠오카 대한민국 총영사관 Amazon EKS – 관리형 Kubernetes 서비스 추가로 받은 질문에 대한 답변입니다. Q: 한국에서 일본일을 할 수도 있는지, 어느정도 사례는 있는지? 궁금합니다. 전반적인 기술 스택이 Ruby 외에도 많은지도 함께^^ A: 일괄적으로 이야기하기는 어려운 듯 합니다. 리모트를 허용하는 회사는 보이는 것 같지만, 원칙적으로 풀 리모트를 허용하는 경우는 많지 않을 것 같습니다. 기술 스택은 루비 이외에도 다양한 편입니다. (시아 님의 답변을 바탕으로 작성)

Rebuild
236: Udon Newbie (higepon)

Rebuild

Play Episode Listen Later Apr 8, 2019 74:13


Taro Minowa さんをゲストに迎えて、プロダクティビティ、新元号、AirPods, マネジメント、幸せ分析、コロコロコミックなどについて話しました。 Show Notes RubyKaigi 2019 Add reminders in Google Calendar テレビ番組表 IEPG ISO 8601 Google「当時はあずまよういちの高さを誇ったそうです」 AirPower的 Apple acquires wireless charging specialist PowerbyProxi 以前も書いたけど。良いプロジェクトマネジメントは地味だし評価されづらい。 約束のネバーランド コロコロ創刊伝説 | のむらしんぼ Rebuild Meetup 2019

All Ruby Podcasts by Devchat.tv
RR 402: Ruby 2.6.0 Bugs, Kafka, and Karafka with Maciej Mensfeld

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Mar 5, 2019 59:55


Sponsors Sentry use the code “devchat” for $100 credit Triplebyte CacheFly Panel Andrew Mason Eric Berry Dave Kimura Charles Max Wood Joined by special guest: Maciej Mensfeld Episode Summary In this episode of Ruby Rogues, the panelists talk with Maciej Mensfeld, Senior Software Engineer at Castle Intelligence and the creator of the Karafka framework. Maciej explains to listeners the Karafka and Kafka frameworks and their advantages, the differences between Karafka and gems like DeliveryBoy and Racecar, certain use cases where Kafka can be used efficiently such as for fast data processing (messages at the rate of 50k per second), normalizing the request stream, buffering data and event-driven architecture. They discuss the framework’s contrast with respect to a traditional queue system and comparison to different languages. Maciej talks about some problems faced in the development stage and answers questions related to Kafka features such as strong ordering and error handling with examples. He also explains the procedure of using a consolidated gem with Docker containers, which is a part of his project set to release in April 2019. They discuss some specific errors in Ruby 2.6.0 and finally, he gives details about the Ruby users group based in Krakow, Poland and their meetups. Links Karafka framework Ruby Kafka DeliveryBoy Racecar WaterDrop Dry Libraries Apache Kafka Bug – Socket connect timeout exceeds timeout value Bug – ‘Numeric#zero?’  is much slower than ‘== 0’ Mutant library Maciej’s blog Maciej’s GitHub RubyKaigi Picks Eric Berry: Dave Kimura’s beautiful video setup Andrew Mason: Mac keyboard shortcut for nice screenshots: ⌘⌃ ⇧4 + space-bar and click on open window. Contributors’ names listed in the Readme file of the open source project – Andrew’s contribution Dave Kimura: Gatorade powder - to mix with Amoxicillin for better taste Elgato Cam Link 4k (reason for the excellent video setup!) Charles Max Wood: Disney Heroes : Battle Mode Kingdoms of Heckfire

Devchat.tv Master Feed
RR 402: Ruby 2.6.0 Bugs, Kafka, and Karafka with Maciej Mensfeld

Devchat.tv Master Feed

Play Episode Listen Later Mar 5, 2019 59:55


Sponsors Sentry use the code “devchat” for $100 credit Triplebyte CacheFly Panel Andrew Mason Eric Berry Dave Kimura Charles Max Wood Joined by special guest: Maciej Mensfeld Episode Summary In this episode of Ruby Rogues, the panelists talk with Maciej Mensfeld, Senior Software Engineer at Castle Intelligence and the creator of the Karafka framework. Maciej explains to listeners the Karafka and Kafka frameworks and their advantages, the differences between Karafka and gems like DeliveryBoy and Racecar, certain use cases where Kafka can be used efficiently such as for fast data processing (messages at the rate of 50k per second), normalizing the request stream, buffering data and event-driven architecture. They discuss the framework’s contrast with respect to a traditional queue system and comparison to different languages. Maciej talks about some problems faced in the development stage and answers questions related to Kafka features such as strong ordering and error handling with examples. He also explains the procedure of using a consolidated gem with Docker containers, which is a part of his project set to release in April 2019. They discuss some specific errors in Ruby 2.6.0 and finally, he gives details about the Ruby users group based in Krakow, Poland and their meetups. Links Karafka framework Ruby Kafka DeliveryBoy Racecar WaterDrop Dry Libraries Apache Kafka Bug – Socket connect timeout exceeds timeout value Bug – ‘Numeric#zero?’  is much slower than ‘== 0’ Mutant library Maciej’s blog Maciej’s GitHub RubyKaigi Picks Eric Berry: Dave Kimura’s beautiful video setup Andrew Mason: Mac keyboard shortcut for nice screenshots: ⌘⌃ ⇧4 + space-bar and click on open window. Contributors’ names listed in the Readme file of the open source project – Andrew’s contribution Dave Kimura: Gatorade powder - to mix with Amoxicillin for better taste Elgato Cam Link 4k (reason for the excellent video setup!) Charles Max Wood: Disney Heroes : Battle Mode Kingdoms of Heckfire

Ruby Rogues
RR 402: Ruby 2.6.0 Bugs, Kafka, and Karafka with Maciej Mensfeld

Ruby Rogues

Play Episode Listen Later Mar 5, 2019 59:55


Sponsors Sentry use the code “devchat” for $100 credit Triplebyte CacheFly Panel Andrew Mason Eric Berry Dave Kimura Charles Max Wood Joined by special guest: Maciej Mensfeld Episode Summary In this episode of Ruby Rogues, the panelists talk with Maciej Mensfeld, Senior Software Engineer at Castle Intelligence and the creator of the Karafka framework. Maciej explains to listeners the Karafka and Kafka frameworks and their advantages, the differences between Karafka and gems like DeliveryBoy and Racecar, certain use cases where Kafka can be used efficiently such as for fast data processing (messages at the rate of 50k per second), normalizing the request stream, buffering data and event-driven architecture. They discuss the framework’s contrast with respect to a traditional queue system and comparison to different languages. Maciej talks about some problems faced in the development stage and answers questions related to Kafka features such as strong ordering and error handling with examples. He also explains the procedure of using a consolidated gem with Docker containers, which is a part of his project set to release in April 2019. They discuss some specific errors in Ruby 2.6.0 and finally, he gives details about the Ruby users group based in Krakow, Poland and their meetups. Links Karafka framework Ruby Kafka DeliveryBoy Racecar WaterDrop Dry Libraries Apache Kafka Bug – Socket connect timeout exceeds timeout value Bug – ‘Numeric#zero?’  is much slower than ‘== 0’ Mutant library Maciej’s blog Maciej’s GitHub RubyKaigi Picks Eric Berry: Dave Kimura’s beautiful video setup Andrew Mason: Mac keyboard shortcut for nice screenshots: ⌘⌃ ⇧4 + space-bar and click on open window. Contributors’ names listed in the Readme file of the open source project – Andrew’s contribution Dave Kimura: Gatorade powder - to mix with Amoxicillin for better taste Elgato Cam Link 4k (reason for the excellent video setup!) Charles Max Wood: Disney Heroes : Battle Mode Kingdoms of Heckfire

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_007.log: AWS re:Invent 2018 두번째, Japan Container Days v18.12

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Dec 8, 2018 63:37


일곱 번째 에피소드에서는 지난 에피소드에서 다 하지 못 한 AWS re:Invent 2018 이야기와 Japan Container Days v18.12에 대해서 이야기를 했습니다. 참가자: @seapy, @nacyo_t AWS re:Invent 2018 | Amazon Web Services AWS Whats new - AWS Lambda Supports Ruby AWS Whats new - AWS Lambda Now Supports Custom Runtimes, and Enables Sharing Common Code Between Functions (일본어) Perl을 AWS Lambda에 실행 phusion/traveling-ruby: Self-contained, Ruby binaries AWS Whats new - Application Load Balancer can now Invoke Lambda Functions to Serve HTTP(S) Requests (일본어) AWS Lambda Custom Runtimes芸人 Advent Calendar 2018 - Qiita akr/all-ruby: Run various versions of ruby command @seapy 딥 레이서 3위 (일본어) JapanContainerDays v18.12 RubyKaigi 2018 (일본어) JapanContainerDays v18.12 Meetup|EventRegist 아키하바라 멘 무사시 부진 @asbubam 님 추천 kubernetes/kubernetes: Production-Grade Container Scheduling and Management Cloud Native Computing Foundation Members - Cloud Native Computing Foundation Projects - Cloud Native Computing Foundation Envoy - Visitor Management and iPad Sign in Software | Envoy moby/buildkit: concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit CRIU - Checkpoint/Restore In Userspace docker-ce/checkpoint-restore.md at master · docker/docker-ce opencontainers/runtime-spec: OCI Runtime Specification firecracker-microvm/firecracker firecracker-microvm/firecracker-containerd AWS Launchpad - Firecracker is now Open Source Kata Containers - The speed of containers, the security of VMs Nabla containers: a new approach to container isolation · Nabla Containers CRI: the Container Runtime Interface Red Hat Acquires CoreOS For $250 Million 하시코프 한국 사용자 모임 첫 번째 밋업 | Festa! 컨테이너 가상화의 모든 것 - 바이라인 네트워크 (일본어) 임프레스 북스 (일본어) Wantedly - 비지니스 SNS (일본어) 오차노미즈 솔라시티 컨퍼런스 센터 (일본어) ZOZOTOWN - ZOZOSUIT RubyKaigi 2019 Are you ready to attend RubyKaigi 2019? I’m READY! - 虚無庵

Mazrica.fm
sp.3 師匠に背中を押されてRubyざんまいになったmokuoさんの話

Mazrica.fm

Play Episode Listen Later Sep 23, 2018 72:16


mazrica.fmは、株式会社マツリカ公式ラジオです。 マツリカに関することや、五反田情報、技術ネタなどを発信していきます。 今回は外部ゲスト、Mokuoさんをお呼びしました。 Rubyistの大先輩に出会ったことで、徐々にMokuoさんのエンジニア人生がよい方向に進んでいくエピソードに注目です! 【Show note】 外部ゲスト回:mokuoさん https://twitter.com/mokuo_ SIerから受託会社に転職。そしてSansan株式会社へ https://jp.corp-sansan.com/ Senses(営業支援ツール)、Eight(個人名刺管理)ともにRailsでプロダクトを開発 https://jp.corp-sansan.com/service/ mokuoさんとRyoの出会い https://supporterzcolab.com/event/206/ Eightのフィードに投稿するとつながっていない人にも拡散される DSOCに異動 https://jp.corp-sansan.com/dsoc/ Rubykaigiの話 https://blog.mokuo.me/entry/rubykaigi-2018 Rubyist、Yuki Minamiyaさんとの出会い https://twitter.com/yuki3738 よちよち.rb https://yochiyochirb.doorkeeper.jp/ Rails Developer Meetup https://blog.mokuo.me/entry/2018/07/22/180219 セパレートキーボードを使い始めた話 https://blog.mokuo.me/entry/2018/09/14/195355 Mistel BAROCCO http://www.archisite.co.jp/products/mistel/barocco-en/ HHKB http://www.pfu.fujitsu.com/hhkeyboard/hhkbpro2/standard.html セパレートキーボードを使うと痩せる!? https://fufufu.rohto.co.jp/feature/54054/ スターバックスはいいぞ。カードを作ってお得に飲もう! http://www.starbucks.co.jp/card/?mode=mb_001 常連になるといいことあるスターバックス インプットとアウトプットの話 転職LTの話 https://ex-sier.connpass.com/ 資格取得の話 結婚するとインプットの時間は減るのか? Sansan株式会社はエンジニアを募集しています https://jp.corp-sansan.com/recruit/ 【パーソナリティ】 Ryo twitter.com/3s_hv 【ゲスト】 mokuoさん https://twitter.com/mokuo_

RWpod - подкаст про мир Ruby и Web технологии

Добрый день уважаемые слушатели. В гостях RWpod Cafe сегодня Anton Davydov: Ruby/Rails development RubyKaigi 2018 Architecture of hanami applications Впечатления от Японии Подача докладов на конференции Open source и Hanami Monolith vs microservices Goodbye Microservices: From 100s of problem children to 1 superstar Healthy software development История одной депрессии Mechanical Keyboard Happy Hacking Keyboard Professional 2 Пожелания слушателям Site Blog Github Twitter

All Ruby Podcasts by Devchat.tv
MRS 050: Jacob Stoebel

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Jun 27, 2018 30:45


MRS 050: Jacob Stoebel   Panel: Charles Max Wood   Guest: Jacob Stoebel   This week on My Ruby Story, Charles talks to Jacob Stoebel. Jacob is a Ruby and JavaScript developer and he works for a small company that works with publishers. Jacob first got into programming in high school when he took a computer science class where he messed around with Pascal and C++. He got back into programming after college when he went back to school for programming to try to make his data entry job easier. They talk about his journey pushing the boundaries with technology, how he went about starting his programming career, and more!   In particular, we dive pretty deep on: Jacob intro Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post His RubyConf 2017 talk Encourage people to talk about what they are passionate about How did you first get into programming? Computer science class in High School Pascal and C++ Went on to pursue other things besides programming after high school Job involved data processing Python class Setting limits as to what you can and cannot do with technology Pushing the boundaries Don’t be afraid to change your career Learning and taking more computer science class through his job Ruby and Rails Real world project that other people hold you accountable for Web apps Why Rails? Django What have you done in Rails that you’re proud of? Wiki Edu Dashboard Legacy projects What are you working on now? And much, much more!   Links:  Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post RubyConf 2017 talk Pascal Python Ruby Rails JavaScript Django Wiki Edu Dashboard Jacob’s GitHub jstoebel.com @jstoebel   Sponsors:  FreshBooks Digital Ocean   Picks: Charles RubyKaigi 2018 Elixir Mix Podcast DevChat.tv YouTube DevChat.tv/15minutes   Jacob RubyConf 2017 talk - Git Driven Refactoring by Ashley Ellis Pierce

My Ruby Story
MRS 050: Jacob Stoebel

My Ruby Story

Play Episode Listen Later Jun 27, 2018 30:45


MRS 050: Jacob Stoebel   Panel: Charles Max Wood   Guest: Jacob Stoebel   This week on My Ruby Story, Charles talks to Jacob Stoebel. Jacob is a Ruby and JavaScript developer and he works for a small company that works with publishers. Jacob first got into programming in high school when he took a computer science class where he messed around with Pascal and C++. He got back into programming after college when he went back to school for programming to try to make his data entry job easier. They talk about his journey pushing the boundaries with technology, how he went about starting his programming career, and more!   In particular, we dive pretty deep on: Jacob intro Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post His RubyConf 2017 talk Encourage people to talk about what they are passionate about How did you first get into programming? Computer science class in High School Pascal and C++ Went on to pursue other things besides programming after high school Job involved data processing Python class Setting limits as to what you can and cannot do with technology Pushing the boundaries Don’t be afraid to change your career Learning and taking more computer science class through his job Ruby and Rails Real world project that other people hold you accountable for Web apps Why Rails? Django What have you done in Rails that you’re proud of? Wiki Edu Dashboard Legacy projects What are you working on now? And much, much more!   Links:  Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post RubyConf 2017 talk Pascal Python Ruby Rails JavaScript Django Wiki Edu Dashboard Jacob’s GitHub jstoebel.com @jstoebel   Sponsors:  FreshBooks Digital Ocean   Picks: Charles RubyKaigi 2018 Elixir Mix Podcast DevChat.tv YouTube DevChat.tv/15minutes   Jacob RubyConf 2017 talk - Git Driven Refactoring by Ashley Ellis Pierce

Devchat.tv Master Feed
MRS 050: Jacob Stoebel

Devchat.tv Master Feed

Play Episode Listen Later Jun 27, 2018 30:45


MRS 050: Jacob Stoebel   Panel: Charles Max Wood   Guest: Jacob Stoebel   This week on My Ruby Story, Charles talks to Jacob Stoebel. Jacob is a Ruby and JavaScript developer and he works for a small company that works with publishers. Jacob first got into programming in high school when he took a computer science class where he messed around with Pascal and C++. He got back into programming after college when he went back to school for programming to try to make his data entry job easier. They talk about his journey pushing the boundaries with technology, how he went about starting his programming career, and more!   In particular, we dive pretty deep on: Jacob intro Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post His RubyConf 2017 talk Encourage people to talk about what they are passionate about How did you first get into programming? Computer science class in High School Pascal and C++ Went on to pursue other things besides programming after high school Job involved data processing Python class Setting limits as to what you can and cannot do with technology Pushing the boundaries Don’t be afraid to change your career Learning and taking more computer science class through his job Ruby and Rails Real world project that other people hold you accountable for Web apps Why Rails? Django What have you done in Rails that you’re proud of? Wiki Edu Dashboard Legacy projects What are you working on now? And much, much more!   Links:  Ruby Rogues episode 355 Honesty, Kindness and Inspiration: Pick Three blog post RubyConf 2017 talk Pascal Python Ruby Rails JavaScript Django Wiki Edu Dashboard Jacob’s GitHub jstoebel.com @jstoebel   Sponsors:  FreshBooks Digital Ocean   Picks: Charles RubyKaigi 2018 Elixir Mix Podcast DevChat.tv YouTube DevChat.tv/15minutes   Jacob RubyConf 2017 talk - Git Driven Refactoring by Ashley Ellis Pierce

しがないラジオ
sp.13b【ゲスト: pupupopo88】楽しいよちよちRubyistがコミュニティに貢献する理由

しがないラジオ

Play Episode Listen Later Dec 16, 2017 82:39


"ぷぽさん"ことヴァル研究所の福本さんをゲストにお迎えして、アジャイルとは?、よちよち.rb、RubyKaigi、コミュニティへの貢献、などについて話しました。 【Show Notes】 株式会社ヴァル研究所 Amazon | アジャイルサムライ−達人開発者への道− Agile Samurai Base Camp | Doorkeeper アジャイルソフトウェア開発宣言 LEGO®を使ったスクラム研修(レゴスクラム) | Doorkeeper "総務も!!"アジャイルプラクティス! | SlideShare 中村 洋(なかむら よう)|メンバー|GuildWorks -ギルドワークス- 及部 敬雄 プロフィール - Wantedly 中村&及部のアジャイル相席居酒屋 (β) | Facebook Scrum Guide Downloads | Scrum Guides よちよち(の心をずっとわすれない).rb | Doorkeeper Ginza.rb | Doorkeeper Asakusa.rb | Doorkeeper I AM "Ruby Ecosystem"! // Speaker Deck RESTful#とは勉強会 - Ruby Children | Doorkeeper RubyKaigi2017がたのしすぎてたまらなかった話 - すむとこ探し 株式会社ヴァル研究所:採用情報インデックス 配信情報はtwitter ID @shiganaiRadio で確認することができます。 フィードバックは(#しがないラジオ)でつぶやいてください! 感想、話して欲しい話題、改善して欲しいことなどつぶやいてもらえると、今後のポッドキャストをより良いものにしていけるので、ぜひたくさんのフィードバックをお待ちしています。 【パーソナリティ】 gami@jumpei_ikegami zuckey@zuckey_17 【ゲスト】 ぷぽ@pupupopo88 【機材】 Blue Micro Yeti USB 2.0マイク 15374

ajitofm
ajitofm 9: Better than Shift Shift

ajitofm

Play Episode Listen Later Sep 13, 2017 73:09


IntelliJ, Upsource, 自動化などについて yusuke さん、 nishigori さんと話しました。 サムライズム JUnit 5 JUnit - JUnit Lambda Twitter4J スプラトゥーン大会を開催しました #samuratoon IdeaVim LiveEdit :: JetBrains Plugin Repository JRevel Upsource: Code Review, Project Analytics, and Team Collaboration by JetBrains Reviewable - GitHub Code Reviews Done Right Selenium コロッケ割(キャンペーンは終了しています) Using LDAP - GitHub Enterprise そういえば日本語テーブル名、日本語カラム名、日本語クラス名、日本語メソッド名を実践している弊社ですが … marsのメモ github.com/Microsoft/language-server-protocol Gogland: The Up-and-Coming Go IDE by JetBrains JBuilder Meet the RubyMine Team at RubyKaigi 2017! | RubyMine Blog YouTrack: Issue Tracking and Project Management Tool for Developers

ZADevChat Podcast
60 - Software, embeddables & biltong with Lance Gleason

ZADevChat Podcast

Play Episode Listen Later Jun 27, 2017 72:48


We talk to Lance Gleason of Polyglot Programming about the software, embeddable devices, biltong and how the local community stacks up against the rest of the world. Chantal, Kenneth & Kevin chat to Lance about his involvement with the South African tech community. Based in Atlanta, Georgia, Lance has definitely made a name for himself in various local communities as a very involved member and connector. It was thanks to Lance that we met and invited Rebecca Franks for [episode 39](/39/), and Mandla and Theo for [episode 36](/36/). From gaming on a Commodore VIC-20 to building software for a family business to working at Kodak on satellite imaging system, to digitizing the vast media archives of CNN/Turner, Lance has had a storied career so far and leaves a great impression wherever he goes. Lance adopted a polyglot programming approach as a means to go to conferences and tap into communities. Lance gave his first ever conference talk in Cape Town at Rubyfuza 2010. Lance is also on the organizing committee for Rubyfuza, and support the yearly Ruby DCamp event that happens outside Nelspruit in the spring. Lance has also done the hard work of identifying the best biltong in the country, but you'll have to listen to find out where exactly. Lately Lance has been working with embeddable and wearable technologies and has some very interesting thoughts on the challenges faced in the field including a few things you might not think off initially. From fitness and mindfulness to medical, industrial and other applications. We wrap up the conversation reflecting on how our local talent compares against other communities overseas. Lance's perspective from having traveled from tech community to tech community is great and supportive and wants us to shine bright on the international stage. Find and follow Lance and Polyglot Programming online: * https://twitter.com/lgleason * https://github.com/lgleason * http://www.polyglotprogramminginc.com/ * http://purrprogramming.com/ Here are some resources mentioned in the show: * Commodore VIC-20 - https://en.wikipedia.org/wiki/Commodore_VIC-20 * Ruby DCamp ZA - http://www.rubydcamp.org.za/ * Ruby DCamp - http://rubydcamp.org/ * Rubyfuza - http://rubyfuza.org/ * RubyKaigi - http://rubykaigi.org/ * House4Hack - http://www.house4hack.co.za/ * Google Glass - https://en.wikipedia.org/wiki/Google_Glass * Spire - https://spire.io/ * NeoPixels - https://www.adafruit.com/category/168 * Bike Wheel POV Display - https://learn.adafruit.com/bike-wheel-pov-display/overview And finally our picks Kenneth: * Loxton Lager - http://www.loxtonlager.co.za/ * Borderlands - https://borderlandsthegame.com/ Kevin: * The Ultimate Guide to Building Database-Driven Apps with Go - https://www.vividcortex.com/resources/the-ultimate-guide-to-building-database-driven-apps-with-go Chantal: * rAge Expo - http://www.rageexpo.co.za/ * Earth View from Google Earth - https://chrome.google.com/webstore/detail/earth-view-from-google-ea/bhloflhklmhfpedakmangadcdofhnnoh?hl=en * Chanel's Data Center Collection by Karl Lagerfeld - https://qz.com/799962/chanels-karl-lagerfeld-made-a-data-center-into-the-most-glamorous-runway-in-fashion/ Lance: * MbientLab - https://mbientlab.com * NodeMcu - http://nodemcu.com/index_en.html * Purr Programming - http://purrprogramming.com/ Thanks for listening! Stay in touch: * Website & newsletter - https://zadevchat.io * Socialize - https://twitter.com/zadevchat & http://facebook.com/ZADevChat/ * Suggestions and feedback - https://github.com/zadevchat/ping * Subscribe and rate in iTunes - http://bit.ly/zadevchat-itunes

rubyist.club
11: Translating is the best way to master a programming language (_ko1, yotii23, 1syo)

rubyist.club

Play Episode Listen Later Nov 22, 2016 94:38


@_ko1さん、@yotii23さん、@1syoさんをゲストに、本の翻訳について話しました。 A proposal of new concurrency model for Ruby 3 - RubyKaigi 2016 だいありー Rebuild: 158: Kill All The Threads (ko1, Matz) Elixir プログラミングElixir PragDave: ルビィのぼうけん こんにちは! プログラミング プロフェッショナルのための 実践Heroku入門 すごいHaskellたのしく学ぼう! Rubyist Magazine - 書籍紹介「プログラミング Elixir」 Programming Elixir 1.3 オブジェクト指向入門 第2版 原則・コンセプト Scratch普及のリーダー・阿部和広さんインタビュー 前編 Why!?プログラミング 絵本で学ぶはじめてのプログラミング!親子のための「ルビィのぼうけん」ワークショップ Pony - High Performance Actor Programming 『ルビィのぼうけん コンピューターの国のルビィ』

Rebuild
158: Kill All The Threads (ko1, Matz)

Rebuild

Play Episode Listen Later Sep 16, 2016 53:00


Koichi Sasada さん、まつもとゆきひろさんをゲストに迎えて、Guild, Ruby 3 などについて話しました。(9/10 RubyKaigi 2016 にて収録) Show Notes RubyKaigi 2016 A proposal of new concurrency model for Ruby 3 Koichi Sasada: A proposal of new concurrency model for Ruby 3 (RubyKaigi2016) Global interpreter lock Ruby creator floats new concurrency model ギルド verse | RubyGems.org Rust: Ownership and Lifetimes Erlang -- Processes Racket: Places Software transactional memory ice_nine: Deep Freeze Ruby Objects Concurrency is not parallelism Ruby 3 Typing

Rebuild
155: I Am Your Grandfather (Matz)

Rebuild

Play Episode Listen Later Aug 21, 2016 111:44


まつもとゆきひろさんをゲストに迎えて、RubyKaigi, Ruby 2.4, プロダクティビティ、mruby, Elixir, 自作言語などについて話しました。 スポンサー: Heroku Show Notes Rebuild: 118: The Lonely Operator (Matz, a_matsuda) RubyKaigi 2016 Larry Wall - YAPC::Asia Tokyo 2015 Ruby 2.4.0-preview1 Released New Features in Ruby 2.4 Ruby Bug: Inline rescue behavior inconsistent GitHub on BigQuery: Analyze all the open source code map_v List Comprehension Heroku Kafka ★ Heroku Development Languages heroku/cli: Heroku CLI mruby jkutner/mjruby: A new jruby launcher built with mruby-cli mruby適用最新事例 プログラミングElixir The Crystal Programming Language Perl 5 to 6 streem ALL ABOUT ベーマガ Why!?プログラミング|NHK for School

Rebuild
Aftershow 152: Mindfulness Gaming (naoya)

Rebuild

Play Episode Listen Later Aug 5, 2016 42:01


Naoya Ito さんと、マインドフルネス、FF15, ペルソナ、シンゴジラ、NEW GAME などについて話しました。 Show Notes FINAL FANTASY XV P5 - ペルソナ5 幻影異聞録♯FE フィリスのアトリエ ソードアート・オンライン -ホロウ・リアリゼーション- 映画『シン・ゴジラ』 Summer Lesson - New Gameplay Footage NEW GAME! 甘々と稲妻 Finding Dory 近江神宮 RubyKaigi 2016

rubyist.club
9: Data Engineer, not Data Scientist (joker1007)

rubyist.club

Play Episode Listen Later May 23, 2016 79:17


@joker1007さんに、Data EngineeringとワークフローエンジンRukawaの話を聞きました。 Show Notes RubyKaigi 2015 Drinkup を開催しました パーフェクトRuby パーフェクトRuby on Rails Fluentd | Open Source Data Collector | Unified Logging Layer Embulk Amazon Data Pipeline データを一箇所に集めることでデータ活用の民主化が進んだ話 - once upon a time, 10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く kaizenplatform/fluent-plugin-bigquery Ruby製のシンプルなワークフローエンジンRukawaの紹介 OSSのワークフローエンジンを使ってみた感想 巨大なバッチを分割して構成する 〜SQLバッチフレームワークBricolage〜 ReAir: Easy-to-Use Tools for Migrating and Replicating Petabyte-Scale Data Warehouses

Rebuild
Aftershow 122: Thinking Of Dajare All Day (tenderlove)

Rebuild

Play Episode Listen Later Dec 19, 2015 21:21


Aaron Patterson さんと、日本語、築地、RubyKaigi 2016 などについて話しました。 Show Notes RubyWorld Conference 2015 Jonan Scheffler (@dekagaijin) | Twitter StickyStudy JLPT Japanese-Language Proficiency Test 豊洲新市場 RubyKaigi 2016

Rebuild
121: Ruby Is Not Dying, Not Yet (Laurent Sansonetti)

Rebuild

Play Episode Listen Later Dec 13, 2015 58:51


Laurent Sansonetti joins me to talk about RubyMotion, Apple, Swift, React Native, LLVM, RubyKaigi, and Ramen. Show Notes Laurent Sansonetti MacRuby RubyCocoa The LLVM Compiler Infrastructure Project Automatic Reference Counting RubyMotion Ruby 2 Keyword Arguments Introduce "Safe navigation operator" Cocos2d-x HipByte/Flow jimweirich/builder redpotion RubyMotionQuery ProMotion J2ObjC RoboVM Swift.org apple/swift React Native Crystal rubyomr-preview/rubyomr-preview JRuby+Truffle

Rebuild
Aftershow 120: Cooperative Single-Tasking (gfx)

Rebuild

Play Episode Listen Later Dec 9, 2015 23:17


Goro Fuji さんと、コーディング、電子書籍、技術スタック、microservices などについて話しました。 Show Notes John Resig - Write Code Every Day OSS についてあれこれ マグネット株式会社 iPad Pro - Apple DroidKaigi 2016 Rebuild: 85: Virtual Reality, The Final Frontier (naan, hak) Rebuild: 118: The Lonely Operator (Matz, a_matsuda) RubyKaigi 2015

Rebuild
118: The Lonely Operator (Matz, a_matsuda)

Rebuild

Play Episode Listen Later Nov 18, 2015 71:02


まつもとゆきひろさん、Akira Matsuda さんをゲストに迎えて、RubyConf, Ruby 2.3, Ruby 3 などについて話しました。 Show Notes RubyConf | 2015 Keynote: Matz - Ruby Conference 2015 Keynote: Leagues of Sea and Sky - Ruby Conference 2015 MINASWAN What's New in Rails 5 Building a Ruby Project - Travis CI Ruby 2.3.0-preview1 Released Preview of New Features in Ruby 2.3.0 Feature #11049: Enumerable#grep_v (inversed grep) Feature #11537: Introduce "Safe navigation operator" ActiveSupport’s #try might not be doing what you think it’s doing Magic comment ‘immutable: string’ makes Ruby 2.1’s “literal”.freeze optimization the default Feature #11473: Immutable String literal in Ruby 3 Rebuild: 59: Ruby 3.0 Coming Soon (Matz) matz/streem Perl 6: role Supply Perl 6 Essentials - O'Reilly Media RubyKaigi 2015

Rebuild
68: Little Big Data (tagomoris)

Rebuild

Play Episode Listen Later Nov 24, 2014 69:45


tagomorisさんをゲストに迎えて、RubyConf, Flow, JRuby, Fluentd, Norikra, Lambda Architecture などについて話しました。 Show Notes Rubyconf2014 Matz at RubyConf 2014: Will Ruby 3.0 be Statically Typed? - The Omniref Blog Rebuild: 59: Ruby 3.0 Coming Soon (Matz) Flow | A static type checker for JavaScript Statically typed JavaScript via Microsoft TypeScript, Facebook Flow and Google AtScript Ko1 at RubyConf 2014: Massive Garbage Collection Speedup in Ruby 2.2 - The Omniref Blog JRuby 9K Expected in 2014 Ready for Production The Social Coding Contract // Speaker Deck Confreaks Invitation for v1.0.0 | RubyKaigi 2014 Template Engines in Ruby // Speaker Deck Rebuild: 3: MessagePack (frsyuki, kiyoto) Fluentd | Open Source Data Collector logstash - open source log management Elasticsearch.org Kibana | Overview | Elasticsearch Welcome to Apache Flume - Apache Flume fluent-plugin-amazon_sns | RubyGems.org Turn on Elasticsearch logging by default for GCE platform FluentdがKubernetesの標準ログ収集ツールとして採用 GoogleCloudPlatform/google-fluentd Elasticsearch.org Kibana 4 Beta 2: Get It Now | Blog | Elasticsearch Configuring a Google Compute Engine VM for Google Cloud Logging Norikra: Stream processing with SQL for everybody Norikra: SQL Stream Processing In Ruby Lambda Architecture Microsoft Azure Stream Analytics | Real-time Event Processing Dryad - Microsoft Research Apache Tez - Welcome to Apache Tez Web Operations and Performance - O'Reilly Velocity Strata + Hadoop World Apple Podcasts app now with Show Notes - Tatsuhiko Miyagawa's blog

Teahour
#70 - Internet of Dusty Things

Teahour

Play Episode Listen Later Oct 29, 2014 24:07


本期是中国 Ruby 大会特辑七。今年的 RubyConf China 会在十一月一号和二号在北京举办,我在 Teahour 会对 Ruby 大会的 8 位主题演讲嘉宾做会前采访。今天接受采访的是 MRuby 的核心提交者 Daniel Bovensiepen。 Daniel 在去年的 RubyConf 上给我们介绍了 MRuby 的发展和现状,今年,他将带来真正的用 MRuby 开发的空气净化器产品,向我们展示 MRuby 在智能硬件上的可能性。北京天气现在越来越糟糕,Daniel 在了解了市面上很多空气净化器后,决定自己从头去实现一个空气净化器并同时开源了硬件和软件,本期就是其中的故事。Daniel 相信听完他演讲的人,回家后就能自己做一个空气净化器了。 中国 Ruby 大会 Daniel Bovensiepen MRuby 空气净化器 青云 RubyKaigi Special Guest: Daniel Bovensiepen.

Rebuild
62: Wrong Username Mentions (dice)

Rebuild

Play Episode Listen Later Oct 14, 2014 74:55


Daisuke Horie さんをゲストに迎えて、GitHub について話しました。 Show Notes DICE Dice (rapper) - Wikipedia, the free encyclopedia Getting hired by GitHub - angrymoose.org GitHub Kaigi GitHub Hiring Story - @muanchiou The GitHub hiring experience Why are my contributions not showing up on my profile? Twilio Cloud Communications Twilio SMS - Deliverability Two-Factor Authentication | Authy How GitHub Works: Be Asynchronous Managing Issues and Pull Requests Across Repositories Shipping GitHub's split diffs - @mdo RubyKaigi 2014 | Continuous Delivery at GitHub FeatureToggle cookpad/chanko github-pages | RubyGems.org Keeping your email address private

Rebuild
61: Test With Real Data (Naoya Ito)

Rebuild

Play Episode Listen Later Oct 5, 2014 58:32


Naoya Itoさんをゲストに迎えて、Kindle, 計算理論、開発環境、iOS 8, RubyMotion などについて話しました。 Show Notes きゃんちのギークガールになりたくて(KAIZEN platform編) Kindle Voyage アンダースタンディングコンピュテーション Understanding Computation Welcome to the SICP Web Site Ruby嫌いがアンダースタンディングコンピュテーションを読んで はてなキーワードを高速に付与 Aho Corasick 法 - naoyaのはてなダイアリー Apple, Amazon Offer Family Sharing For Digital Media 開発環境のデータをできるだけ本番に近づける | クックパッド開発者ブログ winebarrel/ridgepole Running beta in production by David of Basecamp GitHub db seeding rtomayko/replicate Infrastructure as Code 現状確認会 HBFav 2.7.1 をリリース。iOS 8 に対応しました Average App Store Review Times - iOS App Store - Rolling Annual Trend Graph BugshotKit: Development and Beta Tests Only! Rebuild: 29: Rate My App (Naoya Ito) golang: Where is my favorite helper function for testing? Announcing the public Beta of RubyMotion for Android RubyKaigi 2014 | Inside RubyMotion for Android Genymotion

Rebuild
Aftershow 60: Bashdoor (naan, N)

Rebuild

Play Episode Listen Later Sep 30, 2014 12:43


Kazuho Okuiさん、Naoki Hiroshimaさんと、ヌードルメーカー、日本語、Bash などについて話しました。 Show Notes フィリップス ヌードルメーカー HR2369-01 Rebuild: 58: Close To The BABYMETAL (tenderlove) RubyKaigi 2014 | Speeding up Rails 4.2 ruby-dev ruby_core Bash specially-crafted environment variables code injection attack | Red Hat Security Shellshock BASH Vulnerability Tester DashAsBinSh - Ubuntu Wiki Heroku Status

Rebuild
59: Ruby 3.0 Coming Soon (Matz)

Rebuild

Play Episode Listen Later Sep 23, 2014 22:33


まつもとゆきひろさんをゲストに迎えて、Ruby 3.0 などについて話しました。(9/20 RubyKaigi 2014 にて収録) Show Notes @yukihiro_matzさんの衣装はVASILY/iQONがスタイリングさせて頂いています! Barcelona Ruby Conference 2014 Ruby version policy changes starting with Ruby 2.1.0 Rebuild: 53: Less Code Is Better Code (Matz) Feature #9999: Type Annotations - ruby-trunk Welcome to TypeScript DefinitelyTyped Soft Typing 非常に簡単化した静的解析なら簡単に実装できることがわかったので実装してみた perl MAD - Misc Attribute Decoration

Rebuild
58: Close To The BABYMETAL (tenderlove)

Rebuild

Play Episode Listen Later Sep 20, 2014 31:42


Aaron Patterson joins me to talk about Rails 4.2, AdequateRecord, Rack 2.0 and his brand new programming language. (Recorded live at RubyKaigi 2014) Show Notes Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console AdequateRecord Pro: Like ActiveRecord, but more adequate Aaron Patterson (aka tenderlove) joins ManageIQ Team Rebuild: 56: Technically In Tokyo (a_matsuda) [ANN] Rack, Change of Maintainer & Status tenderlove/the_metal Hijack by raggi - rack/rack faye/faye-websocket-ruby HTTP Node.js macournoyer/thin_async Riding Rails: Introducing Rails Metal Metal for Developers - Apple Developer @tenderlove: Excited to work on my new language called ...

Rebuild
Aftershow 56: Nice Email Address (a_matsuda)

Rebuild

Play Episode Listen Later Sep 5, 2014 13:47


Akira Matsudaさんと、RubyKaigi、GitHub などについて話しました。 Show Notes RubyKaigi 2014 会場ネットワークの裏話 ー YAPC::Asia Tokyo 2014 CONBU Confreaks RubyCentral GitHub Kaigi Ronnie James Dio starseeker computer talk by @tmm1 Aman Gupta

Rebuild
56: Technically In Tokyo (a_matsuda)

Rebuild

Play Episode Listen Later Sep 2, 2014 63:36


Akira Matsudaさんをゲストに迎えて、Rails, Ruby, RubyKaigi などについて話しました。 スポンサー: freee Show Notes github.com/amatsuda Asakusa.rb Seattle.rb クックパッドにおける最近のActiveRecord運用事情 eaglemt/switch_point 会計ソフト freee (フリー) ★ Rails 4.2.0 beta1: Active Job, Deliver Later, Adequate Record, Web Console Active Job Basics Call #to_s when serializing GlobalID. Fix #95 by miyagawa - rails/activejob MySQL 5.6 and later supports microsecond precision in datetime. by miyagawa - rails/rails AdequateRecord Pro: Like ActiveRecord, but more adequate @joshpeek: Rack middleware ... were probably the worse idea I ever promoted. Rack, Change of Maintainer & Status tenderlove: A spike for thoughts about Rack 2.0 @dhh: Rails 5.0 will target Ruby 2.2 and be released next spring/summer Rebuild: 53: Less Code Is Better Code (Matz) asakusarb/action_args Feature #9999: Type Annotations Why Semantic Versioning Isn't RubyKaigi 2014, 18-20 september Ruby Conferences Rails Pacific - The Asian Rails Conference, Taipei, September 2014

Rebuild
Aftershow 53: Because We Are Global (Matz, zzak)

Rebuild

Play Episode Listen Later Aug 12, 2014 26:15


Zachary Scott and Yukihiro Matsumoto join me to talk about Ruby 2.2, Gemification of the Ruby standard library and various Ruby conferences around the world. Transcript of this episode is available at rebuild.fm/53a Show Notes Transcript of this episode Rebuild: 53: Less Code Is Better Code (Matz) Feature #9781: Feature Proposal: Method#super_method Ruby Global variables Feature #6373: public #self rails/rails: Added Object#self GitHub code search for "def itself" Feature #9711: Remove test-unit and minitest from stdlib RubyKaigi 2014, 18-20 september Brighton Ruby Conference 2014 Rubyconf2014 OedoRubyKaigi: Nobody Knows Nobu / @_zzak @gingypurrs Matz is Nice So We Are Nice YAPC::Asia Tokyo 2014 Rails Pacific - The Asian Rails Conference, Taipei, September 2014

Rebuild
10: RailsConf, Ruby 2.0, Rails 4 (mrkn, r7kamura)

Rebuild

Play Episode Listen Later May 11, 2013 47:42


Kenta Murataさん, Ryo Nakamuraさんをゲストに迎えて、RailsConf, Ruby 2.0, Rails 4, Chanko 2.0, RubyKaigi, YAPC などについて話しました。 Show Notes RailsConf Blind Reviews at RailsConf 2013 RubyKaigi 2013 DHH keynote at RailsConf 2013 Not sure if I should be offended by the Kansas barbs DHH RailsConf 2012 Keynote gist.github.com launched with Rails 4 What's new in Rails 4.0 Cookpad の本番環境で使用している Ruby が 2.0.0-p0 になりました Ruby 1.8.7 and REE End of Life Ruby 1.8.7 EOL expected this June What a hard work to make the recipe sharing service available on Ruby 1.9.3! MIME encoding bug of NKF.nkf Rails 3.2.13 default_scope breaks chained scopes rails/strong_parameters Turbolinks Compatibility Android Is The New IE 6 Chanko: Rapidly & Safely prototyping your rails application プロトタイプ開発用のRailsプラグイン「Chanko」を2.0.0にアップデートしました Use Erubis when available for faster startup Travis CI Coveralls Code Climate rubygems travis Coveralls + Perl YAPC::Asia クックパッド採用情報 第4回 開発コンテスト24

Ruby Rogues
Optimizing Ruby User Experience With Ivo Anjo - RUBY 574

Ruby Rogues

Play Episode Listen Later Jan 1, 1970 72:44


Ivo Anjo is a Software Engineer at Datadog. His main focus is the Ruby Language. He is currently working on building a Ruby profiler and was a speaker at RubyKaigi 2022. He returns to the show with Chuck and Valentino to discuss the gvl-tracing gem, a Ruby gem that he recently created. It is a Ruby gem for getting a timeline view of Global VM Lock usage in your Ruby app. Additionally, he describes how this may be applied to improve performance and speed up Ruby Apps.About this Episode Features of gvl-tracing Gem Applying Global VM Lock to Ruby Applications How Ruby Profiler works All about Heap Sampling and its benefits Sponsors AppSignal Developer Book Club starting with Clean Architecture by Robert C. Martin Become a Top 1% Dev with a Top End Devs Membership Links tracing ruby's (global) vm lock GVL Instrumentation API  ivoanjo/gvl-tracing [EN]Hunting Production Memory Leaks with Heap Sampling / @KnuX and @KJTsanaktsidis - YouTube Analyze Ruby Code Performance With Datadog Continuous Profiler | Datadog All About Queueing In Rails Applications / Nate Berkopec - YouTube Hunting Production Memory Leaks with Heap Sampling - RubyKaigi 2022 GitHub - zendesk/ruby_memprofiler_pprof: Experimental memory profiler for Ruby that emits pprof files. GitHub - bloomberg/memray: Memray is a memory profiler for Python subscribe to my newsletter! Ivo Anjo.me Twitter: @KnuX Picks Charles - Tenpenny Parks | Board Game - BoardGameGeek Charles - Keeper of the Lost Cities Ivo - Linus Torvalds' interview snippet where he mentions that “the Ruby people, strange people”, helped a lot in popularizing git Ivo - Real World Applications with the Ruby Fiber Scheduler - RubyKaigi 2022 Ivo - TRICK 2022 (Returns) - RubyKaigi 2022 Ivo - Megaruby - Running mruby/c programs on Sega Mega Drive - RubyKaigi 2022 Ivo - The Culture Map by Erin Meyer Valentino - First Ruby Friend  Valentino - Galactic Unicorn (Pico W Aboard) - Pimoroni Advertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy