<?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>DEV Community: Andrii Sych</title>
    <description>The latest articles on DEV Community by Andrii Sych (@sych_andrii).</description>
    <link>https://dev.to/sych_andrii</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%2F2037730%2F4da2e01f-d219-4421-a922-d6f6b9add8b9.jpeg</url>
      <title>DEV Community: Andrii Sych</title>
      <link>https://dev.to/sych_andrii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sych_andrii"/>
    <language>en</language>
    <item>
      <title>Git remote branches</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Fri, 04 Oct 2024 23:56:33 +0000</pubDate>
      <link>https://dev.to/sych_andrii/git-remote-branches-4eie</link>
      <guid>https://dev.to/sych_andrii/git-remote-branches-4eie</guid>
      <description>&lt;p&gt;This week we had to add a feature to another person's repository. To be specific, we were required to add a default configuration TOML file inside of user's &lt;code&gt;$HOME&lt;/code&gt; folder, that contains default parameters for a CLI tool. I have contributed to &lt;code&gt;readMeMaker&lt;/code&gt; repository:&lt;br&gt;
&lt;a href="https://github.com/jadorotan/readMeMaker.git" rel="noopener noreferrer"&gt;https://github.com/jadorotan/readMeMaker.git&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Jadorotan's code was located all in one file, so it was pretty simple to work with it. I just had to install a library called &lt;code&gt;tomli&lt;/code&gt; and add a function which reads default configuration file, if it is provided. All the changes were inside of approximately 10 lines of code.&lt;/p&gt;

&lt;p&gt;I have switched to wsl completely for my development and work. I've had problems with interacting with Debian shell. To be exact, I had troubles managing user permissions and for some reason in the commit history of Jadorotan's pull request you can see how the user who committed is not &lt;code&gt;SychAndrii&lt;/code&gt;, but &lt;code&gt;root&lt;/code&gt; user, which is my Debian user.&lt;/p&gt;

&lt;p&gt;Thanks to professor Humphrey's lectures, I have completely understood what branches are - just names for commits that move forward over time. I had no troubles switching between remote and local branches and merging changes from feature branch to main branch. &lt;/p&gt;

&lt;p&gt;Having completed this lab, I have learned about how to manage many git remotes (not just origin). &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>git</category>
      <category>python</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Fast-forward and three-way merges</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Sat, 28 Sep 2024 02:18:49 +0000</pubDate>
      <link>https://dev.to/sych_andrii/fast-forward-and-three-way-merges-3kl5</link>
      <guid>https://dev.to/sych_andrii/fast-forward-and-three-way-merges-3kl5</guid>
      <description>&lt;p&gt;While working on my project Infusion:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I decided to implement 2 new features - streaming responses from LLM in real time and usage of appropriate exit codes upon program completion. However, instead of creating conventional pull requests to integrate changes into main branch, I was tasked to do the merges locally in my repo, and then push results of the merges to the remote repo.&lt;/p&gt;

&lt;p&gt;The first issue was to implement exit codes:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/issues/34" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/34&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Closed with merge commit:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/commit/b01f493a8eb3c86aad00760f41f8adf0b93b231e" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/commit/b01f493a8eb3c86aad00760f41f8adf0b93b231e&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This task was pretty easy to implement since python provides you with a &lt;code&gt;sys&lt;/code&gt; package to return status codes. I have decided to have 4 error status codes for my program:&lt;/p&gt;

&lt;p&gt;0 - Program ended successfully.&lt;br&gt;
1 - Invalid options provided.&lt;br&gt;
2 - Invalid files provided.&lt;br&gt;
3 - Unknown error.&lt;/p&gt;

&lt;p&gt;On top of adding status codes, I have also refactored the code to be more intuitive with use of more functions.&lt;/p&gt;

&lt;p&gt;My second issue was to implement streaming:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/issues/33" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/33&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Closed with merge commit:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/commit/b01f493a8eb3c86aad00760f41f8adf0b93b231e" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/commit/b01f493a8eb3c86aad00760f41f8adf0b93b231e&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This task was more difficult to do because of &lt;code&gt;LangChain&lt;/code&gt; library I am using for my project. This library is relatively new, so documentation for streaming with &lt;code&gt;astream&lt;/code&gt; function is very unintuitive and difficult to understand. &lt;/p&gt;

&lt;p&gt;I have always hated python and will keep doing it for the rest of my life. I tried to become more comfortable using it with this project, but after languages like C#, TypeScript, or Kotlin - I just can't take Python seriously. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
      <category>github</category>
      <category>git</category>
    </item>
    <item>
      <title>Contributing to another repo</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Fri, 20 Sep 2024 22:39:22 +0000</pubDate>
      <link>https://dev.to/sych_andrii/first-pull-requests-ever-4mhk</link>
      <guid>https://dev.to/sych_andrii/first-pull-requests-ever-4mhk</guid>
      <description>&lt;p&gt;Since the beginning of this month, I've been working hard on the Open Source course I took at Seneca Polytechnic, and one the labs that we had was to create a pull request so someone else's repo and approve a pull request to your own repo, so that's what I am going to talk about.&lt;/p&gt;

&lt;p&gt;I am going to start with a pull request that I created for an issue. The issue was to add support for a flag, which allows to see how many tokens were used in request and in response:&lt;br&gt;
&lt;a href="https://github.com/aamfahim/explainer.js/issues/22" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/22&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The process of implementing this feature was pretty simple. I had to fork the original repository, commit and push the changes to a new branch, and create a pull request from the branch in in my fork to the main branch in the original repo:&lt;br&gt;
&lt;a href="https://github.com/aamfahim/explainer.js/pull/23" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/pull/23&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Implementation was pretty simple, considering the fact that I have used node.js for quite a while and my teammate does not have a lot of strict requirements considering the way I write code. After he reviewed my code, he requested me to change the names of the variables to be more descriptive, but that was about it - the changes were quite simple and straightforward. &lt;/p&gt;

&lt;p&gt;Now, my partner has had a lot of trouble implementing the issue in my repository:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/issues/20" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/20&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With his pull request:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/pull/21" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/pull/21&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the history of reviewing and requested changes is much longer than the first pull request. The way my teammate (whose issue I appreciate, by the way) wrote code the first time involved creating a function that was only executing its code if second parameter was &lt;code&gt;True&lt;/code&gt;, so I decided that it's not a very clean approach, and asked him to remake it. Instead of constructing &lt;code&gt;Langchain&lt;/code&gt;'s  &lt;code&gt;chain&lt;/code&gt; object using a function that sometimes does not do anything, I asked him to construct this object conditionally, but with a function, that is always useful. Additionally, my teammate has a lot of troubles dealing with &lt;code&gt;Python&lt;/code&gt; language (so do I, to be honest), so he had a lot of trouble implementing the feature in general, because of the language and because of LangChain's multiple layers of abstractions.&lt;/p&gt;

&lt;p&gt;Having completed this lab, I have learned how to review code on github, reject pull requests and approve them, and how to link them to existing issues. Besides that, I already had knowledge about everything we've been doing.  &lt;/p&gt;

</description>
      <category>cli</category>
      <category>opensource</category>
      <category>python</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Infusion v0.1.0</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Fri, 20 Sep 2024 22:17:35 +0000</pubDate>
      <link>https://dev.to/sych_andrii/infusion-v010-18nc</link>
      <guid>https://dev.to/sych_andrii/infusion-v010-18nc</guid>
      <description>&lt;p&gt;Over the course of the past 2 weeks I have been working on a documentation-generation tool that uses Open AI API to generate new files with documentation in them. I have built it using &lt;code&gt;Python&lt;/code&gt;, &lt;code&gt;Click&lt;/code&gt;, and &lt;code&gt;LangChain&lt;/code&gt; libraries. The features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically generates structured comments and documentation for source code.&lt;/li&gt;
&lt;li&gt;Supports multiple programming languages (identified via file extension).&lt;/li&gt;
&lt;li&gt;Handles multiple files at once (no batch processing yet).&lt;/li&gt;
&lt;li&gt;Allows custom output directories to store the processed files.&lt;/li&gt;
&lt;li&gt;Allows you to specify a model to use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can access the GitHub repo here: &lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Infusion is a command-line tool designed to assist developers by generating documentation for their source code. By providing file paths, Infusion leverages language models like OpenAI’s GPT to modify the files by inserting appropriate comments and documentation. The tool supports multiple programming languages.&lt;/p&gt;

&lt;p&gt;It is particularly useful when you need structured comments (e.g., JSDoc for JavaScript/TypeScript or JavaDoc for Java) or simple comments above functions and classes. Infusion saves the modified files to a specified output directory.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;To install and run Infusion locally, clone the GitHub repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/your-username/infusion.git
&lt;span class="nb"&gt;cd &lt;/span&gt;infusion
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, you will have to set up a virtual environment and install all the dependencies. &lt;/p&gt;

&lt;p&gt;If you are on &lt;strong&gt;Windows&lt;/strong&gt;, use &lt;strong&gt;PowerShell&lt;/strong&gt; to set up virtual environemnt using the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;/setup/setup.ps1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are on &lt;strong&gt;Mac / Linux&lt;/strong&gt;, use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./setup/setup.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After you are done setting up virtual environment, you can use the Infusion tool by running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue &lt;span class="o"&gt;[&lt;/span&gt;OPTIONS] &lt;span class="o"&gt;[&lt;/span&gt;FILE_PATHS]...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;To use Infusion, run the following command, replacing FILE_PATHS with the paths to the source code files you want to process.&lt;/p&gt;

&lt;p&gt;Process a single file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue ./path/to/source.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Process a single file with a different openAI model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue &lt;span class="nt"&gt;-m&lt;/span&gt; gpt-4o-mini ./path/to/source.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Process a single file and specify an output folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue ./path/to/source.py &lt;span class="nt"&gt;--output&lt;/span&gt; my_output_folder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Process multiple files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue ./file1.js ./file2.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Process multiple files without specifying every single one of them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue ./folder/&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Process multiple files and specify an output folder to save files to instead of printing them to stdout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pipenv run infsue ./file1.js ./file2.py &lt;span class="nt"&gt;--output&lt;/span&gt; my_output_folder
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a more practical example of usage of this tool, please see the GitHub repository! I'd love if you posted your issue to suggest any improvements in my codebase!&lt;/p&gt;

</description>
      <category>cli</category>
      <category>python</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Infusion docs generation cli tool</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Fri, 13 Sep 2024 23:48:41 +0000</pubDate>
      <link>https://dev.to/sych_andrii/infusion-docs-generation-cli-tool-ipg</link>
      <guid>https://dev.to/sych_andrii/infusion-docs-generation-cli-tool-ipg</guid>
      <description>&lt;p&gt;&lt;code&gt;Infusion&lt;/code&gt; is an open-source tool that is used for generation of documentation in your code files. It uses OpenAI &lt;code&gt;gpt-4&lt;/code&gt; model to write comments. It was my project and I wrote it in Python.&lt;/p&gt;

&lt;p&gt;GitHub link:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;explainer.js&lt;/code&gt; is an open-source tool that is used to explain code snippets in your code files. It uses Groq models to write comments. It was a project of my teammate &lt;a class="mentioned-user" href="https://dev.to/aamfahim"&gt;@aamfahim&lt;/a&gt; and he wrote it in Node.JS&lt;/p&gt;

&lt;p&gt;GitHub link:&lt;br&gt;
&lt;a href="https://github.com/aamfahim/explainer.js" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I am currently enrolled in an open-source course at Seneca Polytechnic, where we were tasked to team up with another person and review each other's code and give some suggestions for improvement using GitHub issues. I am going to describe this process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Mode of communication
&lt;/h2&gt;

&lt;p&gt;Most of the issues generated for both repositories were done using synchronous communication via Discord call. After that, we talked asynchronously using Discord messages, since there was a difficult issue for me to streamline setup of my project using bash scripts, and calling my teammate every time I needed to test if it works on his machine seemed unnecessary. Testing using Docker containers and WSL Linux sub system on my machine was not the same as testing them on Al's system, and it highlighted important bugs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Experience of reviewing someone's code
&lt;/h2&gt;

&lt;p&gt;I did not experience anything unusual when reviewing my teammate's code, since I have lots of experience with &lt;code&gt;Node.JS&lt;/code&gt; development. I liked creating issues and then immediately suggesting solutions to them though. One problem we had is that we could not figure out a way to allow me put labels on the issues I created, only Al could do it, which was annoying.&lt;/p&gt;

&lt;h2&gt;
  
  
  Experience of someone reviewing my code
&lt;/h2&gt;

&lt;p&gt;Al suggested a lot of room for improvement, particularly with installation of my CLI tool. When he first forked my repo, it was a requirement for the end users to go and install a particular version of python manually, which is definitely a frustrating task. Additionally, he highlighted other possible improvements for convenient usage of a tool, like introducing .env file so that you don't have to input your API key every time you start the tool. I like getting input on my code from other people because it allows me to grow as a developer and it definitely expands my view of development lifecycle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues during reviewing and testing
&lt;/h2&gt;

&lt;p&gt;Most of the problems we had were with my tool, because Al's CLI program was written in &lt;code&gt;Node.JS&lt;/code&gt; and we both have a lot of experience with it. In contrast, both of us don't like Python ecosystem, so we had a lot of troubles interacting with it. When testing Al's repository, I found the docs written in his README to be misleading or confusing to understand, especially the &lt;code&gt;model&lt;/code&gt; and &lt;code&gt;api-key&lt;/code&gt; options. We had to go through the process of trials and errors to figure out which API keys and models are accepted by his tool. When it came to testing my repository, version of python on Al's system was very outdated (&lt;code&gt;2.7&lt;/code&gt;), so he had to install &lt;code&gt;3.10.6&lt;/code&gt; (version, required to use my tool) manually. However, even then the problems did not end. Even though he installed it, it was still not being recognized by the virtual environment my tool creates with &lt;code&gt;pipenv&lt;/code&gt;. After that, we also had frustration with entering the API key required for the usage of my tool every time we started it. Finally, the README docs did not help with the installation. We tried to follow them, but we kept getting errors related to some scripts not being recognized on the &lt;code&gt;PATH&lt;/code&gt;. That's when I decided that we need some sort of automation tool that does all the installation for you. One thought I had is to dockerize the application, but then it would require me to somehow map &lt;code&gt;Docker&lt;/code&gt; volumes to the output directory and input files specified for my tool, and that would complicate everything twice. Thus, I remembered that a lot of package managers are actually command line tools, and if you install them by cloning a GitHub repo, then you need to set them up by executing some kind of bash setup script. So that was the idea that I decided to implement. Finally, both of us could not figure out a way to assign labels like &lt;code&gt;bug&lt;/code&gt; or &lt;code&gt;enhancement&lt;/code&gt; to the issues we filed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues I filed
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Issue 1
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aamfahim/explainer.js/issues/13" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/13&lt;/a&gt;&lt;br&gt;
Basic -h flag documentation enhancement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 2
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aamfahim/explainer.js/issues/12" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/12&lt;/a&gt;&lt;br&gt;
The temperature option did not work properly even if it was within valid range (from 0 to 2). Turns out the CLI framework Al uses parses all the options passed to it as strings, so I suggested converting the temperature to a number before passing it to the API request.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 3
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aamfahim/explainer.js/issues/11" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/11&lt;/a&gt;&lt;br&gt;
My teammate forgot to implement a flag, which was mentioned in a README file as working, which is misleading.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 4
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aamfahim/explainer.js/issues/10" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/10&lt;/a&gt;&lt;br&gt;
This one is pretty interesting. First of all, README does not explain which models are accepted by the &lt;code&gt;Groq&lt;/code&gt;. But even the allowed model we tested did not do the job of the CLI tool, since it was classifying the code based on the safe/unsafe evaluation, which is not what we really want for this project. So I suggested narrowing down a list of allowed models to use and update the README to include this information. &lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 5
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/aamfahim/explainer.js/issues/9" rel="noopener noreferrer"&gt;https://github.com/aamfahim/explainer.js/issues/9&lt;/a&gt;&lt;br&gt;
This issues covers points I have mentioned before. Some flags are misleadingly documented, and some of them are not documented enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues that were filed on my repo
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Issue 1
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/SychAndrii/infusion/issues/11" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/11&lt;/a&gt;&lt;br&gt;
The problem was that I confused LLM with my prompt. I told it that I only want source code from it, and at the same time I told it to send the word 'error' if the code it read was not following language's syntax. Additionally, I rephrased my prompt to be more strict with files that do not contain valid code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 2
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/SychAndrii/infusion/issues/10" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/10&lt;/a&gt;&lt;br&gt;
Basic -h flag documentation rewording.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 3
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/SychAndrii/infusion/issues/9" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/9&lt;/a&gt;&lt;br&gt;
I also found it annoying to define the API key every time I run the app, don't know how I didn't think of creating .env file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Issue 4
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/SychAndrii/infusion/issues/8" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/8&lt;/a&gt;&lt;br&gt;
I have decided not to go with dockerizing my app, because then it would not really feel like a true CLI app, and instead decided to have shell scripts for setting up all the dependencies and the correct python version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Issues I managed to fix
&lt;/h2&gt;

&lt;p&gt;I fixed all of my issues. All of them took less than 30 minutes to fix, but there was one issue, that took me like 2-3 hours to fix:&lt;br&gt;
&lt;a href="https://github.com/SychAndrii/infusion/issues/8" rel="noopener noreferrer"&gt;https://github.com/SychAndrii/infusion/issues/8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It might seem weird since enhancement of README file should be easily achievable, but what the first suggestion by Al required me to completely remake the installation process of my tool, which required me to introduce 2 scripts for installation - one for &lt;code&gt;bash&lt;/code&gt; and one for &lt;code&gt;Powershell&lt;/code&gt;. The problem I could not solve for most of the time was that even though these setup scripts properly installed the needed version of python, this version of python was not passed down to the virtual environment, which you need to enter before using my tool. Eventually, I fixed that though.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;I have definitely improved my README skills. The way I provided example usage was very confusing for the end user. Additionally, I have finally used bash and powershell languages to do something myself, not for a school assignment, not because it was a requirement, but because I wanted to simplify the process of interacting with my tool. Finally, I decided to face the language I absolutely can't stand - which is python. Working with it was definitely not enjoyable for me, but I think it's essential to be able to use it if you want to find a job today, especially with AI trending.&lt;/p&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>github</category>
      <category>opensource</category>
    </item>
    <item>
      <title>My first post</title>
      <dc:creator>Andrii Sych</dc:creator>
      <pubDate>Sat, 07 Sep 2024 00:10:35 +0000</pubDate>
      <link>https://dev.to/sych_andrii/my-first-post-1n94</link>
      <guid>https://dev.to/sych_andrii/my-first-post-1n94</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone
&lt;/h2&gt;

&lt;p&gt;it's my first post on this platform, and to be honest I have never read any blogs before. I'm excited to see how it impacts my knowledge of programming technologies. I've been watching YouTube videos for a while, and sometimes have come across some frameworks that would solve an exact problem I was working on at my job / while doing my project. Nevertheless, I hate watching videos, I prefer reading, so dev.to might eliminate the problem I have and expand my view of tools available out there. &lt;/p&gt;

&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;I am currently enrolled in open source development course at Seneca Polytechnic. I have decided to take it since working on large legacy projects with a lot of bugs and uncommented 500-line functions is for some reason my area of passion. You don't get this experience working on school assignments, and open source allows you to experience this in full. Besides, I took cloud computing course before and the professor there (David Humphrey) has taught me a lot of new concepts and practices, so I wanted to take a course that he is teaching.&lt;/p&gt;

&lt;h2&gt;
  
  
  Goals
&lt;/h2&gt;

&lt;p&gt;As I've said before, I want to contribute to something that's actually meaningful to someone and is being used. It's my 7th semester, and besides co-op, I have never created something for someone to use in real life. I want to change that. Specifically, I am interested in old legacy distributed systems written in Java/C#. However, I also recognize that Python is the most in demand language today, and LLMs are trending, so might explore projects in this area as well. &lt;/p&gt;

&lt;h2&gt;
  
  
  Interesting open source project
&lt;/h2&gt;

&lt;p&gt;The project I picked was &lt;code&gt;kotaemon&lt;/code&gt;: &lt;a href="https://github.com/Cinnamon/kotaemon" rel="noopener noreferrer"&gt;https://github.com/Cinnamon/kotaemon&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I found it interesting because it performs exactly a job I currently need on my project, which is giving LLM responses based on documents uploaded. It is exciting to see someone already implementing the idea you had, because you don't have to implement it from scratch using low level frameworks. &lt;/p&gt;

</description>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
