This video contains 20 individual talks

+20
See all speakers
See all 20 speakers

Sections in this recording

Sarah Mei
Lightning Talks Intro
00:13
Noah Durbin
Lightning Talk: An intro to Langchain.rb
01:10
Sunjay Armstead
Lightning Talk: Advance - How to propel the next generation of technologists
06:23
Manu Vanconcelos
Lightning Talk: Software Engineering Gaphic Design
11:30
Alexander Mitchell
Lightning Talk: How to be a Ruby scholar, do a prject, and (accidentally) break your laptop
15:51
Neil Hendren
Lightning Talk: Interactive Data Visualization with JavaScript and the HTMLS5 Canvas
18:53
Adam McCrea
Lightning Talk: We do not need a static site generator
24:00
Elshadai Tegegn
Lightning Talk: Interpretable and Explainable AI
28:52
Benjamin Fleischer
Lightning Talk: Sombrero Code - From blog post to jargon
33:55
Ken Maeshima
Lightning Talk: Ruby for Good
38:53
Gary Tou
Lightning Talk: My Top 5 Favorite Ruby Gems
43:56
Ronan Potage
Lightning Talk: Tooling Over Documentation
48:40
Jeff Casimir
Lightning Talk: Ruby Community
53:51
Michal Kazmierczak
Lightning Talk: Owning Telemetry Data in Ruby
59:35
Justin Bowen
Lightning Talk: Active Agents
01:04:59
Mariusz Kozieł
Lightning Talk: Why It's important to attend and organize Ruby Meetups
01:09:35
David Hill
Lightning Talk: Ode to RailsConf Podcast
01:15:09
Richard Schneeman
Lightning Talk: How to Open Source (Book)
01:16:22
Rhiannon Payne
Lightning Talk: Introduction - Marketing for Ruby Central
01:17:30
Cindy Backman
Lightning Talk: Confreaks
01:18:43


Summarized using AI

Lightning Talks

Sarah Mei, Noah Durbin, Sunjay Armstead, Manu Vanconcelos, Alexander Mitchell, Neil Hendren, Adam McCrea, Elshadai Tegegn, Benjamin Fleischer, Ken Maeshima, Gary Tou, Ronan Potage, Jeff Casimir, Michal Kazmierczak, Justin Bowen, Mariusz Kozieł, David Hill, Richard Schneeman, Rhiannon Payne, and Cindy Backman • November 14, 2024 • Chicago, IL • Lightning Talk

The video, titled "Lightning Talks" from RubyConf 2024, features a series of engaging short presentations by multiple speakers focusing on various topics related to Ruby programming and technology. The session includes 14 five-minute talks, each offering insights into different aspects of software development, programming practices, and community engagement.

Key Points Discussed:

- Noah's Introduction to Langchain RB: He introduces Langchain RB, a gem for interacting with language models (LLMs) and how it allows developers to quickly switch between different models with minimal changes in code. He highlights the use of assistants that can leverage tools to enhance LLM functionality.

- Sanjay on Advancing Technologists: He emphasizes the importance of mentorship, sharing knowledge, and creating opportunities for junior and mid-level developers to foster growth in the tech community. He encourages signing a pledge to support the next generation of technologists.

- Manu's Design and Engineering Insights: He draws parallels between graphic design and software engineering, underlining the importance of user needs and the evolving nature of software projects.

- Alex on Rails Talk: He shares his experience building a chat application for RubyConf, detailing the challenges and technical skills he applied, including user authentication and chat room functionality.

- Neil's Interactive Data Visualization: He presents concepts of data visualization with JavaScript, showcasing how to display complex data in understandable formats for better insights.

- Benjamin's Pink Sombrero Concept: He humorously discusses using the "pink sombrero" as a metaphor for acknowledging out-of-band processes in software development, leading to better communication and retrospectives on errors.

- Gary's Top Ruby Gems: He shares his favorite lesser-known Ruby gems that can enhance productivity and code management, explaining their benefits and functionalities.

- M's Observability Stack: He advocates for self-hosted observability solutions in Ruby applications to improve telemetry and debugging efficiency, encouraging developers to explore open-source alternatives.

- Justin on Active Agent: He introduces Active Agent, a framework built on Ruby for AI applications, highlighting its integration with various AI models and tools.

- Community Engagement and Mentorship: Many speakers emphasize the importance of community involvement, sharing experiences, and being proactive in fostering relationships within the Ruby and tech communities.

Overall, the videos emphasize not just technical skills but also the value of community, collaboration, and support within the tech industry.

Lightning Talks
Sarah Mei, Noah Durbin, Sunjay Armstead, Manu Vanconcelos, Alexander Mitchell, Neil Hendren, Adam McCrea, Elshadai Tegegn, Benjamin Fleischer, Ken Maeshima, Gary Tou, Ronan Potage, Jeff Casimir, Michal Kazmierczak, Justin Bowen, Mariusz Kozieł, David Hill, Richard Schneeman, Rhiannon Payne, and Cindy Backman • November 14, 2024 • Chicago, IL • Lightning Talk

RubyConf 2024

00:00:15.240 all right welcome to lightning Coxs at Ruby conf 2024 this is often the most
00:00:20.439 exciting slash interesting part of the of the show each show is different don't
00:00:27.119 know what we're going to get this time but I'm excited about the lineup We Have Tonight of 14 5 minute talks 5 minutes
00:00:34.000 or less and I do have a Gong and I will be ringing it if you go over your five minutes just setting that out
00:00:40.640 now so let's just get right into it our first two speakers we're going to start with Noah who's going to tell us about
00:00:47.360 intro to Long chain. RB and we have Sanjay who's going to tell us about
00:00:53.520 Advance how to propel the next generation of technologists so I could I have those two please up on the stage
00:01:10.400 wo all right so my name is Noah and I'm gonna
00:01:16.280 be you you may recognize me from who wants to be a ruby engineer um this
00:01:21.720 morning uh and I'm going to give a quick intro to Lang chain RB so I'm new to
00:01:26.920 Ruby and programming I started at Turing school this past March and graduated
00:01:33.799 September um learned backend development Ruby on Rails uh partway through the
00:01:39.680 program I ended up in an internship from meeting some people at a Meetup um
00:01:46.119 working on an AI powered um restaurant recommendation um app and one of the
00:01:54.040 things that we worked with was the open AI API and it was really cool what it
00:01:59.360 could do how it powered the application but one thing that we realized was that it wasn't very flexible the way we had
00:02:04.560 implemented it and it would be fun to be able to experiment with all the other llms out there the space is moving so
00:02:11.560 quick and there's different options so it' be nice to try those out um and so I got the chance to go to
00:02:19.319 Rocky Mountain Ruby and heard a talk um about Lang chain RB and it seems like it
00:02:24.599 solved some of these problems that we are facing um so the most basic level Lang chain RB is a gem that lets you
00:02:31.560 interact with llms you can see here that I create a new instance of the llm
00:02:37.879 and request chat completion at the bottom and this is what that chat completion looks
00:02:44.080 like and what we can do is switch it out for Claud in this example and you just
00:02:50.760 change two lines of code so back here it said open Ai and the API key was open AI
00:02:57.319 API um but over here it's claw it's just two lines and we get a different
00:03:02.720 response so we can experiment really fast and quick with all the different models out there um this was just the
00:03:09.280 open Ai and anthropic models but you can do it with mistal Gemini olama you can
00:03:16.680 run local models it's really cool um so that's the first advant the
00:03:22.080 second thing I wanted to talk about is assistance so assistants are
00:03:28.360 um threads that you can start with not thread as a computer thread but just
00:03:34.239 like a conversation thread with the LM that you give specific instructions to um and with these assistants you can
00:03:40.680 give tools to as well um and tools extend the functionality of the llm um
00:03:46.799 they can get realtime data an example would be using a math tool that uses a
00:03:51.840 calculator instead of just using the LM itself so you get much more accurate
00:03:57.640 data um Show an example of this I went back to a turing project called Sweater
00:04:04.120 Weather where we got where we would use an API for directions giving two cities
00:04:11.799 um calculating the distance and getting the weather upon arrival so you could say do I need a sweater when I arrive in
00:04:19.160 New York or something like that um so to do this I gave the assistant access to
00:04:27.520 two different tools one tool tool to get directions um and so that's here I
00:04:33.840 Define the parameters that go in um the name of the function and in this case
00:04:41.720 the assistant chooses when it gets to use the tool so it's not you the user
00:04:46.759 defining when it uses the tool to get the directions if you it'll just decide I need to find the directions I'm going
00:04:53.080 to use this tool and that tool Works however you you've programmed it um in
00:04:58.720 this case it just makes it all to the map quest API to get those directions
00:05:04.759 um so here's that tool right there um you can see it's just making a simple
00:05:10.080 API call and here's the coordinates same sort of thing getting the
00:05:18.360 location and here's where we actually give access to those tools you can see on the bottom two lines um defining the
00:05:25.240 tools that it has access to and here's an example of that I don't
00:05:30.639 know if it's playing um so I start the app in my
00:05:36.280 terminal give a question for directions and the weather when I arrive based on
00:05:41.400 when I leave it does all the calls that it needs to
00:05:47.680 do this part takes a little while but basically it's it's asking for the directions calculating the time and then
00:05:54.440 asking for the time when you arrive um and here we get the response
00:06:01.639 back um it calculated that all for us and we didn't tell it to use those tools
00:06:07.240 it just decided to um so I think this could be really fun it's an easy way that you can add llms into your
00:06:13.440 applications there's a ton more that I didn't talk about here um but go check it
00:06:26.000 timer starts hi good evening my name is Sanjay I am a
00:06:32.720 software engineer based in uh Central North Carolina and I'm proud to be joining you uh this uh evening as a ruby
00:06:39.880 comp scholar so huge shout out to the Ruby Central team uh the wonderful welcoming Ruby Community here tonight
00:06:47.080 and um as well as my guide Fred thanks Fred um and I also want to say thanks to
00:06:52.440 the many generous sponsors that made my very first uh technical conference possible so tonight I'd like to start
00:06:59.360 with with a very simple question how did you get here so how did you get where
00:07:04.560 you are today in your career so when I reflect on that question I know that I'm
00:07:09.680 here in large part because of the generous people that made it possible for me to be here those who chose to
00:07:16.280 advance my career and uh they were Visionaries like my mentor Amy who can
00:07:21.759 handle the strange and very curious Mind of a designer turned engineer um there were also leaders like Chelsea who uh
00:07:29.639 really showed me the ropes and showed me how to take a positive outlook they were friends like my friend Peter um who's
00:07:37.039 with me tonight um and still answers questions I have about Ruby uh but unfortunately my experience is not
00:07:44.159 shared uh across the board there are still many out there trying their best
00:07:49.840 but only kicking up dirt as my friend Adam cuppy would put it they are stuck in the middle and for those Stuck in the
00:07:56.199 Middle leveling up feels like a corn maze and um you know identifying a mentor is extremely complex finding a
00:08:03.080 job is really discouraging now on the other side of this not only our Junior
00:08:08.440 in midlevel technologist struggling to level up but your company's bottom line is also at stake so without a thriving
00:08:16.639 pool of Junior and mid-level technologists your company will have less diversity of ideas over time and
00:08:22.800 you also solve fewer problems uh for your customers so when I see a decrease
00:08:28.520 in Talent a decrease in Innovation and a decrease in solutions to me the simple math is nothing but trouble so tonight
00:08:36.200 I'd like to invite you to join me and drawing a Line in the Sand so oh
00:08:44.279 sorry hold on there we go yeah sorry about that uh
00:08:49.519 I would like to uh invite you to uh draw a line in the sand with me uh so
00:08:54.760 basically what I'm saying we're enough is enough uh no more flly wondering engineer
00:09:00.000 no more winning bottom lines no more stuck Talent tonight like the wonderful humans that were part of my journey
00:09:06.920 let's choose to advance the next generation of technologists so a few ways that we can do that is we can
00:09:12.880 create opportunities for those ahead of us and behind us so if your company's hiring you can advocate for junior and
00:09:20.040 mid-level talent you can also help review resumés and hold whiteboarding interviews and another thing that you
00:09:26.000 can do if you find yourself as a um a early career technologist you too uh can
00:09:33.680 advance the next generation of technologist by swapping resumés and making introductions to your
00:09:39.720 network another way to do this is you can share your uh domain and Technical knowledge through par programming you
00:09:46.120 can also help demystify those weird words that only people in your industry use uh you can write blogs and also
00:09:52.480 write very helpful PR comments to just say like looks good to me but like actually say what are the next clear
00:09:58.120 steps and uh finally we can invest in mentorship and cultivate relationships
00:10:04.160 so make friends like what we're doing here this week uh be mentored Mentor others make other mentees and mentors in
00:10:11.279 fact um I spoke with Andy at Ruby friend uh first Ruby friend this past week and
00:10:16.480 he said they have a huge need to fill for new mentors on their platform so we have lots of opportunity to act now so I
00:10:24.600 rolled all of these four points into something that I'm calling the advanced Manifesto so please pull out your phones
00:10:30.279 don't be shy uh you can scan the QR code in the screen or go to advanc manifesto.
00:10:35.680 comom and you can sign a pledge and by joining tonight um you can join me and
00:10:41.200 rethreading the Very fabric of our industry uh this a great first step to uh advancing the next generation of
00:10:48.120 technologists so again to to wrap up here so together we can create opportunities for those ahead of us and
00:10:54.839 behind us uh we can share our knowledge both our domain and Technical knowledge we can invest in mentorship and we can
00:11:01.639 cultivate relationships also as an added bonus if you sign while we're here in Chicago and you come see me I'll give
00:11:07.639 you one of these fancy stickers they're holographic so uh definitely come and see me and um I would also love to talk
00:11:15.079 to about this topic um again that uh website is advanc manifesto. comom thank
00:11:20.240 you so much for being the lovely people who made it possible for me to Advance in my career cheers my friends
00:11:31.240 hello I'm Manu I well can come say high to be on
00:11:38.800 or in person and I have been working as a Bean software engineer for almost two
00:11:44.680 years at a nonprofit and before that I worked as a long time for I worked for a
00:11:50.399 long time as a graphic designer and I'm here today to talk about software engineering and graphic design so they
00:11:57.240 are actually very similar how you work what you do is kind of different but the process of how you get
00:12:04.160 to end results is very similar and what is that process it is
00:12:10.399 about figuring out how to best communicate through media so how to get a message across to other people using
00:12:16.399 Media or if you want to think about it from a practical point of view it's thinking about you your client what they
00:12:23.320 want to achieve to communicate their users customers Technical and budget limitations among any other things many
00:12:30.360 other things and this process is design so of course of course they're
00:12:37.160 going to be differences we are dealing with different Medias with paper versus
00:12:42.519 bits and bites but I think the big one is that at some point graphic design projects tend to be done and the way
00:12:49.079 they evolve and die is different than digital projects so what does that
00:12:54.160 process looks like for graphic design I'll show some short examples from an exhibition I worked on it was about
00:13:01.079 telling the story of the museum from its documents there were many decisions that we made based on different needs from
00:13:06.959 the museum and its users from the many documents came the decision to use different typographies it was a way to
00:13:14.160 evoke that sort of messy feeling that documents can have and then there were technical decisions like when deciding
00:13:20.880 what exercise placement we were always thinking if it would be comfortable to read too high too low too small too big
00:13:29.199 and for the catalog we made some cutouts you could mix and match document parts and mix and match the title itself like
00:13:37.079 the same way we did in other pieces and on the technical side one
00:13:44.519 paper might be more comfortable for reading one for photo printing so it shows different papers when you do that
00:13:49.639 you need to think about the quantity of pages because printers usually work with 16 32 48 pages booklets and even taking
00:13:58.480 this and much much more into consideration not everyone's going to like it and some people are going to be
00:14:05.040 very passionate about it so how does this translate to engineering it's the same as before you
00:14:12.160 are still using media to communicate so you are still thinking about your client what they want to achieve and
00:14:17.720 communicate their users Technical and budget limitations and when you think about
00:14:23.120 Ruby when it was first created it had one user and that users's needs wants
00:14:28.320 were to make a scripting scripting language to make it op um to take from a
00:14:33.920 few different languages to bring him joy and those were some of the things that guided him in his choices but more
00:14:40.839 people were interested and here we are now over 30 years later Ruby's needs have changed
00:14:47.800 because now instead of one user we have a whole community so now instead of one user's needs guiding its choices is the
00:14:54.399 community needs guiding its choices so the way it's designed has changed and I I think here the big difference comes
00:15:01.720 back it's alive and I think that's super cool what I like the most about software
00:15:06.920 development is how projects can feel like living things so you can go back and see things that were adopted change
00:15:13.360 dropped and I be all because of the users needs the
00:15:19.199 community so all that said whether it's one person or a community graphic design or software engineering it's all about
00:15:26.320 process interaction communication between people it's all still media and I really like this quote from
00:15:34.759 Matts from an old interview don't underestimate the human factor even though we are in front of
00:15:40.440 the computers they are media we are working for human with human thank
00:15:51.519 you hi everyone I'm Alex and this is how to be a ruby scholar do a project and accidentally break your laptop uh so
00:15:59.240 first off who am I uh I am from Atlanta Georgia born in raised I'm a software engineer at Caril and I'm a ruby scholar
00:16:06.160 and First Time ruby compend okay so we're going to begin at the end um that
00:16:13.519 right there is a broken laptop screen and also a broken heart uh because I was
00:16:21.000 simply just doing normal programming activities um and I might have gone a
00:16:27.240 little too hard this time um just joking uh this was simply like a
00:16:33.160 freak accident um and yeah so yeah so
00:16:39.199 what exactly was I doing and how do we get here so essentially I was building a chat app for rubycon and it is called
00:16:48.120 rails talk it is a chat app for Chatters made by a professional chatter um and my
00:16:54.199 goal with it was essentially to build a platform to facilitate
00:16:59.560 a to facilitate Community basically allow people to create a community and facilitate that
00:17:06.160 Community just being able to chat about stuff so I did some brainstorming on what I needed found a guide and I worked
00:17:11.959 through it and this is what I got um as you can see this is a chat room about
00:17:18.039 recipes and Gordon Ramsey and Marco Pierre White are talking to one another
00:17:23.280 uh I already have celebrity endorsement it's really great um so let's talk about features and
00:17:30.360 takeaways so features um in this app are that you can sign in you can create a
00:17:35.640 room there's group chats and then there's private chats um things that I learned I learned about sessions action
00:17:42.000 cable turbo and authentication uh all really cool things and lastly like what
00:17:47.960 would I like to add because I didn't really get to finish it because my
00:17:53.039 laptop broke and I didn't get it I didn't get my laptop until an hour before my flight um so I would like to
00:17:59.880 AB add the ability to remove users and also clean the app up because uh the app
00:18:05.559 does cool things but it kind of looks not great or doesn't look the way I
00:18:10.600 wanted it to uh so I'm just going to show off some of those features so this is a user sh signing in this user is
00:18:17.799 Gordon Ramsey uh he is a smalltime cook I don't know if you guys know about him
00:18:23.200 uh and this is the other feature this is uh so showing an index of rooms and also showing that you can actually create uh
00:18:31.200 a room and you can add to that um list of rooms and then the next thing is a uh
00:18:37.280 private chat which is between Gordon Ramsey and Marco Pi white and this is Gordon spamming Marco and he's obviously
00:18:43.360 doesn't want to talk to uh to Gordon and that's honestly it uh my laptop works
00:18:48.679 now and thank you all hi everybody I'm Neil um I'm a
00:18:57.360 scholar as part of the scholars and gu program here um I went through the same boot camp that Noah the first Speaker
00:19:03.720 did and um I'm going to talk about a subject that I have a lot of experience with and that is data visualization
00:19:10.600 specifically interactive data visualization and I'm going to do that through the medium of JavaScript in the
00:19:17.440 HTML 5 canvas what is data visualization um you can show how
00:19:24.760 variables are related uh find Trends on the right we've got the S&P 500 100 on the left we have the correlation between
00:19:31.400 temperature and um number of Sals and these are just hypotheticals on the left
00:19:36.799 um you can create visual interpretations of large data sets that might be
00:19:42.240 difficult to interpret otherwise um such as this map of the United States this
00:19:47.400 population density map um or you can take data from for for example a
00:19:53.280 company's sales and um get a visualization of where your re new is
00:19:59.080 coming from uh through something like a bar chart but why would we want JavaScript
00:20:06.360 uh HTML and CSS well HTML and CSS allow for precise placement of elements on a
00:20:13.000 screen using simple syntax so it's really uh just giving you a simple way to put things where you want them and
00:20:20.159 then the JavaScript allows for interactivity interacting with the
00:20:25.440 document object model uh the HTML and this provides the ability for users to
00:20:30.679 change inputs and the final thing before we get into uh our examples here is the HTML 5
00:20:38.880 canvas this is a relatively new technology that uses Primitives to create images um in two Dimensions it
00:20:46.520 uses things like lines ellipses text uh or you could just edit pixels
00:20:52.760 individually uh on top we have the mandle BR set and on bottom we have a 3D
00:20:57.840 rendering of plin noise which you can also do with the HTML 5
00:21:04.039 canvas this is uh a data visualization I made of the spread of disease over time
00:21:11.480 uh and uh the red line here represents the number of people infected uh blue is the
00:21:18.840 number of people susceptible to being infected and the green is number of people recovered I figured this would be
00:21:24.600 relevant coming you know out of covid everybody went through that we all know what it was like uh on the bottom we
00:21:31.279 have time um I forgot to label that sorry the bottom axis is time and the
00:21:36.720 left axis is number of people so the population of the US is about 300 million and this is over the course of
00:21:44.200 about a 100 days uh these are the differential equations used to uh create this graph
00:21:50.840 I'm not going to go into too much detail about these but um we use JavaScript to
00:21:56.840 solve these differential equations and now it's time to make it interactive
00:22:02.760 using JavaScript so you can use sliders to adjust different um parts of these
00:22:10.400 differential equations such as the transmission rate here as transmission rate goes up uh the disease spreads more
00:22:17.720 quickly as recovery rate decreases um people stay sick for longer and the
00:22:24.039 disease spreads to more people as it gets lower it takes takes longer for the
00:22:29.159 disease to spread uh the number of people initially
00:22:34.320 infected essentially just uh determines the incubation time
00:22:41.200 for the disease and the number of people initially immune also just kind of
00:22:48.400 affects everything obviously less people will be infected if there are more that are initially
00:22:54.679 immune and then um one phenomenon that I found when I was
00:23:00.640 like looking through the papers to um learn about this model is that the ratio
00:23:07.200 of transmission rate to recovery rate when it is greater than one so in other words when beta on the left is greater
00:23:14.520 than gamma on the right at the top there um the disease doesn't spread and you
00:23:19.880 end up only infecting here 30 people so this is available online and
00:23:26.960 um I'm going to leave 30 seconds here for anybody to take a picture if they want uh I didn't use a QR code because
00:23:33.679 it is not mobile friendly I spent like four hours on this you know I wasn't about to uh put a ton of effort into
00:23:39.880 making it mobile friendly but um you can play with it if you want and I would
00:23:45.080 encourage many of you to experiment with the canvas element and create graphics
00:23:51.200 on the front end it's really fun and yeah so there you go thank you
00:24:01.919 so this is the air screen that broke me it's okay if you can't read it or can't
00:24:07.480 understand it because neither can I I was making a simple change to our marketing site which was built with
00:24:14.279 nextjs and I had committed the unforgivable sin of putting a div inside
00:24:19.640 of a P tag it's it's embarrassing and shameful I get
00:24:25.600 it and this was really just kind of the straw that made me decide to rebuild our
00:24:31.399 marketing site for the fourth time but this time I decided I was going
00:24:37.720 to use rails now you might think rails for a marketing site is it Overkill is
00:24:43.320 it the wrong tool for the job I hope to convince you that it isn't or at least get you to rethink an assumption that
00:24:50.159 I've had for a long time which is that content sites should be static sites now
00:24:56.120 what do I mean by content sites I mean you know a personal website a marketing website anything with just like some
00:25:02.000 landing pages maybe a Blog maybe some documentation for a long time I assumed
00:25:07.240 this was the way if I didn't use just static HTML files for this kind of site I was somehow a bad person a bad
00:25:14.600 developer and admittedly static sites are great they are simple fast and cheap
00:25:20.320 because there's no moving Parts there's no work to do this just shipping HTML to
00:25:25.600 a browser right but we don't write everything single HTML file by hand and that is where static site generators
00:25:32.360 come in they give us some layouts some templating tools that produce the static HTML that we can then throw on any web
00:25:39.679 server but static site generators do come with a cost because the magic of
00:25:44.919 generating those that HTML needs to happen somewhere and static site generators move that from the runtime to
00:25:51.720 the build time which is totally fine it's just not free like any other tool
00:25:57.559 there's always going to be a learning curve and if you're already fluent in those tools that's fantastic I wasn't I
00:26:04.720 kept trying to pick the right tool for the job but I was moving slow I was
00:26:10.480 frustrated I realize now that instead of the right tool for the job what I really needed was the right tool for the team
00:26:18.120 because the team is who writes and maintains the code right and my team is all rails devs there's just three of us
00:26:25.080 we're a tiny team and we're going to have different needs than some other teams and for us rails makes a lot of
00:26:31.200 sense we're fluent in it we're very fast with it but as the saying goes if all
00:26:37.000 you have is a hammer everything looks like a nail I say so what if it helps us move fast and brings us joy I'm going to
00:26:44.760 be okay with that so we've now migrated from nextjs to rails so let's do a quick
00:26:51.039 comparison between these two sites looking at some basic performance metrics they both performed pretty well
00:26:57.760 um but rails was noticeably faster you know thanks to it being a minimal rails app no database mostly just markdown
00:27:05.039 files and deployment speed similar the rails build was 35 seconds on Heroku the
00:27:12.440 nextjs build was 1 and a half minutes on netlify hosting is where static sites
00:27:18.559 really shine because you can't beat free and there are a lot of free options for static sites I would argue that a $7
00:27:26.679 basic dyo on Heroku or something similar on render or another you know platform
00:27:32.000 is really just a rounding error for any marketing site so I'm going to call it mostly a wash there um let's also look
00:27:38.919 at scaling because if our blog posts go viral we need to make sure that we can scale up to handle it again it's hard to
00:27:45.720 beat static HTML here um but a lightweight rails app can scale really
00:27:51.120 well and as a safety net you can always add in autoscaling we're an autoscaling company so of course we dog food our own
00:27:57.399 product kind of a moot point on our marketing site because we've never needed more than a single dyo but let's
00:28:03.799 go back to what sent us down this path what happens if we put a div inside of a P tag on our new rails app right oh it
00:28:10.919 just renders it's still invalid HTML you still shouldn't do it but it doesn't blow up and that's nice so am I saying
00:28:18.440 all static site generators are bad and you should use rails for everything definitely not static site generators
00:28:24.640 are great tools they might be perfect for your team there is no right tool for the job the
00:28:31.240 question is what tools will help your team move fast and maybe you decide that
00:28:36.679 web sites and web apps are all just nails and grab your favorite
00:28:42.840 Hammer scan this for a video I made all about our new marketing site and my contact info I would love to hear from
00:28:49.200 you thank you very much hi I'm El I'm exploring XI spting
00:28:57.279 sh at IA State University so I'm going to explain what
00:29:02.399 that means okay imagine a world where decisions are profoundly made that
00:29:08.919 affect our lives whether in health care hiring criminal justice are all made by
00:29:15.840 machines and those machines are make decisions that humans can't understand
00:29:21.880 why so as AI becomes more Universal these scenarios are increasingly re and
00:29:28.640 the question becomes how can we trust AI systems when their decisions are opaque
00:29:35.440 that's where explainable AI comes in okay who here knows about the compass
00:29:42.000 data SE if you don't let me explain so in 2016 an AI algorithm was used in the
00:29:48.600 United States criminal justice system to predict the likelihood of defendants reoffending and the system it was called
00:29:56.000 Compass that's an a ration and it was meant to help judges make informed
00:30:01.080 decisions about Bill and sentencing but here's the catch the
00:30:07.600 algorithm the algorithm's decision making process was completely hidden and when journalists investigated they found
00:30:14.399 Compass was disproportionately labeling black defendants as high risk even when
00:30:19.840 they hadn't re re offended meanwhile white of white defendants who had
00:30:25.360 committed future crimes were more often labeled low risk so this opacity in
00:30:30.559 decision making and the impact it had on people's lives exposed the glaring need
00:30:36.440 for explainability and interpretability I'm going to dive into the definitions okay what does
00:30:44.360 interpretability refers to so let's think of a simple linear regression that
00:30:51.000 predicts housing of prices so you can look at the wids of each variable such
00:30:56.200 as a bedroom number or the ZIP code where that house
00:31:01.960 location is in so we would know what's affecting the price directly that's
00:31:08.399 interpretability and when we go to explainability it's more one step further it's about
00:31:15.480 generating explanations and that are meaningful to humans for example imagine a doctor
00:31:21.279 using an AI system to diagnose a Cancer and the doctor doesn't need a prediction
00:31:26.600 they need to know why the AI made the decision it made so if the AI decided to
00:31:33.440 name like one disease the doctor would need to know why so that they can make a
00:31:40.279 well well-informed judgment that's explainability okay explainable AI in
00:31:47.200 action so in 2018 Google developed an AI model to to diagnose diabetic re
00:31:55.720 retinopathy so that was the cause of blindedness but it wasn't enough for
00:32:02.200 opthalmologists to just know if uh that
00:32:08.000 scan of the eye is like suggesting uh this disease or not so
00:32:15.279 Google created a heat map overlay uh a heat map overlay that
00:32:20.559 highlighted the areas in the retinal image so that they made this AI decision
00:32:28.200 more explainable but there's more to this
00:32:34.320 than just making things easier to understand explainable AI uncovers biases helps us make ethical choices and
00:32:41.760 enables AI systems to be audited and improved a compelling example would be
00:32:47.320 if you asked for a like a credit loan or
00:32:53.039 a loan and you'd be denied by just saying you have low credit worth it
00:32:58.360 doesn't explain much so you would need to know if there was a viance against your ZIP code against your age against
00:33:04.720 your gender and explainable a i system can point out specific factors that lad
00:33:10.159 to that decision so what you can do if you're a
00:33:17.440 maral learning developer incorporate explainability from the start if you're designing an AI
00:33:23.519 system you can promote model transparency and you can start from easier models and go to the complex ones
00:33:30.840 by integrating transparency into it if you're working at an org that uses AI
00:33:37.080 you can push for an audit of bias and fairness and if you're attending Ruby
00:33:42.159 com make sure to advocate for interdisciplinary collaborations engage in global discussions and policymaking
00:33:49.519 and educate and share knowledge thank you this is my latest
00:33:58.080 yeah so uh it's really great to be here that was a great talk that was really fantastic that was very very serious and
00:34:04.279 very very good content and high quality slides I really liked it my name is Benjamin fler uh I work for a company
00:34:10.440 called xbe where I uh my title is principled developer it was originally a
00:34:15.800 typo I try not to call myself the principal developer though because that's problematic uh can I get everyone
00:34:21.240 to stand up here very briefly it's good to get like a little stretch out we're going to get our body here now um
00:34:28.480 I think Aaron Patterson did this once and I just thought it was awesome uh so I'm gonna I'm G to take a picture of everyone all my Ruby friends here hey
00:34:35.520 Ruby friends hey everybody hey oh we got some highs back there amazing all right all right slides
00:34:44.560 here we go um so yeah you can stand or say as As You Wish here it's totally
00:34:50.480 great uh so the company again is called XP uh this is a slide my boss made he makes amazing slides I make slides that
00:34:58.079 look like this uh the company uh so we had so we had this idea I read an
00:35:03.240 article in 2011 about Cowboy coating and the pink sombrero and I uh the idea kind
00:35:10.720 of came with me and um well I don't have a pink Sombrero but I have a little
00:35:16.800 bitty Sombrero uh and I started using this idea so the
00:35:22.880 idea with the pink SoMo is that sometimes you do things in production that aren't great but you still need to do it uh so if you're like like logging
00:35:30.200 into the production Council what what should you do well you put on a pink SoMo this is back in when we had offices
00:35:36.960 uh and you're like oh something is happening here and people could go and see what's going on uh at the desk of
00:35:44.000 the person with a pink somero so I always sort of had this idea of like uh a place to to acknowledge that out of
00:35:51.359 process things happen and you can make a process for your out ofprocess things
00:35:58.599 and now at my company we get emails that say things like this I have a mass sombero
00:36:04.960 request uh and at our conference that we had in Kansas City our Horizon Conference is we
00:36:12.040 do horizontal construction which is roads vertical construction we don't do
00:36:17.920 uh people love getting sombreros uh and it's like totally
00:36:23.119 ridiculous uh that this sort of blog post turned into a way to manage our out
00:36:29.079 of uh band changes that also like people are actually they have problems when they ask us for some Burrows uh and yet
00:36:37.160 here here we are handing them out and getting funny pictures my team in India I I went to go visit in Goa I and also a
00:36:45.680 squish mellow uh yeah you know who you
00:36:51.240 are now I I wrote a a few words here about what Saro requests are uh a sber
00:36:56.640 request is basically what I was saying before when you have a request needs special handling and it just it's just a
00:37:03.119 way of saying like something unusual is happening here what it is is not exactly
00:37:09.560 clear anyway uh and we have a value proposition that we're making with that is that um one of
00:37:17.920 them is we're tracking and validating a dangerous change someone says like the invoice is wrong we paid the person the
00:37:25.000 wrong money uh can you you please change it I'm like well yeah but I'm not going to
00:37:30.520 just change it we're going to go through a process here to make sure that yes it's actually the right change and it
00:37:35.760 should happen um a lot of words on the slides again I
00:37:41.160 just I'm not great at making slides um they say it matters to know why
00:37:47.319 things went wrong because then you can help to prevent them you can make the product better and you can make the
00:37:52.839 process better and you acknowledge that it's worth knowing why it happened not just you want to get the fix out and
00:37:59.520 that's how uh we make the world a better place one uh sombero at a time uh here's
00:38:04.880 an example of an incident that we have uh in our in our platform uh Joey Bag of Donuts got paid the wrong amount uh it
00:38:12.079 actually should have been Jamie Baga Donuts uh not no relation uh and we have some uh line
00:38:20.200 items there correct the shift striver revise the invoice and reexport the
00:38:25.480 invoice uh life is funny like that so I say you know wear a funny hat uh embrace
00:38:31.440 the process of having out ofprocess changes uh the company I work for is xbe
00:38:37.960 uh x with dashes in it xb-e and I'm on Mastadon as hula at
00:38:44.200 hacker. and I'm on GitHub as BF4 I'm happy to uh talk to you and thanks
00:38:54.800 everybody hi y'all I'm Ken you can find find me at these links here I'm an intern finishing up at Deep cast where
00:39:02.160 we're making tools for podcasts and I'm a ruby scholar really happy to be
00:39:10.480 here what I wanted to talk about today was uh touch on Ruby for good if you're not familiar with Ruby for good uh we
00:39:18.200 build open- Source web apps to help non-profits you may have heard of Casa
00:39:23.359 and human Essentials we're deploying another app right now called homework Tails where we're supporting uh Pet
00:39:29.960 Rescues and shelters and when I started on this project was in January this is the first
00:39:36.920 PR I worked on it says as staff I can create a pet and draft so it is not
00:39:42.480 visible to Fosters or adopters and this uh line at the bottom kind of highlights
00:39:48.920 one of the things that I really learned working on this PR and PRS that
00:39:55.599 followed so looking at the code that existed already in the app I started to notice a lot of conditionals uh in the
00:40:02.480 controllers and in the views like right here you'll see this
00:40:09.000 conditional over here we have another conditional you might be seeing a pattern if you're reading
00:40:15.280 this all of these conditionals are trying to check the user and basically
00:40:20.520 see can they do this action can they see this
00:40:26.319 information so just a quick highlight authentication authorization are separate things authentication answers
00:40:33.480 the question of who are you authorization is all about can you do this the tools that are common in the
00:40:41.480 Ruby ecosystem for authorization are pundit action policy and can can can uh
00:40:47.599 action policy I really like the defaults it has I feel like they're very rails
00:40:53.079 esque and so I picked that to rework a lot of authorization we had in homework
00:41:00.640 Tales so when you start on a project and you need some authorization you might
00:41:06.240 start with a simple piece of code like this where you just write a conditional and you're checking one thing like is
00:41:12.880 this user the author of this record then render
00:41:18.119 this you might need roles and so you might start adding roles to your users and checking those instead but the
00:41:25.240 problem with uh this approach without a framework is that your code starts to
00:41:31.160 get muddled in your views and controllers where you have all of this business logic living in your views and
00:41:39.240 controllers we can clean this up by implementing an authorization framework
00:41:45.280 uh the again this is a action policy that's one of the evil Martian tools and
00:41:50.359 so this is a policy based authorization we write a class it can look as simple
00:41:55.760 as this the method here is named to match with the action show that's in the
00:42:02.560 secret stuff controller and using very railes magic we can match that and just
00:42:09.480 use helpers like this allowed to Helper and use that to
00:42:14.960 check in this policy given whatever you give in this context in this case we're
00:42:21.400 not giving any context can we render this uh you can also do things like pass
00:42:30.280 um records and it can check the class of those records to also match so there's a
00:42:35.960 lot of magic that really makes this process really easy you can use these in your
00:42:41.079 controllers usually use that with the authorized uh method in this case
00:42:46.480 whenever it returns false from whatever uh method you're calling in
00:42:53.880 your uh policy it'll raise an error which you could uh rescue
00:43:01.680 from in uh homor Tales we've been trying
00:43:06.800 to make these roles that we've created a little bit more clear what the
00:43:15.440 UH responsibilities of each role is so we've implemented this uh pattern
00:43:22.280 breaking it into permissions I'll share a link to the code at at the
00:43:27.960 end and here's an example of some more helpers that action policy includes like
00:43:33.960 pre-checks where you can run the same check on every single rule that you define inside your
00:43:39.920 policy I'd like to thank Vlad who wrote action policy uh his book layer design
00:43:45.960 for Ruby on Rails applications if you're interested in authorization I highly recommend that and thank you Ruby comp
00:43:59.200 anyways my name is Gary to um I work for hack club and today I'll be sharing about my top five favorite ruby gems um
00:44:06.640 honestly this talk is kind of for myself it'll give me a list of gems to install whenever I start a new side project that
00:44:12.160 I'll neverly never finish um but maybe it'll be helpful to you as well um to
00:44:17.440 kick things off well actually first these gems are intended to be slightly less known uh they're really handy but
00:44:24.280 might not be in everyone's gem files so this is why I'm sh in them uh to kick things off I have a little known gem
00:44:30.800 that helps you build websites I don't know if anyone's heard of it okay
00:44:37.640 anyways the actual first gem is awesome print it prints objects and makes them a
00:44:42.960 little bit a little bit easier to read so instead of putting uh doing puts or print uh you could simply just call AP
00:44:49.880 instead and it'll basically do indentation color and everything it'll espe it's really handy
00:44:56.839 for hashes or arrays um the only downside is that the output can get a little bit long since it is doing all
00:45:02.200 that formatting um but other than that it's a gem that I always love to install
00:45:08.000 um you might notice that on the top right of each slide I'll have a QR code so if you want to check out it's GitHub repo feel free to do
00:45:14.520 so the next slide that I have here is uh hash ID so hash ID is a way to obate
00:45:21.079 your auto incrementing IDs uh it kind of helps prevent enumeration attacks because it makes it so your ID are not
00:45:27.319 available to users so as you can see uh in your URLs you'll have a string instead of a numeric ID and those are
00:45:34.720 generated based on the num numeric IDs in your database um it's important to know that these hash IDs actually are
00:45:41.640 not hashes they are reversible U but it is possible to make it harder to reverse by setting a hash or a
00:45:49.400 pepper the next gem I have is discard uh it's a gem that helps you with soft
00:45:54.960 deletion uh this is really handy if you have users uh that may accidentally delete a record and want it undone um so
00:46:01.880 instead of calling destroy you call discard and now set a discarded at column um and that will essentially just
00:46:08.440 Mark your record as discarded uh you can use a scope uh called kep to filter out
00:46:14.640 those discarded records um which that's kind of how soft deltion works and the
00:46:20.760 tricky thing here is that if you're trying to delete associations that can get a little bit difficult um the
00:46:25.920 recommended way is to have a scope inside your record that does a join and
00:46:32.040 then essentially filters out any discarded parents um so that's something to look into um discarded takes a
00:46:40.200 different approach than paranoia or AIS paranoid which is uh I think a lot of people have heard about before um the
00:46:48.520 different approach is that they don't override any active record methods such just destroy um it also doesn't Set uh
00:46:55.520 default scope the second to last gem I have is called
00:47:02.040 ASM this is access State machine and it's my favorite way to handle State and models um there are many different ways
00:47:08.440 out there you can use uh multiple timestamp columns you can use enums um however the benefit that ASM has over
00:47:16.040 those two methods is it'll protect you from indal State transitions so let's say you have uh in this case on the
00:47:23.520 screen we have a a terminated State you also have a approv State uh let's say
00:47:28.800 you can't go from terminated to terminated to approved ASM will help protect you against that when you define
00:47:34.240 your States and your valid transitions um in additionally it'll also help you set timestamp columns so
00:47:39.839 if you love to have an approved at it'll automatically fill that in for you and then the last one I have is
00:47:47.400 paper trail um it keeps a log of who what and when uh did an action uh so
00:47:55.960 it's really handy if you're going through the rails console and you have to kind of debug what happened this gives you a great way to kind of see the
00:48:02.880 timeline of all the events that happened within uh record um the downside is that
00:48:09.160 I found it can be difficult to query uh for specific data since it's all within an association called uh versions and
00:48:16.240 you have to kind of filter for that um and the key thing to know is that if you're using uh encryption gems such as
00:48:22.280 lockbox you may have to uh explicitly omit specifically
00:48:27.680 omit encrypted columns otherwise you might uh track plain text Secrets which
00:48:33.200 would be bad um so yeah those are my top five favorite ruby gems my name is Gary
00:48:38.599 and thanks for having me thank you um yeah so tuning over
00:48:46.280 documentation why that's uh the subject I'm passionate about uh some short stories about mki so um mki is a common
00:48:57.599 line Dev tool suite for Meri programmers it is installed by default on programmer
00:49:03.599 devbox and it is made to simplify my life first and by extension hopefully
00:49:10.400 every Meri programmer's workflows and life um why would you ask right like why
00:49:17.520 creating a CLI for your company well um when I joined miraki I had like a lot of
00:49:24.760 experiences and I wanted to share the good recipes I discovered um traditionally it would be going through
00:49:31.559 like a script folder in our monolith but I found that like having um autonomous
00:49:39.520 CLI would be way more practical um it's also helping uh spe speeding up ramping
00:49:46.319 up um new employees uh it also have this uh beautiful thing of unifying developer
00:49:53.799 experience um something that is like really nice like you want to have kind
00:49:59.599 of like the same elevated experience when you're a developer you like if you have like a lot of scripts that are like
00:50:07.119 made by different people they don't have necessarily the framework behind or the
00:50:12.839 good habits or standard to write these scripts so like if you have like a CLI
00:50:19.040 or particular repo with all these um recipes you can set a standard and
00:50:25.520 create like um a better developer experience uh simplify workflows um this
00:50:32.319 is kind of like self-explain explanatory um when you create uh scripts you might
00:50:41.520 just not create like the best workflows and if it's centralized and better um
00:50:47.760 looked at it can be uh more simple to work with and finally facilitate
00:50:54.480 Discovery um or script for folder is kind of like a mess it has like hundreds
00:51:00.559 of scripts and not always like super welln named naming is hard um but um
00:51:07.599 yeah having like a CLI helps with that uh by default there's the dashh option
00:51:15.040 that makes it like super easy to document and also uh discover all the
00:51:21.799 comments that you have um yeah so I wanted to also like
00:51:27.599 share with you like the some principles I kind of like came up with for uh
00:51:34.559 writing this CLI and so it needs to be easy to contribute to with core methods available to all commments um so like
00:51:42.680 sort of a framework right always list uh what is the next step document in line
00:51:49.119 what commments do um particularly with like Dash V which is verbos and be
00:51:55.960 transparent about it add links to Extended documentation for Curious people but this is not required and then
00:52:02.960 use as much contest as possible if you're like a repo you have a change ID Shan whatever and you want to like do
00:52:10.000 something with that just like pull it from the context don't ask like the user to like do that work and offer optional
00:52:18.240 optionality of course um what can be useful for the user and then use emojis
00:52:24.480 in sper uh sometime like you have have like you know like a script it's it hangs and you don't know if it's like
00:52:31.040 bugged or if it's like doing something uh have a spinner and just show it use emojis because it's fun and direct to
00:52:38.319 the point keep verbosity under like DV or D dbag
00:52:46.079 um all right yeah so next step that's an example to FAA for instance we have a
00:52:52.359 lock system and then MK lock info merge each time I would do that I would forget
00:52:57.559 to look at my phone for like Duo like it's a two two Factor authentication I
00:53:03.319 would always forget and then like 30 seconds later I would be oh yeah I need to see my phone okay so now it's there
00:53:09.319 it tells me like check my phone I also added dogs because it feels like a little boring
00:53:17.160 so uh use Spinners right like we have like mki bundle and St we have like several environment because we are like
00:53:23.200 upgrading and so yeah that's really nice nice to see like it's
00:53:30.680 ongoing in line dock like is it like better to have like the left one or the right one right you are in your terminal
00:53:36.720 you don't want to like go to like conference or like whatever uh Wiki you have in line
00:53:45.119 dog um I will go through that really quick but yeah that was
00:53:58.240 the most efficient lightning talk session I've ever been to so first can we give a shout out to
00:54:07.400 Sarah I uh am always kind of a pain in the ass before Sarah was texting me
00:54:12.599 before like are you coming I was like I'm coming I'm just a little bit late finished a little graduation thing thanks uh for coming around this evening
00:54:18.760 my name is Jeff casmer I'm the executive director of The Turning school you got to hear from some of our great alumni
00:54:25.280 and I also somewhat confused the AV people when I was like I don't have a I don't need a computer and they're like but what about your slides and I was
00:54:31.520 like slides I hate them uh so I want to give a little lightning talk uh to you
00:54:38.520 tonight kind of following on some of the things that Matts was talking about yesterday he said that the Ruby
00:54:44.440 Community is unique in the way that people bring love into this space into
00:54:50.720 the work you know and for those of you who have been in other programming spaces I I I hope that it does feel
00:54:55.799 different to here this week and I I think love is such an interesting word for programmers right where we're
00:55:02.280 supposed to be like doing nerd stuff behind our computers and instead people are talking about
00:55:07.760 feelings and love really the idea of love is like Reckless it's essentially
00:55:13.599 unwise and dangerous like when you put love into things when you allow yourself
00:55:18.760 to love you set yourself up also for hurt right when we mix our work and our
00:55:24.799 identity like when we say I am a ruby developer we're necessarily opening
00:55:30.599 ourselves up to a degree of vulnerability this is a quick Community participation
00:55:36.599 moment if you or someone you care about has gone through a layoff in the last two years give me a quick
00:55:43.000 boo boo sucks and it hurts not just because of
00:55:50.599 the uncertainty not just because the financial impact for people but because
00:55:56.000 there really like violates trust you know it violates the effort the care
00:56:01.599 that we've put into the work that we do to the people that we work with and then
00:56:06.760 they're gone and maybe it was you who had to find a transition you know and if it was I'm glad you're here
00:56:12.240 today the obvious answer is just to care less to say like I'm just here to code
00:56:18.599 it's just programming it's just work it's essentially just exchanging hours for
00:56:24.000 money but really that's no way to live you know it's it's not the way that we here I think choose to do it it's not
00:56:30.720 what brought you to Ruby conf you could be at home right now this is a late session sir okay if
00:56:39.160 today however in joining into this space you had a conversation that brought you
00:56:45.839 a little bit of Joy or helped you think differently about an idea could you give me a quick woo woo okay back here I
00:56:55.119 don't know who youall been talking to to we got to get you some better conversations it was quiet back there but no you're good uh if I ask you to
00:57:01.440 step back for a moment back to when you first entered into these spaces maybe it was a first Meetup a first conference
00:57:07.960 Etc there was probably a friend or teacher who helped you write your first lines of Ruby maybe it was some wild
00:57:16.039 comic book ridiculously called a poignant guide or was some other path
00:57:22.280 where someone put a little bit of their love out there sharing their interest and passion in this space with you you I
00:57:30.319 think about uh this French singer Edith PF said when you reach the top send the
00:57:36.720 elevator back down and I think when Matt is talking to us yesterday trying to set
00:57:43.400 the tone for these conversations and these spaces it's a reminder of like how
00:57:48.480 it came to be this way that it's not by accident it's like through this care and appreciation you know when we talk about
00:57:55.039 like being nice nice isn't really enough nice isn't what love looks like to send
00:58:01.480 the elevator back down really means like proactive taking steps we don't have to do putting ourselves at risk doing
00:58:07.799 things because we want to so here are three quick ways that you can put a
00:58:13.480 little more love into our community number one you already did it show up
00:58:19.440 you're here now good job when you show up to local events to meetups or join
00:58:24.839 Community spaces online you create space and joy for others you make it okay for them to be there and
00:58:30.920 you let them know that like this is a place where we do it we choose to engage
00:58:36.000 together number two a little bit harder one is responding to
00:58:41.920 outreach I know you got to get on LinkedIn sometimes okay people you got to answer some of those emails when you
00:58:47.760 talk with someone new someone you don't know even if it's just for 15 minutes you help them believe that there's a
00:58:53.960 place for them here you help help them find their way into this space just like
00:59:00.200 someone probably did for you you don't even have a microphone okay I'm going to be fast number three remind people of
00:59:06.599 where you come from you weren't hired for the person the developer you are today you were hired in a more Junior
00:59:13.200 less Advanced State and when you try and open the door for someone like that uh you make our community a better place to
00:59:18.920 be this is a special place the way we keep it joyful is not by protecting it
00:59:24.039 it's by growing it to welcome people in just like you and I were welcomed in
00:59:29.160 here even by Sarah and being bold enough to put just a little bit of love into
00:59:35.160 the world thank you so this talk will be a little bit
00:59:41.079 more technical sorry for that um my name is m kirak and I'm going to talk about
00:59:48.079 selfhosted observability stock for Ruby apps let's start with a quick um show of
00:59:55.200 hands the I will I'm going to ask you four questions the first is very easy
01:00:02.480 please raise your hand if you collect logs from your applications yeah almost
01:00:07.599 everyone now please raise your hand if you collect metrics from your applications
01:00:14.119 great um now please raise your hand if you collect traces on the right side so
01:00:19.400 breakdown of okay fewer now please raise your hand if you have it all correlated
01:00:25.200 so you can navigate from metric to logs and to to okay very few but I see some
01:00:32.160 hands great um okay I believe that Telemetry is the best feedback that we
01:00:38.720 can get from production environment um so we developers work in
01:00:44.359 in in a feedback Cycles so for example here here we has here we have a simplified development cycle where we
01:00:51.640 have stages like local environment CI test environment and production environment and for example on local
01:00:58.520 environment our feedback loop is produced by tests so when we make a code change we run tests to see um the to see
01:01:07.880 if the if the change does what what is intended to do the further in this process the more difficult it gets to
01:01:15.039 get uh good quality feedback from from from the next stage so if you pay
01:01:21.200 attention if you care about your tests because that's your productivity Tool uh during the development I think you
01:01:28.160 should also strive to have a high quality Telemetry data from the production environment because that's
01:01:34.640 your productivity tool when you um debug production
01:01:39.760 issues um yeah why to bother why to create your own observability stock
01:01:47.039 because I've noticed that we were trained that observability very often
01:01:52.640 gets reduced to choic a vendor in selling a gem and adding some API key
01:02:00.160 pushing into production and job done um when you do a a small stretch and you
01:02:06.079 work a little bit with some open source projects you can gain a lot of knowledge
01:02:11.440 how it works under the hood um yeah it sounds like a very
01:02:17.119 common buy versus build problem so is it better to buy off the shelf product or
01:02:24.200 is it better to build something think by gluing some open source projects I know
01:02:30.720 it's a very nuanced and you have to um you have to uh evaluate it for
01:02:36.880 yourself however I I highly encourage everyone to give it a try because as
01:02:43.319 soon as you try you will notice that you probably use pretty much the same tools that your vendor
01:02:49.680 does um yeah it's actually good but yeah
01:02:55.559 that's the that's that's a fact um this is a typical observ observability pipeline so it all starts with
01:03:02.480 instrumenting the your application then there's collector which receives the
01:03:08.400 data um here also you can apply some Transformations like sampling or
01:03:14.920 aggregation then all the data gets pushed to um storage service where where
01:03:20.960 it's persisted and it also the data is exposed by by qu API and then this data
01:03:27.960 can be accessed with some dashboards and alert managers I have demo and I have one
01:03:34.760 minute I will give it a try um yeah so here I have very simple
01:03:40.400 race application with some endpoints and I have a k6 script which will um
01:03:47.640 simulate some load so I will run my case6 script and I will go to my
01:03:54.720 local graph instance I will go to some dashboard and we should see some data
01:04:02.279 coming in soon yes um so here we have um
01:04:07.640 latency heat map which is basically uh a histogram of
01:04:13.240 latencies and here I can see that there's one end point that is very slow
01:04:19.279 it takes uh P99 is 2 seconds so from here I can go
01:04:25.400 to logs all related to this endpoint and from those logs I can go to traces to
01:04:33.319 see what was that slow um so this is a breakdown of what
01:04:38.359 is happening um during this endpoint and this is all offline I'm not
01:04:44.559 connected to any Wi-Fi this is just yeah if you are interested um I push this
01:04:52.039 setup to to a GitHub report you can check it out and
01:04:58.200 yeah and and thank
01:05:03.319 you thank you and I'm just realizing that the speaker notes aren't showing
01:05:08.960 but uh hello Ruby friends how's everyone doing you'll need to extend all right
01:05:15.359 hello I'm GNA try to make this short and sweet because we got happy hour after this and the reason I'm here is to hang
01:05:22.319 out with all of you guys and not just St my name is Justin Bowen and I'm tons of
01:05:28.160 fun on the internet I've been doing Ruby for 17 years and the last 10 years I've
01:05:34.359 been doing computer vision uh with python and the last three years I've
01:05:40.400 been doing diligence for Acquisitions and Investments with private equity and
01:05:46.520 Venture Capital firms and last year I spent some time working as a staff AI engineer at a
01:05:53.440 large 8-year-old well-funded did rails Shop with a rails
01:05:58.799 monolith and I worked on nextjs with vel's AIS
01:06:04.799 SDK and that's not really what makes me happy what makes me happy is writing
01:06:10.480 Ruby uh I am located in San Francisco and I live there with my wife and my two
01:06:16.720 cats oh and I am the creator of active agent um so before we get into active
01:06:23.359 agent I wanted to just talk a little bit about the Ruby toolbox you know the Ruby
01:06:29.160 toolbox is something that's been around for a while I'm pretty sure it's something Ruby Central maintains and
01:06:35.400 there's usually always a gem for that whatever you're doing there's a gem for
01:06:40.720 that but with the real-time computer vision I was doing there wasn't a gem for that and until last year when I
01:06:47.520 worked with Andrew Kane to fix the onx runtime Ruby library that he made uh we
01:06:53.760 weren't even able to use gpus to do inference for computer vision in Ruby we can now and it is just as fast as it is
01:07:01.119 in Python so what I want to do is Advance
01:07:06.880 Ruby's AI Dev tooling and I'm working with Ruby Central on forming a working
01:07:12.119 group to do just that so that we can get sponsorships for Grants to write
01:07:17.920 proposals to do open source and get paid to do it so active agent
01:07:26.760 active agent is a comprehensive AI framework for building AI apps in
01:07:33.279 rails active agent is more than just a cool looking ruby
01:07:39.599 gem agents take on the Persona of different uh operators to perform
01:07:46.480 actions and complete their objectives using tools based on the instructions
01:07:51.920 that you give them they can even behave like Cowboy like uh our friend in the back
01:08:00.960 with cowboy hat howdy Ruby friend he will show you how to open
01:08:06.839 source and so active agent is made up of action prompt which allows you to Define
01:08:14.880 action methods just like you do in any other abstract controller like action controller or action mailer your action
01:08:21.080 methods become tools that your agent can call to render information to the user
01:08:27.239 in generative UI something I got from nextjs and also retrieve information and
01:08:35.000 with the generation provider you're able to interface with different generation provider backends like open Ai and
01:08:41.199 thropic all with a single symbol change and a string change for the model with Q
01:08:47.799 generation you can just generate later just like you deliver later with a mailer and with streaming you can stream
01:08:53.799 content back to your agent or or to the user with action promp active that's
01:09:01.400 typo with action prompt uh you get Dynamic prompts and generative
01:09:06.679 UI so the generation provider is that common interface to interact with open
01:09:11.799 Ai and more and streaming with oh last
01:09:17.239 slide's the most important if you want to learn more about the Ruby AI working
01:09:22.520 group or active agent you can sign up for the newsletter and you can find the
01:09:27.920 repo test it out contribute give feedback pull requests are welcome thank
01:09:38.960 you okay I realized that I did that exactly the same as I'm doing that every
01:09:45.759 time so I come with the lighting talk I decided to do it one and a one and a
01:09:52.440 half hour ago and it's the same like my yesterday talk that I was on the speaker
01:09:59.960 agenda not even week ago so I'm again here and yesterday I have a talk about
01:10:06.320 Ruby Europe and why the community is so important and why the locals meetups are that important and there were so many
01:10:13.120 questions so I decided to bring my old presentation to show you why it's important to attend those local meetups
01:10:20.239 to attend to to present on those local meetups and why it's so important to
01:10:25.880 organize them so let's start with the attending so it's worth for attending
01:10:32.239 especially when we all now working remotely it's it's really good to meet each other each other in person you
01:10:39.920 exposure to the new ideas new tools new best practices and these exposures
01:10:45.320 inspires you you can bring your idea for your liking talk your talk or your maybe your open source or even startup and you
01:10:52.880 can find mentors there or support all the in their careers and there is also really
01:11:00.600 important part which is most important for me it's this build relationship with
01:11:06.120 this likeminded professionals you can discover job opportunities and collaboration on those local meetups and
01:11:15.280 uh you can you you can make a lot of friends you meeting with those people every month for two four hours to
01:11:21.480 drinking beer talk to them and you can learn also something in in the meantime and why it's so important to
01:11:30.120 present to present it you basically you contributing back to the community by
01:11:36.120 sharing your expertise you establish yourself as a expert in that topic and I
01:11:43.719 can I can highlight from my expertise how important is when the candidate has
01:11:49.080 proven their in their resume that they have presentation or articles written
01:11:55.040 all already and doing a presentation is also really important to improve your
01:12:01.440 communication skills so you learning how to communicate how to speak to people
01:12:07.920 and it's really difficult to explain something complex to those who are not
01:12:12.960 familiar with the topic and that this skill can be helpful for you when you're
01:12:18.520 talking with your client or not technical client and in your team in general and these skills are really
01:12:24.880 important important especially now in this AI era for all of us for for
01:12:30.639 engineers and teaching is also learning and why it's so important to
01:12:36.120 organize you develop your Le leadership and organization skills You're Building
01:12:42.199 visibility and trust you get new talents don't be afraid of that companies make a
01:12:49.159 big effort in contributing into the community to get back to to get talents
01:12:55.239 to attract potential co-workers and you create a sustain a supporting
01:13:01.639 environment for for other people to grow for to stimulate also your team and your
01:13:08.360 community and remember to don't go alone to find people to find other
01:13:15.280 organizers they can help you co organize sponsor and bring people repost or
01:13:22.040 present something and believe in your effort so whatever you attendee presenter or
01:13:31.080 organizer or any other contribution into the our community I will tell you a
01:13:37.159 short story so former CTO of visuality uh around N9 years ago decided
01:13:43.400 to make a small course on the University he showed up and he was he might be
01:13:51.880 disappointed seeing only six people on the lecture hall all those students uh
01:13:57.840 was on the Technical University and they had classes in but they they had a
01:14:03.639 programming classes but not in Ruby maybe few few of them but all those
01:14:09.040 people was wanted to develop they wanted to explore and willing to improve to
01:14:15.960 grow and you know what at least three of them are still Ruby developers and one
01:14:21.719 of them is Yos the creator of super maybe you know him he's a speaker on the
01:14:28.159 conferences like rails World Euro RB and multiple other conferences what an
01:14:34.520 incredible career and everything thanks thanks to Shakir the the CTO effort to
01:14:40.760 bring Ruby to those several young people and keep going believe that this
01:14:49.960 impact might be not immediately but it will be in a f future and all of us are
01:14:57.600 important and let's go drink something
01:15:05.120 together does anyone have a one minute talk that they would like to do with no
01:15:11.040 slides come up and do it right now hi everybody my name is David Hill I snuck
01:15:16.679 on stage during Drew Bragg's keynote this morning um the the whole theme of the conference
01:15:23.120 for me has been community and that kind of so anyways I have been working on a
01:15:30.400 podcast the last couple of months called OD to rails conon uh it's been kind of growing out of the announcement that
01:15:36.840 rail con is coming to a close next year and the community has been the big through line for me through these
01:15:41.960 various episodes every episode is a new uh person I interview uh about their experiences at rails comp when the
01:15:49.280 announcement came that the that R comp is ending I started to feel very nostalgic and oh remember when and these
01:15:55.600 experiences and encounters that I had with people that I I admired and and wanted to have a chance to to work with
01:16:02.280 and those types of stories that I started to kind of share and talk with other people about and kind of had this
01:16:09.080 Epiphany well maybe maybe other people in the community have those types of stories too and those types of things
01:16:14.159 that they would like to share and be nostalgic about so please come listen to the
01:16:21.679 podcast perfect a perfect talk any other
01:16:26.760 takers uh hello glorious people of uh Ruby comp I'm
01:16:32.719 schnees howdy howdy uh who would like to contribute to
01:16:38.080 open source who would like to contribute more to open source who would like to be the
01:16:43.960 most amazing open source contributor in the history of all open source
01:16:49.639 contributions so uh I have a book that is all about open Source contributions
01:16:56.159 um it is how toop source. deev and I have a discount code here that will make
01:17:01.360 it free to download so you can come up and QR code it I'm going to leave it like right over here so uh it's also I
01:17:07.679 put it in the event hack day slack uh the code is hack day
01:17:13.760 2024 uh and uh the URL is how toop source. also um yep
01:17:29.800 thank you any other takers hi everyone my name is ran and
01:17:37.080 Payne I'm just going to use this as a quick opportunity to introduce myself if you don't already know me um I run a
01:17:43.600 marketing agency called SEO media and recently as of three or four weeks ago I started uh leading marketing for Ruby
01:17:50.760 Central so um I love this community I have been going to Ruby and rails events
01:17:56.480 um for the past two years now two and a half years um and just like the warmth of this community is so incredible and
01:18:02.800 it feels so good now to be part of you know hopefully creating really cool
01:18:08.560 resources and you know marketing and different things that can really benefit uh the community and the ecosystem so if
01:18:15.440 anyone has ideas for like things you would like to see Ruby Central do in the
01:18:20.760 future in terms of marketing or anything else like talk to me or find me on LinkedIn or Twitter um would love to
01:18:27.600 hear from you and yeah I think there's a lot of cool stuff that we as an organization can do to continue to
01:18:33.040 support all of you better so um happy to be a part of this and thank you guys so
01:18:44.920 maybe two more I see one okay my name is Cindy Bachman I'm
01:18:50.840 the current owner of confreaks and confreaks was was started in 2007 by um
01:18:57.600 Kobe ranquist and Charles youngl and it was started because they were at a
01:19:03.040 conference uh one of the first ones that Matt spoke at in the US and afterwards
01:19:09.360 they were like oh my gosh there was so much information he actually had 400 slides at that talk and so they decided
01:19:17.080 they wanted to film Ruby events and started conflicts um my brother is Kobe
01:19:23.040 I bought the company from him in January of 2020 I've worked with con freak since
01:19:29.239 2012 and we've filmed Ruby comp since 2017 reals conference reals comp since
01:19:36.639 2012 if you ever have questions need help I love the Ruby Community I want to help and I'm con
01:19:46.600 freaks all right I'm sorry everybody but we got to wrap it up thanks so much for being here today thanks so much to all
01:19:52.600 of our speakers and have a great time at the happy
01:19:58.360 hour this concludes today session
Explore all talks recorded at RubyConf 2024
+64