Diversity & Inclusion

Lightning Talks

Lightning Talks

by Michael Hartl, Christen Rittiger, Tori Machen, Jennifer Tran, Jeremy Schuurmans, Kazumi Karbowski, Justin Searls, Jacob Crofts, Roman Kofman, Ariel Caplan, Jamie Gaskins, Aja Hammerly, Isaac Sloan, Zackary Schroder, Junichi Ito, Tom Black, Quinn Stearns, Antoine Lecl, and Scott Istvan

The video titled Lightning Talks features a series of brief presentations given at RubyConf 2018, covering a variety of topics related to programming, Ruby, mentorship, and personal experiences in the tech industry. The lightning talks are short, energetic presentations delivered by different speakers, each sharing insights and experiences that resonate with the Ruby community. The main themes of the talks include:

  • Personal Experiences with Coding: Michael Hartl shares his new Ruby tutorial; Tori Machen draws parallels between crocheting and coding, illustrating how creativity and structure can be reflected in both practices.
  • Mentorship and Community Support: Aja Hammerly discusses the importance of mentorship in her journey from poverty to becoming a software engineer, emphasizing how supportive figures can help navigate challenges in tech. Kazumi Karbowski talks about the supportive environment fostered by the Moms Can Code community, encouraging both mentorship and learning opportunities.
  • Mental Health and Imposter Syndrome: Jeremy Sherman addresses the feelings of imposter syndrome that newcomers often face, urging them to embrace learning as a journey and reminding them that they truly belong in the coding community.
  • Technical Standards in Programming: Justin Searls presents ‘standard’, a new Ruby linter designed to reduce trivial arguments over coding styles, suggesting a unified approach to coding standards to enhance productivity.
  • Social Issues in Tech: Roman discusses feminism and gender dynamics in programming, highlighting the significance of active listening and creating safe environments in tech spaces.
  • Community Engagement through Projects: Jamie Gaskins introduces Ruby for Good, a project focused on civic hacking that aims to support various community initiatives through programming.
  • Innovative Tools and Technologies: Jacob Crofts explains Swagger and its testing tools for Rails APIs, while Zackary Schroder shares updates on his HyperCard project, a nod to nostalgic programming using Ruby.

Overall, the conference encourages a spirit of community, exploration, and collaboration among developers, urging individuals to connect through shared experiences and to actively support each other in their coding journeys. The takeaways emphasize the significance of mentorship, community support, and the continuous evolution of programming practices in Ruby.

00:00:15.980 All right, my name is Michael Hartl. Some of you may know me as the author of the Ruby on Rails tutorial. I wanted to let you all know that I've recently finished an introductory tutorial to Ruby by itself, called 'Learn Enough Ruby to Be Dangerous.' It has a lot of the things you would expect from an introductory Ruby tutorial, but there are several novel elements, including a gentle introduction to web development with Sinatra, shell scripting, and making and publishing a Ruby gem with testing and test-driven development. It is suitable for beginners but also beneficial after the Ruby on Rails tutorial. You can check it out at learnenough.com/ruby. Additionally, as a celebration of finishing this tutorial, tonight I'm hosting the eighth semi-annual Rails Tutorial Beer. It will take place at the Bonaventure Brewing Company, which is just a short walk from here, from six to eight. You can find out more about that event through my pinned tweet on Twitter.
00:01:19.950 Hello everyone, my name's Christen. I'm going to talk really quickly to cram this in. I currently work for a great company called Stitch Fix, but previously I found myself in some difficult and painful situations in school or past jobs, where I was trying to learn, communicate, or receive help. Now that I'm in a culture where learning and asking questions are embraced, I decided to reflect on how we can possibly correct these painful situations. That's where I stumbled upon the concept of a beginner's mindset. A beginner's mindset is characterized by openness, eagerness, and a lack of preconceptions. It encourages creativity, objective problem solving, communication, and teaching others. It helps break down walls and makes you a safe person to talk to and ask questions, as you will be doing so yourself.
00:02:31.010 What I want to say is that if I had someone with this mindset when I was going through those painful situations, it probably would have gone a lot better, and I would have learned things much sooner without feeling so bad about the situation. So this is my personal message to encourage you to keep this mindset in focus. I have many ways to help you achieve this, so feel free to stop by the Stitch Fix booth or hunt me down throughout the conference. I would love to have a conversation about it. Thank you. Hi everyone, I'm Tori. I'm a software apprentice at Polar Technology in Des Moines, Iowa, and I help co-organize Des Moines Web Geeks and Lady Devs. You can find me on Twitter at Tori Story. Today, I'm going to talk about crocheting and coding and how I believe they’re similar. The style of crocheting I enjoy is called amigurumi, a Japanese style of crocheting or knitting small creatures. I started crocheting these a few years before I began learning to code, and I'm going to share a few of the connections I’ve noticed between the two.
00:06:06.690 When I reference crocheting in this talk, I'm mainly talking about this specific style, but generally, a lot of what I will discuss can apply to other styles of crocheting as well. Moreover, every creature you see throughout my slides is handmade. Crochet patterns are similar to programs; this snippet shows a standard format for writing a crocheted pattern. Initially, when I looked at crochet patterns, it felt like reading a foreign language. However, just as I learned to read and write code, I also had to learn how to read and write crochet patterns. For example, one line in a pattern instructs that on Row 5, we will increase for the first five stitches, then single crochet for the next two stitches, resulting in a total of 12 stitches after completing that row.
00:09:26.680 An increase and a single crochet are two different types of stitches in crocheting, each with its instructions on how to work the yarn. This can be translated into simple code. For instance, I wrote a method to create a tail for a unicorn. For Row 5, I started with my stitch count, which is the number of stitches I should have after completing Row 4. I iterated through a range of half my stitch count and called either an increase method or a single crochet method based on my conditionals. A pattern is just a program, and you are the computer executing the pattern to create a crocheted creature. When I first started learning how to code, I relied heavily on Stack Overflow, often copying and pasting code directly into my projects. Now, as an experienced developer, I ensure to copy from Stack Overflow and change the variable names accordingly. Similarly, as I gained experience crocheting, I was able to alter patterns, such as making a bunny from a monkey pattern by simply changing the ears, mouth, and colors.
00:13:30.040 One of the most frustrating moments in crocheting is when I miss a stitch, resulting in an incorrect total stitch count for that row. I have to halt my work and try to find and fix my mistake. Thankfully, each row in my pattern lists the expected number of stitches. After completing a row, I compare my stitch count to the expected count. If they don't match, it indicates I didn’t meet the expectations, much like failing a test. Ultimately, one of the biggest similarities I see between crocheting and coding is the immense power to create with just a few tools—whether it’s a crochet hook and some yarn or a laptop and some software, the possibilities are endless. If you look closely, you can find intriguing similarities between coding and your other hobbies and carry over skills like problem-solving from one to another, so I challenge you to explore these connections because it can truly be a lot of fun.
00:18:29.110 Thank you. Today, I want to talk about the power of mentorship, sharing my own story. I love learning and have a strong passion for computer science and programming. Here is a picture of me during my first year of college in the computer labs during winter break. Looking back, it amazes me that I went back to school during winter break just to code in what we referred to as 'the dungeon' at UCSD. I loved programming that much. I want to take you back a little further, even before college. This is me as a baby, clearly not in college. Real talk: my upbringing was pretty rough. I grew up in poverty, and my parents were refugees whose education was disrupted, so they never even completed high school. Before college, I didn’t even know what to expect; I didn’t even know what a major was or what computer science involved. So, when people ask me how I got into computer science, I have to honestly say it was by chance.
00:20:11.260 As fascinated as I was by computer science and programming, there were days when I wanted to quit. On those days, I felt like I didn’t belong. One of the worst experiences was being told by a classmate that I didn’t belong in the major and that I was taking someone else's spot because I wasn’t a good programmer. Thankfully, their words didn’t push me to quit, as I ended up graduating with a degree in computer science and soon began looking for a software engineering job. A couple of months after movements like #MeToo and #TimesUp gained traction, I wondered what I was getting myself into. I empathize deeply with anyone who experiences any kind of harassment, especially sexual harassment, because I am also a survivor. While I can’t speak for all survivors of abuse, I can share that as a result of my experiences, I lived much of my life with feelings of unworthiness, low confidence, and disempowerment. For a long time, I was afraid of other people, especially men, to the point where I couldn’t even leave my house.
00:27:31.600 Through it all, there were a few things that saved me, and one of the biggest was coding. Coding was exciting, empowering, and made me feel more in control of my world. Learning in college that women in power could also be harassed made me feel even more unsafe. I thought, if women in the highest positions are not safe, none of us are. So, when I applied for software engineering positions after college, I mentally prepared myself for that reality. I thought I’d rather risk potential harassment than return to a life of poverty and instability. Today, I am a software engineer at a company called Acorns, and I am proud to be part of the Ruby community. I would not be standing here today without the support of my manager and mentor, who would not tolerate any behavior that makes people feel unsafe. Seven months ago, I was living in poverty, and today I stand before you all in one of the busiest hotels imaginable, hoping you'll recognize the power of mentorship.
00:32:23.289 It was a mentor who encouraged me to attend college, a mentor who motivated me to study computer science, and eventually a mentor who transformed me into an engineer. Mentorship plays a huge role in why I am here today in this conference and this industry with my skills. Mentorship will not only help me stay but also ensure I succeed. This message is directed to everyone, especially men in positions of power: we need your active participation to create safer spaces for others. One way to do that is by being a mentor. Thank you.
00:35:00.949 My name is Jeremy Sherman, and I want to talk a little about imposter syndrome. I am a student at Flatiron School and have been programming for less than a year. I'm not going to presume to discuss imposter syndrome from the perspective of an experienced developer because I can’t possibly understand that experience. However, if anyone here is new to programming, this is for you. On the Flatiron Slack, I hear discussions on imposter syndrome all the time, and personally, I often talk about it as well. One person even expressed excitement about building their first Rails app, but felt hindered by imposter syndrome. I believe that we as beginners often misunderstand what imposter syndrome truly is, so I think we need to set some definitions. First of all, we all know that being an imposter means pretending to be someone or something you aren’t. Therefore, imposter syndrome is the feeling of being an imposter while in reality being well-qualified for your job. As a result, imposter syndrome requires experience.
00:40:39.010 This means that the uncomfortable sensation that new programmers often experience better defines as the pain of being a beginner: that severe feeling of not knowing or understanding enough to create something, leading to self-doubt about belonging. If from this moment forward you feel you don’t know enough, understand that it’s okay not to know everything. Not knowing something doesn’t make you a bad programmer, it doesn’t mean you’re not a real programmer, it doesn’t mean you’re foolish, and it doesn’t mean you’ll never grasp the concept. It simply means you've been given an opportunity to learn something new. So take that opportunity, learn what you don’t know, and just start building. More often than not, if you just get started, you’ll find that you already know more than you think. If at any point you feel like you don’t belong, understand that you do belong. Programming belongs to newcomers, too. To back me up, I have a quote from Jen Weber: if I asked you to show me some code you wrote and you can explain it, you can call yourself a programmer or a developer. Add it to your resume, and don’t listen to anyone who tells you that you don’t belong. You do.
00:43:03.800 Hello, my name is Kazumi Karbowski, and I’m also a student at Flatiron School. I was born and raised on a small island in the south of Japan called Tokunoshima. I moved to San Francisco in 1998 and now I am a mother of two little ones, living in Pittsburgh, Pennsylvania. Before having children, I was in the hospitality industry and managed fine dining restaurants in San Francisco. I loved the care and attention to detail that is required to run a stellar restaurant. When guests had an exceptional dining experience, that made all the hard work and long hours worthwhile. However, once I became a mom, I realized the hours of the hospitality industry would not work for me anymore, so I started to contemplate a new career. After the birth of my boys, I remained a stay-at-home mom and worked part-time from home. Raising a family has been the most challenging and rewarding thing I have ever done. During this time, I felt like I was losing my own identity in the role of motherhood. Fate stepped in when a friend invited me to a launch party for Moms Can Code.
00:46:12.000 At that point, I had no idea what coding was, but I viewed it as a chance to have a night out with my friend. At the launch party, I learned that Moms Can Code is an online and in-person community dedicated to helping individuals develop their coding skills. I met moms who were already developers and others just starting out. I was inspired by them and went home to search for resources on learning to code. That party was a year ago, and in March this year, I was awarded a scholarship from Moms Can Code paired with Flatiron School. Since then, I’ve been taking an online full-stack web development course, and I’m proud to say that I’m over halfway through the program. Moms Can Code has been a very kind and supportive community, just like the Ruby community. They offer online co-working hours, a virtual summit, hackathon, live coding lessons, and various workshops. They have been instrumental in helping me advance in my new career.
00:50:23.870 It’s so helpful to have such a supportive community, especially when learning to write a new language. You do not need to be a mother or identify as a woman to be a member. Right now, they are looking for mentors. Moms Can Code is launching a new program called Developer Camp in January, seeking freelancers, tech employees, and startup founders willing to dedicate three hours a month for three months to work with participants and help create a personalized learning plan. If you’re interested in becoming a member, mentor, or both, please visit momscancode.com or reach out to me with any questions. I will be here until Friday and will do my best to answer any and all questions you may have. So please come find me, and if you want some stickers or pins, I have one!
00:56:10.000 Thank you. All right, I know this talk is titled 'How to Be Standard.' My name is Justin, but online I go by my last name, Searles. I come from a company called Test Double, where we consult. Our mission is to join teams like yours, collaborating to improve your codebase. From my travels, I’ve noticed that programmers tend to universally dislike one thing—based on what they argue about—and that is linters. Linters are known to get tangled up in your code and create issues, and it seems that the most popular linter in the Ruby community is called Rubocop. It yells at you for various reasons, often perceived as trivial. I firmly believe that Ruby has taught other communities the importance of having sensible defaults in libraries, enhancing programmers’ joy. Rails’ success comes from not feeling bogged down in configuration files; it generally makes people feel happy. Meanwhile, Rubocop defaults can make people feel negative. As a result, many teams end up writing numerous custom one-off configurations.
01:01:00.260 Some may refer to this as bike shedding. For those unfamiliar, bike shedding is when software development is executed by going through an idea, building something, then battling over trivial matters before eventually monetizing a product. When contemplating the software development lifecycle, it made me wonder: Is this process genuinely valuable? What if we eliminated this fighting and had more time to create and earn more money? Additionally, my disdain for Rubocop was intensified after my incorrect answer in a game of family feud yesterday, where it was supposed to be Sinatra, and I am still sore about losing. Attention to the most popular linter came to mind as I realized that we truly need a universal standard for Ruby linters, given that lots of conflicting standards exist already. But, I might be wrong; that’s not what’s going to happen here. Due to the uniqueness of Ruby gems, Rubygem names are distinct, and there will only be one standard, which I happen to possess. This makes me a benevolent dictator for now, as I prefer not to worry about this six months from now.
01:06:42.429 Earlier today, if you saw Aaron, who wore the burger hat in the front row, he pre-announced the library I call Rubocop: The Good Parts. You can install 'standard' as the new standard library for Ruby. If you’re unfamiliar, 'standard' is inspired by StandardJS, created by four brilliant individuals, and essentially is a standardization on top of ESLint. You gain all the benefits of the engineering behind ESLint without the trivial arguments concerning rule changes. To use StandardRB, you add it to your Gemfile, run bundle install, and then use the 'standard' command. After typing it out and hitting enter, if you receive no output, congratulations, you've won! You can check the exit code to see if it exited cleanly, and you won't have to worry about it anymore. If there are errors, it will inform you and suggest you can automatically fix several issues.
01:10:58.740 You may find one of the common queries is, 'What if I do not like a rule?' To address this, I would remind you that humans are quite adaptable. If you strongly disagree with a rule, open an issue and discuss it. Many people have held onto their unique configurations for a long time. If you have a strong opinion, we can have that discussion. The reason I'm taking the initiative to write 'standard' is that I simply want to avoid concern over these issues in the future. Thus, let's have one last debate concerning Ruby style so that as a community, we can move past this. You can find it on GitHub at our company, Test Double, or check out standard.org. I’ll be hanging around in the back to chat about it. I have stickers and other goodies. Thank you for your attention.
01:11:45.740 Hi, everyone! My name is Chicago. How many of you can hear me clearly? Awesome! How many of you have worked with Swagger before? Keep your hands up, and for those who have worked with Swagger, how many of you test your Swagger schemas? I see a few hands. I work at LiveRamp, where we have an internal tool called Swagger Testing for testing Swagger schemas and Rails APIs. For those unfamiliar, Swagger is a set of tools for standardizing API documentation, which comes with various features. One of them is Swagger Codegen, allowing us to generate a client in our chosen programming language based on the defined schema.
01:16:38.420 For example, if the Swagger schema consists of several routes, HTTP verbs, and parameters, we can generate a client with all that information compiled into easy method calls, providing readable code. Here’s a simplified overview of this process: you have your Swagger client within your code, making API calls to a Rails server that interacts with the backend, which includes a database. The backend returns a response which the Rails server will render back to the Swagger client as JSON, subsequently returning an object defined in your Swagger schema. When testing this workflow, if you use RSpec, you will test your code at the model level or module level within specific files. This allows you to ensure interactions with the database and backend are functioning correctly. However, for native Rails tools with generated Swagger clients, we must consider additional points of failure, so how do we confirm our new library works?
01:20:33.580 We use Swagger Testing. It scans your project for the auto-generated Swagger code, initializes a client, and exposes it in your RSpec suite, allowing you to call methods and expect the responses expected. This approach eliminates common failure points you might encounter while writing code for Swagger. For instance, if you mistakenly write the wrong HTTP verb or miss a parameter, to validate without tools like this would require you to open a Rails console and type things out manually. It is far more efficient to automate this testing process. Here’s how this setup works: with Swagger Testing, you can pass several directives like where your Swagger config file is and other documentation choices. An example of an end-to-end test would be initializing your client with the defined service, like PotatoService, retrieving the item with the proper ID, then expecting it to have certain attributes. This reads just like a standard RSpec test, while in the background, it’s hitting a real test server interfacing with the database and functioning as it would in production.
01:24:53.090 That concludes my talk; you can reach out to me by email. I don't often tweet, but you can find me on GitHub or LinkedIn as Jacob Crofts. Hi, everyone! My name is Roman, and I'm here to talk about feminism. I currently serve as a software engineering manager at Square, where I’ve been for about two years, and I’ve been in a management role for about four or five years. I crafted this discussion under the premise that Square has not signed off on this, so if you disagree, kindly address your grievances with me directly, not with Square. The term feminism can seem intimidating to many; society often encourages avoidance of identifying with it while still aligning with some core ideals. I find this rather silly, as I believe more people should wholeheartedly embrace this term.
01:29:39.500 To explain my viewpoint, let me recount how I first interacted with feminism during college. I enrolled in a Feminist Theories course at Shimer College, where I befriended someone in class with whom I frequently hung out. As a courteous person, I enjoyed opening doors for everyone, whether it was for elderly women or just friends. After some time, I noticed a peculiar behavior from my friend: she would stay a few steps behind me when walking and avoid being in front of me. I wasn't entirely sure why that was until I gradually understood the underlying context; for her, this was a means of ensuring psychological safety. As a gentleman, by opening doors for her, I inadvertently placed her in a vulnerable position, essentially making her feel unsafe. This experience highlighted the essence of feminism for me—it’s about active listening and reevaluating our actions and their effects on others.
01:35:00.988 In management, it's crucial to recognize that your role extends beyond just shipping code. It involves fostering a productive team dynamic. While traditional management tends to prioritize output, I'd argue that a team should consist of individuals who support one another. As a manager, your responsibility is to empower your team to assist each other effectively, rendering a collective greater than the sum of its parts. I believe that the best way to encourage teamwork is through feminism, which requires reevaluation of our macros and behaviors in the presence of others. By leveraging insights from feminist communities, we can engage in more explicit, active conversations regarding topics often taken for granted, such as the implications of so-called polite behaviors like holding doors open. It’s essential we acknowledge and address these actions to create a safe, healthy work environment.
01:39:21.820 Please come to me if you want to hear more about this topic, as I’m passionate about it. Thanks. Understanding gender dynamics in tech and the programming community is crucial. I urge all of you to get involved in supporting underrepresented groups in our industry, which will ultimately create a more inclusive environment. Now, let’s have a quick show of hands—how many have picked up one of the beautiful stickers? Keep your hands up if you know what the FMT book club is. For those who don’t know, the Dev Empathy Book Club is about solving the 'now what' problem. How many times have you attended a conference, heard a fantastic talk, or read an intriguing article and then wondered how to integrate what you learned into your own life? To influence the way people interact and evaluate their day-to-day lives requires consistent follow-up and commitment.
01:42:48.040 The Dev Empathy Book Club aims to be the world's most supportive community of programmers dedicated to enhancing empathy through study, discussion, and practice. We have a structured study program where we explore various topics, which we then discuss within the context of our everyday lives, sharing our experiences together. Over the past year and a half, we've covered numerous books touching on various subjects such as communication, team building, and management dynamics—seriously helping us broaden our understanding of the people behind the code we write daily. For those looking to participate, we conduct regular reading check-ins and weekly experiences chats, allowing everyone to share struggles and successes over the last few months. If you're interested in this type of community, please visit our Twitter at Dev Empathy, and feel free to join our Slack as well.
01:50:03.550 Hi everyone, I’m Jamie, and I’m excited to share with you today about Ruby for Good. Who here watched Bianca’s closing keynote yesterday? Fantastic! One of the points she made was the importance of helping with community initiatives, and Ruby for Good embodies this spirit. For those who haven’t yet heard of Ruby for Good, it's a weekend of civic hacking. Each year, a group of us comes together to work on projects that benefit various communities across the country and the world. To provide a glimpse of our past work, we recently collaborated on developing inventory tracking and partner apps for diaper banks across the country, allowing support for families unable to buy diapers for their children due to high costs not covered by assistance programs.
01:55:13.360 Another project aimed to digitize the traditions of oral storytelling from indigenous and other traditions communities in the Amazon rainforest, thereby ensuring their histories remain indelible. Additionally, we have partnered with organizations that advocate for immigrants’ rights, aiding in providing essential services and resources. The Playtime Project is another initiative focused on nurturing health in children affected by trauma in temporary housing programs in Washington, D.C. Ruby for Good organizes flagship events annually in Washington D.C. and the Northern Virginia area; however, we recently initiated an event in Portland for Python developers, allowing more individuals to get in on this civic hacking.
02:01:39.860 Despite the new events popping up in different cities, nothing compares to the excitement we’ve seen from the Ruby community. In fact, tickets for Ruby for Good in D.C. sold out in just nine days. The outpouring of love for Ruby developers wanting to give back to the community was incredible. This year, we’re excited to announce an additional event, Ruby by the Bay, kicking off in the San Francisco Bay Area in Spring 2019, holding Ruby for Good events on both coasts of the country. Unlike traditional hackathons that try to pack as much in as possible in 48 hours for the sake of competition, Ruby for Good emphasizes working creatively for a reasonable number of hours while still leaving time to enjoy camaraderie and the pleasure of connecting with others.
02:05:33.540 As an enduring community, each project's open-source nature allows contributions from individuals around the world. Should you want to explore or get involved with Ruby for Good, visit rubyforgood.org, where you can join the slack channel. Several frequent Ruby for Good attendees are here today, so please feel free to ask us any questions! Thank you very much. Next, I'd love to poke fun at lightning talks a little here by presenting an amusing project I’ve been concocting. I created an AI model to distinguish between TenderLove puns and genuine tweets from Aaron Patterson. To my surprise, it worked! I've utilized Google’s AutoML natural language model as I trained my dataset manually, pulling text from Twitter. Admittedly, that was quite a small working set of only 38 records, as recommended for machine learning practices is at least 100 samples.
02:10:48.517 With the aim of seeing how well my model could perform, it required several hours of training. Should you have been at registration, you would have noticed me cheerful when I learned that my model was complete. As for the results, while precision and recall were only about 75%, which are metrics indicating potential false positives and negatives, I decided to showcase some fun examples. I ran some of my own tweets through the model, such as a whimsical comment about airdropping cats to presenters, which scored a 0.73 rating, indicating it was quite amusing. In contrast, I had the model analyze whether LAN parties were considered a type of networking event, and to my delightful shock, that was rated a clean score of 1.0.
02:15:18.860 I genuinely find machine learning to be fascinating, and I believe it presents remarkable opportunities for everyone. All the methods I used were quite accessible; they didn't require complicated coding processes, simply utilizing the UI. We could create a Twitter bot specifically programmed to retweet TenderLove’s puns so that people wouldn't have to delve into serious Ruby content—or do the inverse, which begs the question, why would anyone do that? Also, if you’re interested in machine learning, I just shared a tweet on my profile linking to three blogs where I detail some basic uses of machine learning and Ruby, which I encourage you to check out! If this content resonates with you and you want to see more similar projects, please let me know, as it’s always astounding to reach out rather than blogging into an echo chamber.
02:19:15.270 Over the past few years, I've discussed this topic at several conferences, and I find Crystal Language particularly interesting. In recent years, there's been a substantial trend of developers choosing Go and Rust over Ruby, amid claims it may not be fast enough—but that's somewhat subjective. Crystal is an appealing alternative if you want a less daunting transition from Ruby without verging too far into unfamiliar territory. On that note, I’ve been composing a feature-rich web framework similar to Rails called Amber. If any of you would like to give it a shot, I won't contest or object to that idea! Jumping in, let's look at some code to discuss encryption. Although this example isn't unique to Crystal, it primarily resembles Ruby. Here, I’m going to demonstrate how to visualize Krypton encryption strengths through some code.
02:22:53.280 I'm showcasing an interaction where I load a bitmap file and extract its header to reveal its color space and resolution and how that can aid in further processing. Upon removing the header, we can visualize the bitmap later. Essentially, it begins with a password utilizing a simple encryption method, where every byte correlates to that password—perhaps the simplest encryption form you might imagine. I also utilize OpenSSL crypto to experiment with various encryption methods on this bitmap, saving each iteration for comparison. Once observed, I’ll show you samples of these encryption processes as they unfold.
02:26:43.290 Here’s the original image: it’s labeled ‘Superman BMP.’ I will display the output of encrypting it with different methods. While the first method shows the simplified result of absorbing the bytes with ‘password123,' you can still make out the features. In contrast, the ECB encryption method being displayed is commonly used and still applied today, yet some of the underlying image remains identifiable. Moving forward to CBC—which is what Rails employs for encrypting secrets—you find that the image appears completely nonsensical. This is due to the use of an initialization vector with the encryption process allowing this modular and reversible process to yield results that create an unrecognizable format, solidifying this as a better method.
02:30:13.820 Thus, what we’ve learned today is an essential discussion surrounding encryption techniques and how they inform the methodology and practices of how we establish secure systems. Thank you all for your time, and I look forward to continuing discussions with you all.
02:34:02.790 Hi everyone, my name is Zack, and I would briefly like to talk about HyperCard, building HyperCard, and Ruby again. Last year I presented a talk at RubyConf about HyperCard and creating a version of it in Ruby. It went reasonably well. I covered the history of HyperCard and its creator, Bill Atkinson. I utilized a Ruby GUI tool known as Shoes to prototype my vision. For those unfamiliar with HyperCard, it resembled building web pages but was not connected to the Internet, albeit it allowed physical edits similar to PowerPoint slides, enabling interactive programming. The Ruby shoes version I have created offers buttons, text, and limited scripting capabilities. Unfortunately, I found that the core functionality was lacking during the first implementation, leading me to abandon that project shortly after RubyConf.
02:49:09.620 Fast forward to July 2018, I was back on track rewriting and establishing my unique version of HyperCard, or what I now refer to as HyperStamp. I want to keep the dimensions limited—approximately 640x480—using only shades of grey to maintain that nostalgic 'note card stacked' feeling with pen-style interactions. Right now, it’s only mid-development, but due to advancements made in Ruby 2D, which I learned about from Tom Black’s talk at a previous conference, creating the visual elements of the application has become far more feasible. I enjoy the simplicity of Ruby 2D and its underlying structure based on 'simple 2D', allowing dynamic rendering of various elements while supporting various design elements in applications.
02:57:57.913 As a result, I am utilizing Ruby 2D to aid in this development project tackling the challenges of rendering primitives like shapes, images, and text. I want to ensure the user has a seamless experience while maintaining a rather retro aesthetic. What I also wish to see are developments around Z-indexing, allowing layering of elements, as well as standard button controls and hover effects handled efficiently to enhance usability in future iterations. I do feel that inviting contributions from anyone willing to volunteer their expertise will lead to improved project outcomes.