<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Marat Miftakhov on Medium]]></title>
        <description><![CDATA[Stories by Marat Miftakhov on Medium]]></description>
        <link>https://medium.com/@marateek?source=rss-c57784ed13d6------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*-Pb1bIlSuzQUx_6QTdn1kQ.jpeg</url>
            <title>Stories by Marat Miftakhov on Medium</title>
            <link>https://medium.com/@marateek?source=rss-c57784ed13d6------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 23:21:30 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@marateek/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[How to Stay Sane While Working Remotely: Time Management]]></title>
            <link>https://medium.com/@marateek/how-to-stay-sane-while-working-remotely-time-management-b7c3904a0e7c?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/b7c3904a0e7c</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[work-from-home]]></category>
            <category><![CDATA[mental-health]]></category>
            <category><![CDATA[time-management]]></category>
            <category><![CDATA[productivity]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Fri, 14 Feb 2025 13:28:24 GMT</pubDate>
            <atom:updated>2025-02-14T13:28:24.860Z</atom:updated>
            <content:encoded><![CDATA[<p>Working remotely comes with a lot of freedom. Flexible hours mean you can finish at 10 PM or 1 AM — whatever works for you. But with great freedom comes great responsibility, especially when it comes to managing your time effectively. Here’s how I’ve learned to stay productive, focused, and sane while working from home.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lFR34HBc_f3DX27Klq2Mqw.jpeg" /></figure><h3>Experiment with Your Sleep Schedule</h3><p>One of the perks of remote work is setting your own hours, but that doesn’t mean you should ignore your sleep patterns. I’ve heard people say, “I usually go to bed at 2 AM and wake up at 10 AM. If I try to wake up at 6 AM, I’m a zombie all day.” Sound familiar? But here’s the thing: if you only sleep for four hours, of course you’ll feel terrible. That’s not a fair experiment.</p><p>Instead, try adjusting both your bedtime and wake-up time while maintaining a consistent 7–8 hours of sleep. Give it a couple of weeks and see how you feel. For example, I tried waking up at 6 AM and going to bed at 10 PM. Turns out, I couldn’t fall asleep at 10 PM no matter what I tried — even with sleep aids. I’d lie in bed for an hour or two, wake up exhausted, and repeat the cycle every night. Spoiler: it didn’t work for me. The key is to find what works for <em>you</em>.</p><h3>Rethink Your Work Hours</h3><p>Let’s be honest: most of us don’t actually work a full 8 hours a day. On average, focused work time is closer to 4–6 hours. Sure, there are days when emergencies push us to work 10 or even 12 hours, but those are exceptions, not the rule.</p><p>With proper planning and discipline, you can get all your tasks done by lunch and have the rest of the day to yourself. The problem is, remote work often looks like this: work for a bit, scroll through social media, work some more, grab a coffee, join a meeting, scroll again, and repeat. Sound familiar? There’s a better way.</p><h3>The Pomodoro Technique: A Game-Changer</h3><p>Enter the <strong>Pomodoro Technique</strong>: short, focused work sessions followed by breaks. Here’s how it works:</p><ul><li>Work for 25 minutes, then take a 5-minute break.</li><li>After four sessions, take a longer break (15–30 minutes).</li></ul><p>I’ve tried both 25/5 and 50/10 intervals, and 25/5 works best for me. Here’s why this technique is so effective:</p><h4>Benefits of Pomodoro:</h4><ol><li><strong>Beats Procrastination</strong>: Instead of facing “a whole day of work,” you only need to focus for 25 minutes. That’s not scary at all. Starting becomes much easier.</li><li><strong>Boosts Focus</strong>: Just like school classes are 40 minutes long for a reason, your brain needs regular breaks to stay sharp. Pomodoro ensures you take those breaks.</li><li><strong>Improves Health</strong>: Staring at a screen for hours strains your eyes and reduces your ability to focus on different distances (a process called <strong>accommodation</strong>). Getting up and moving around during breaks helps your eyes and body recover.</li><li><strong>Increases Productivity</strong>: Short, focused bursts of work help you get more done in less time. You might even finish your tasks early and have extra time for hobbies, learning, or relaxation.</li><li><strong>Protects Mental Health</strong>: Those 5-minute breaks prevent mental overload. By the end of the day, you’ll feel less drained.</li></ol><h3>How to Make Pomodoro Work for You</h3><ul><li><strong>Eliminate Distractions</strong>: Put your phone on airplane mode, close unnecessary browser tabs, and let your household know you’re in a work session.</li><li><strong>Use Noise-Canceling Headphones</strong>: If you don’t have them, try regular ones with white, brown, or pink noise to block out distractions.</li><li><strong>Take Real Breaks</strong>: Don’t spend your breaks scrolling through social media or watching YouTube. Instead, get up, stretch, walk around, or look out the window. I sometimes play my guitar or do 20 push-ups, but most of the time, I just walk and gaze outside.</li></ul><h3>Set a Hard Stop for Your Workday</h3><p>One of the biggest challenges of remote work is the blur between work and personal life. To avoid feeling like you’re always “on,” set a clear end time for your workday. No checking emails at 10 PM!</p><p>Cal Newport, a computer science professor and author, created a planner with a checkbox labeled <strong>“Shutdown Complete.”</strong> It’s a deliberate nod to turning off a computer — once it’s off, it can’t turn itself back on. Marking that checkbox means you’re done for the day. No exceptions.</p><p>These simple strategies have helped me feel better, use time more rationally, and don’t overload myself with work.</p><p>Try them. You might just find yourself with a few extra hours in your day. And who doesn’t want that?</p><p>Find more articles about IT life on my Substack <a href="https://balancedtechie.substack.com/">The Balanced Techie</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b7c3904a0e7c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Perfectionism Trap: How It Stops You From Starting]]></title>
            <link>https://medium.com/@marateek/the-perfectionism-trap-how-it-stops-you-from-starting-2ee0ebe4a273?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/2ee0ebe4a273</guid>
            <category><![CDATA[perfectionism]]></category>
            <category><![CDATA[fear-of-failure]]></category>
            <category><![CDATA[tech-interview]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Fri, 07 Feb 2025 17:45:05 GMT</pubDate>
            <atom:updated>2025-02-07T17:45:05.343Z</atom:updated>
            <content:encoded><![CDATA[<p>Very often, we dream about starting something new. Writing a book, starting a business, launching a YouTube channel. And immediately, we begin to imagine the result: our book becomes a sensation, the business generates massive income, the channel gains millions of subscribers. The picture we paint in our minds is beautiful.</p><p>We become consumed by these thoughts, and they bring us joy because we constantly think about the outcome we’ve already achieved. We imagine our new life: as a successful author, I travel to meet readers, sign autographs, and embody the image of a creative intellectual, perhaps even wearing a scarf. As a successful entrepreneur, I drive an expensive car, make important decisions, and give orders to subordinates. As a blogger with a million-strong audience, I create amazing content, bask in the glory, and influence countless people.</p><p>We love imagining all of this. But we also know that many people in the world dream of the same things, try to achieve them, and fail. We tell ourselves that we won’t be like them. After all, they’re just silly losers who approached things the wrong way.</p><p>We, on the other hand, will do everything <strong>the right way</strong>.</p><p>So, we won’t just start writing a book. That’s the path of an amateur, doomed to failure. Instead, we’ll plan everything down to the smallest detail. First, we’ll read several (or better yet, all) great classic authors to learn how to craft beautiful sentences. Second, we’ll study literature as a science — buy textbooks, analyze styles and techniques, and understand the difference between an allegory and a metaphor. Third, of course, we’ll perfect our command of our language, our primary tool. We’ll memorize all the rules and exceptions, to ensure we never make a single grammatical mistake!</p><p>Yes, it will take time. But it will be done thoughtfully, thoroughly, and deliberately. As they say, “slow and steady wins the race.” After all, Rome wasn’t built in a day. Someday, we’ll achieve our goal!</p><p>Spoiler: it will never happen. Everything described above is nothing but perfectionism. In other words, “<strong>I won’t act until conditions are perfect</strong>.”</p><p>So, what’s the better approach?</p><p>Write the book as soon as possible and share it with different people: potential readers, established writers, or even your old literature teacher. Gather feedback, work on your mistakes, and write the next book. Repeat as necessary.</p><p>What happens with this approach?</p><p>First and foremost, <strong>you’re taking action</strong>. Because reading about something isn’t the same as doing it. Watching videos about it isn’t the same as doing it. Talking about it — well, you get the idea.</p><p>Second, you gain valuable insights into what you need to improve and where to focus your efforts.</p><p>Let’s take a more practical example: job interviews. Instead of spending weeks or months preparing, afraid of messing up, you could just go to an interview today. Yes, you might not answer all the questions correctly. Yes, you might stumble at times. But today, you’ll gain real interview experience. Today, you’ll record yourself (preferably on video), make a list of questions you couldn’t answer, and tomorrow, you’ll address those gaps and go to the next interview.</p><p>Why is this important?</p><p>Why is it crucial to take action and do so as often as possible? Because gaining real experience also means <strong>getting used to the process</strong>. If you’re nervous during your first interview, by the fifth one, you’ll feel much calmer, and by the tenth, you’ll be completely at ease — maybe even cracking jokes.</p><p>Here’s a personal example. At 28, I divorced my first wife, with whom I had been in a relationship for over 10 years. I realized something terrifying: I had no idea how to approach women. Because I had no practice. I started studying the art of dating and communication, but at first, I over-theorized. I read articles, watched videos, but hesitated to put anything into practice. Naturally, it led nowhere. At some point, I realized <strong>I was delaying action because I was afraid of failure</strong>, afraid of rejection. It was as if I wanted to master the theory so thoroughly that no woman could ever say no to me. I understood that without practice, this was impossible. So, I started going on dates. At first, it was scary. I was nervous, worried about awkward silences, and unsure of what to do. I went on dates frequently, sometimes 3–4 times a week, and soon noticed that, first, I wasn’t nervous anymore — I felt completely relaxed. Second, instead of fearing saying the wrong thing, I became curious: what would happen if I said this or that? What if I made a joke about something silly? Third, I started enjoying the dates, and I think the women felt that too, which helped them relax and enjoy themselves as well. That’s when things started working out for me.</p><p>This is why the principle of “<strong>do it now as best as you can — gather feedback — work on your mistakes — do it again</strong>” is so powerful. It allows you to achieve results much faster than endless preparation, fueled by the fear of failure, followed by an attempt that’s likely to fail and completely discourage you from continuing. After all, you’ve invested so much time, energy, and effort, only to fail immediately. It’s enough to make you want to give up.</p><p>Prolonged theoretical preparation doesn’t give you real experience, which is far more valuable than theory. Moreover, the information you spend so much time studying may become outdated.</p><p>If you want to achieve success in any endeavor, you need to start doing it as soon as possible.</p><p>Find more articles about IT life on my Substack <a href="https://balancedtechie.substack.com/">The Balanced Techie</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2ee0ebe4a273" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[It’s OK Not to Be a Hardcore Programmer]]></title>
            <link>https://medium.com/@marateek/its-ok-not-to-be-a-hardcore-programmer-a2e6f210a04d?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/a2e6f210a04d</guid>
            <category><![CDATA[careers]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[beginner-developers]]></category>
            <category><![CDATA[career-advice]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Thu, 05 Dec 2024 07:56:30 GMT</pubDate>
            <atom:updated>2024-12-05T07:56:30.932Z</atom:updated>
            <content:encoded><![CDATA[<p>There are people who started coding in school, wrote their own compiler in college, got hired by Google, and contribute to open source on a regular basis. Often, these people didn’t go for the money. They just loved it. They were always learning, coding, experimenting. Naturally, they enrolled in relevant programs, and their journey took off from there.</p><p>These are the hardcore programmers who now look down on everyone else. They devote themselves entirely to the craft — not out of discipline, but because they don’t have to force themselves.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*osM9vlacSI2EYzgo6JspQQ.jpeg" /></figure><p>For them, it’s more about filling a void, escaping reality. While some people escape into alcohol or video games, others escape into programming. It becomes both salvation and curse. The pain subsides, but they drift further away from the “normal” image. They can’t socialize or form relationships with the opposite sex. They have no interest in watching shows, partying, playing games, or traveling. They lack other hobbies or outlets.<br>Of course, not all of them are like this.<br>These people don’t watch “Python in One Hour” on YouTube. They write Linux drivers in Vim.</p><p>I can confidently say — I’m not one of them. I became a programmer because I didn’t want to be a construction worker. I wanted to sit at a computer in a cozy office (or better yet, at home), sip coffee, and earn decent money. Oh, and I wanted the freedom to work in any country without being tied to language or other constraints. At the time, I didn’t know of any other profession like that. Besides, I had a slight interest in programming, which was enough.</p><p>Do I love what I do? It depends on what you mean by love. I like my job. I like working from home. I like earning a decent salary. I like coding and learning new things. But I also like a ton of things unrelated to programming. I have a wife, friends, and close ones. I enjoy hiking and traveling. I love playing guitar and singing. I like running, playing board games and video games, watching series, and learning languages (human ones). I have a full life, and I’m not ready to give it up. I don’t feel the need to escape and hide in programming.</p><p>Because it’s a job. And we go to work for one reason only — to earn money. Of course, this doesn’t apply to those hardcore programmers I mentioned earlier. But for everyone else, programming is just a job. They do it to earn a living.</p><p>I don’t know if it’s still popular, but there used to be this phrase:</p><blockquote>“<em>You have to love coding with all your heart, or you won’t last, you won’t succeed, and you won’t get it at all.</em>”</blockquote><p>In my youth and naivety, I even believed it and kept trying to force myself to love programming. Now, I don’t want to pretend, nor do I need to. It’s just a job. No one tells a structural engineer they have to love their work with all their heart, spend their free time drawing pet projects, and immerse themselves in it 24/7. It’s normal for people in any profession to rest after work, spend time with loved ones, and do whatever they like. But IT professionals are told: this must be your thing; you should wake up and go to bed thinking about solving your current task. You should contribute to open source, solve LeetCode problems, attend conferences, and all those other stereotypes.</p><p>I believe we, IT professionals, don’t have to be fanatics. If we handle our responsibilities and meet the skill requirements, that’s enough. I’m just an employee. I’m paid to do my job. If I complete tasks on time and interact well with the team, no one should care how many LeetCode problems I’ve solved or what pet projects I maintain.</p><p>Yes, I’ll never be “the best IT guy” or anything like that. I don’t want to dedicate my life to chasing universal approval. Why? To prove something to someone? No, thanks. I want to do my job well enough so that I’m not ashamed of my work. At the end of the day, I want to know I didn’t mess things up. That way, I can find satisfaction in my work, and that’s a good feeling.</p><p>If you’re a beginner programmer and stories like these make you feel like an imposter — understand that you’re fine. People are just trying to impose silly stereotypes on you, making you think you’re a loser and won’t succeed. Throw that nonsense out of your head. Learn, write code, and pass interviews.</p><p>I’m not saying you can just take a “Java for Dummies” course and start asking for a senior-level salary. Yes, you need skills and knowledge, like in any field. To learn to fly a plane, you have to study a lot of theory and log practice hours. But no one says, “You have to be a born pilot.”</p><h4>Conclusion</h4><p>If you love programming naturally — well, good for you. If not — discipline yourself to study regularly, learn how to do your job well, and do it. Good luck.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a2e6f210a04d" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Unlocking the Power of OIDC: Seamless and Secure Identity Management]]></title>
            <link>https://medium.com/@marateek/unlocking-the-power-of-oidc-seamless-and-secure-identity-management-d70d5730a855?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/d70d5730a855</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[oidc]]></category>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[openid-connect]]></category>
            <category><![CDATA[identity-management]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Wed, 07 Jun 2023 08:51:30 GMT</pubDate>
            <atom:updated>2023-06-07T08:51:30.081Z</atom:updated>
            <content:encoded><![CDATA[<p>In today’s digital landscape, ensuring secure and seamless authentication and authorization processes is paramount. OpenID Connect (OIDC) has emerged as a widely adopted open standard that combines the power of OpenID and OAuth 2.0 protocols. OIDC provides a robust framework for identity verification, user authentication, and authorization, making it a preferred choice for developers and businesses worldwide. This article explores the key concepts, benefits, and applications of OIDC, shedding light on its significance in the modern era.</p><p>Looking to take your programming and tech skills to the next level? I offer personalized mentoring services to help you unlock your full potential. Whether you’re a beginner looking to kickstart your coding journey or an experienced developer aiming to refine your expertise, my mentoring programs are tailored to your specific goals and learning style. Gain valuable insights, receive guidance on industry best practices, and accelerate your growth in the ever-evolving world of technology. Join me on this transformative learning journey and let’s shape your success together.</p><p><a href="https://linktr.ee/marateek">Contact Me</a></p><h3>What is OpenID Connect (OIDC)?</h3><p>OpenID Connect is an identity layer built on top of the OAuth 2.0 framework, which focuses on authentication and provides a standardized way for clients to authenticate users, obtain their identity information, and make authorized requests to protected resources. It offers a secure and scalable solution for single sign-on (SSO), allowing users to authenticate across multiple websites or applications using a single set of credentials.</p><h3>How does OIDC work?</h3><figure><img alt="oidc, openid connect, authentication, authorization" src="https://cdn-images-1.medium.com/max/1024/0*UO2kh0c8fegEwk8I.png" /></figure><p>OIDC builds upon the OAuth 2.0 authorization framework and introduces additional features for identity verification. The key components involved in OIDC are:</p><ol><li>Identity Provider (IDP): The Identity Provider is responsible for authenticating the user and providing identity information to clients. Popular IDPs include Google, Microsoft, and Facebook.</li><li>Client Application: The client application is the website or application that requires user authentication and access to protected resources. It initiates the authentication process and interacts with the IDP.</li><li>Resource Server: The resource server hosts protected resources that can be accessed by authenticated and authorized users.</li><li>Authorization Server: The authorization server issues access tokens and ID tokens to clients after successful authentication and authorization.</li></ol><h3>Benefits of OIDC</h3><ol><li>Enhanced Security: OIDC provides a secure authentication mechanism, protecting against common threats like phishing, replay attacks, and token theft. It enables the use of industry-standard cryptographic algorithms and provides token-based authentication, reducing the reliance on passwords.</li><li>Simplified User Experience: With OIDC, users can enjoy a seamless SSO experience. They can log in to multiple applications or websites using their preferred identity provider, eliminating the need to remember multiple usernames and passwords.</li><li>Scalability and Interoperability: OIDC is highly scalable, allowing businesses to handle a large number of users and identity providers. It also promotes interoperability by offering standard protocols and data formats that can be easily implemented across different platforms and technologies.</li><li>Federated Identity: OIDC enables the federation of identity across multiple systems and applications. Users can leverage their existing social media or enterprise credentials to access various services, reducing the need for separate account creation.</li></ol><h3>Applications of OIDC</h3><ol><li>Single Sign-On (SSO): OIDC simplifies the SSO experience by enabling users to log in once and access multiple applications seamlessly. It is widely used in enterprise environments and consumer-facing applications.</li><li>Mobile and Web Applications: OIDC is particularly popular in the development of mobile and web applications, allowing developers to integrate robust and secure authentication features with ease.</li><li>API Security: OIDC can be leveraged to secure APIs by implementing authentication and authorization mechanisms. It enables clients to authenticate with the API using access tokens and perform authorized actions on behalf of the user.</li><li>Internet of Things (IoT): OIDC has started finding applications in the IoT space, enabling secure and authenticated interactions between IoT devices, applications, and cloud services.</li></ol><h3>Conclusion</h3><p>OpenID Connect (OIDC) has emerged as a powerful standard for enhancing authentication and authorization in the digital era. By combining the strengths of OpenID and OAuth 2.0, OIDC offers a secure, scalable, and interoperable solution for identity verification and SSO. Its benefits extend beyond web and mobile applications, making it an essential tool for securing APIs and facilitating secure interactions in the IoT landscape. As the digital world continues to evolve, OIDC will likely remain a vital component in ensuring robust identity management and protecting user data.</p><p>Thanks for reading!</p><p>Follow me on <a href="https://twitter.com/marat_mif">Twitter</a>, I always tweet about new articles, so you won’t miss any.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d70d5730a855" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What I Use to Stay Productive as a Software Engineer]]></title>
            <link>https://medium.com/@marateek/what-i-use-to-stay-productive-as-a-software-engineer-44eedeb38221?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/44eedeb38221</guid>
            <category><![CDATA[software-engineer]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[productivity-hacks]]></category>
            <category><![CDATA[notion-template]]></category>
            <category><![CDATA[notion]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Sat, 13 May 2023 15:40:10 GMT</pubDate>
            <atom:updated>2023-05-13T15:40:10.208Z</atom:updated>
            <content:encoded><![CDATA[<p>As a software engineer, staying productive is crucial to achieving success in your work and advancing your career. But with so many distractions and demands on your time, it can be difficult to stay focused and get things done. In this article, I’ll share some of the things that have helped me stay productive in my software engineering work.</p><p>So, the first item on my list is Notion. Yes, it’s super popular app, that everyone is talking about. But honestly, I use it everyday for my work purposes, for my enterpreneurial purposes, and for my personal life. I take notes, I write articles, I prepare for technical interviews, I create tables and Kanban boards for my tasks, I track my learning process. These are just a few examples of using Notion app. It’s absolute gamechanger for me.</p><p>If you haven’t install Notion yet, give it a try — <a href="https://affiliate.notion.so/n393557waerg">https://affiliate.notion.so/n393557waerg</a></p><p>Also, I’ve created a free template for tracking your 100 days of code challenge. It’s available on Gumroad for $0 — <a href="https://marateek.gumroad.com/l/vidva">https://marateek.gumroad.com/l/vidva</a></p><figure><img alt="notion app" src="https://cdn-images-1.medium.com/max/512/1*fHHQh3LP7x8vY6cxUexytg.png" /><figcaption><a href="https://affiliate.notion.so/n393557waerg">https://affiliate.notion.so/n393557waerg</a></figcaption></figure><p>Next thing I want to share it’s the Bullet Journal. I don’t know why but it works perfectly for me. My productivity increased tremendously since I’ve started to use this technique.</p><p>Here you can learn about what it is and how to use it — <a href="https://www.youtube.com/watch?v=fm15cmYU0IM&amp;pp=ygUOYnVsbGV0IGpvdXJuYWw%3D">https://www.youtube.com/watch?v=fm15cmYU0IM&amp;pp=ygUOYnVsbGV0IGpvdXJuYWw%3D</a>.</p><figure><img alt="bullet journal, journaling" src="https://cdn-images-1.medium.com/max/1024/1*_zh_bOG5UZ_ARB4w41PkKQ.jpeg" /></figure><p>All you need to start journaling is a notebook and a pen.</p><p>I use an A5 dotted notebook, similar to this — <a href="https://amzn.to/3MlG9sv">https://amzn.to/3MlG9sv</a>.</p><figure><img alt="dotted notebook, journal" src="https://cdn-images-1.medium.com/max/654/1*ceF1A2-gOX3o462jYvlgUA.jpeg" /><figcaption><a href="https://amzn.to/3MlG9sv">https://amzn.to/3MlG9sv</a></figcaption></figure><p>I like to write with a fountain pen, there’s something special about it. Maybe the sound. Anyway, I use Lamy Fountain pen and it’s oddly satisfying.</p><p>Here is the link to Amazon — <a href="https://amzn.to/3M8AUwa">https://amzn.to/3M8AUwa</a>.</p><figure><img alt="lamy pen, fountain pen" src="https://cdn-images-1.medium.com/max/476/1*D2z4ffXiwrov-JNenKKYwA.jpeg" /><figcaption><a href="https://amzn.to/3M8AUwa">https://amzn.to/3M8AUwa</a></figcaption></figure><p>I refill it with black Parker ink — <a href="https://amzn.to/3I2QDM0">https://amzn.to/3I2QDM0</a>.</p><figure><img alt="parker ink, black ink" src="https://cdn-images-1.medium.com/max/1024/1*PNJ-MVo8VdKbPTlJGVrUIA.jpeg" /><figcaption><a href="https://amzn.to/3I2QDM0">https://amzn.to/3I2QDM0</a></figcaption></figure><p>Now let’s switch to electronics. The keyboard I use is Microsoft Natural Ergonomic Keyboard 4000 and it’s absolutely amazing. It’s quiet, it’s comfortable, and it gives you very nice feeling in your hands. If you can type with 10 fingers this keyboard will get you delighted.</p><p>Here is the link — <a href="https://amzn.to/3BlU3Wb">https://amzn.to/3BlU3Wb</a>.</p><figure><img alt="microsoft keyboard, ergonomic keyboard" src="https://cdn-images-1.medium.com/max/1024/1*T3iBHdYRQ-O1p5EaAp0zfQ.jpeg" /><figcaption><a href="https://amzn.to/3BlU3Wb">https://amzn.to/3BlU3Wb</a></figcaption></figure><p>However, this is an old model and it’s quite expensive. Microsoft has newer versions of this keyboard — <a href="https://amzn.to/3BoexOk">https://amzn.to/3BoexOk</a> and <a href="https://amzn.to/3VXEHRj">https://amzn.to/3VXEHRj</a>.</p><figure><img alt="keyboard" src="https://cdn-images-1.medium.com/max/1024/1*udIwC6wktMgESWnqZ9CkbQ.jpeg" /><figcaption><a href="https://amzn.to/3BoexOk">https://amzn.to/3BoexOk</a></figcaption></figure><figure><img alt="ergonomic keyboard" src="https://cdn-images-1.medium.com/max/1024/1*szUn26oRfJqtCFsXqcCEPQ.jpeg" /><figcaption><a href="https://amzn.to/3VXEHRj">https://amzn.to/3VXEHRj</a></figcaption></figure><p>Another device which I use everyday is mouse. I have Logitech G502 Hero and it’s the best mouse I’ve ever had. I use it both for work and games and I love it. Amazon link as always — <a href="https://amzn.to/3Mn6d7v">https://amzn.to/3Mn6d7v</a>.</p><figure><img alt="gaming mouse, logitech mouse" src="https://cdn-images-1.medium.com/max/702/1*bChMK6121Fin63txSk4V_g.jpeg" /><figcaption><a href="https://amzn.to/3Mn6d7v">https://amzn.to/3Mn6d7v</a></figcaption></figure><p>All these devices I use on a daily basis and I’m absolutely happy about them. They help me complete my tasks and stay productive, they give me great user experience, they just make my life easier.</p><p>Don’t hesitate and share your favorite devices/tools/techniques for productivity in the comments. I’ll be glad to know about them :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=44eedeb38221" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Ultimate Guide to Using JAXB Parser for XML and Java]]></title>
            <link>https://medium.com/thefreshwrites/the-ultimate-guide-to-using-jaxb-parser-for-xml-and-java-751b00c93f57?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/751b00c93f57</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[xml-parsing]]></category>
            <category><![CDATA[jaxb]]></category>
            <category><![CDATA[xml]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Tue, 09 May 2023 09:58:55 GMT</pubDate>
            <atom:updated>2025-02-20T20:56:24.215Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="jaxb parser, marshalling, unmarshalling, xml in java" src="https://cdn-images-1.medium.com/max/1024/1*Ojq2op0gD9t7M5qZlw5Y8g.png" /></figure><p>This article is also available on my website — <a href="https://marateek.com/jaxb/">https://marateek.com/jaxb/</a></p><p>Java Architecture for XML Binding (JAXB) is a framework provided by Java that enables developers to convert XML documents to and from Java objects. This conversion process is known as unmarshalling (XML to Java) and marshalling (Java to XML). JAXB works by creating a mapping between the XML schema and Java classes, which enables the conversion process.</p><p>In this article, we will explore how to use JAXB parser to parse XML documents into Java objects and vice versa.</p><h3>Getting Started</h3><p>Before we start using JAXB, we need to ensure that it is included in our project&#39;s dependencies. JAXB is included in the Java Development Kit (JDK) since version 6, but if you are using an older version, you will need to add the JAXB dependencies manually.</p><pre>&lt;dependency&gt;<br>    &lt;groupId&gt;javax.xml.bind&lt;/groupId&gt;<br>    &lt;artifactId&gt;jaxb-api&lt;/artifactId&gt;<br>    &lt;version&gt;2.3.1&lt;/version&gt;<br>&lt;/dependency&gt;</pre><h3>Unmarshalling (XML to Java)</h3><p>To unmarshal an XML document into a Java object, we need to follow these steps:</p><ol><li>Create a JAXBContext: We need to create a JAXBContext that contains the mapping between the XML schema and the Java classes. We can create it using the <strong>JAXBContext.newInstance()</strong> method.</li><li>Create an Unmarshaller: The Unmarshaller is responsible for converting the XML document into a Java object. We can create it using the <strong>JAXBContext.createUnmarshaller()</strong> method.</li><li>Unmarshal the XML document: Finally, we can use the Unmarshaller to unmarshal the XML document into a Java object using the <strong>unmarshal()</strong> method.</li></ol><p>Here&#39;s an example code snippet that demonstrates how to unmarshal an XML document:</p><pre>// Step 1: Create a JAXBContext<br>JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class);<br><br>// Step 2: Create an Unmarshaller<br>Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();<br><br>// Step 3: Unmarshal the XML document<br>File xmlFile = new File(&quot;employee.xml&quot;);<br>Employee employee = (Employee) unmarshaller.unmarshal(xmlFile);</pre><p>In this example, we have an XML document that contains information about an employee. We create a JAXBContext that contains the mapping between the XML schema and the <strong>Employee</strong> class. Then, we create an Unmarshaller and use it to unmarshal the XML document into a Java object.</p><p>If you found this post helpful, you’ll love my free weekly newsletter! I write about building a successful career in tech while living a balanced and fulfilled life. Join <a href="https://balancedtechie.substack.com/">here</a>!</p><p><a href="https://balancedtechie.substack.com/">The Balanced Techie | Marat Miftakhov | Substack</a></p><h3>Marshalling (Java to XML)</h3><p>To marshal a Java object into an XML document, we need to follow these steps:</p><ol><li>Create a JAXBContext: We need to create a JAXBContext that contains the mapping between the XML schema and the Java classes. We can create it using the <strong>JAXBContext.newInstance()</strong> method.</li><li>Create a Marshaller: The Marshaller is responsible for converting the Java object into an XML document. We can create it using the <strong>JAXBContext.createMarshaller()</strong> method.</li><li>Marshal the Java object: Finally, we can use the Marshaller to marshal the Java object into an XML document using the <strong>marshal()</strong> method.</li></ol><p>Here&#39;s an example code snippet that demonstrates how to marshal a Java object:</p><pre>// Step 1: Create a JAXBContext<br>JAXBContext jaxbContext = JAXBContext.newInstance(Employee.class);<br><br>// Step 2: Create a Marshaller<br>Marshaller marshaller = jaxbContext.createMarshaller();<br><br>// Step 3: Marshal the Java object<br>Employee employee = new Employee(&quot;John&quot;, &quot;Doe&quot;, 30);<br>marshaller.marshal(employee, new File(&quot;employee.xml&quot;));</pre><p>In this example, we create a <strong>Employee</strong> object and then create a JAXBContext that contains the mapping between the XML schema and the <strong>Employee</strong> class. We create a Marshaller and use it to marshal the <strong>Employee</strong> object into an XML document.</p><h3>Advanced Usage of JAXB parser</h3><p>JAXB also provides some advanced features that can help us customize the mapping between the XML schema and the Java classes. Let&#39;s take a look at some of these features:</p><ol><li>@XmlRootElement: The <strong>@XmlRootElement</strong> annotation can be used to specify the root element of the XML document.</li><li>@XmlElement: The <strong>@XmlElement</strong> annotation can be used to specify the element name of a field or property in the XML document.</li><li>@XmlAttribute: The <strong>@XmlAttribute</strong> annotation can be used to specify that a field or property should be mapped to an XML attribute.</li><li>@XmlTransient: The <strong>@XmlTransient</strong> annotation can be used to specify that a field or property should be ignored during the marshalling and unmarshalling process.</li><li>@XmlAccessorType: The <strong>@XmlAccessorType</strong> annotation can be used to specify the access type for the fields and properties in the Java class.</li></ol><p>Here&#39;s an example code snippet that demonstrates how to use these annotations:</p><pre>@XmlRootElement(name = &quot;employee&quot;)<br>@XmlAccessorType(XmlAccessType.FIELD)<br>public class Employee {<br><br>    @XmlElement(name = &quot;first-name&quot;)<br>    private String firstName;<br><br>    @XmlElement(name = &quot;last-name&quot;)<br>    private String lastName;<br><br>    @XmlAttribute<br>    private int age;<br><br>    @XmlTransient<br>    private String password;<br><br>    // getters and setters<br>}</pre><p>In this example, we use annotations to specify the root element name, element names, attribute name, and access type of the fields in the <strong>Employee</strong> class.</p><h3>Conclusion</h3><p>In this article, we have learned how to use JAXB to parse XML documents into Java objects and vice versa. We have seen how to unmarshal an XML document and how to marshal a Java object using a JAXBContext, Unmarshaller, and Marshaller. We have also explored some advanced features provided by JAXB, such as annotations that can be used to customize the mapping between the XML schema and the Java classes. With these tools, we can easily handle XML documents in our Java applications.</p><p>Thanks for reading!</p><p>Follow me on <a href="https://twitter.com/marat_mif">Twitter</a>, I always tweet about new articles, so you won’t miss any.</p><p><a href="https://www.buymeacoffee.com/marateek">Marat Miftakhov</a></p><p>Do support our publication by following it</p><ul><li><a href="https://medium.com/thefreshwrites">The Fresh Writes</a></li><li><a href="https://thefreshwrites.blogspot.com/">The Fresh Writes</a></li><li><a href="https://medium.com/thefreshwrites/most-commonly-asked-java8-stream-based-interview-question-final-part-bbd4b4029b9a">Most Commonly asked Java8 Stream based Interview Question — Final Part</a></li><li><a href="https://medium.com/thefreshwrites/java-concurrent-api-packages-semaphore-5f3e7a11aa50">Semaphore | Java Concurrent API</a></li><li><a href="https://medium.com/thefreshwrites/java-8-bifunction-biconsumer-bipredicate-interface-with-example-5341009caf66">Java — 8 | BiFunction, BiConsumer &amp; BiPredicate Interface with Example</a></li><li><a href="https://medium.com/thefreshwrites/10-dev-tools-for-development-in-react-to-code-like-a-pro-part-2-7bf729dfb280">10 Dev Tools for Development in React to Code like a Pro — Part 2</a></li><li><a href="https://medium.com/thefreshwrites/the-complete-guide-to-building-a-white-label-ico-platform-bf804c503f38">The Complete Guide to Building a White-Label ICO Platform</a></li><li><a href="https://medium.com/thefreshwrites/10-exciting-python-project-ideas-for-beginners-in-2023-93bff33014d0">10 Exciting Python Project Ideas for Beginners in 2023</a></li><li><a href="https://medium.com/thefreshwrites/getting-started-with-spock-test-framework-for-java-applications-ba4717646427">Getting Started with Spock Test Framework for Java Applications</a></li><li><a href="https://medium.com/thefreshwrites/the-power-of-accountability-how-to-stay-on-track-and-achieve-your-goals-with-support-from-others-1ac1701da43">The Power of Accountability: How to Stay on Track and Achieve Your Goals with Support from Others</a></li><li><a href="https://medium.com/thefreshwrites/how-to-stay-motivated-when-youre-feeling-stuck-strategies-for-overcoming-procrastination-and-52fd5799947b">How to Stay Motivated When You’re Feeling Stuck: Strategies for Overcoming Procrastination and…</a></li><li><a href="https://medium.com/thefreshwrites/the-benefits-of-exercise-for-productivity-how-physical-activity-can-improve-your-focus-and-f6d55397c494">The Benefits of Exercise for Productivity: How Physical Activity Can Improve Your Focus and…</a></li><li><a href="https://medium.com/thefreshwrites/the-things-you-should-acknowledge-as-a-writer-d88185da968b">The Things You Should Acknowledge as a Writer</a></li><li><a href="https://medium.com/thefreshwrites/several-ways-to-monetize-your-blog-or-website-b90987b50089">Several Ways to Monetize Your Blog or Website</a></li><li><a href="https://medium.com/thefreshwrites/introducing-jasper-ai-your-virtual-personal-assistant-399809cddc54">Introducing Jasper Ai: Your Virtual Personal Assistant</a></li><li><a href="https://medium.com/thefreshwrites/list-vs-arraylist-in-java-318248c8b795">List vs ArrayList in Java</a></li><li><a href="https://medium.com/thefreshwrites/string-handling-in-java-a34c37d4f27e">String Handling in Java</a></li><li><a href="https://medium.com/thefreshwrites/executor-services-in-java-and-its-types-880c01228d6d">Executor Services in Java and its Types</a></li><li><a href="https://medium.com/thefreshwrites/beginners-guide-to-load-balancing-in-distributed-systems-6d42a17c529c">Discover the Power of Load Balancing in Distributed Systems: Enhance System Scalability</a></li><li><a href="https://medium.com/thefreshwrites/the-benefits-of-creativity-for-productivity-how-to-tap-into-your-creative-side-to-boost-your-f2cf4783bb13">The Benefits of Creativity for Productivity: How to Tap into Your Creative Side to Boost Your…</a></li><li><a href="https://medium.com/thefreshwrites/how-to-overcome-creative-burnout-and-reignite-your-passion-e44929217694">How to Overcome Creative Burnout and Reignite Your Passion</a></li><li><a href="https://medium.com/thefreshwrites/best-healthcare-app-development-companies-in-2023-34bc2c6ed40d">Top Healthcare App Development Companies in 2023</a></li><li><a href="https://medium.com/thefreshwrites/write-like-a-pro-7-proven-strategies-to-unlock-your-creative-writing-potential-81181c8f948f">Write Like a Pro: 7 Proven Strategies to Unlock Your Creative Writing Potential</a></li><li><a href="https://medium.com/thefreshwrites/how-to-use-the-pomodoro-technique-for-increased-productivity-strategies-for-breaking-your-work-cd921d09018f">How to Use the Pomodoro Technique for Increased Productivity: Strategies for Breaking Your Work…</a></li><li><a href="https://medium.com/thefreshwrites/quarkus-3-0-0-a-new-era-for-java-development-30d10048d49">Quarkus 3.0.0: A New Era for Java Development</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=751b00c93f57" width="1" height="1" alt=""><hr><p><a href="https://medium.com/thefreshwrites/the-ultimate-guide-to-using-jaxb-parser-for-xml-and-java-751b00c93f57">The Ultimate Guide to Using JAXB Parser for XML and Java</a> was originally published in <a href="https://medium.com/thefreshwrites">The Fresh Writes</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Elasticsearch Explained: How It Works and Why It Matters]]></title>
            <link>https://medium.com/thefreshwrites/elasticsearch-explained-how-it-works-and-why-it-matters-b5c74567d276?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/b5c74567d276</guid>
            <category><![CDATA[lucene]]></category>
            <category><![CDATA[kibana]]></category>
            <category><![CDATA[elastic-stack]]></category>
            <category><![CDATA[elasticsearch]]></category>
            <category><![CDATA[search-engines]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Tue, 11 Apr 2023 16:09:14 GMT</pubDate>
            <atom:updated>2025-02-20T20:58:35.769Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*S2kLikQEG-fgbvo1.png" /></figure><p>Elasticsearch is an open-source, distributed search and analytics engine designed to solve complex search and data analysis problems at scale. It is built on top of Apache Lucene, a powerful search engine library written in Java, and provides a RESTful API to interact with the data.</p><p>In simple terms, Elasticsearch is a search engine that allows you to store, search, and analyze large volumes of data quickly and in near real-time. It can be used for a variety of use cases, including log analysis, e-commerce search, content search, and more.</p><p>This article is also available on my website<strong> — </strong><a href="https://marateek.com/elasticsearch-guide/"><strong>here</strong></a><strong>.</strong></p><h3>Benefits</h3><p>One of the main benefits of Elasticsearch (basically, the reason why it’s called “elastic”) is its ability to scale horizontally, which means it can handle large volumes of data across multiple nodes or servers. This allows organizations to easily add or remove nodes as needed to meet their performance and storage requirements.</p><p>Elasticsearch also provides a powerful query language that allows users to search and analyze their data in various ways. It supports full-text search, aggregations, filtering, and more, and allows users to perform complex queries using Boolean logic, wildcards, and regular expressions. It’s even possible to use SQL to query data.</p><p>Another key feature of Elasticsearch is its ability to handle unstructured data. It can index and search data in various formats, including JSON, CSV, and XML, making it a versatile tool for handling different types of data.</p><h3>What’s inside</h3><figure><img alt="inverted index in elasticsearch" src="https://cdn-images-1.medium.com/max/576/1*IMG7iNa8EYk6DeLLgbgQYw.png" /></figure><p>Elasticsearch uses a data structure called an inverted index to store and retrieve data. An inverted index is a data structure that maps each term or token in a document to the documents that contain it. This makes it efficient to search for documents that contain specific terms or phrases.</p><p>In Elasticsearch, each index consists of one or more shards, which are the basic units of data distribution and replication. Each shard is an inverted index that contains a subset of the data in the index, and is stored on a separate node in a cluster. This allows Elasticsearch to distribute data across multiple nodes, which improves performance and resilience.</p><p>When data is indexed in Elasticsearch, it is broken down into smaller units called terms. Each term is then analyzed, which involves applying various text processing techniques such as stemming, stopword removal, and lowercase normalization. The resulting tokens are then added to the inverted index along with information about the documents they appear in.</p><p>When a query is executed, Elasticsearch retrieves the relevant terms from the inverted index and uses them to identify the documents that match the query. This process is optimized using techniques such as caching, query rewriting, and distributed search.</p><p>If you found this post helpful, you’ll love my free weekly newsletter! I write about building a successful career in tech while living a balanced and fulfilled life. Join <a href="https://balancedtechie.substack.com/">here</a>!</p><p><a href="https://balancedtechie.substack.com/">The Balanced Techie | Marat Miftakhov | Substack</a></p><h3>Lucene</h3><p>Elasticsearch is built on top of Apache Lucene, a powerful search engine library written in Java. Lucene provides the core search engine functionality that Elasticsearch uses to index and search data.</p><p>Lucene provides a set of low-level APIs for creating and manipulating inverted indexes, as well as a query language for searching them. It also includes advanced features such as scoring and relevance ranking, which are used by Elasticsearch to return the most relevant results for a given query.</p><p>Elasticsearch extends Lucene by providing a distributed, RESTful API and adding additional functionality such as support for complex aggregations, faceting, and filtering. Elasticsearch also provides a distributed indexing and search infrastructure that allows data to be spread across multiple nodes in a cluster, providing scalability and fault tolerance.</p><h3>Transactions</h3><p>Elasticsearch does not support transactions in the traditional sense that is found in relational databases. Transactions are a set of operations that are grouped together and either all succeed or all fail as a single unit. Elasticsearch does not provide this capability natively.</p><p>Elasticsearch is a distributed system designed to provide high performance and scalability for search and analytics use cases. It stores data in a distributed manner across multiple nodes in a cluster, with each node responsible for a portion of the data. This distributed architecture makes it difficult to implement transactions in the traditional sense because there is no centralized control over the data.</p><p>However, Elasticsearch does provide some mechanisms for ensuring data consistency and integrity. For example, Elasticsearch supports versioning of documents, which allows you to track changes to documents over time and detect conflicts when multiple users attempt to modify the same document concurrently. Additionally, Elasticsearch provides optimistic concurrency control, which allows multiple users to read and write to the same document simultaneously, while ensuring that conflicts are resolved in a consistent manner.</p><h3>Elasticsearch vs OpenSearch</h3><p>Elasticsearch and OpenSearch are both open-source distributed search and analytics engines. Elasticsearch was originally created by Elastic, while OpenSearch is a community-driven, open-source fork of Elasticsearch. While the two projects share many similarities, there are also some key differences between them.</p><p>One of the main differences between Elasticsearch and OpenSearch is their governance and ownership. Elasticsearch is owned by Elastic, a company that provides commercial products and services based on Elasticsearch. OpenSearch, on the other hand, is governed by an open-source community and is designed to be truly open-source with no proprietary code or licensing.</p><p>Another key difference is the development model. While Elasticsearch is developed and maintained primarily by Elastic, OpenSearch is developed and maintained by a community of contributors. This community-driven approach has led to a more rapid pace of innovation and development in OpenSearch.</p><p>In terms of features and functionality, Elasticsearch and OpenSearch are quite similar, and both provide powerful search and analytics capabilities. However, OpenSearch has added some additional features and capabilities that are not available in Elasticsearch, such as support for more data sources and integrations, and improved security features.</p><p>Finally, another key difference between Elasticsearch and OpenSearch is their licensing model. Elasticsearch is available under the Elastic License, which includes some restrictions on commercial use and redistribution. OpenSearch, on the other hand, is available under the Apache 2.0 license, which is more permissive and allows for unrestricted use and redistribution.</p><h3>Logstash and Kibana</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xgf1jALR7wUVXQZf.png" /></figure><p>Elasticsearch also integrates with other open-source technologies such as Logstash and Kibana to provide a complete end-to-end solution for log analysis, monitoring, and visualization.</p><p>Logstash and Kibana are two popular open-source tools that are commonly used in conjunction with Elasticsearch to build end-to-end data pipelines for processing and analyzing data.</p><p>Logstash is a data processing pipeline that can ingest data from a wide range of sources, transform and filter the data, and then send it to Elasticsearch for indexing and search. It provides a large number of plugins for ingesting data from various sources such as databases, file systems, messaging systems, and more. Once the data has been processed by Logstash, it can be indexed and searched using Elasticsearch.</p><p>Kibana is a powerful data visualization and exploration tool that provides a web interface for querying and visualizing data stored in Elasticsearch. It provides a variety of visualizations such as line charts, histograms, and maps, as well as tools for building dashboards and reports. With Kibana, users can easily explore and analyze data stored in Elasticsearch, and share their findings with others.</p><p>Both Logstash and Kibana have tight integrations with Elasticsearch, and are often used together as part of a complete data pipeline. Logstash can be used to preprocess and ingest data into Elasticsearch, while Kibana can be used to visualize and explore the data once it has been indexed.</p><p>Additionally, Logstash and Kibana can be used together to build complete end-to-end data pipelines for processing, analyzing, and visualizing data. For example, data can be ingested by Logstash from various sources, transformed and filtered, indexed by Elasticsearch, and then visualized and analyzed using Kibana.</p><h3>Conclusion</h3><p>And that’s it. That was a full guide to Elasticsearch. In summary, Elasticsearch is a powerful search and analytics engine that provides a scalable and flexible solution for storing, searching, and analyzing data. Its ability to handle unstructured data and support complex queries makes it a popular choice for a variety of use cases in industries such as e-commerce, finance, and healthcare.</p><p>Thanks for reading!</p><p>Follow me on <a href="https://twitter.com/marat_mif">Twitter</a>, I always tweet about new articles, so you won’t miss any.</p><p>Do support our publication by following it</p><ul><li><a href="https://medium.com/thefreshwrites">The Fresh Writes</a></li><li><a href="https://thefreshwrites.blogspot.com/">The Fresh Writes</a></li><li><a href="https://medium.com/thefreshwrites/most-commonly-asked-java8-stream-based-interview-question-final-part-bbd4b4029b9a">Most Commonly asked Java8 Stream based Interview Question — Final Part</a></li><li><a href="https://medium.com/thefreshwrites/best-practices-in-spring-boot-project-structure-2986adb290">Best Practices in Spring Boot Project Structure</a></li><li><a href="https://medium.com/thefreshwrites/java-concurrent-api-packages-semaphore-5f3e7a11aa50">Semaphore | Java Concurrent API</a></li><li><a href="https://medium.com/thefreshwrites/java-8-bifunction-biconsumer-bipredicate-interface-with-example-5341009caf66">Java — 8 | BiFunction, BiConsumer &amp; BiPredicate Interface with Example</a></li><li><a href="https://medium.com/thefreshwrites/10-dev-tools-for-development-in-react-to-code-like-a-pro-part-2-7bf729dfb280">10 Dev Tools for Development in React to Code like a Pro — Part 2</a></li><li><a href="https://medium.com/thefreshwrites/the-complete-guide-to-building-a-white-label-ico-platform-bf804c503f38">The Complete Guide to Building a White-Label ICO Platform</a></li><li><a href="https://medium.com/thefreshwrites/the-a-i-revolution-will-a-i-be-the-only-author-on-medium-bd0ab434b19a">The A.I. Revolution: Will A.I. be the only Author on Medium?</a></li><li><a href="https://medium.com/thefreshwrites/resttemplate-feignclient-webclient-with-spring-boot-f34979040b9e">RestTemplate | FeignClient | WebClient With Spring Boot</a></li><li><a href="https://medium.com/thefreshwrites/10-exciting-python-project-ideas-for-beginners-in-2023-93bff33014d0">10 Exciting Python Project Ideas for Beginners in 2023</a></li><li><a href="https://medium.com/thefreshwrites/the-importance-of-taking-breaks-how-rest-and-relaxation-can-boost-your-productivity-7816f3cd5e1f">The Importance of Taking Breaks: How Rest and Relaxation Can Boost Your Productivity</a></li><li><a href="https://medium.com/thefreshwrites/the-ethical-implications-of-facial-recognition-technology-privacy-bias-and-regulation-5abd6e70fd62">The Ethical Implications of Facial Recognition Technology: Privacy, Bias, and Regulation</a></li><li><a href="https://medium.com/thefreshwrites/how-to-make-better-decisions-for-increased-productivity-techniques-for-weighing-options-and-90e3a5d62d37">How to Make Better Decisions for Increased Productivity: Techniques for Weighing Options and…</a></li><li><a href="https://medium.com/thefreshwrites/getting-started-with-spock-test-framework-for-java-applications-ba4717646427">Getting Started with Spock Test Framework for Java Applications</a></li><li><a href="https://medium.com/thefreshwrites/the-power-of-accountability-how-to-stay-on-track-and-achieve-your-goals-with-support-from-others-1ac1701da43">The Power of Accountability: How to Stay on Track and Achieve Your Goals with Support from Others</a></li><li><a href="https://medium.com/thefreshwrites/how-to-stay-motivated-when-youre-feeling-stuck-strategies-for-overcoming-procrastination-and-52fd5799947b">How to Stay Motivated When You’re Feeling Stuck: Strategies for Overcoming Procrastination and…</a></li><li><a href="https://medium.com/thefreshwrites/the-benefits-of-exercise-for-productivity-how-physical-activity-can-improve-your-focus-and-f6d55397c494">The Benefits of Exercise for Productivity: How Physical Activity Can Improve Your Focus and…</a></li><li><a href="https://medium.com/thefreshwrites/the-things-you-should-acknowledge-as-a-writer-d88185da968b">The Things You Should Acknowledge as a Writer</a></li><li><a href="https://medium.com/thefreshwrites/the-power-of-visualization-how-to-use-mental-imagery-to-achieve-your-goals-afde1ca92792">The Power of Visualization: How to Use Mental Imagery to Achieve Your Goals</a></li><li><a href="https://medium.com/thefreshwrites/the-importance-of-self-care-for-productivity-tips-for-taking-care-of-yourself-while-you-work-3fb47e754f8d">The Importance of Self-Care for Productivity: Tips for Taking Care of Yourself While You Work</a></li><li><a href="https://medium.com/thefreshwrites/list-vs-arraylist-in-java-318248c8b795">List vs ArrayList in Java</a></li><li><a href="https://medium.com/thefreshwrites/string-handling-in-java-a34c37d4f27e">String Handling in Java</a></li><li><a href="https://medium.com/thefreshwrites/executor-services-in-java-and-its-types-880c01228d6d">Executor Services in Java and its Types</a></li><li><a href="https://medium.com/thefreshwrites/beginners-guide-to-load-balancing-in-distributed-systems-6d42a17c529c">Discover the Power of Load Balancing in Distributed Systems: Enhance System Scalability</a></li><li><a href="https://medium.com/thefreshwrites/the-benefits-of-creativity-for-productivity-how-to-tap-into-your-creative-side-to-boost-your-f2cf4783bb13">The Benefits of Creativity for Productivity: How to Tap into Your Creative Side to Boost Your…</a></li><li><a href="https://medium.com/thefreshwrites/how-to-overcome-creative-burnout-and-reignite-your-passion-e44929217694">How to Overcome Creative Burnout and Reignite Your Passion</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b5c74567d276" width="1" height="1" alt=""><hr><p><a href="https://medium.com/thefreshwrites/elasticsearch-explained-how-it-works-and-why-it-matters-b5c74567d276">Elasticsearch Explained: How It Works and Why It Matters</a> was originally published in <a href="https://medium.com/thefreshwrites">The Fresh Writes</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Getting Started with Spring Boot: A Comprehensive Tutorial for Beginners]]></title>
            <link>https://medium.com/thefreshwrites/getting-started-with-spring-boot-a-comprehensive-tutorial-for-beginners-78d1ffe65716?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/78d1ffe65716</guid>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[spring-boot]]></category>
            <category><![CDATA[spring-framework]]></category>
            <category><![CDATA[spring]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Sat, 18 Feb 2023 17:50:25 GMT</pubDate>
            <atom:updated>2023-02-19T16:05:47.763Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Zx96SjGXxl4Q9yPbgjiV9A.png" /></figure><p>Spring Boot is an open-source framework that allows developers to build production-ready, scalable, and easy-to-use applications quickly. It is constructed on top of the Spring Framework and offers programmers a streamlined method for creating dependable and scalable web applications.</p><p>This article is also available on my website<strong> — </strong><a href="https://marateek.com/spring-boot-guide/"><strong>here</strong></a><strong>.</strong></p><h3>What is Spring Boot?</h3><p>With the help of Spring Boot, you can quickly design web apps that are suitable for production. It is a well-liked option among developers due to its flexibility, ease of use, and availability of many pre-configured components that can be used to quickly create enterprise-grade applications.</p><h3>How to use Spring Boot?</h3><p>You can start using it fast because it is comparatively simple to use. You can rapidly build up a project using the framework’s starter projects, which are provided in a variety of formats. There is a tool called <a href="https://start.spring.io/">Spring Initializr</a>, which allows you to quickly set up your project configuration and add necessary dependencies in just a few clicks. Spring Initializr can generate projects for Java, Kotlin, and Groovy, using either Maven or Gradle for building.</p><p>Once the project is set up, you can start incorporating your unique logic into it. The framework offers a wide variety of configuration choices that may be tailored to the requirements of the application and is extremely flexible.</p><p>One of the key advantages of Spring Boot is that it comes with a range of pre-configured components. These components include:</p><ol><li>Embedded web server – Spring Boot comes with an embedded web server that eliminates the need for developers to set up an external web server.</li><li>Spring Data – Spring Boot provides seamless integration with Spring Data, a framework that makes it easy to work with databases.</li><li>Spring Security – it also comes with built-in support for Spring Security, a framework that helps to secure web applications.</li><li>Actuator – Spring Boot includes an Actuator, which is a set of tools that help to monitor and manage the application.</li></ol><h3>What problems does it solve?</h3><p>One of the key problems that Spring Boot solves is the complexity of setting up a Spring application. The configuration of a Spring application can take a lot of time, and the apps can be fairly complex. By offering pre-configured components that may be simply used to build the application, Spring Boot streamlines this process.</p><p>Also, Spring Boot makes it possible for developers to write a lot less boilerplate code than they otherwise would when creating an application. This shortens the development process and saves developers’ time so they can concentrate on the application’s business logic.</p><h3>Basic Example</h3><ol><li>First, you’ll need to set up your development environment. Install a Java Development Kit (JDK) and an Integrated Development Environment (IDE) such as Eclipse, IntelliJ IDEA, or NetBeans.</li><li>Open your IDE and create a new project. You can use the Spring Initializr website (<a href="https://start.spring.io/">https://start.spring.io/</a>) to generate a project skeleton with the necessary dependencies.</li><li>In your IDE, create a new class with a main method. This will serve as the entry point for your application. You can call it something like Application.</li><li>In the Application class, add the @SpringBootApplication annotation to enable Spring Boot auto-configuration and component scanning. This will also make your application executable.</li></ol><pre>import org.springframework.boot.SpringApplication;<br>import org.springframework.boot.autoconfigure.SpringBootApplication;<br><br>@SpringBootApplication<br>public class Application {<br><br>    public static void main(String[] args) {<br>        SpringApplication.run(Application.class, args);<br>    }<br><br>}</pre><p>5. Create a simple REST endpoint by creating a new class and annotating it with @RestController. In this example, we’ll create an endpoint that returns a greeting message.</p><pre>import org.springframework.web.bind.annotation.GetMapping;<br>import org.springframework.web.bind.annotation.RestController;<br><br>@RestController<br>public class GreetingController {<br><br>    @GetMapping(&quot;/greeting&quot;)<br>    public String greeting() {<br>        return &quot;Hello, world!&quot;;<br>    }<br>}</pre><p>6. Run your application and test the endpoint by opening a web browser and navigating to http://localhost:8080/greeting. You should see the greeting message displayed in the browser.</p><p>And that’s it. That was a super simple example of a REST application.</p><h3>Conclusion</h3><p>Spring Boot is a popular framework that makes it easy for developers to build production-ready web applications quickly. The framework can be readily customized and has a variety of pre-configured components for use in creating enterprise-level applications. With Spring Boot, developers can concentrate on the application’s business logic rather than the difficulties in configuring it.</p><p>If you’re learning Java stack, you definitely need to prepare for the technical interview. Check out this article <a href="https://marateek.com/java-interview/">25 Popular Java Interview Questions with Answers</a></p><ul><li><a href="https://medium.com/thefreshwrites/spring-boot-security-sso-oauth2-with-okta-88bbb08e3bee">Spring Boot Security | SSO | OAuth2 with Okta</a></li><li><a href="https://medium.com/thefreshwrites/most-commonly-asked-java8-stream-based-interview-question-part-2-bbe5bdd0129f">Most Commonly asked Java8 Stream based Interview Question — Part 2</a></li><li><a href="https://medium.com/thefreshwrites/guide-to-object-mapping-with-modelmapper-in-java-1dd8f517faf2">Guide to Object Mapping with ModelMapper in Java</a></li><li><a href="https://medium.com/thefreshwrites/coding-flatten-an-array-in-javascript-b281cdeb4fe6">Coding: Flatten an array in Javascript</a></li><li><a href="https://medium.com/thefreshwrites/most-commonly-asked-java8-stream-based-interview-question-part-1-85cfea21e3f5">Most Commonly asked Java8 Stream based Interview Question — Part 1</a></li><li><a href="https://medium.com/thefreshwrites/the-easiest-way-to-access-a-database-in-java-2c76b3fe30b8">The Easiest Way To Access A Database in JAVA</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=78d1ffe65716" width="1" height="1" alt=""><hr><p><a href="https://medium.com/thefreshwrites/getting-started-with-spring-boot-a-comprehensive-tutorial-for-beginners-78d1ffe65716">Getting Started with Spring Boot: A Comprehensive Tutorial for Beginners</a> was originally published in <a href="https://medium.com/thefreshwrites">The Fresh Writes</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Advanced SQL]]></title>
            <link>https://medium.com/thefreshwrites/advanced-sql-fa603f0e199a?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/fa603f0e199a</guid>
            <category><![CDATA[database]]></category>
            <category><![CDATA[programming-languages]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[blog]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Fri, 20 Jan 2023 17:36:14 GMT</pubDate>
            <atom:updated>2025-02-20T21:00:03.325Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="sql tutorial" src="https://cdn-images-1.medium.com/max/1024/1*areyJ8YU9yV0BiIa-fnnnQ.png" /></figure><p>Not long ago I created an SQL Beginner’s tutorial, you can read it <a href="https://medium.com/@marateek/sql-101-the-ultimate-beginners-guide-to-the-world-of-relational-databases-e80d79eda99f"><strong>here</strong></a>. Today it’s time to tell you about more advanced topics, such as GROUP BY and HAVING operators, MERGE statement, and stored procedures.</p><h4>GROUP BY</h4><p>The GROUP BY clause in SQL is used to group rows in a result set based on one or more columns. It is typically used in conjunction with aggregate functions such as COUNT, SUM, AVG, MIN, and MAX to calculate values for each group.</p><pre>SELECT category, SUM(sales)<br>FROM orders<br>GROUP BY category;</pre><p>This query will group the rows in the <strong>orders</strong> table by the <strong>category</strong> column, and then calculate the sum of the <strong>sales</strong> column for each group. The result will be a table with one row for each unique category value, showing the category and the total sales for that category.</p><p>Another example:</p><pre>SELECT department, COUNT(employee_id)<br>FROM employees<br>GROUP BY department;</pre><p>This query will group the rows in the <strong>employees</strong> table by the <strong>department</strong> column, and then calculate the count of the <strong>employee_id</strong> column for each group. The result will be a table with one row for each unique department value, showing the department and the total number of employee for that department.</p><p>It’s important to note that you must utilize aggregate functions on any columns you choose that are not covered by the GROUP BY clause in order to avoid receiving an error. Additionally, it’s critical to remember that the columns in the GROUP BY clause are the ones that define the groups; the order of the columns in the SELECT statement has no bearing on the result set.</p><h4>HAVING</h4><p>Based on conditions for the aggregate function, groups of rows in a result set can be filtered using the HAVING clause in SQL. It is typically combined with the GROUP BY clause to eliminate groups that don’t fit particular requirements.</p><p>For example, consider the following SQL query that selects the total sales for each product category in a sample <strong>order</strong> table, and only returns categories that have total sales greater than 1000:</p><pre>SELECT category, SUM(sales)<br>FROM orders<br>GROUP BY category<br>HAVING SUM(sales) &gt; 1000;</pre><p>This query will group the rows in the <strong>orders</strong> table by the <strong>category</strong> column, and then calculate the sum of the <strong>sales</strong> column for each group. The HAVING clause will then filter out any groups where the sum of sales is less than or equal to 1000.</p><p>Another example:</p><pre>SELECT department, AVG(salary)<br>FROM employees<br>GROUP BY department<br>HAVING COUNT(employee_id) &gt; 5;</pre><p>This query will group the rows in the <strong>employees </strong>table by the <strong>department</strong> column, and then calculate the average salary for each group. The HAVING clause will then filter out any groups that have less than 5 employees.</p><p>Similar to the WHERE clause, the HAVING clause is used to filter groups after the GROUP BY clause has produced them and aggregate functions have been applied.</p><p>If you found this post helpful, you’ll love my free weekly newsletter! I write about building a successful career in tech while living a balanced and fulfilled life. Join <a href="https://balancedtechie.substack.com/">here</a>!</p><p><a href="https://balancedtechie.substack.com/">The Balanced Techie | Marat Miftakhov | Substack</a></p><h4>MERGE</h4><p>The SQL MERGE statement is used to update or insert data into a target table based on data in a source table, or to combine data from two or more tables into a single table. It is frequently used as an alternative to statements that combine INSERT, UPDATE, and DELETE.</p><p>Syntax:</p><pre>MERGE INTO target_table<br>USING source_table<br>ON (join_condition)<br>WHEN MATCHED THEN<br>    UPDATE SET target_table.column1 = source_table.column1, ...<br>WHEN NOT MATCHED THEN<br>    INSERT (column1, column2, ...)<br>    VALUES (source_table.column1, source_table.column2, ...)</pre><p>For example, consider a scenario where a company wants to update the prices of their products from a spreadsheet, the company has two tables, one table called <strong>products</strong> that contain the products information, and another table called <strong>prices</strong> that contain the updated prices, they can use the following query:</p><pre>MERGE INTO products<br>USING prices<br>ON (products.product_id = prices.product_id)<br>WHEN MATCHED THEN<br>    UPDATE SET products.price = prices.price;</pre><p>This query will match the rows in the <strong>products</strong> table with the rows in the <strong>prices</strong> table by the <strong>product_id</strong> column, and update the <strong>price</strong> column of the <strong>products</strong> table with the values from the <strong>prices</strong> table.</p><pre>MERGE INTO employees<br>USING temp_employees<br>ON (employees.employee_id = temp_employees.employee_id)<br>WHEN MATCHED THEN<br>    UPDATE SET employees.salary = temp_employees.salary<br>WHEN NOT MATCHED THEN<br>    INSERT (employee_id, first_name, last_name, department, salary)<br>    VALUES (temp_employees.employee_id, temp_employees.first_name, temp_employees.last_name, temp_employees.department, temp_employees.salary);</pre><p>This query will match the rows in the <strong>employees</strong>table with the rows in the <strong>temp_employees</strong> table by the <strong>employee_id</strong> column, if the rows are matched it will update the salary column of the <strong>employees</strong> table with the values from the <strong>temp_employees</strong> table, otherwise it will insert a new row to the <strong>employees</strong> table with the values from the <strong>temp_employees</strong> table.</p><p>Some database management systems such as MySQL and SQLite don’t support the MERGE statement, so you need to use the combination of the INSERT, UPDATE, and DELETE statements instead.</p><p>The MERGE command should be tested on a small subset of data before being used on the entire table because it might have a major performance impact on large tables.</p><h4>Stored Procedures</h4><p>A precompiled group of SQL statements that are kept in a database as a stored procedure. They are often employed to carry out a specific task or collection of activities, such getting information out of a database or doing tricky math. Compared to running numerous separate SQL statements, stored procedures are more versatile and effective since they can receive input parameters and return output values.</p><p>Here’s an example of a simple stored procedure that retrieves all the rows from a table <strong>employees</strong>:</p><pre>CREATE PROCEDURE GetAllEmployees<br>AS<br>BEGIN<br>    SELECT * FROM employees;<br>END</pre><p>This stored procedure can be executed by calling it like this:</p><pre>EXEC GetAllEmployees;</pre><p>Thanks for reading.Happy learning 😄</p><p>Do support our publication by following it</p><p><a href="https://medium.com/thefreshwrites">The Fresh Writes</a></p><p>Also refer to the following articles.</p><ul><li><a href="https://medium.com/thefreshwrites/java-8-stream-api-interview-questions-and-answers-dd559ebffb35">Java 8 Stream API Interview Questions and Answers</a></li><li><a href="https://www.buymeacoffee.com/marateek">Marat Miftakhov</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fa603f0e199a" width="1" height="1" alt=""><hr><p><a href="https://medium.com/thefreshwrites/advanced-sql-fa603f0e199a">Advanced SQL</a> was originally published in <a href="https://medium.com/thefreshwrites">The Fresh Writes</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[7 Must-Read Books For Java Developers in 2023]]></title>
            <link>https://medium.com/@marateek/7-must-read-books-for-java-developers-in-2023-e3a3224830bb?source=rss-c57784ed13d6------2</link>
            <guid isPermaLink="false">https://medium.com/p/e3a3224830bb</guid>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[development]]></category>
            <category><![CDATA[books-recommendation]]></category>
            <category><![CDATA[java]]></category>
            <category><![CDATA[software-development]]></category>
            <dc:creator><![CDATA[Marat Miftakhov]]></dc:creator>
            <pubDate>Thu, 12 Jan 2023 15:50:52 GMT</pubDate>
            <atom:updated>2023-01-12T15:50:52.665Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0BZJS4RGguRXMyGyaperbw.png" /></figure><p>In this article, we will take a look at the 7 best books (IMHO) for Java developers to help you enhance your skills and learn everything you need to build great applications in Java. Whether you’re just getting started or are a seasoned veteran, these books will help you take your skills to the next level. Let’s go.</p><h3>Thinking in Java</h3><p><strong>Thinking in Java</strong> is a comprehensive introduction to the Java programming language and its key concepts. Written by <strong><em>Bruce Eckel</em></strong>, the book covers object-oriented programming, program design, and best practices for writing robust and maintainable code. It is designed for both novice and experienced programmers, and includes extensive examples and exercises to help readers gain a deep understanding of the language. The book is widely considered to be one of the most useful and accessible resources for learning Java.</p><p>Order on Amazon — <a href="https://amzn.to/3W3Uw7p"><strong>click</strong></a>.</p><h3>Clean Code</h3><p><strong>Clean Code: A Handbook of Agile Software Craftsmanship</strong> is a great book written by <strong><em>Robert C. Martin</em></strong> that describes how to write code that is easy to understand, maintain, and scale. The book is divided into three parts: “Meaningful Names,” “Functions,” and “Classes.” In the first part, the author explains how to choose meaningful and self-documenting names for variables, functions, and classes. The second part covers how to write functions that are small, simple, and easy to test. The last part covers how to write classes that are easy to understand and use. The book also covers other topics like error handling, testing, and refactoring, and provides a lot of examples, best practices and principles to make your code more readable, maintainable and scalable. It is a popular book among developers and it is considered as one of the best books on writing clean, maintainable, and scalable code. I highly recommend this one regardless of your tech stack.</p><p>Order on Amazon — <a href="https://amzn.to/3XuddCt"><strong>click</strong></a>.</p><h3>Clean Architecture</h3><p>Another great book by <strong><em>Robert C. Martin</em></strong>. It describes a way of organizing and structuring software systems. The book presents a set of architecture principles and patterns that can be used to design software that is easy to understand, test, and maintain. The book describes a modular approach to software development that is independent of frameworks, domains, or delivery platforms, and that is based on the SOLID principles. The book explains how to organize code into layers, how to use interfaces and abstract classes, how to avoid dependencies on external components, and how to test code at different levels of the architecture. Again, I highly recommend it for developers of any kind.</p><p>Order on Amazon — <a href="https://amzn.to/3CHqorA"><strong>click</strong></a>.</p><h3>Microservices Patterns</h3><p><strong>Microservices Patterns: With examples in Java</strong> by <strong><em>Chris Richardson</em></strong> provides a set of patterns for designing and building microservices-based systems. The book is divided into three parts: “Fundamentals of Microservices,” “Designing Microservices,” and “Building Microservices.” In the first part, the author explains the fundamental principles of microservices and how they differ from monolithic architectures. The second part covers how to design microservices, including how to partition a monolithic application into microservices, how to handle data consistency and transactions, how to handle service discovery, and how to handle security. The last part covers how to implement microservices using different technologies such as Spring Boot, Spring Cloud, and Kubernetes. The book also provides a lot of examples, best practices and principles to make your microservices more scalable, resilient, observable and maintainable. It is widely considered as one of the best books on Microservices architecture.</p><p>Order on Amazon — <a href="https://amzn.to/3iyB2Kt"><strong>click</strong></a>.</p><h3>Designing Data-Intensive Applications</h3><p><strong>Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems</strong> is a book written by <strong><em>Martin Kleppmann</em></strong> that provides a comprehensive overview of the challenges and techniques involved in building data-intensive applications. The book covers a wide range of topics, including data modeling, distributed systems, data storage, data processing, data integration, and data consistency. It also goes into depth on specific technologies such as relational databases, NoSQL databases, stream processing, and distributed consensus. The book is written for developers, architects, and technical leaders who want to understand the underlying principles of data systems and how to design and implement them. The book is well-researched and provides a lot of examples and case studies to illustrate the concepts. It is considered as one of the best books on the subject and is widely recommended by experts in the field.</p><p>Order on Amazon — <a href="https://amzn.to/3CHvEvx"><strong>click</strong></a>.</p><h3>Domain-Driven Design</h3><p><strong>Domain-Driven Design: Tackling Complexity in the Heart of Software</strong> by <strong><em>Eric Evans</em></strong> describes a methodology for developing software called Domain-Driven Design (DDD) which focuses on understanding and modeling the business domain of a software application. DDD emphasizes the importance of a strong domain model, which is a representation of the problem domain, and how it can be used to improve communication between software developers and domain experts. The book provides a set of patterns, principles and best practices to help developers to design and build a robust and maintainable software system. The book covers topics such as domain modeling, strategic design, tactical design, and implementation. It also provides a lot of examples, case studies, and real-world scenarios to illustrate the concepts. The book is particularly useful for developers working on complex and large-scale systems.</p><p>Order on Amazon — <a href="https://amzn.to/3k4CDId"><strong>click</strong></a>.</p><h3>The DevOps Handbook</h3><p>What? A DevOps book? How did that book sneak into our list of books for Java developers? Well, I strongly believe that DevOps is not a job, it’s a <strong>state of mind</strong>. Every Java developer should stay DevOps to deliver value to the customer. <strong>The DevOps Handbook</strong> is a comprehensive guide to implementing DevOps principles and practices. It covers topics such as culture and collaboration, automation, and measurement, and provides real-world examples and case studies of organizations that have successfully implemented DevOps. The book is written by <strong><em>Gene Kim, Jez Humble, Patrick Debois and John Willis</em></strong> and published in 2016. The main focus of the book is on how to create a high-performing IT organization by breaking down silos between development and operations teams and implementing a culture of collaboration and continuous improvement.</p><p>Order on Amazon — <a href="https://amzn.to/3W3UJaH"><strong>click</strong></a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e3a3224830bb" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>