Software Architecture

Summarized using AI

Lightning Talks - Day 1

TODO • March 11, 2015 • Wrocław, Poland

Summary of "Lightning Talks - Day 1"

This video features a series of lightning talks at the wroc_love.rb 2015 event, mostly focused on programming, Rails architecture, and personal reflections on learning and career. Each speaker presents unique insights and experiences regarding technology, specifically in Ruby and related tools.

Key Points Discussed:

  • Max's experience with Gem Cells:
    • Introduced Gem Cells as part of Trailblazer, which improves Rails application structure.
    • His team's prior method using multiple scoped controllers was inefficient, leading to a single Orders controller and the use of Cells for rendering views based on order states and user roles.
  • Keyboard efficiency tips:
    • Proposal for reconfiguring the Shift and Caps Lock keys for better programming efficiency, allowing for easier bracket typing and modifying Caps Lock to function as Escape and Control.
  • Ivan on learning:
    • Highlighted the disparity in knowledge levels during technical talks.
    • Suggested repetition and practice as essential methods for solidifying understanding.
  • Asynchronous Programming with Commodore 64:
    • Discussed the historical significance and capabilities of the Commodore 64.
    • Explained how to implement asynchronous programming using assembly code to enhance animation without blocking input.
  • Luciano on job changes:
    • Shared benefits of changing jobs, including new perspectives, increased salaries, and remote work opportunities.
  • Discussion on identity:
    • Addressed the notion that a person’s career, skills, or background do not define their true identity, emphasizing the importance of curiosity.
  • Sadek on decision-making in programming:
    • Warned about the complexity of making choices amidst conflicting information.
    • Encouraged keeping the goal in focus when assessing different programming approaches.
  • Mansfield on using Hakka and Grafana:
    • Discussed performance monitoring in large applications using Hakka for data collection and Grafana for visualization, stressing performance measurement’s importance in managing application health.

Conclusions and Takeaways:

  • Emphasis on learning through practice and building new connections in one’s knowledge base.
  • Importance of adaptability in one’s career and the potential benefits of diverse experiences.
  • Better tools and practices can significantly enhance programming efficiency and application performance.
  • Understanding one’s core self and emphasizing the value of curiosity lead to better coping strategies in the tech industry.

Lightning Talks - Day 1
TODO • March 11, 2015 • Wrocław, Poland

wroclove.rb 2015

00:00:09.360 Hi guys, my name is Max. I'm a Ruby developer from Minsk, and I'm 17 years old.
00:00:17.359 For those of you who don’t know where Minsk is, here is a map.
00:00:25.519 Today, I want to tell you about my own experience using Gem Cells.
00:00:30.720 For those who don’t know what Gem Cells is, it’s a part of Trailblazer.
00:00:36.640 If you don’t know what Trailblazer is, there will be a speech about it later.
00:00:43.760 A few months ago, my team and I were developing a Rails application.
00:00:51.440 All you need to know about this Rails application can be expressed in four statements.
00:00:57.600 First, its main functionality was managing orders. Second, it had very complex business logic. Third, it had many roles such as admin, analyst, and collaborator. Fourth, it had various order states like new, paid, sent, returned, and so on.
00:01:12.479 Here is a sample Rails application I created to show the main functionality: here is the list of orders. If you click on an order, it expands, and you can view its details.
00:01:24.479 Our first solution was to create a scoped controller for each role, leading us to create four controllers: an admin controller, a storage controller, and so on. However, we forgot about an important aspect: the orders had many states. For example, a post manager could see the order's contact information if the order was in the 'new' state, or a collaborator should see a 'process' button if the order was in the 'waiting for clarification' state. I could elaborate on this forever.
00:01:52.960 One day, after returning from my trip to Norway, I saw my team looking at me strangely. Their faces were filled with joy, and I asked, "Hey guys, do you remember that you're Ruby developers? Why are you so happy?" They answered, "We refactored it a little." It took me over an hour to understand the new structure of our views and controllers, but once I did, I found it very straightforward and efficient.
00:02:34.560 We used Gem Cells, an open-source component that is part of Trailblazer, a new architecture for Rails.
00:02:40.239 First, we removed all the scoped controllers as they were an ineffective solution. We created a single Orders controller for all roles.
00:02:46.400 Then, we created a concepts folder and an Order Cell to render our collection of orders in the view. You might be wondering, what exactly is a Cell? To simplify, a Cell is just a Ruby class with a show method that renders your views.
00:03:05.600 Cells have a convenient feature that allows you to specify different conditional statements. For instance, in our case, if the order's state was 'sent' and the user’s role was 'post manager', we created a Post Manager Send Order Cell. We divided our order into logical sections, such as order history, card shipping, and implemented a 'body parts' method to render our views.
00:03:38.720 For example, the analyst can see the owner's control information if the order is in a specific state. So, if you have any questions about Cells, you can find me after my speech. Thank you very much.
00:05:42.240 Okay, let's start with a show of hands. Raise your hand if you use a keyboard at least twice a week. Pretty much everybody. Now, raise your hand if you've seen Claire Underwood die in the newest season of House of Cards. Raise your hand if you’ve read this post.
00:05:53.520 Okay, just a couple of hands. All this talk is based on something important and popular in programming: brackets. They can be awkward to type. Shift is typically used to insert uppercase and special characters, but it’s pretty useless on its own—nothing happens if you press just the shift key.
00:06:22.479 We can change that! If you press the shift key alone, it can enter either the left or right bracket. It’s really cool, because you lose nothing, and you can still type uppercase characters as you did before. Now, you can insert brackets with just one finger, which makes typing much more convenient.
00:06:54.240 Some people might argue that their text editor automatically closes brackets, but you still have to open them. When typing uppercase characters, the parentheses get typed if you press the shift key alone. Does it lead to entering brackets by accident often? No, not really.
00:07:09.919 If you're a developer who is familiar with Closure, you might find it really cool as well. Now, let’s talk about another key.
00:07:16.400 Caps Lock is usually in a pretty good spot on the keyboard, but it’s basically a relic from 1963. We can make Caps Lock act as the Escape key when pressed alone and as Control when pressed with another key.
00:07:35.920 So, you lose Caps Lock, but nobody really uses that. What you gain is easier access to both the Control and Escape keys.
00:08:11.919 All the information can be found under this link, and I’m Ravishes on Twitter. Thank you.
00:08:43.200 Hi, my name is Ivan. I'm from Russia, I'm a freelancer, and that's it for now. I want to share some thoughts about learning.
00:08:55.360 Sometimes, when a guru gives a talk, they often use technical terminology that may be too advanced, leaving others feeling lost. I’ve found myself in this situation many times.
00:09:12.480 Recently, I learned why this happens and what to do about it. The guru usually has a detailed mental model of the subject, understanding how various concepts relate to one another. In contrast, the audience may only know bits and pieces.
00:09:30.480 Sometimes you might develop misconceptions that prevent you from fully grasping the topic. What can you do if you like a talk? The main takeaway is to repeat and practice.
00:09:50.959 Learning is about building new connections in your brain, so you need to eliminate any delusions and connect new information to your previous experiences. This is only achievable through practice.
00:10:01.360 You could watch a video or listen to a presentation, and then you should practice. After that, review the material again for a much more effective learning experience.
00:10:11.120 For those interested in how the brain works, I recommend a fantastic course on Coursera. Thank you.
00:10:32.560 I want to talk about asynchronous programming with the Commodore 64.
00:10:40.000 Wait, what? Commodore 64? What do you mean it could do that 32 years ago?
00:10:46.079 How many of you know what a Commodore 64 is? Nice, pretty much everyone. For those who don’t know, it was the highest-selling single computer model of all time and is still recognized in the Guinness World Records.
00:10:58.080 The Commodore 64 features a 1 MHz processor, 8-bit registers, and 64 kilobytes of memory. It hasn’t been produced for over 20 years, yet 70 new games were released just last year.
00:11:10.000 Why do people still love the Commodore 64? Let me show you some assembly code.
00:11:27.760 This simple code creates a program that animates colors. It works by running a loop that cycles characters on top and colors on the bottom, adding a delay so it doesn’t run too quickly.
00:11:46.240 This is the simplest way to achieve animation on a Commodore 64, and, in fact, pretty much anywhere. But there’s a better way: we can let the computer manage the animation asynchronously.
00:12:05.760 When I say asynchronously, it means we don’t have direct control over when the animation is executed. To do this, we disable interrupts and load the address of the cycle colors routine into a register.
00:12:34.560 We'll need to load the address of the method and store it in an interrupt vector.
00:12:53.919 When we return from our method, instead of returning directly, we jump to the interrupt address.
00:13:12.160 If I’ve typed everything correctly, it should still work, and what happens now is the program will end, but the animation will continue to run.
00:13:32.240 You can even type over the animated colors, which really demonstrates the power of asynchronous programming.
00:13:50.800 I love the Commodore 64, and as I mentioned in my previous talk, I’ve started working on a Commodore 64 screencast, and I want to give you a sneak peek of the intro, which will be released soon.
00:14:29.440 Here’s the website; please subscribe.
00:14:38.240 Hello everyone. I want to discuss a rather controversial topic: why you should consider changing your job.
00:14:45.840 My name is Luciano; I’ve recently started working at a new company called Strategizer.
00:15:01.600 There are several reasons why changing your job might be beneficial. Firstly, escaping your comfort zone can be a positive experience.
00:15:18.880 You meet new people when you're new in your job, leading to less pressure on you compared to your previous role.
00:15:32.720 Additionally, you can increase your salary when changing jobs since most people don’t seek lower-paying jobs.
00:15:47.119 Changing jobs allows you to view things from a different perspective. If you've been tied to your job for two years, you may see things differently when you switch.
00:16:01.600 Let’s say I’ve convinced you to consider a job change. So, what’s next? I think working remotely is a fantastic option, especially for programmers.
00:16:10.160 With remote work, you can be anywhere in the world. For example, you can spend two months working from Malaysia.
00:16:26.080 You can even work in your previous company's office through remote work, which provides better income-to-expenses ratios.
00:16:45.440 It's also easier to switch jobs in the future when you're not tied down, allowing you more flexibility.
00:17:02.080 Here are a couple of links where you can find remote jobs. I found mine on one of these websites.
00:17:14.160 This particular link is great as it consolidates many resources and provides information regarding co-working spaces.
00:17:23.680 Thank you.
00:17:34.159 You probably already know that your code is not you.
00:17:46.080 There’s much more to consider: your likes, your upvotes, your comments, your internet karma, even your gender and political or religious views—they aren’t you.
00:17:58.960 Your upbringing, your family, your job—even the project you’re working on—none of these define you.
00:18:15.040 What you eat, your health problems, or your nationality—they're not who you are.
00:18:27.920 If they take all these aspects away from you, what is left? Who are you when stripped of everything?
00:18:42.320 For me, it’s curiosity. If I had to start over, I would still have my curiosity, a desire to learn and know everything.
00:19:04.480 Decoupling your identity from external factors can help you cope with stress because they cannot take that core part of you.
00:19:28.480 You can dismiss negative comments, opinions, or karma because they don’t define you. Find your true self.
00:19:41.200 Thank you.
00:20:00.000 Hi everyone, my name is Sadek, and I’m all about questioning things.
00:20:07.360 I really enjoyed the Mi House talk and I prefer playing devil's advocate from time to time. I agree with the point made but I want to discuss a trap that's easy to fall into.
00:20:26.240 It's easy to find arguments from people on opposing sides of a topic when researching it.
00:20:38.080 However, when it comes time to make a choice based on information from these sources, it can get complicated.
00:20:56.720 Given that some aspects are subjective, the absence of a definitive answer complicates matters further.
00:21:16.320 Scientific research often provides a clearer picture than personal opinions, yet people often resort to their beliefs.
00:21:34.720 In some issues, like vaccinations or climate change, there are clear conclusions but many deny the evidence.
00:21:53.280 The challenge lies in determining whom to trust when presented with conflicting views. The simple existence of differing opinions can disrupt clarity.
00:22:11.840 Sometimes, people decide to find a compromise, but that approach doesn't always yield the truth.
00:22:22.560 In programming, the effectiveness of different approaches often comes down to personal preference, so it’s essential to research properly.
00:22:50.960 Always remember to identify the goal you want to achieve in a project and use metrics to assess the options.
00:23:04.320 Ultimately, you may find that both options you’re considering can be valid and effective.
00:23:16.800 Rather than spending excessive time on making a decision, focus on your work. That’s it, thank you.
00:23:32.000 Hi everyone, I’m Mansfield. I’d like to discuss manufacturing Ruby applications with Hakka and Grafana as a case.
00:23:43.680 What I'm working on is a SaaS-based architecture for a large application: over 30 applications that handle heavy usage.
00:24:01.920 Hakka is a great solution; it can measure so many aspects of performance, and it’s open-source.
00:24:21.000 You can deploy it in a Docker container, and it works out of the box; plus, it’s fast and accepts UDP packages.
00:24:36.960 If you need a way to measure how often, how fast, or the error rates in your application, Hakka is the solution.
00:24:52.320 You can utilize aspect-oriented programming to collect data, store it in InfluxDB, and visualize it through Grafana.
00:25:06.960 Grafana allows for multiple perspectives on your stats, annotations, and data source configurations.
00:25:23.760 While there are downsides—such as requiring maintenance and being challenging to debug when using UDP—the benefits far outweigh them.
00:25:41.440 Remember to use a connection pool for UDP to avoid overwhelming Ruby's garbage collector.
00:26:02.880 In the end, you are constructing a complete performance measurement system that can help manage and monitor application performance.
00:26:17.760 And that’s all, thank you!
Explore all talks recorded at wroclove.rb 2015
+6