<?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: Barış Can Yılmaz</title>
    <description>The latest articles on DEV Community by Barış Can Yılmaz (@bariscanyilmaz).</description>
    <link>https://dev.to/bariscanyilmaz</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%2F229453%2Fd4242bfa-8ee2-4d14-bce4-c1316ed1cb27.JPG</url>
      <title>DEV Community: Barış Can Yılmaz</title>
      <link>https://dev.to/bariscanyilmaz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bariscanyilmaz"/>
    <language>en</language>
    <item>
      <title>Elo Rating System</title>
      <dc:creator>Barış Can Yılmaz</dc:creator>
      <pubDate>Sat, 14 Nov 2020 21:38:50 +0000</pubDate>
      <link>https://dev.to/bariscanyilmaz/elo-rating-system-1o2l</link>
      <guid>https://dev.to/bariscanyilmaz/elo-rating-system-1o2l</guid>
      <description>&lt;p&gt;One of the scenes that impressed me the most when I watched the movie Social Network was when Mark Zuckerberg hacked the school, got pictures of people, and made a site called face mash to compare their pictures. What was interesting to me in that scene was that he asked his friend Eduardo Saverin for the algorithm he used in his chess tournament. Thanks to the algorithm, he would be able to rate people's photos. His friend Eduardo wrote the algorithm he wanted on the window in his dorm rooms. After the movie was over, I did a few pieces of research because I did not know exactly what this algorithm was and learned that it was called the &lt;a href="https://en.wikipedia.org/wiki/Elo_rating_system" rel="noopener noreferrer"&gt;Elo Rating System&lt;/a&gt;. I decided to share what I learned with a small example here.&lt;/p&gt;

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

&lt;p&gt;The Elo rating system is used to calculate the skill levels of players in zero-sum games such as chess. It takes its name from its creator, the Hungarian-American physicist Arpad Elo.&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%2Fi%2Fwta3w3ou0v3i9mcqhy7m.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%2Fi%2Fwta3w3ou0v3i9mcqhy7m.jpg" alt="Arpad Elo"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the Elo system players who have higher scores have higher win rates. Lower score players have lower win rates.&lt;/p&gt;

&lt;p&gt;The scores of the players are updated with each match. If a high-rated player wins, fewer points are transferred from the low-rated player to him. If the opposite happens, many more points will be transferred to the lower-rated player.&lt;/p&gt;

&lt;h2&gt;
  
  
  Formula
&lt;/h2&gt;

&lt;p&gt;The winning rate for player A is calculated by the formula below. The RB value is the score of Player B, ie the opponent. RA is the score for player A.&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%2Fi%2Fa24bu2gj52uo5nsz2a1d.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%2Fi%2Fa24bu2gj52uo5nsz2a1d.png" alt="Expected for A"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For player B, the same formula is as follows.&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%2Fi%2Flmc64cgpzx3nglixgtbq.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%2Fi%2Flmc64cgpzx3nglixgtbq.png" alt="Player B"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sum values of EA and EB are equal to 1.&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%2Fi%2Fxz7x6sw3yjkq5qdk93bq.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%2Fi%2Fxz7x6sw3yjkq5qdk93bq.png" alt="Equality"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Updating Players' Scores&lt;/em&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%2Fi%2Fs5vp8inwaza00fioq87p.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%2Fi%2Fs5vp8inwaza00fioq87p.png" alt="K Factor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SA is the current score of the player (1 for winning situation, 0 for losing situation). EA is the expected value calculated in the previous formula. K is known as the "K Factor" and its value is constant. Any value greater than 0 can be given. There is no general rule about how much its value should be. Given large-digit numbers, the value of the change becomes large.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;By giving one point each to the films I have previously selected (the scores are 1000 times the IMDb points 7.8 =&amp;gt; 7800), these films will be ranked as descending on the main page. The Elo Rating algorithm will use the scores of the movies. On the voting page, the movies will be taken in binary combinations and matched. In this way, each movie will be matched with another movie. Once the voting process is over, the app will take us back to the home page.&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%2Fi%2Fjrb5rf76efxyspjg4i4r.gif" 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%2Fi%2Fjrb5rf76efxyspjg4i4r.gif" alt="Vote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Coding
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Technologies which I used for creating this project are Angular and Dotnet Core&lt;/p&gt;
&lt;/blockquote&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%2Fi%2F2ofsskt8asywxmuj6qtr.gif" 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%2Fi%2F2ofsskt8asywxmuj6qtr.gif" alt="Coding"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Backend
&lt;/h4&gt;

&lt;p&gt;I create Dotnet Core Api project then I create models with &lt;code&gt;Movie&lt;/code&gt; name under the Models folder for keeping movies in the database.&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%2Fi%2Fts79l7n7m2b2ynodf5x2.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%2Fi%2Fts79l7n7m2b2ynodf5x2.png" alt="Movie Class"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;Score&lt;/code&gt; field is the area where the scores of movies are kept.We will use this field for rating and calculating.&lt;/p&gt;

&lt;p&gt;Repository class for reading and updating movies in database.&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%2Fi%2F5xsrnsee7qg9lelfa4lt.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%2Fi%2F5xsrnsee7qg9lelfa4lt.png" alt="Movie Repository"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EloRating class which I extended from IRating interface for rating operations.&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%2Fi%2F7j54ihv1yqgonq2ysajc.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%2Fi%2F7j54ihv1yqgonq2ysajc.png" alt="Elo Rating Class"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Probability&lt;/code&gt; function for calculating win rates. &lt;code&gt;Rate&lt;/code&gt; function returns loss and win ratings.&lt;/p&gt;

&lt;p&gt;Api which my application will communicate is given below.&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%2Fi%2Fau2gotnqsjptnrcbbx6f.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%2Fi%2Fau2gotnqsjptnrcbbx6f.png" alt="Movie Controller"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Get&lt;/code&gt; functions returns movies from database. &lt;code&gt;Rate&lt;/code&gt; function sends movies which are compared.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;RateViewModel&lt;/code&gt; in Rate function is below. Sending movies' id is enough.&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%2Fi%2Fh40m3982epan8zxub6e9.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%2Fi%2Fh40m3982epan8zxub6e9.png" alt="Rate View Model"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Client Side
&lt;/h4&gt;

&lt;p&gt;In client side I add home and vote components to my angular project. Home component gets movies and orders them in ascending by their score field. &lt;code&gt;Vote anchor&lt;/code&gt; in home component page routes to vote component.    &lt;/p&gt;

&lt;p&gt;Home component and Vote component use &lt;code&gt;movieService&lt;/code&gt; class for communating with api.&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%2Fi%2Fgx97vu4i0oiog206ifxl.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%2Fi%2Fgx97vu4i0oiog206ifxl.png" alt="Movie Service"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;getAll&lt;/code&gt; gets movies from api. &lt;code&gt;rate&lt;/code&gt; sends chosen movies to api.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;k_combinations(this.movies,2)&lt;/code&gt; is a typescript extension which i looked from this &lt;a href="https://gist.github.com/axelpale/3118596" rel="noopener noreferrer"&gt;gist&lt;/a&gt;.Which this extension I get combinations of collections.&lt;/p&gt;

&lt;p&gt;In Vote Component, &lt;code&gt;ngOnInit&lt;/code&gt; function get movies' combinations from movieService then i shuffle them with &lt;code&gt;shuffle()&lt;/code&gt; function.&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%2Fi%2F7fqo75rlibrh6dwo10ha.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%2Fi%2F7fqo75rlibrh6dwo10ha.png" alt="Shuffle"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;nextVote&lt;/code&gt; function, I take first element in combinations collection with shift and show next combination.&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%2Fi%2Fct97q7d50u1w7gmg95s2.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%2Fi%2Fct97q7d50u1w7gmg95s2.png" alt="Next Vote"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I bind my &lt;code&gt;choose&lt;/code&gt; function to my movies' div and i can know which movie is liked or chosen.&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%2Fi%2Fjxh76o6ylkrqqm8vumg2.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%2Fi%2Fjxh76o6ylkrqqm8vumg2.png" alt="Chosen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I can get selected movie by clicking. Also, I can get selected movies with left,right arrows thanks to HostListener decorator.&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%2Fi%2Frh3z7wtc7x9x9gwt956v.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%2Fi%2Frh3z7wtc7x9x9gwt956v.png" alt="Host Listener"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After this section is about deploying project. You can reach live demo with this &lt;a href="//movie-mash.herokuapp.com"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying
&lt;/h2&gt;

&lt;p&gt;My Dotnet Core project runs on Heroku. I took advantage of &lt;a href="https://codeburst.io/deploy-a-containerized-asp-net-core-app-to-heroku-using-github-actions-9e54c72db943" rel="noopener noreferrer"&gt;this&lt;/a&gt; article to achieve this.&lt;/p&gt;

&lt;p&gt;Also, I added &lt;a href="https://github.com/jincod/dotnetcore-buildpack" rel="noopener noreferrer"&gt;this&lt;/a&gt; build pack to my heroku app.&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%2Fi%2Fx9csipyt3z75h2zdc756.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%2Fi%2Fx9csipyt3z75h2zdc756.png" alt="Build Pack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made a &lt;code&gt;dockerfile&lt;/code&gt; in the project and indicated which project will I use. During the dotnet build I got npm error because of dotnetcore and angular are together. To solve this issue, I installed npm in dockerfile.&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%2Fi%2Fa2gtxqemebfykq5yz45u.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%2Fi%2Fa2gtxqemebfykq5yz45u.png" alt="Docker File"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After set up actions project's repository I added master branch under &lt;code&gt;on:push:branches&lt;/code&gt; in my main.yml file. So, each commit to master branch my workflow will work again.In same workflow file,&lt;br&gt;
I used &lt;a href="https://github.com/jwsi/secret-parser" rel="noopener noreferrer"&gt;secret parser&lt;/a&gt; to get my connection string from GitHub secrets and replace it in &lt;code&gt;appsettings.json&lt;/code&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%2Fi%2F5q3l1c5utnvwyfwca35j.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%2Fi%2F5q3l1c5utnvwyfwca35j.png" alt="Workflow file"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After all of this my project is ready.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Live demo &lt;a href="//movie-mash.herokuapp.com"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GitHub &lt;a href="https://github.com/bariscanyilmaz/movie-mash" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original Turkish Article On Medium &lt;a href="https://medium.com/bursa-i-o/elo-derecelendirme-sistemi-2369ba4de47f" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/3848004/facemash-algorithm" rel="noopener noreferrer"&gt;StackOverflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.hackerearth.com/blog/developers/elo-rating-system-common-link-facemash-chess" rel="noopener noreferrer"&gt;HackerEarth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.geeksforgeeks.org/elo-rating-algorithm/" rel="noopener noreferrer"&gt;GeekforGeeks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://en.wikipedia.org/wiki/Elo_rating_system" rel="noopener noreferrer"&gt;WikiPedia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="http://www.bariscanyilmaz.com" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;My Personel Web Site&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; &lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>dotnet</category>
      <category>angular</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
