<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Damjan Dimitrov</title>
    <description>The latest articles on Forem by Damjan Dimitrov (@damjand).</description>
    <link>https://forem.com/damjand</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F169350%2F98bd3448-c3d0-4313-bb85-3141d6c293c7.jpg</url>
      <title>Forem: Damjan Dimitrov</title>
      <link>https://forem.com/damjand</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/damjand"/>
    <language>en</language>
    <item>
      <title>How to Effectively Debug Your Code</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Mon, 10 Apr 2023 08:38:08 +0000</pubDate>
      <link>https://forem.com/damjand/how-to-effectively-debug-your-code-12o0</link>
      <guid>https://forem.com/damjand/how-to-effectively-debug-your-code-12o0</guid>
      <description>&lt;p&gt;Debugging is an essential skill for every programmer. No matter how carefully you write your code, bugs can and will inevitably find their way into your applications. In this article, we'll explore some tips and tricks for effectively debugging your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use a debugger
&lt;/h2&gt;

&lt;p&gt;Debuggers are tools that allow you to execute your code line by line, set breakpoints, and inspect variables and objects at runtime. Most modern programming languages and IDEs come with built-in debuggers, and there are also third-party debuggers available for many popular languages. Using a debugger can be an incredibly powerful way to pinpoint the source of a bug in your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproduce the bug
&lt;/h2&gt;

&lt;p&gt;Before you can effectively debug a bug, you need to be able to reproduce it reliably. This means understanding the conditions under which the bug occurs and ensuring that you can trigger it consistently. Once you've identified the steps needed to reproduce the bug, you can use the debugger to step through your code and find the root cause of the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write automated tests
&lt;/h2&gt;

&lt;p&gt;Automated tests are an essential tool for any software development process, but they can also be incredibly helpful for debugging. When you encounter a bug, write a test case that reproduces the bug, then use the debugger to step through the code and find the root cause of the issue. Once you've fixed the bug, the test case can be added to your automated test suite to prevent the bug from recurring in the future.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use logging
&lt;/h2&gt;

&lt;p&gt;Logging is another powerful debugging tool. By logging relevant information at strategic points in your code, you can get a better understanding of how your code is executing and identify areas where bugs may be occurring. Logging can be especially helpful for debugging issues that occur in production environments, where you may not have access to a debugger.&lt;/p&gt;

&lt;h2&gt;
  
  
  Break the problem down
&lt;/h2&gt;

&lt;p&gt;When debugging complex issues, it can be helpful to break the problem down into smaller, more manageable pieces. This can help you isolate the source of the bug and make it easier to fix. Start by identifying the inputs and outputs of the code in question, then work your way through the logic step by step to find the source of the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, debugging is an essential skill for every programmer. By using a debugger, reproducing the bug, writing automated tests, using logging, and breaking the problem down, you can effectively debug your code and solve even the most complex issues. By using these tips and tricks, you can become a more efficient and effective developer, and produce higher-quality software.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Revolutionize Your Workflow: AI Tools You Need to Know About</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Sat, 04 Mar 2023 10:41:38 +0000</pubDate>
      <link>https://forem.com/damjand/revolutionize-your-workflow-ai-tools-you-need-to-know-about-54id</link>
      <guid>https://forem.com/damjand/revolutionize-your-workflow-ai-tools-you-need-to-know-about-54id</guid>
      <description>&lt;p&gt;Over the past month, I have been doing some digging and have found some tools using artificial intelligence that could help streamline your workflow. Ranging from music and logo generators, text summarization and generation, noise-cancellation and presentation builders, these tools can automate a range of tasks, saving you time and effort and making you a lot more productive.&lt;/p&gt;




&lt;h1&gt;
  
  
  &lt;a href="https://mubert.com/" rel="noopener noreferrer"&gt;Mubert&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Mubert is an AI music generator that creates unique, royalty-free tracks for use in various media projects, such as videos, games, and podcasts.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://beatoven.ai/" rel="noopener noreferrer"&gt;Beatoven&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Beatoven.ai is another AI music generator that uses machine learning to create custom tracks for users.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://letsenhance.io/" rel="noopener noreferrer"&gt;Let's Enhance&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Let's Enhance is an AI-powered image enhancement tool that can upscale and improve the quality of low-resolution images.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://tldrthis.com/" rel="noopener noreferrer"&gt;TLDR This&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;TLDR This is a tool that summarizes any web page or article into a few short paragraphs, helping users quickly digest information and save time.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://krisp.ai/" rel="noopener noreferrer"&gt;Krisp&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Krisp is an AI-powered noise-cancellation tool that removes background noise from microphone input, making it ideal for virtual meetings and remote work.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://cleanup.pictures/" rel="noopener noreferrer"&gt;Cleanup.Pictures&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Cleanup.Pictures is an image editing tool that uses AI to remove unwanted objects from photos. It has a very useful eraser tool that works like magic.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.copy.ai/" rel="noopener noreferrer"&gt;Copy.ai&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Copy.ai is an AI-powered writing assistant that generates copy for various marketing materials, including blog posts and emails.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://tinywow.com/" rel="noopener noreferrer"&gt;TinyWow&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;TinyWow is an AI-powered platform that offers a wide range of tools, including PDF tools, image tools, and video tools, file tools and an AI writer.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://rytr.me/" rel="noopener noreferrer"&gt;Rytr&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Rytr is an AI writing tool that generates content for various use cases, such as blog posts, product descriptions, and social media posts.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://namelix.com/" rel="noopener noreferrer"&gt;Namelix&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Namelix is a business name and logo generator that uses AI to generate unique, catchy names and logos for new businesses. You just have to input a set of keywords and an optional description and it generates very creative and unique brand names.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://tome.app/" rel="noopener noreferrer"&gt;Tome&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Tome is a presentation generator that uses AI to create visually appealing and engaging slides based on prompts and keywords.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://excelformulabot.com/" rel="noopener noreferrer"&gt;Excel Formula Bot&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Excel Formula Bot is an AI-powered tool that generates Excel formulas based on prompts, making it ideal for streamlining spreadsheet workflows. You no longer have to remember or google those excel formulas each time you need them.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://beta.elevenlabs.io/" rel="noopener noreferrer"&gt;Eleven Labs&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;Eleven Labs is an AI-powered text-to-speech tool that can generate human-like voices for various use cases, including virtual assistants and audiobooks.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://www.d-id.com/" rel="noopener noreferrer"&gt;D-ID&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;D-ID is a tool that uses AI to generate animated avatars from a photo, ideal for use in social media profiles and gaming. They have their own pre-made avatars, however you may also upload a photo and animate it.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://upword.ai/" rel="noopener noreferrer"&gt;Upword&lt;/a&gt; (PAID)
&lt;/h1&gt;

&lt;p&gt;Upword is a paid Chrome extension that uses AI to generate summaries of articles and web pages, helping users quickly identify key takeaways and save time.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://axiom.ai/" rel="noopener noreferrer"&gt;Axiom&lt;/a&gt; (PAID)
&lt;/h1&gt;

&lt;p&gt;Axiom is a paid Chrome extension that automates repetitive web tasks, such as clicking, scraping, and data fetching, saving users time and effort.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://adcreative.ai/" rel="noopener noreferrer"&gt;Ad Creative&lt;/a&gt; (PAID)
&lt;/h1&gt;

&lt;p&gt;With Ad Creative you can generate ads and socials for your social media page. It can help you produce an attractive ad with many kinds of branding, coloring, wording and images.&lt;/p&gt;




&lt;p&gt;Hopefully you will find some of these tools useful, thanks for reading!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>debugging</category>
    </item>
    <item>
      <title>How to Stand Out Among Other Developers</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Mon, 27 Feb 2023 21:07:58 +0000</pubDate>
      <link>https://forem.com/damjand/how-to-stand-out-among-other-developers-266h</link>
      <guid>https://forem.com/damjand/how-to-stand-out-among-other-developers-266h</guid>
      <description>&lt;p&gt;The tech industry is constantly evolving, and the competition for top jobs and promotions is fierce. That's why it's more important than ever to stand out among other developers.&lt;/p&gt;

&lt;p&gt;In this article, I'll share some tips on how to do just that. Whether you're looking to land your dream job, get a promotion, or simply improve your skills, these tips will help you stand out from the crowd. We'll cover technical skills, soft skills, and personal development, as these are all critical areas for any developer looking to make their mark in the industry. &lt;/p&gt;

&lt;h1&gt;
  
  
  Technical Skills
&lt;/h1&gt;

&lt;p&gt;The first thing that comes to mind when we think about standing out among other developers is technical skills. Technical skills are critical for developers, and they are essential for landing a job or advancing your career. Here are some tips on how to improve your technical skills:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Keep Learning
&lt;/h3&gt;

&lt;p&gt;Technology is constantly evolving, and it's essential to keep up with the latest trends and tools. Attend conferences, take online courses, read books and blogs, and work on side projects to keep learning.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Be a Problem Solver
&lt;/h3&gt;

&lt;p&gt;Developers who can solve complex problems are highly valued. Practice your problem-solving skills by working on challenging projects and finding creative solutions to difficult issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Master Your Stack
&lt;/h3&gt;

&lt;p&gt;Specializing in a particular programming language or technology stack can make you an expert in your field. Learn as much as you can about your stack, and become a go-to person for others who need help.&lt;/p&gt;

&lt;h1&gt;
  
  
  Soft Skills
&lt;/h1&gt;

&lt;p&gt;While technical skills are essential, they are not the only things that matter. Soft skills are equally important, and they can set you apart from other developers. Here are some tips on how to improve your soft skills:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Communicate Effectively
&lt;/h3&gt;

&lt;p&gt;Developers who can communicate their ideas clearly and effectively are highly valued. Practice your communication skills by writing clear documentation, giving presentations, and participating in code reviews.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Collaborate Well
&lt;/h3&gt;

&lt;p&gt;Developers who work well with others are highly valued. Practice your collaboration skills by working on group projects and contributing to open-source projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Be Professional
&lt;/h3&gt;

&lt;p&gt;Developers who are professional in their conduct are highly valued. This means being punctual, meeting deadlines, and being respectful to others. Remember, your reputation is everything in the tech industry.&lt;/p&gt;

&lt;h1&gt;
  
  
  Personal Development
&lt;/h1&gt;

&lt;p&gt;Personal development is critical for anyone who wants to stand out among other developers. Here are some tips on how to improve your personal development:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Set Goals
&lt;/h3&gt;

&lt;p&gt;Setting goals can help you focus on what you want to achieve and help you stay motivated. Set both short-term and long-term goals for your career and personal life.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Take Care of Yourself
&lt;/h3&gt;

&lt;p&gt;Taking care of yourself is critical for your personal development. Make sure to exercise, eat well, and get enough sleep. Your mental and physical health are essential for your success.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Seek Feedback
&lt;/h3&gt;

&lt;p&gt;Seeking feedback is critical for personal growth. Ask your colleagues for feedback on your work, and be open to constructive criticism. Use this feedback to improve your skills and become a better developer.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Standing out among other developers takes effort, but it's possible. By improving your technical skills, soft skills, and personal development, you can set yourself apart from other developers and advance your career. Remember, the key is to keep learning, collaborating with others, and staying professional. With the right mindset and effort, you can achieve great things in the tech industry.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>web3</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Future of Technology and Software Development - How You Can Prepare</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Thu, 19 Jan 2023 16:58:07 +0000</pubDate>
      <link>https://forem.com/damjand/the-future-of-technology-and-software-development-how-you-can-prepare-291l</link>
      <guid>https://forem.com/damjand/the-future-of-technology-and-software-development-how-you-can-prepare-291l</guid>
      <description>&lt;p&gt;The software development industry is constantly evolving, with new technologies, tools, and methodologies emerging on a regular basis. As a result, developers need to be proactive in order to stay ahead of the curve and prepare for the changes to come. In this article, we will discuss some of the key trends that are shaping the future of software development and explore ways in which developers can prepare for them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Computing
&lt;/h2&gt;

&lt;p&gt;Cloud computing has already had a major impact on the software development industry and is set to become even more important in the future. You can become familiar with cloud platforms such as AWS, Azure, and Google Cloud, as well as cloud-native technologies such as Kubernetes and serverless computing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Artificial Intelligence and Machine Learning
&lt;/h2&gt;

&lt;p&gt;AI and ML are becoming increasingly prevalent in software development and are likely to continue to play a major role in the future. You can familiarize themselves with popular AI/ML frameworks such as TensorFlow, PyTorch, and scikit-learn, and learn how to implement AI/ML models in their applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Internet of Things
&lt;/h2&gt;

&lt;p&gt;IoT is another area that is poised to grow significantly in the coming years. You can become familiar with IoT platforms and technologies, such as MQTT, CoAP, and Zigbee, as well as IoT security best practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microservices Architecture
&lt;/h2&gt;

&lt;p&gt;Microservices have become increasingly popular in recent years and are expected to continue to gain traction. You can learn about the benefits of microservices and how to design, implement, and deploy them effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Low-Code and No-Code Platforms
&lt;/h2&gt;

&lt;p&gt;Low-code and no-code platforms are becoming more sophisticated and are likely to play a larger role in software development in the future. You can learn about the benefits of these platforms and how to use them effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  Continuous Integration and Continuous Deployment
&lt;/h2&gt;

&lt;p&gt;CI/CD is becoming an increasingly important part of software development and is likely to become even more important in the future. You can learn about the benefits of CI/CD and how to implement it effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevSecOps
&lt;/h2&gt;

&lt;p&gt;The integration of security practices and methodologies into the software development lifecycle is becoming more important as the software development industry matures. You can learn about the benefits of DevSecOps, and how to integrate security best practices into their development workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In conclusion, the software development industry is constantly evolving, and developers need to be proactive in order to stay ahead of the curve and prepare for the changes to come. By familiarizing themselves with the key trends discussed in this article, developers can position themselves to take advantage of the opportunities that the future holds.&lt;/p&gt;

&lt;p&gt;These are all trends which are some of the most groundbreaking technologies at the moment and they are on the course to change the world and the way we are productive software developers. You absolutely do not need to know everything about all of them, you may only become familiar with some and only dig deeper with the ones that interest you the most.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Best Practices for Writing Clean and Maintainable Code</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Thu, 12 Jan 2023 20:00:50 +0000</pubDate>
      <link>https://forem.com/damjand/best-practices-for-writing-clean-and-maintainable-code-3bfk</link>
      <guid>https://forem.com/damjand/best-practices-for-writing-clean-and-maintainable-code-3bfk</guid>
      <description>&lt;p&gt;Clean and maintainable code is essential for any development project, whether it's a small personal project or a large enterprise application. In this article, I will share some best practices that I have found to be effective in writing clean and maintainable code.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Use descriptive and meaningful variable and function names
&lt;/h2&gt;

&lt;p&gt;One of the most important principles of clean code is that it should be self-explanatory. Using descriptive and meaningful names for your variables and functions is essential for making your code easy to understand. Avoid using abbreviations or single-letter variable names, unless they are commonly used in the industry (i.e. i for index)&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Keep your functions short and focused
&lt;/h2&gt;

&lt;p&gt;Functions should have a single, clear purpose. If a function is doing too many things, it can be difficult to understand and modify. A good rule of thumb is to keep your functions small and focused, ideally no more than 20-30 lines of code.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Use comments sparingly
&lt;/h2&gt;

&lt;p&gt;Comments are an important tool for explaining the intent and functionality of your code. However, it's important to use comments sparingly and only when necessary. Comments that simply repeat the code or are outdated can actually make your code harder to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Follow a consistent coding style
&lt;/h2&gt;

&lt;p&gt;Consistency is key when it comes to writing clean and maintainable code. Using a consistent coding style makes it easier for other developers to understand and work with your code. Most languages have widely accepted coding standards, such as PEP8 for Python, you should follow them.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Write tests
&lt;/h2&gt;

&lt;p&gt;Writing tests for your code is one of the best ways to ensure that your code is clean and maintainable. Automated tests can help you catch bugs and regressions early, and they also serve as documentation for how your code should be used.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Refactor your code
&lt;/h2&gt;

&lt;p&gt;As you work on a project, it's important to take the time to refactor your code. Refactoring is the process of improving the structure and organization of your code without changing its functionality. This can help you make your code more readable, maintainable, and efficient.&lt;/p&gt;

&lt;p&gt;In conclusion, writing clean and maintainable code is essential for any development project. By following the best practices outlined in this article, you can help ensure that your code is easy to understand, modify, and maintain. Remember, it's not just about getting the job done, it's about doing it well.&lt;/p&gt;

</description>
      <category>security</category>
      <category>automation</category>
      <category>cybersecurity</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>Short oneliners: Create array of hour interval strings</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Mon, 29 Nov 2021 13:15:11 +0000</pubDate>
      <link>https://forem.com/damjand/short-oneliners-create-array-of-hour-interval-strings-4f3i</link>
      <guid>https://forem.com/damjand/short-oneliners-create-array-of-hour-interval-strings-4f3i</guid>
      <description>&lt;p&gt;This is a way to get an array of hours in a day in the HH:mm format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Array.from({ length: 24 }, (_, k) =&amp;gt; k + 6).map(el =&amp;gt; `${String(el % 24).padStart(2, '0')}:00`);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Array(24) ['06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00', '13:00', '14:00', '15:00', '16:00', '17:00', '18:00', '19:00', '20:00', '21:00', '22:00', '23:00', '00:00', '01:00', '02:00', '03:00', '04:00', '05:00']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can change the start time by changing the "k + 6" increment amount, or also include the same starting hour in the next day by changing the result length to 25.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Have you tried the GitKraken CLI feature yet?</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Sun, 14 Nov 2021 16:14:38 +0000</pubDate>
      <link>https://forem.com/damjand/have-you-tried-the-gitkraken-cli-feature-yet-op0</link>
      <guid>https://forem.com/damjand/have-you-tried-the-gitkraken-cli-feature-yet-op0</guid>
      <description>&lt;p&gt;For those of you who don't know yet about GitKraken, it's an awesome Git GUI client which has an abundance of neat features which facilitate your git workflow, increase productivity, offer clean repository visual overview, save time and make you feel legendary. You can learn more about it &lt;a href="https://www.gitkraken.com/git-client" rel="noopener noreferrer"&gt;on their webpage&lt;/a&gt;, or you can check out &lt;a href="https://dev.to/damjand/gitkraken-the-tool-i-can-t-git-without-74j"&gt;my post&lt;/a&gt; about it.&lt;/p&gt;

&lt;p&gt;Its latest feature is called GitKraken CLI and it integrates a git terminal inside the client. This allows for the developers who are keen on using the terminal for git commands to be able to continue using the terminal for their git workflow while still being able to keep an eye on the visual element of the repository. &lt;/p&gt;

&lt;p&gt;With GitKraken's stunning, modern and colorful UI you are able to preview the commit and branch history while working in the CLI. This allows you to synchronize your command workflow with the visual aspect of the current state of the git repository. The command line is shipped with many helpful features in itself such as a diff view, history &amp;amp; blame view and autosuggest.&lt;/p&gt;

&lt;p&gt;Make sure to check it out if you haven't already as well as GitKraken's Git GUI client. It is free to download for any platform, though it also includes pro and enterprise plans which include many other integrations too.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Completing my second Hacktoberfest (2021)</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Sun, 17 Oct 2021 15:38:11 +0000</pubDate>
      <link>https://forem.com/damjand/completing-my-second-hacktoberfest-2021-2m29</link>
      <guid>https://forem.com/damjand/completing-my-second-hacktoberfest-2021-2m29</guid>
      <description>&lt;h3&gt;
  
  
  Intro
&lt;/h3&gt;

&lt;p&gt;I have successfully completed this year's 4 pull requests to contribute towards the open-source code and community and engage in Hacktoberfest of this year. Just like last year it was a very good experience and was even easier after already being familiar with the rules and workflow from last year.&lt;br&gt;
I enjoy getting to contribute to some cool open-source projects and helping them grow, as well as improving my skills and learning something new in the process.&lt;/p&gt;

&lt;h3&gt;
  
  
  Contributions
&lt;/h3&gt;

&lt;p&gt;This year I focused more on projects' maintenance rather than building new features or fixing bugs like I did last year. I realized many projects lack the required maintenance due to the fact that it's often overlooked by other hacktoberfest participants as dull or insignificant. In other words, I decided to do some "dirty work".&lt;br&gt;
On two repositories I contributed by migrating their package, library and dependency versions to the newest versions. This had not been done for a long time due to the fact that the upgrades introduces many breaking changes which required time and effort to be fixed and adjusted. I did just that, and I think it is important to keep all dependency versions up to date often not just because of new updates but also because of security concerns. &lt;br&gt;
In my opinion my best contribution was to &lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bemusic" rel="noopener noreferrer"&gt;
        bemusic
      &lt;/a&gt; / &lt;a href="https://github.com/bemusic/bemuse" rel="noopener noreferrer"&gt;
        bemuse
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⬤▗▚▚▚ Web-based online rhythm action game. Based on HTML5 technologies, React, Redux and Pixi.js.
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;
 which is "an open-source, online, web-based rhythm game. It plays songs in BMS format".&lt;br&gt;
I contributed by updating and refactoring a large chunk of code in a file which had numerous code smell reports from SonarQube. I successfully managed to fix the code smells and refactor the code such that it was more readable, manageable and did not contain any code smells.

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;My experience this year was again very thrilling and I'm excited to be a part of an amazing open-source initiative. I encourage anybody who is having self-doubt or second thoughts about contributing to open source to step out of the shadow and make their first step towards open-source. It is intimidating at the start but it's very much worth the effort. It is important that we have this kind of initiatives that remind us how great open-source can be and keep us motivated to support many more open-source projects.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>hacktoberfest</category>
      <category>programming</category>
    </item>
    <item>
      <title>How wakatime motivates me to stay productive</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Sun, 20 Sep 2020 10:14:37 +0000</pubDate>
      <link>https://forem.com/damjand/how-wakatime-motivates-me-to-stay-productive-3eme</link>
      <guid>https://forem.com/damjand/how-wakatime-motivates-me-to-stay-productive-3eme</guid>
      <description>&lt;p&gt;For those of you who don't know, &lt;a href="https://wakatime.com/" rel="noopener noreferrer"&gt;wakatime&lt;/a&gt; is a plugin that can be integrated into an IDE (or browser) to keep track of how much time you spend coding, as well as showing time spent for different languages and projects. I use it on all my IDEs such as Visual Studio, Visual Studio Code and others which I use on a daily basis.&lt;/p&gt;

&lt;p&gt;Wakatime gives me the satisfaction of getting to see and measure how productive I was during the day or the whole week (could be even the month or longer). It truly feels great and fulfilling to see how focused and "in the flow" I really was throughout the work week.&lt;/p&gt;

&lt;p&gt;For anyone interested I really recommend using Wakatime, it is free and very simple and it supports &lt;a href="https://wakatime.com/plugins" rel="noopener noreferrer"&gt;many IDEs, editors&lt;/a&gt; and &lt;a href="https://wakatime.com/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I also have set up a very cool github profile readme using a GitHub action provided by &lt;a href="https://github.com/avinal/Profile-Readme-WakaTime" rel="noopener noreferrer"&gt;avinal&lt;/a&gt;, you can check mine out on my github profile &lt;a href="https://github.com/dimitrov-d" rel="noopener noreferrer"&gt;dimitrov-d&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Python Scheduler: A cron job replacement</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Fri, 15 May 2020 18:14:47 +0000</pubDate>
      <link>https://forem.com/damjand/python-scheduler-a-cron-job-replacement-54ep</link>
      <guid>https://forem.com/damjand/python-scheduler-a-cron-job-replacement-54ep</guid>
      <description>&lt;p&gt;In this post I would like to show you a more convenient way of scheduling tasks to execute on a given time period. &lt;/p&gt;

&lt;p&gt;Cron jobs are commands which are performed in a set time interval, it can be every minute, every hour, every third day, once a week etc.&lt;br&gt;
Sometimes the process of creating and setting up a cron job might appear to be tedious and complicated. I've found an awesome python module for doing exactly what a cron job does but in a way cooler and more fun way.&lt;/p&gt;

&lt;p&gt;The module is called &lt;strong&gt;schedule&lt;/strong&gt; and according to its &lt;a href="https://schedule.readthedocs.io/en/stable/" rel="noopener noreferrer"&gt;official documentation&lt;/a&gt;, it is designed to be very understandable by a human. Here's how it looks: &lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now, let's say we have a real life problem we need to solve and keep doing that periodically. As an example, I've made a script which checks for empty folders in a given path. This might appear to be a mess for someone who forgets to delete empty folders, keeps rearranging files and other scenarios. This is how the schedule module looks like in action:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Now, the last thing we need to consider: the scheduler is running only as long as we have our program open and running. When we close or stop the program, the scheduler is cut off and no longer checks for the time interval in the background.&lt;br&gt;
As a solution for this, we can use the &lt;strong&gt;nohup&lt;/strong&gt; command, which stands for no hangup and makes a process immune to hangups (in our case the hangup means stopping the script from running).&lt;br&gt;
We have our scheduler.py file ready with the task we want to be executing in our timeline. These are the steps you should take in order to have the desired result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the schedule module via pip by running

&lt;code&gt;pip install schedule&lt;/code&gt;

, preferrably in your virtual environment&lt;/li&gt;
&lt;li&gt;At the top of your script add

&lt;code&gt;#!/usr/bin/env python3&lt;/code&gt;

. This step is necessary if you have multiple versions of Python installed and /usr/bin/env will ensure that the first Python interpreter in your $PATH environment variable is taken.&lt;/li&gt;
&lt;li&gt;In the terminal, run

&lt;code&gt;chmod +x scheduler.py&lt;/code&gt;

, which will grant the required file permissions for continuous execution&lt;/li&gt;
&lt;li&gt;Run the command

&lt;code&gt;nohup /path/to/scheduler.py &amp;amp;&lt;/code&gt;

. The '&amp;amp;' symbol ensures that your script will run in the background as a system process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Congrats, you now have your script running in the background. You can feel free to close the terminal and do something else while your script will check for the time period uninterruptedly. If you want to stop script from running, you can list the processes and find its id with the command&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;ps ax | grep scheduler.py&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 which shows you the process' PID and then run&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;kill PID&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://janakiev.com/blog/python-background/" rel="noopener noreferrer"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: This was developed and tested only on a MacOS system&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>I created a Java Chat Bot!</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Tue, 28 Apr 2020 18:39:16 +0000</pubDate>
      <link>https://forem.com/damjand/i-created-a-java-chat-bot-2m0l</link>
      <guid>https://forem.com/damjand/i-created-a-java-chat-bot-2m0l</guid>
      <description>&lt;p&gt;I have used an API from &lt;a href="http://brainshop.ai/" rel="noopener noreferrer"&gt;BrainShop&lt;/a&gt; to create a chat bot application using Java and JavaFX for the graphical interface. It is not my biggest project so far, but in my opinion definitely the most fun project I've built. &lt;/p&gt;

&lt;p&gt;You can check it out on my GitHub:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dimitrov-d" rel="noopener noreferrer"&gt;
        dimitrov-d
      &lt;/a&gt; / &lt;a href="https://github.com/dimitrov-d/Chat-Bot" rel="noopener noreferrer"&gt;
        Chat-Bot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Chat Bot interface developed using JavaFX library and an API
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>java</category>
    </item>
    <item>
      <title>GitKraken - The tool I can't git without</title>
      <dc:creator>Damjan Dimitrov</dc:creator>
      <pubDate>Tue, 11 Feb 2020 08:44:06 +0000</pubDate>
      <link>https://forem.com/damjand/gitkraken-the-tool-i-can-t-git-without-74j</link>
      <guid>https://forem.com/damjand/gitkraken-the-tool-i-can-t-git-without-74j</guid>
      <description>&lt;p&gt;We have all been there at the beginning of learning git - jumping through courses and blogs, reading documentation, trying to learn commands by heart, practising etc. I was there too, struggling to get a grip of what git actually is and how it works. I am willing to present you &lt;strong&gt;GitKraken&lt;/strong&gt;, the tool which will save you an unimaginable amount of time which you would have spent on re-reading git documentation or strolling through some git cheat-sheets.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gitkraken.com%2Fimg%2Fog%2Fog-git-client.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwww.gitkraken.com%2Fimg%2Fog%2Fog-git-client.png" alt="GitKraken" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This tool is amazing and I cannot enjoy it enough. It provides all the features git has to offer in just a click away. It has a beautiful colorful representation of the branches and their flow, as well as a toolbar with all the commands you constatly use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9iusvmgd507wk471s8fx.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F9iusvmgd507wk471s8fx.PNG" alt="Toolbar" width="465" height="66"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also has a sidebar to view all your existing local and remote branches, and offers all of the necessary options you need to work with them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fthe671n3ivwkxt9cpjil.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fthe671n3ivwkxt9cpjil.PNG" alt="Branches" width="405" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My favorite part of using this git tool: The diff view. It feels so empowering to be able to see the changes in the repo with a neat diff tool. This is another thing that GitKraken offers. It offers three different diff views, one of which lets you discard od stage only chunks of a modified file, you can clearly see who has worked on these changes and list all the files which have been modified. Besides this it has a very similar and interactive conflict resolver GUI as well.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffd5itfxund2bhlytbmpe.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffd5itfxund2bhlytbmpe.PNG" alt="Diff" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Additionally, GitKraken has some other features called GloBoards and Timelines (NEW), which you can use for issue tracking or project/task management and tracking current milestones. It is also a part of the &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;Student Developer Pack&lt;/a&gt;, from which as a student you can get a free PRO account for a whole year.&lt;/p&gt;

&lt;p&gt;I very much recommend using this tool to everyone who is working with git on a daily basis and does not feel as cool about manually typing commands in the terminal as in the beginning. You can read more about GitKraken &lt;a href="https://www.gitkraken.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
