<?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: Fikri Mulyana Setiawan</title>
    <description>The latest articles on DEV Community by Fikri Mulyana Setiawan (@fikrinotes).</description>
    <link>https://dev.to/fikrinotes</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%2F689481%2F7dbd9b37-95f8-4476-95c9-ea740ffeaff8.jpg</url>
      <title>DEV Community: Fikri Mulyana Setiawan</title>
      <link>https://dev.to/fikrinotes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fikrinotes"/>
    <language>en</language>
    <item>
      <title>How to Configure Vim as Your Main Python IDE</title>
      <dc:creator>Fikri Mulyana Setiawan</dc:creator>
      <pubDate>Sun, 16 Jan 2022 15:02:04 +0000</pubDate>
      <link>https://dev.to/fikrinotes/how-to-configure-vim-as-your-main-python-ide-3na1</link>
      <guid>https://dev.to/fikrinotes/how-to-configure-vim-as-your-main-python-ide-3na1</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nqik4ok2hpmq5s8ujan.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9nqik4ok2hpmq5s8ujan.png" alt="Vim Logo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IDE and text-editor is the essential tools for programmers. and, as you know, there are so many text editor out there. There are Notepad ++, Visual Studio Code, Sublime Text, Atom, Brackets, etc. But, i and many people out there choose Vim as our text editor, since it is highly customizable for our programming purpose.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Vim ?
&lt;/h2&gt;

&lt;p&gt;For those of you who don't know, Vim is a text editor, not an IDE. but, don't get me wrong. Vim is &lt;strong&gt;more than just a text editor&lt;/strong&gt;. We can make Vim works like an IDE. i wouldn't explain what makes Vim special here. you can watch about that in this video :&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/6GOqCU2VA0g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Altough Vim is very good for coding, it doesn't look like that at the first time. When you first installed vim and open it, it will look like this :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxy8qh6ax0wb6flyi0t0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcxy8qh6ax0wb6flyi0t0.png" alt="default display of Vim"&gt;&lt;/a&gt;&lt;br&gt;
not bad, right? but, since we will using Vim as our main text editor, we need a better view. this is my Vim text editor after configuring it :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2c981h6ek2zzzl3gypm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp2c981h6ek2zzzl3gypm.png" alt="Vim display in my laptop after some configuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, how do we make vim looks better ? here is some configuration for vim that i think are important :&lt;/p&gt;
&lt;h2&gt;
  
  
  Auto Indent
&lt;/h2&gt;

&lt;p&gt;auto indenting feature is so important if you are writing code in programming languages that care about indenting, likes python. to enable auto-indent feature, you can type &lt;code&gt;:set ai&lt;/code&gt; in normal mode. if you want this feature enable for every file you create, you can add &lt;code&gt;set ai&lt;/code&gt; (without colon) in your &lt;code&gt;_vimrc&lt;/code&gt; file (for windows user).&lt;/p&gt;
&lt;h2&gt;
  
  
  Syntax Highlighting
&lt;/h2&gt;

&lt;p&gt;for some coder, syntax highlighting is an important feature. syntax highlighting feature makes us understand the code easier. to enable syntax highlighting in vim, open your &lt;code&gt;_vimrc&lt;/code&gt; file, and add this text : &lt;code&gt;syntax on&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Turn Off The Bell
&lt;/h2&gt;

&lt;p&gt;When you are using Vim for the first time, you will notice that there is a bell sound when something wrong happen. for me, this is so annoying. to turn off this sound, add &lt;code&gt;set belloff=all&lt;/code&gt; to your &lt;code&gt;_vimrc&lt;/code&gt; file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Line Numbering
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrapnkjc2bvagw3fh3fc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqrapnkjc2bvagw3fh3fc.png" alt="Line Number"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;to display line number in Vim, add &lt;code&gt;set number&lt;/code&gt; to your &lt;code&gt;_vimrc&lt;/code&gt; file. if you want relative numbering, add &lt;code&gt;set relativenumber&lt;/code&gt; to your &lt;code&gt;_vimrc&lt;/code&gt; file.&lt;/p&gt;
&lt;h2&gt;
  
  
  Matching Brackets and Quotation Marks
&lt;/h2&gt;

&lt;p&gt;when you use VS Code, Atoms, and other text editor, when you type &lt;code&gt;(&lt;/code&gt;, you will see that &lt;code&gt;)&lt;/code&gt; also appears automatically. But, when you use Vim, you wouldn't see this feature by default. to enable this feature, add &lt;code&gt;inoremap ( ()&amp;lt;Esc&amp;gt;i&lt;/code&gt; to your &lt;code&gt;_vimrc&lt;/code&gt; file. you can do the same thing with quotation marks. So, to enable this feature for every brackets and quotation marks, add this code to your &lt;code&gt;_vimrc&lt;/code&gt; file :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;inoremap &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="p"&gt;()&amp;lt;&lt;/span&gt;Esc&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;i&lt;/span&gt;
inoremap &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;{}&amp;lt;&lt;/span&gt;Esc&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;i&lt;/span&gt;
inoremap &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;[]&amp;lt;&lt;/span&gt;Esc&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;i&lt;/span&gt;
inoremap &lt;span class="s1"&gt;' '&lt;/span&gt;'&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Esc&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;i&lt;/span&gt;
inoremap &lt;span class="s2"&gt;" "&lt;/span&gt;"&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Esc&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Change Theme In Vim
&lt;/h2&gt;

&lt;p&gt;Themes in Vim are called as colorscheme. After installing vim, you will also get some Theme/Colorscheme by default. to change the colorscheme that applied in vim, type &lt;code&gt;:colors&lt;/code&gt; an then press tab button. then you will see something like this :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviabiauhhq9v96ngjtbp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fviabiauhhq9v96ngjtbp.png" alt="vim colorscheme menu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;this is the menu for choosing vim colorscheme. you can use arrow keys to navigate between it and press enter to applied that colorscheme. to add new colorscheme, you can search it in github. the coloscheme that i personally use is &lt;a href="https://github.com/hzchirs/vim-material" rel="noopener noreferrer"&gt;material colorscheme&lt;/a&gt;. to use this colorscheme, download the file in colors folder and place it to &lt;code&gt;vim82 -&amp;gt; colors&lt;/code&gt; in your vim folder. after that, you can applied that colorscheme like usual.&lt;/p&gt;
&lt;h2&gt;
  
  
  Vim Built-in Autocompletion
&lt;/h2&gt;

&lt;p&gt;do you think vim can't perform autocompletion? Vim have its built-in autocompletion named Omni Completion.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Omni completion provides smart autocompletion for programs. When invoked, the text before the cursor is inspected to guess what might follow. A popup menu offers word completion choices that may include struct and class members, system functions, and more. A similar feature in Microsoft Visual Studio is known as IntelliSense.&lt;/em&gt; - &lt;a href="https://vim.fandom.com/wiki/Omni_completion" rel="noopener noreferrer"&gt;Vim Fandom&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;to enable this feature, open your &lt;code&gt;_vimrc&lt;/code&gt; file, and write :&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="k"&gt;filetype&lt;/span&gt; plugin &lt;span class="k"&gt;on&lt;/span&gt;
&lt;span class="k"&gt;set&lt;/span&gt; &lt;span class="nb"&gt;omnifunc&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;syntaxcomplete#Complete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;after this step, you can start typing your code. if you want the code suggestion to pop-up, press &lt;code&gt;ctrl-x&lt;/code&gt; and &lt;code&gt;ctrl-o&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Cool Statusbar
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0299lblm7jp63prx26eo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0299lblm7jp63prx26eo.png" alt="Vim statusline"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the cool yellow line in the bottom of my Vim at the screenshot above is called &lt;em&gt;statusbar&lt;/em&gt;. there are some plugins that you can use to make your statusbar looks better. for example, &lt;a href="https://github.com/vim-airline/vim-airline" rel="noopener noreferrer"&gt;vim airline&lt;/a&gt; and &lt;a href="https://github.com/itchyny/lightline.vim" rel="noopener noreferrer"&gt;vim lightline&lt;/a&gt;. I myself use vim airline for my statusbar. to install this plugin, you can use some plugin-manager that you prefer, like vundle or vim-plug. but, if you use Vim 8, you can use &lt;strong&gt;vim native package manager&lt;/strong&gt;. to install vim airline using vim native package manager, do this step :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;go to &lt;a href="https://github.com/vim-airline/vim-airline" rel="noopener noreferrer"&gt;vim airline's repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;download the entire repository in zip file format.&lt;/li&gt;
&lt;li&gt;extract this zip file&lt;/li&gt;
&lt;li&gt;go to you vim folder, and open &lt;code&gt;vimfiles&lt;/code&gt; folder, and open &lt;code&gt;start&lt;/code&gt; folder (if you don't see this folder, then create it).&lt;/li&gt;
&lt;li&gt;place the extracted zip file to this &lt;code&gt;start&lt;/code&gt; folder. &lt;/li&gt;
&lt;li&gt;done. you already have install vim airline.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;after that step, your vim statusbar better. you can also add this code to your &lt;code&gt;_vimrc&lt;/code&gt; file (optional). i don't know what exactly this code does, but it looks like this code make your statusbar display the file extension and current time.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;g:airline_section_b&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'%{strftime("%c")}'&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;g:airline_section_y&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'BN: %{bufnr("%")}'&lt;/span&gt;
&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;g:airline&lt;/span&gt;#extensions#&lt;span class="nb"&gt;tabline&lt;/span&gt;#enabled &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;em&gt;read more about vim native plugin &lt;a href="https://medium.com/@paulodiovani/installing-vim-8-plugins-with-the-native-pack-system-39b71c351fea" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt; .&lt;/p&gt;
&lt;h2&gt;
  
  
  File Explorer
&lt;/h2&gt;

&lt;p&gt;Actually, vim has file explorer by default. but, for some reason, i prefer to use &lt;em&gt;NERDTree&lt;/em&gt;, a plugin for file explorer. &lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/preservim" rel="noopener noreferrer"&gt;
        preservim
      &lt;/a&gt; / &lt;a href="https://github.com/preservim/nerdtree" rel="noopener noreferrer"&gt;
        nerdtree
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A tree explorer plugin for vim.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="markdown"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;The NERDTree &lt;a href="https://github.com/preservim/nerdtree/actions?workflow=Vint" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/preservim/nerdtree/workflows/Vint/badge.svg" alt="Vint"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Introduction&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;The NERDTree is a file system explorer for the Vim editor. Using this plugin, users can visually browse complex directory hierarchies, quickly open files for reading or editing, and perform basic file system operations.&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/preservim/nerdtree/raw/master/screenshot.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fpreservim%2Fnerdtree%2Fraw%2Fmaster%2Fscreenshot.png" alt="NERDTree Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Use your favorite plugin manager to install this plugin. &lt;a href="https://github.com/tpope/vim-pathogen" rel="noopener noreferrer"&gt;tpope/vim-pathogen&lt;/a&gt;, &lt;a href="https://github.com/VundleVim/Vundle.vim" rel="noopener noreferrer"&gt;VundleVim/Vundle.vim&lt;/a&gt;, &lt;a href="https://github.com/junegunn/vim-plug" rel="noopener noreferrer"&gt;junegunn/vim-plug&lt;/a&gt;, and &lt;a href="https://github.com/Shougo/dein.vim" rel="noopener noreferrer"&gt;Shougo/dein.vim&lt;/a&gt; are some of the more popular ones. A lengthy discussion of these and other managers can be found on &lt;a href="https://vi.stackexchange.com/questions/388/what-is-the-difference-between-the-vim-plugin-managers" rel="nofollow noopener noreferrer"&gt;vi.stackexchange.com&lt;/a&gt;. Basic instructions are provided below, but please &lt;strong&gt;be sure to read, understand, and follow all the safety rules that come with your &lt;del&gt;power tools&lt;/del&gt; plugin manager.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have no favorite, or want to manage your plugins without 3rd-party dependencies, consider using Vim 8+ packages, as described in Greg Hurrell's excellent Youtube video: &lt;a href="https://www.youtube.com/watch?v=X2_R3uxDN6g" rel="nofollow noopener noreferrer"&gt;Vim screencast #75: Plugin managers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

Pathogen

&lt;p&gt;Pathogen is more of a runtime path manager than a plugin manager. You must…&lt;/p&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/preservim/nerdtree" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Installation for this plugin is the same to the installation vim airline plugin. after installing this plugin, you can open file explorer using &lt;code&gt;:NERDTree&lt;/code&gt; command in normal mode. &lt;/p&gt;

&lt;h2&gt;
  
  
  Better Syntax Highlinghting for Python
&lt;/h2&gt;

&lt;p&gt;As i said before, vim have built-in syntax highlighting feature. but, it is not too good. if you want a better syntax highlighting for python, you can use this plugin :&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/vim-python" rel="noopener noreferrer"&gt;
        vim-python
      &lt;/a&gt; / &lt;a href="https://github.com/vim-python/python-syntax" rel="noopener noreferrer"&gt;
        python-syntax
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Python syntax highlighting for Vim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Python syntax highlighting for Vim&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;This is an enhanced version of the original Vim 6.1 Python syntax highlighting
&lt;code&gt;python.vim&lt;/code&gt; by Neil Schemenauer.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Enhanced highlighting for
&lt;ul&gt;
&lt;li&gt;Strings&lt;/li&gt;
&lt;li&gt;Special symbols inside strings&lt;/li&gt;
&lt;li&gt;Numeric constants&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Added support for:
&lt;ul&gt;
&lt;li&gt;Python 3&lt;/li&gt;
&lt;li&gt;Numbers with underscores&lt;/li&gt;
&lt;li&gt;String %-formatting and f-strings&lt;/li&gt;
&lt;li&gt;Magic comments: source code encoding and shebangs&lt;/li&gt;
&lt;li&gt;New exceptions and builtins&lt;/li&gt;
&lt;li&gt;Doctests&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@decorator&lt;/code&gt; syntax&lt;/li&gt;
&lt;li&gt;Class variables such as &lt;code&gt;self&lt;/code&gt;, &lt;code&gt;cls&lt;/code&gt;, and &lt;code&gt;mcs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Operators&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Highlighting of the following errors:
&lt;ul&gt;
&lt;li&gt;Invalid symbols in source file&lt;/li&gt;
&lt;li&gt;Invalid numeric constants&lt;/li&gt;
&lt;li&gt;Invalid %-formatting inside strings&lt;/li&gt;
&lt;li&gt;Invalid variable names&lt;/li&gt;
&lt;li&gt;Invalid operators&lt;/li&gt;
&lt;li&gt;Mixing spaces and tabs&lt;/li&gt;
&lt;li&gt;Trailing spaces (Enabled with &lt;code&gt;g:python_highlight_space_errors&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Commands for easy switching between versions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Folding is done by the plugin &lt;a href="https://github.com/tmhedberg/SimpylFold" rel="noopener noreferrer"&gt;SimpylFold&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to install&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Use one of the following plugin managers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Shougo/dein.vim" rel="noopener noreferrer"&gt;dein&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/junegunn/vim-plug" rel="noopener noreferrer"&gt;vim-plug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/VundleVim/Vundle.vim" rel="noopener noreferrer"&gt;vundle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/tpope/vim-pathogen" rel="noopener noreferrer"&gt;pathogen&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Configuration&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Option variables&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Set variable to &lt;code&gt;1&lt;/code&gt; to enable or &lt;code&gt;0&lt;/code&gt; to disable.&lt;/p&gt;
&lt;p&gt;For example to enable all syntax highlighting…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/vim-python/python-syntax" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;the installation of this plugin is the same to the installation vim airline plugin. after installing, you can use this plugin by add this code to your &lt;code&gt;_vimrc&lt;/code&gt; file :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="k"&gt;let&lt;/span&gt; &lt;span class="nv"&gt;g:python_highlight_all&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Terminal
&lt;/h2&gt;

&lt;p&gt;you can open your terminal directly in Vim text editor. you don't need to install anything. to open terminal in vim, type &lt;code&gt;:terminal&lt;/code&gt; or &lt;code&gt;:term&lt;/code&gt; in normal mode.&lt;/p&gt;
&lt;h2&gt;
  
  
  Running Python Code
&lt;/h2&gt;

&lt;p&gt;actually, you can run python code in vim using terminal and type &lt;code&gt;python example.py&lt;/code&gt;. but, if you want to run python code by pressing keyboard, then follow this step. first, open you &lt;code&gt;_vimrc&lt;/code&gt; file. then, write this code:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;nnoremap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;F10&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;:!&lt;/span&gt; &lt;span class="k"&gt;python&lt;/span&gt; %&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;CR&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;what this code does is mapping &lt;code&gt;f10&lt;/code&gt; key to run &lt;code&gt;:! python %&amp;lt;CR&amp;gt;&lt;/code&gt; command. in general, the command &lt;code&gt;:! python %&amp;lt;CR&amp;gt;&lt;/code&gt; will take the name of your file using symbol &lt;code&gt;%&lt;/code&gt; and then run it like you run it manually in the terminal. after this step, you can run python code by pressing &lt;code&gt;f10&lt;/code&gt; on your keyboard. Do you know what to do if you want to run python code by pressing &lt;code&gt;r&lt;/code&gt; key ? yes, just write &lt;code&gt;nnoremap r :! python %&amp;lt;CR&amp;gt;&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;So, that is some configuration to make vim looks like an IDE. i know that there are other IDE features that vim doesn't have, like debugger. but, you can give a try for vim. Oh, wait. can this plugin be called a debugger? I've never tried it.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/puremourning" rel="noopener noreferrer"&gt;
        puremourning
      &lt;/a&gt; / &lt;a href="https://github.com/puremourning/vimspector" rel="noopener noreferrer"&gt;
        vimspector
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      vimspector - A multi-language debugging system for Vim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;vimspector - A multi language graphical debugger for Vim&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;For a tutorial and usage overview, take a look at the
&lt;a href="https://puremourning.github.io/vimspector-web/" rel="nofollow noopener noreferrer"&gt;Vimspector website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For detailed explanation of the &lt;code&gt;.vimspector.json&lt;/code&gt; format, see the
&lt;a href="https://puremourning.github.io/vimspector/configuration.html" rel="nofollow noopener noreferrer"&gt;reference guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/puremourning/vimspector/actions/workflows/build.yaml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/puremourning/vimspector/actions/workflows/build.yaml/badge.svg?branch=master" alt="Build"&gt;&lt;/a&gt; &lt;a href="https://matrix.to/#/#vimspector_Lobby:gitter.im" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d86204f03106a871f165401d33d17aecdbfa574f3796a5ac1cb07e07e95aebd5/68747470733a2f2f696d672e736869656c64732e696f2f6d61747269782f76696d73706563746f723a6d61747269782e6f72673f6c6162656c3d6d6174726978" alt="Matrix"&gt;&lt;/a&gt; &lt;a href="https://gitter.im/vimspector/Lobby?utm_source=badge&amp;amp;utm_medium=badge&amp;amp;utm_campaign=pr-badge" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/88c403b7ecd6542c8a4afa3b9b90adeefc7a086895fcfbc8eac6b4f475eb4a97/68747470733a2f2f6261646765732e6769747465722e696d2f76696d73706563746f722f4c6f6262792e737667" alt="Gitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#features-and-usage" rel="noopener noreferrer"&gt;Features and Usage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#supported-debugging-features" rel="noopener noreferrer"&gt;Supported debugging features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#supported-languages" rel="noopener noreferrer"&gt;Supported languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#other-languages" rel="noopener noreferrer"&gt;Other languages&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#installation" rel="noopener noreferrer"&gt;Installation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#method-2-using-a-repo-clone-vim-packages-and-select-gadgets-to-be-installed" rel="noopener noreferrer"&gt;Method 1: Using a repo clone, Vim packages and select gadgets to be installed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#method-3-using-a-plugin-manager" rel="noopener noreferrer"&gt;Method 2: Using a plugin manager&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#dependencies" rel="noopener noreferrer"&gt;Dependencies&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#neovim-limitations" rel="noopener noreferrer"&gt;Neovim limitations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#windows-differences" rel="noopener noreferrer"&gt;Windows differences&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#trying-it-out" rel="noopener noreferrer"&gt;Trying it out&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#cloning-the-plugin" rel="noopener noreferrer"&gt;Cloning the plugin&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#install-some-gadgets" rel="noopener noreferrer"&gt;Install some gadgets&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#vimspectorinstall-and-vimspectorupdate-commands" rel="noopener noreferrer"&gt;VimspectorInstall and VimspectorUpdate commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#install_gadgetpy" rel="noopener noreferrer"&gt;install_gadget.py&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#manual-gadget-installation" rel="noopener noreferrer"&gt;Manual gadget installation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#the-gadget-directory" rel="noopener noreferrer"&gt;The gadget directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#upgrade" rel="noopener noreferrer"&gt;Upgrade&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#about" rel="noopener noreferrer"&gt;About&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#background" rel="noopener noreferrer"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#what-vimspector-is-not" rel="noopener noreferrer"&gt;What Vimspector is not&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#status" rel="noopener noreferrer"&gt;Status&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#experimental" rel="noopener noreferrer"&gt;Experimental&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#motivation" rel="noopener noreferrer"&gt;Motivation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#sponsorship" rel="noopener noreferrer"&gt;Sponsorship&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#mappings" rel="noopener noreferrer"&gt;Mappings&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#visual-studio--vscode" rel="noopener noreferrer"&gt;Visual Studio / VSCode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#human-mode" rel="noopener noreferrer"&gt;Human Mode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#usage-and-api" rel="noopener noreferrer"&gt;Usage and API&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#launch-and-attach-by-pid" rel="noopener noreferrer"&gt;Launch and attach by PID:&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#picking-a-pid" rel="noopener noreferrer"&gt;Picking a PID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#launch-with-options" rel="noopener noreferrer"&gt;Launch with options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#debug-configuration-selection" rel="noopener noreferrer"&gt;Debug configuration selection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#get-configurations" rel="noopener noreferrer"&gt;Get configurations&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#breakpoints" rel="noopener noreferrer"&gt;Breakpoints&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#breakpoints-window" rel="noopener noreferrer"&gt;Breakpoints Window&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#line-breakpoints" rel="noopener noreferrer"&gt;Line breakpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#conditional-breakpoints-and-logpoints" rel="noopener noreferrer"&gt;Conditional breakpoints and logpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#exception-breakpoints" rel="noopener noreferrer"&gt;Exception breakpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#api-summary" rel="noopener noreferrer"&gt;API Summary&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#instruction-breakpoints" rel="noopener noreferrer"&gt;Instruction breakpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/puremourning/vimspector#clear-breakpoints" rel="noopener noreferrer"&gt;Clear breakpoints&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/puremourning/vimspector#run-to-cursor" rel="noopener noreferrer"&gt;Run to&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/puremourning/vimspector" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;if you want to see my &lt;code&gt;_vimrc&lt;/code&gt; configuration, you can visit my github repository here:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/fikrinotes" rel="noopener noreferrer"&gt;
        fikrinotes
      &lt;/a&gt; / &lt;a href="https://github.com/fikrinotes/Vim-Config" rel="noopener noreferrer"&gt;
        Vim-Config
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Configuration for my text editor - Vim
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Vim-Config&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Configuration for my text editor - Vim&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/fikrinotes/Vim-Config" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;thanks for reading my blog so far. if you have some questions, fell free to ask in the comment section below.&lt;/p&gt;

</description>
      <category>vim</category>
      <category>programming</category>
    </item>
    <item>
      <title>How I Build Intergalactic War Game In Pure JavaScript </title>
      <dc:creator>Fikri Mulyana Setiawan</dc:creator>
      <pubDate>Fri, 03 Sep 2021 07:32:12 +0000</pubDate>
      <link>https://dev.to/fikrinotes/how-i-build-intergalactic-war-game-in-pure-javascript-3243</link>
      <guid>https://dev.to/fikrinotes/how-i-build-intergalactic-war-game-in-pure-javascript-3243</guid>
      <description>&lt;p&gt;Hi, Do you know that about 1 month ago (to be exact 20 days ago) I made a game?  What?  You haven't tried it yet?  Try playing the game &lt;a href="https://fikrinotes.netlify.app/javascriptproject-menu/intergalacticwar/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo802k7lglof0678c6kij.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo802k7lglof0678c6kij.jpg" alt="Game Ilustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Interesting, right? Actually, the code of this game is quite difficult for me to explain here.  Therefore, I will not discuss the code, but only the algorithm.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Algorithm
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Coordinate System
&lt;/h3&gt;

&lt;p&gt;For this game, I used the Cartesian coordinate system that we often learn in school.  However, to save variable usage in javascript, I use array (vector) format to store coordinate data. I stored the coordinate data for spaceship in an array called &lt;code&gt;poss&lt;/code&gt; and coordinate data for UFO in an array called &lt;code&gt;posu&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controller
&lt;/h3&gt;

&lt;p&gt;First of all, I created 4 buttons for 4 different movements, left, right, up, and down.  This button is useful for moving the spaceship to the left, right, up, and down.  To set the position of the spaceship, we can use CSS, with the code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.spaceship&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;absolute&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;__px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;__px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;With javascript, we can change the value of &lt;code&gt;top&lt;/code&gt; and &lt;code&gt;left&lt;/code&gt;.  I used &lt;code&gt;spaceship.style.left&lt;/code&gt; to set the x-coordinate, and &lt;code&gt;spaceship.style.top&lt;/code&gt; to set the y-coordinate, and set the speed with &lt;code&gt;setInterval&lt;/code&gt;.  Okay, I think this is pretty easy.  We're done with the spaceship controller.&lt;/p&gt;
&lt;h3&gt;
  
  
  Shoot
&lt;/h3&gt;

&lt;p&gt;In this game, i use the image from flaticon.com as the bullet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36vhphhh2p6s3sf9m6nx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F36vhphhh2p6s3sf9m6nx.png" alt="bullet image"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If we shoot a bullet, logically we know that the initial coordinates of the bullet are the same as the initial coordinates of our body (spaceship).  Therefore, when the &lt;code&gt;shot&lt;/code&gt; button is pressed, the first command that must be executed by this game is to find out, what are the coordinates of the spaceship.  After the spaceship coordinates are known, then set these coordinates as the initial coordinates of the bullet, then fire it with &lt;code&gt;bullet.style.top&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  Collision
&lt;/h3&gt;

&lt;p&gt;If the spaceship collides with UFO, then the player's life (spaceship) will be reduced by 25%.  Well, as we learned in school (mathematical geometry), 2 objects collide if the coordinates of each object are the same.  So if the first object and the second object collide, then it should be x1=x2 and y1=y2 (x1=position x object 1).  This is easy.  However, there is a slight problem here.  This rule applies if the colliding object is a point object (you've studied physics, haven't you?), while our object (spaceship and UFO) is a rigid body.  Therefore, we need a little modification.  In CSS, we know the concept of &lt;strong&gt;CSS box model&lt;/strong&gt;.  Simply put, this concept explains that each element in html is "wrapped" in a box.  With this concept, we can modify the previous rule.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqk35usrmgkmsqgu32ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftqk35usrmgkmsqgu32ye.png" alt="coordinate"&gt;&lt;/a&gt;&lt;/p&gt;
xs=x_position of spaceship and xu=y_position of UFO



&lt;p&gt;By paying attention to the graph above, we can modify the condition of the spaceship when it collides with a UFO.  A spaceship collides with a UFO if &lt;code&gt;xu&amp;lt;xs+spaceship_width and xu&amp;gt;xs and yu&amp;lt;ys and yu&amp;gt;ys-spaceship_height&lt;/code&gt;. We have also managed to solve the issue of the spaceship collides with UFO.  This concept also applies to the event of a bullet hitting a UFO.&lt;/p&gt;
&lt;h3&gt;
  
  
  UFO Movement
&lt;/h3&gt;

&lt;p&gt;If you pay attention to the game, you will know that UFO actually move randomly.  To make the UFO move, I use &lt;code&gt;setInterval&lt;/code&gt; again, and to make the movement random, I use &lt;code&gt;Math.random&lt;/code&gt;.it's easy, right? &lt;/p&gt;
&lt;h2&gt;
  
  
  How It Works ?
&lt;/h2&gt;

&lt;p&gt;The gameplay is like this : &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;at first the UFO moves randomly while the spaceship (player) doesn't move.  The spaceship will only move if the controller button (right, left, up, down) is pressed.  The UFO moves from left to right, and if the UFO has reached the edge of the screen, the UFO will return to the left side.  We call this 1 cycle.  In each cycle, the UFO will fire 1 bullet at random.  If the bullet hits the player, the player's life will be reduced by 25%.  Otherwise, the game will continue without reducing the player's life.  Players can also fire at UFO.  If the bullet hits the UFO, then the player will get a score +1.  Every time you reach score which is the multiple of 5, the bullet speed of the UFO will increase and also increasing your chances of losing. Simple, right?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Github Repository
&lt;/h3&gt;

&lt;p&gt;If you want to see the code of this game, please jump in to the github repository below and go to &lt;code&gt;javascriptproject-menu/IntergalacticWar&lt;/code&gt;.&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://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/fikrinotes" rel="noopener noreferrer"&gt;
        fikrinotes
      &lt;/a&gt; / &lt;a href="https://github.com/fikrinotes/fikrinotes.github.io" rel="noopener noreferrer"&gt;
        fikrinotes.github.io
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Personal Website Of Fikri Mulyana Setiawan
    &lt;/h3&gt;
  &lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Or, you can also go to this &lt;a href="https://github.com/fikrinotes/fikrinotes.github.io/tree/master/Javascriptproject-menu/IntergalacticWar" rel="noopener noreferrer"&gt;link&lt;/a&gt;. Thank you for read this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Update
&lt;/h2&gt;

&lt;p&gt;I just updated the game Intergalactic War. now, you can play the game smoothly via smartphone or PC, and I think there are no more bugs.&lt;/p&gt;

</description>
      <category>gamedev</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Animate Your Web Content Using Animate On Scroll Library </title>
      <dc:creator>Fikri Mulyana Setiawan</dc:creator>
      <pubDate>Sun, 22 Aug 2021 05:36:21 +0000</pubDate>
      <link>https://dev.to/fikrinotes/animate-your-web-content-using-animate-on-scroll-library-2hoe</link>
      <guid>https://dev.to/fikrinotes/animate-your-web-content-using-animate-on-scroll-library-2hoe</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q5MPiJrN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AdU9yLW9qBzXtLnN0ZH2JGw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q5MPiJrN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AdU9yLW9qBzXtLnN0ZH2JGw.jpeg" alt="photo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;About 3 months ago, while developing my website, I thought about making my website even cooler. This is what I want to do : I want items on my website to appear only when I scroll to them. In other words, before scrolling, the item will not exist. Hard enough to imagine? Roughly the result like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IpIxw6oc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/1238/1%2AJRAwD6-G9idO33hmZ9deMA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IpIxw6oc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://miro.medium.com/max/1238/1%2AJRAwD6-G9idO33hmZ9deMA.gif" alt="ilustration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This animation can be created with the Animate On Scroll (AOS) library by michalsnik at &lt;a href="//michalsnik.github.io/aos"&gt;michalsnik.github.io&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started
&lt;/h2&gt;

&lt;p&gt;There are 2 ways to add this library to your website. The first way is to install it, and the second way is through the CDN service. I myself use a CDN service. Here is some code you should add. &lt;/p&gt;

&lt;h3&gt;
  
  
  CSS
&lt;/h3&gt;

&lt;p&gt;add this code inside the &lt;code&gt;head&lt;/code&gt; tag in your HTML code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/aos@2.3.1/dist/aos.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Javascript
&lt;/h3&gt;

&lt;p&gt;add this code at the very bottom of your &lt;code&gt;body&lt;/code&gt; tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/aos@2.3.1/dist/aos.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Initialize AOS
&lt;/h3&gt;

&lt;p&gt;Finally, add the following code to your javascript file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;AOS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have done all of the things above, then you are ready to use this library. &lt;/p&gt;

&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;p&gt;In order to have an animation, add the data-aos attribute to the html tag you want. With this &lt;code&gt;data-aos&lt;/code&gt;, your tags now have animations. There are different values ​​in the &lt;code&gt;data-aos&lt;/code&gt; attribute, different values ​​mean different animations. Here are some of them : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-up"&lt;/code&gt; , for moving-up&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-down"&lt;/code&gt; ,for moving-down&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-right"&lt;/code&gt;, for move to the right&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-left"&lt;/code&gt;, for move to the left&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-flip-left"&lt;/code&gt;, for flip to the left&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="fade-flip-right"&lt;/code&gt;, for flip to the right&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="zoom-in"&lt;/code&gt;, for zoom in&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;data-aos="zoom-out"&lt;/code&gt;, for zoom-out &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Actually, there are many more data-aos values ​​available. For more complete data-aos, you can visit the official Animate On Scroll website at michelsnik.github.io.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Demo
&lt;/h2&gt;

&lt;p&gt;I will show you how to use animate on scroll library. &lt;/p&gt;

&lt;h3&gt;
  
  
  1. Set Up Standard HTML Tag
&lt;/h3&gt;

&lt;p&gt;this file contains the basic html tags to create a box with the words box 1 , box 2 and so on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Page Title&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;'container'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;'box'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;box 1&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;'box'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;box 2&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;'box'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;box 3&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;'box'&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;box 4&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Prepare CSS files for basic styles
&lt;/h3&gt;

&lt;p&gt;This file contains the basic styles for box such as background color, padding, margins, and so on.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.box&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;2em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;90px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;8px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5px&lt;/span&gt; &lt;span class="m"&gt;#33ff33&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#66ff66&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.container&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#3385ff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding-bottom&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Add CDN code to import AOS library
&lt;/h3&gt;

&lt;h4&gt;
  
  
  CSS
&lt;/h4&gt;

&lt;p&gt;Add this code inside the head tag&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/aos@2.3.1/dist/aos.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Javascript
&lt;/h4&gt;

&lt;p&gt;add this code at the very bottom of your body tag.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"https://unpkg.com/aos@2.3.1/dist/aos.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Initialize AOS
&lt;/h3&gt;

&lt;p&gt;add the following code to the javascript file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;AOS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after all of the things above is done, the result will be like this: &lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/fikrinotes/embed/RwVGrXG?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;p&gt;Keep in mind that you can change the style of the above CSS as you wish. In the example above I only use 4 types of data-aos. You can see more complete documentation on &lt;a href="//michalsnik.github.io/aos"&gt;this website&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;To see the implementation of this AOS data on the website, you can visit my website which also uses the AOS library &lt;a href="https://fikrinotes.netlify.app/boring_math"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>css</category>
    </item>
  </channel>
</rss>
