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!