Open Source

Lightning Talks

Lightning Talks

by Teck, Mike, Claudio Baccigalupo, Fiona, Nynne Just Christoffersen, Jacklyn Ma, Jingyi Chen, Jamie Gaskins, Samay Sharma, Lee Richmond, Raimond Garcia, Chris, Chris Lawrence, Andrew Louis, Thomas McGoey-Smith, Heidi Waterhouse, Adam Cuppy, Barret Clark, Brittany Alexander, Jordan Byron, Mike Wheeler, and Kenny Browne

The video titled "Lightning Talks" features a series of brief presentations from various speakers at RailsConf 2018, focusing on topics related to Ruby and web development. Below are the key points discussed throughout the video:

  • The Grateful Garment Project: Teck and Mike, co-founders, introduce their open-source software project aimed at providing clothing to sexual assault victims and encourage the audience to support their initiative on GitHub.

  • Fiona's Journey: Fiona shares her experience transitioning from an art history major to a Ruby on Rails developer after attending a bootcamp. She discusses her pursuit of a computer science degree and how this education helps demystify Ruby programming.

  • Jackie's Checkers Game: Jackie presents her multiplayer checkers application built with React on Rails, highlighting its complex logic and the personal connections it fosters among friends.

  • API Gateway Feature: An AWS representative demonstrates a feature to generate Ruby SDKs from API models, simplifying service integration and showcasing how to enhance API management.

  • Clearwater Framework: Jamie discusses Clearwater, a Ruby framework that compiles to JavaScript, emphasizing its features like drag-and-drop functionality and real-time updates during code changes.

  • Postgres Tool: Lee Richmond discusses pgstatstatements, a Postgres extension for monitoring SQL execution statistics, which aids developers in optimizing database performance.

  • JSONAPI Suite: Lee introduces JSONAPI Suite, a JavaScript Active Record clone that generates HTTP requests, aiming to modernize API development practices for JavaScript applications.

  • Consul Platform: Raimond Garcia talks about Consul, an open-source platform designed to engage citizens in participatory democracy, allowing for transparency and public involvement in governance decisions.

  • Ruby for Good: Chris discusses the Ruby for Good initiative, focused on collaborating with charities to address significant challenges over a four-day event.

  • Memex Project: Andrew Louis shares his experience developing a Memex using Rails and a graph database, designed for organizing personal data and improving accessibility to important information.

  • Leaps of Faith: Kenny Brown discusses taking risks in career choices and the profound impacts they can yield.

  • Stickers in Tech: Heidi Waterhouse wraps up by discussing the significance of stickers as identity symbols in the tech community, advocating for their thoughtful use in representing personal and community values.

The common thread in these talks highlights the innovative use of technology in improving community engagement, personal connections through software, and advancing technical skills in the Ruby ecosystem.

00:00:10 Hello friends, my name is Teck and this is Mike. We have a favor to ask of all of you. We are co-founders of an open-source software project for an organization called The Grateful Garment Project. When sexual assault victims seek medical attention, they are asked to surrender their clothing for DNA evidence. The Grateful Garment Project provides clothing to sexual assault service providers. We want to give them a shot at the $500 that Heroku is offering for open-source software. Will you help us? We need to reach the hundred-star requirement to be considered for the contest, so please go to github.com/GratefulGarmentProject/Stockade and star our project. Then go vote for Stockade at heroku.com once we have added it to the list. Thank you all! Have a great time and enjoy the rest of your RailsConf.
00:01:01 If you like talking to people who enjoy Ruby and Rails, and if you live in Los Angeles or visit Los Angeles, come join us at the LA Ruby and Rails Meetup. Just go to meetup.com/laRuby. We meet every second Thursday of the month. Although there are about two thousand people in the group's network, we usually have around forty attendees, so just go to meetup.com/laRuby. Thank you!
00:01:30 Alright, hi everybody! My name is actually Fiona. I'm a software engineer at C-DOS Media Group, which is a digital marketing company in San Diego. This is my first RailsConf, and I wanted to tell you a little about my experience going back to school for a computer science degree as a professional developer. When I first went to college, I majored in art history. However, after graduating, I didn’t want to have anything to do with art history, so I ended up teaching English as a second language for about five years. Teaching was great, but I wanted to do something different, and that is how I became interested in web development. I enrolled in a bootcamp called Learn Academy in San Diego. I’m actually wearing their t-shirt today.
00:02:14 At Learn Academy, I learned Ruby on Rails and JavaScript. That was almost two years ago, and I've been working as a Rails developer since then. The bootcamp was a fantastic experience! In just three months, I learned enough to become a productive developer. By the end of my first year, I felt pretty confident in my Ruby coding skills, but I didn’t understand how Ruby actually works behind the scenes. I knew at some level it was all ones and zeros, but getting from ones and zeros to running Ruby code felt like magic to me.
00:03:10 That was why I became interested in studying computer science. Last fall, I enrolled in Oregon State University’s online post-baccalaureate computer science program, which is designed for students seeking a second bachelor's degree. So far, I've finished two courses and am a few weeks into my third. The first class I took was an introduction to computer science, which was essentially an intro to programming in C++. Then I took a math class, and currently, I'm taking a class about assembly language.
00:04:02 Could you please raise your hand if you know what assembly language is? Now, raise your hand if you've ever written assembly language. And raise your hand if you've ever written it professionally. Not very many people! If you don’t know what assembly is, it’s very low-level programming. As you can see, not many people write it these days, and new graduates in computer science definitely don't need to know it. However, learning it can teach you a lot about how computers work. I’ve only been doing it for a couple of weeks, but it’s already demystifying a lot of the magic behind Ruby.
00:04:42 Learning C++ was a similar experience for me. I learned a lot about concepts like pointers and memory management, which are crucial for understanding how Ruby works. The beauty of Ruby, however, is that you generally don’t need to worry about those details in your daily work. By the time I finished that C++ class, I was really glad to have learned those concepts, but I was also relieved that I didn't have to think about them every day at work. So, if you are early in your career like me, and you're a bootcamp grad or self-taught, and you're thinking, 'Why would anyone want to learn assembly?' that’s totally fine. There are many other awesome and likely more useful things to spend your time on.
00:05:57 But if you’re thinking, 'Yeah, I want to learn how that magic works,' then I encourage you to take some computer science classes. Even if you get nothing else out of them, at least you’ll come back to Ruby with a greater appreciation for what it does. If you have any questions about computer science degrees or have thoughts or opinions to share, I would love to talk, so please come find me later. Thank you!
00:06:56 Alright, thank you so much. I’m here to talk about a Twitter art bot that I built as a side project called 'Like Spot.' The way it works is that if you tweet a word, it uses that word as a search term and searches through the Rijksmuseum in Amsterdam's database. It finds a random object related to your word and tweets it back to you. You can try it right now! Feel free to grab your phones, tweet a word, and see what it responds with.
00:07:29 Before I learned how to code, I had a career in art history. What inspired me to build this bot was not only my desire to try building a bot but also a movement called Open GLAM. Open GLAM is about cultural institutions, such as libraries, art galleries, and museums, digitizing their content and making it available to the public. The challenge there is how to make these vast databases accessible and engaging so that people want to interact with the collections. This project came out of some thoughts about that.
00:08:03 Thank you very much. Hi everyone! My name is Jackie, and this is also my first RailsConf. Currently, I work as an Apple Stack developer at Workbar, but previously, I was an ophthalmic technician. Everything changed after I attended Boston RailsBridge and decided to switch careers by joining Launch Academy, where I made a lot of friends. We still try to meet once a week, and it's great!
00:08:44 At Launch Academy, I wanted to show off my final project, which is a multiplayer checkers React on Rails application. It was a challenge to create something with complex logic, different from the usual 15-minute blog apps, but it demonstrated how to integrate complex logic with Rails. I aimed to make this game beginner-friendly, so whenever a user clicked on a piece, the board would highlight all possible moves for that piece.
00:09:12 This project was personally valuable because many of my Launch Academy friends moved away from Boston, and this was a way for us to keep in touch and play checkers online. I had a lot of fun developing this app, and I look forward to reconnecting with everyone over a game of checkers. Again, my name is Jackie, and thank you for your time!
00:09:40 Hey, good evening everyone! My name is MG, and I work for Amazon Web Services. Today, I'm going to talk about a cool feature that allows you to generate a Ruby SDK from your API models using the API Gateway service. If you haven’t heard of the API Gateway service before, it helps you create, publish, maintain, and monitor your API models.
00:10:02 I will give a brief demo to show you what I mean. You'll see the two parts of it: generating the SDK from your API model, and then I'll play around with the generated SDK. What you're looking at is just an example Swagger file that I'm using as an example.
00:10:30 Now we're waiting, but you know what, the demo will be boring if you watch it anyhow. The API Gateway allows you to import your Swagger model, and once your API is deployed to your stage – making your API usable – you can add SDK generation. You may choose Ruby and provide a name for the SDK, and it auto-downloads it for you.
00:11:07 Once generated, you'll see the SDK structure is similar to the AWS service streams we are shipping. It also includes many of the features that we ship with AWS SDK as well. You won't see the demo for making API calls for your own service rooms, but I can show you why you'd want to check out this cool feature.
00:11:40 First of all, the generated SDK is ready to pick up once you have an API model defined. You don’t need to build a Ruby gem from scratch to make HTTP calls to your service endpoint to showcase your wonderful service to customers. It’s just ready there through a couple of clicks or API calls.
00:12:28 The cool part is it maintains the same class experience as AWS service gems, which means it includes default retry logic and parameter validations for API models. It also provides options for HTTP debugging and plenty of other handy features. It’s worth mentioning that it also enables all of the privileges that the API gateway can provide, with integrations with AWS services.
00:13:12 You also have a wide range of authorization options. You don't need to use AWS authorizations if you don't like them; instead, you can just do not authenticational requests or provide your customer ID to authorize logical access. If you're interested in this topic, there are a few resources you might want to check out.
00:13:56 I recommend watching a great talk by Alex from last year about more sophisticated usage for dynamically generating Ruby SDKs for integrations in your Rails app deployment life cycles on AWS. There's code and YouTube videos if you're interested. Feel free to reach out to me if you'd like to talk more about this either now or at our Birds of a Feather session tomorrow. Thank you for listening!
00:14:38 Hi everyone, I'm Jamie, and I'm here to talk about a front-end framework that I've been working on for the past couple of years called Clearwater. It is a Ruby framework that compiles Ruby code into JavaScript, executing it inside the browser.
00:14:57 With Clearwater, you can create applications similar to apps with a drag-and-drop interface, like Trello. While giving this lightning talk, I wanted to highlight my development experience with Clearwater as my primary editor. I always have my coffee on hand; it’s either being brewed now or about to be.
00:15:34 Clearwater itself is available on GitHub, and if you'd like to explore some code, we have drag-and-drop functionality implemented. I wanted to figure it out for myself because I didn’t understand the drag-and-drop API very well. Essentially, we just render certain objects and call methods to achieve this. For example, we render a card list component, which is just a plain object that inherits methods from component mixins in our application.
00:16:20 We’re also experimenting with some routing features, and through this process, we handle UI events using action objects to manage those events in our application store. So, when we pick up a card on drag start, it updates the state appropriately. Many of you familiar with libraries like Redux or Elm will find similar patterns here.
00:17:02 So when we drag and drop cards in our application, we can roll back to a previous state and see how it all updates in real-time. Another interesting feature specific to development mode is that when we update our code and save it in the editor, it updates live in the browser. This means it compiles the code to JavaScript, pushes it to the browser, and then re-renders the app.
00:18:01 There are many interesting functionalities involved in the UI rendering with Ruby using simple objects to manage application state, inspired by functional programming principles from Redux, Elm, and other paradigms. With that, I will drag this project to the done column and indicate I am finished. Thank you!
00:18:40 A lot of Rails applications use Postgres as their backing datastore. I thought I would share about pg_stat_statements, which I consider a must-have tool for your Postgres toolbox. To share a brief background, I am a semi-leet solutions engineer at Situs Data, where we aim to make Postgres worry-free, so developers don’t have to worry about scaling their Postgres databases.
00:19:02 We have built an open-source extension called Situs, which allows sharding Postgres across multiple servers. Additionally, we offer a fully managed database service called Situs Cloud, which we run and manage for our clients. Aside from work, I enjoy watching Bollywood movies and dancing, so maybe we can dance a bit after the lightning talks.
00:19:44 Postgres captures many statistics about your database, such as running functions like pg_table_size and total_relation_size to find out how much disk space your data occupies. You might also run queries to find which indexes are unused or which tables have not been vacuumed. Postgres exposes this information through specific views and tables. However, you can also add extensions that give you even greater insight into your database. One such extension is pg_stat_statements.
00:20:37 What pg_stat_statements does is track the execution statistics of all SQL statements executed by a server. This extension normalizes and groups similar queries together, preventing duplicate entries in your statistics report. The information it provides includes the query text, how many times it was executed, which user executed it, the database it was executed on, and various timing-related information such as average time, total time, minimum and maximum time, and even standard deviation.
00:21:24 This extension also tracks I/O-related information, such as the total time your query spent reading or writing blocks from disk. So, what is pg_stat_statements useful for? For instance, if you're trying to find the top ten queries that consume the most time in your database, you could run a query that sorts the total execution time for each statement.
00:22:16 Or if you know your database is experiencing disk bottlenecks, you could run a query to identify which queries are causing the most disk reads. Another use case could be running a query to see which query your application sends to the database most often. This allows you to filter out queries that run less than a certain number of times so that you can focus on optimizing the slowest queries that are consistently being run.
00:22:59 To summarize, pg_stat_statements saves you time by tracking the executing queries and providing statistics for you to access. By running the appropriate queries, you can find the problematic queries to tune and target your optimization efforts.
00:23:55 My name is Lee Richmond, and I run a project called JSONAPI Suite, which I found quite interesting when David spoke about replacing hand-typed SQL with Active Record. The modern-day JavaScript application development focuses heavily on APIs, and just like we substituted hand-typing SQL, I believe it’s time to replace hand-typing HTTP calls.
00:24:58 JSONAPI Suite is an Active Record clone written in isomorphic JavaScript, which can run from either Node or the browser. The significant difference is that it generates HTTP requests instead of SQL queries. It does this by looking at modern best practices for bleeding-edge JavaScript applications, like GraphQL, that treat APIs similarly to databases.
00:25:58 We believe we've already established a suitable abstraction for databases with Active Record. So instead of producing SQL, we can generate a GraphQL payload. We utilize JSON API, which can be thought of as a RESTful version of GraphQL, created by Yehuda Katz. One of the reasons we use JSON API is that it allows you to maintain a conventional controller structure with seven RESTful actions.
00:26:36 This structure helps minimize the amount of boilerplate code developers would need to write to comply with the active record queries we already have. Even though it may seem magical, it's actually a pattern you're likely already familiar with from your controller logic.
00:27:42 The beauty is that our serialization layer uses the ActiveModel Serializers, established by the current owner of that repository. We also have end-to-end integration test helpers, which have made it significantly easier to validate my keys and values and retain backwards compatibility. The documentation is automatically generated with Swagger, and we can read multiple entities in a single request and write them in one request as well.
00:28:34 With our innovations, nested forms have finally become easy. For instance, we can save an employee along with the positions held and the departments associated with those positions, all in a single request with out-of-the-box validations, similar to built-in validation logic on the server side.
00:29:13 If you employ these techniques and follow the conceptual guidance, you can think about reimagining micro-services. For years, I have been against micro-services, but once I developed a Ruby client that mimicked Active Record and incidentally generated HTTP calls, it became easier to engage across my services. My company's direction is evolving as we manage about 15 different micro-services now.
00:30:12 In conclusion, if you're interested in leveraging the best practices from modern single-page app development and API architecture and still want a clean and simple development process like Rails provided back in 2005, I encourage you to explore JSONAPI Suite.
00:30:24 Let me now switch gears and switch to a different topic. I would like to introduce you to a new initiative that aims to empower citizens in Spain to take an active role in democracy, providing platforms for transparency and citizen participation.
00:31:08 We have noticed a trend where politicians engage in corruption, which people lose faith in their representatives and the laws that govern them. To counteract these trends, we created an open-source platform called Consul, which embodies the foundational components of direct and participatory democracy. It includes elements like participatory budgeting, allowing residents to submit proposals for funding.
00:32:27 Every year, the Madrid City Council allocates around 100 million euros for public initiatives. Residents can vote on their preferred proposals, mirroring a shopping cart approach, thereby determining how the government spends its budget.
00:33:02 We have also transformed the public contracting process to combat the bribery that often occurs. When we needed to redesign the main square in Madrid, we solicited proposals from architects nationwide and then allowed the populace to view them online, comment on them, and vote for their favorites.
00:33:58 This innovative approach led to the winner being a stunning design featuring parks, spaces for children to play, and venues for concerts. Moreover, we have designed mechanisms for collaborative legislation, encouraging the public to interact with proposed laws, suggest edits, and vote on sections they support or oppose.
00:34:48 A fascinating aspect of our platform is that any citizen can propose an idea. If enough signatures are gathered, we hold a democratic vote on the proposal, with multiple voting options available, ensuring that all citizens can participate in the decision-making process.
00:35:38 The Crowdsourced governance is rapidly expanding as we’ve seen success in numerous cities across 15 different countries. We are proud of our platform and the effect it creates, but we know there's still a great deal of work to do. If these ideas resonate with you, I encourage you to share and contribute.
00:36:34 Hi everyone, I’m curious how many of you are unsure of what this acronym means: 'Matz is nice, so we are nice.' I’ve been involved in the Ruby community for a while, and one of the attributes that drew me in was this core value — that we are nice and supportive of one another.
00:37:12 My involvement led me to help with an initiative called Ruby for Good, where we collaborate with charitable organizations like the Smithsonian Institute, and work on various projects that help make a difference. It’s a four-day event where we come together to work on challenges that non-profits face.
00:38:15 The upcoming Ruby for Good event this year will be hosted at Georgetown University in Washington, D.C. The event is already sold out, but you can always reach out to contribute on any ongoing projects. We want to involve individuals of all skill levels and make a positive impact together.
00:39:17 Additionally, we fund this initiative through shirt sales, so if you'd like to support the scholarship programs for those attending, please consider buying a shirt from us.
00:39:33 Before I begin my talk, I’d like to raise a concern regarding privacy and data ownership, especially in the current state of our world. Everything I’m going to share next is off the record. I’m Chris Morris, the director of engineering at Mystery Science, which creates engaging science videos and activities for elementary school students.
00:40:12 Five years ago, I presented a lightning talk on impostor syndrome, and today I want to discuss something entirely different. It’s important to talk about the philanthropic projects we can partake in that help save the environment or support education.
00:41:28 From my experiences, I’ve noticed that taking leaps of faith can lead to meaningful change and impact, whether in your career or through community projects. Taking that jump into uncertainty can lead to positive outcomes you never thought possible.
00:42:05 Hi, I’m Andrew Louis, visiting from Canada for my first RailsConf. Today, I want to share a personal project I've been working on: a Memex in Rails. For those unfamiliar, Memex is a historical concept that proposed a device to help you organize and access your information effectively.
00:42:44 My rationale for building this is that I’ve accumulated considerable amounts of data over the years—browsing history, messaging interactions, journaling data, geographic trails from my phone, etc. I wanted to create a digital space where all this data can be organized and easily accessible. So, I am using a graph database to structure it.
00:43:18 This system includes Rails API to handle data querying and a front end built with EmberJS. I’ve implemented importers for my many existing pieces of data, allowing users to search and traverse their history seamlessly.
00:44:05 For example, if I input a search for Aretha Franklin, it retrieves all songs related to her throughout my listening history. Similarly, I can find any other content I’ve engaged with over the years. This provides a comprehensive overview of my past interactions and a deeper understanding of the connections in my own life.
00:44:58 This kind of organization and accessibility of data is invaluable, and I look forward to continuing my efforts in building this project and sharing it with others. Thank you for listening!
00:45:34 Thank you!
00:45:41 Hello, everybody! My name is Kenny Brown, and I also work with the G2 Crowd team. Today, I want to talk a bit about taking leaps of faith. The term refers to making a jump into the unknown, not being entirely certain you’ll succeed.
00:46:15 I began my career in California and got hired as an intern, and eventually, they offered me a full-time position after graduation. I later found out that they were unsure about me, and had indeed taken a leap of faith by hiring me.
00:47:11 Fast forward a few years later, I had the chance to join Mike at his new startup in Chicago. I moved my wife, who grew up in California, away from her family to pursue this opportunity. After a tense discussion, we decided to take the leap, and shortly after, I received the offer and started this new chapter.
00:48:03 Reflecting on these experiences, I encourage you to take leaps of faith, even when unsure of the outcome. Sometimes, those leaps can lead to immense growth and rewards beyond what we imagined, proving that it can be worth it to take the risk.
00:49:06 Thank you for allowing me to share my journey with you all. Remember to embrace opportunities and see where those leaps take you. Thank you!
00:50:30 My name is Heidi Waterhouse, and I’m the developer advocate for Launch Darkly. Today, I’d like to open a conversation about stickers and why they matter to us in the tech world. Stickers symbolize identity, enthusiasm, and group belonging.
00:51:09 Many think of stickers as something reserved for children, but they can also reflect our interests and experiences as adults. A sticker can express our belonging to communities and represent facets of our identity without needing to verbally communicate.
00:51:46 For example, I maintain a large collection of stickers, only half of which I brought along today. My sticker collection not only reflects current interests but sparks delightful conversations. I also pay special attention to stickers that represent underrepresented fields in tech and social causes.
00:52:43 When designing stickers, size, layout, and clarity are critical. Stickers should be easily recognizable and appropriately sized to fit on everyday items like laptops. There’s also a lot to learn about the economics of sticker designing. The cost can vary significantly depending on the type, material, and production numbers required.
00:53:23 Marketing through stickers can foster brand loyalty, but it’s crucial to maintain clarity and minimalism. I believe stickers should not only represent corporate interests but also celebrate diversity, individuality, and creativity.
00:54:12 I appreciate your attention today. Let's make a commitment to share our individual stories and identities through stickers! If you want to chat more about this or share stickers, please feel free to approach me. Thank you!
00:55:02 To sum up: our experiences shape who we are. By embracing leaps of faith and taking risks, especially in professional and creative endeavors, we can create a more inclusive and innovative community.
00:55:42 And on that note, let’s keep the conversation going. Whether it's sharing stickers, project ideas, or personal stories, we can foster a culture of support and encouragement. Thank you for joining this talk today. Let’s continue to uplift one another!