<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jonathan Hernández</title>
    <description>The latest articles on Forem by Jonathan Hernández (@ion).</description>
    <link>https://forem.com/ion</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%2F865169%2F99780c8a-8fe2-4c31-8381-b7cfeb47417d.jpg</url>
      <title>Forem: Jonathan Hernández</title>
      <link>https://forem.com/ion</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ion"/>
    <language>en</language>
    <item>
      <title>Qatar 2022 Pool Web App</title>
      <dc:creator>Jonathan Hernández</dc:creator>
      <pubDate>Sat, 19 Nov 2022 04:24:19 +0000</pubDate>
      <link>https://forem.com/ion/qatar-2022-pool-web-app-1o8i</link>
      <guid>https://forem.com/ion/qatar-2022-pool-web-app-1o8i</guid>
      <description>&lt;p&gt;Hello Devs, this sunday starts the FIFA World Cup in Qatar, I made an app for run a &lt;a href="https://en.wikipedia.org/wiki/Betting_pool"&gt;soccer/football pool&lt;/a&gt;, in México we call it "quiniela".&lt;/p&gt;

&lt;p&gt;Come out and play for free: &lt;a href="https://qatar2022pool.web.app"&gt;https://qatar2022pool.web.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm thinking about the prize for the winner, maybe a $40 USD Amazon Gift Card.&lt;/p&gt;

&lt;p&gt;Now, the dev stuff :-) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zh9_et_N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kis2b0akochwj9hhc10t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zh9_et_N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kis2b0akochwj9hhc10t.png" alt="Image description" width="880" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Realtime results for matches updated automatically from an external API.&lt;/li&gt;
&lt;li&gt;Leaderboard is also updated in realtime.&lt;/li&gt;
&lt;li&gt;You can make your predictions and view other users predictions.&lt;/li&gt;
&lt;li&gt;You can social login with Twitter, Facebook, Google or GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/facebook/create-react-app"&gt;React&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.typescriptlang.org/"&gt;TypeScript&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://firebase.google.com/"&gt;Firebase Realtime Database&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/"&gt;TailwindCSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Repository:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ionmx/qatar2022-pool/"&gt;https://github.com/ionmx/qatar2022-pool/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to install this project you can follow the instructions in the &lt;a href="https://github.com/ionmx/qatar2022-pool/blob/main/README.md"&gt;README&lt;/a&gt; file.&lt;/p&gt;

&lt;p&gt;Your help is very welcome, feel free to send a pull request.&lt;/p&gt;

&lt;p&gt;Have fun! &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>firebase</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Rest API with TypeScript, Express and Prisma</title>
      <dc:creator>Jonathan Hernández</dc:creator>
      <pubDate>Fri, 22 Jul 2022 01:07:02 +0000</pubDate>
      <link>https://forem.com/ion/rest-api-with-typescript-express-and-prisma-462g</link>
      <guid>https://forem.com/ion/rest-api-with-typescript-express-and-prisma-462g</guid>
      <description>&lt;p&gt;Hi Devs, continuing with the small code examples to learn, I’ve developed a Rest API written in TypeScript using Express and Prisma to work with the &lt;a href="https://github.com/ionmx/simple-kanban-react"&gt;Simple Kanban&lt;/a&gt; React Front-End.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/ionmx/simple-kanban-express-prisma"&gt;https://github.com/ionmx/simple-kanban-express-prisma&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>beginners</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>Simple Kanban in React</title>
      <dc:creator>Jonathan Hernández</dc:creator>
      <pubDate>Fri, 08 Jul 2022 16:15:25 +0000</pubDate>
      <link>https://forem.com/ion/simple-kanban-in-react-4l6e</link>
      <guid>https://forem.com/ion/simple-kanban-in-react-4l6e</guid>
      <description>&lt;p&gt;Hey Devs!, I have been building an example of a Simple Kanban in React. &lt;/p&gt;

&lt;p&gt;Repo: &lt;br&gt;
&lt;a href="https://github.com/ionmx/simple-kanban-react"&gt;https://github.com/ionmx/simple-kanban-react&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Demo: &lt;br&gt;
&lt;a href="https://simple-kanban-six.vercel.app/"&gt;https://simple-kanban-six.vercel.app/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses beautiful-drag-dnd to drag and drop columns and tasks&lt;/li&gt;
&lt;li&gt;Create, edit and delete boards, columns and tasks&lt;/li&gt;
&lt;li&gt;Have implemented 2 backends:

&lt;ul&gt;
&lt;li&gt;Rails: 
&lt;a href="https://github.com/ionmx/simple-kanban-ror"&gt;https://github.com/ionmx/simple-kanban-ror&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Phoenix: 
&lt;a href="https://github.com/ionmx/simple_kanban_phx"&gt;https://github.com/ionmx/simple_kanban_phx&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main idea of this project is to have a more elaborated example than the classic To-Do app to learn tech stacks.&lt;/p&gt;

&lt;p&gt;You can take a look to the front-end and back-end code, so you can learn about the implementation. You can implement new back-ends (e.g. Express/Prisma) or new front-ends (e.g. Vue, Svelte).&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Websockets Chat Sample</title>
      <dc:creator>Jonathan Hernández</dc:creator>
      <pubDate>Sat, 11 Jun 2022 20:54:47 +0000</pubDate>
      <link>https://forem.com/ion/websockets-chat-sample-470e</link>
      <guid>https://forem.com/ion/websockets-chat-sample-470e</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E90GpLZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpgmyok1eobvisps15n3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E90GpLZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lpgmyok1eobvisps15n3.png" alt="Image description" width="880" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello Devs, I've written an example on how to use WebSockets using vanilla JavaScript. It's a simple webchat, the UI is inspired on the old &lt;a href="http://xchat.org/screenshots/"&gt;XChat&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here is the repo: &lt;a href="https://github.com/ionmx/websockets-chat-sample"&gt;https://github.com/ionmx/websockets-chat-sample&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Take a look to &lt;code&gt;server.js&lt;/code&gt; and &lt;code&gt;client.js&lt;/code&gt; are self explanatory.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Consistent Hashing Simulator</title>
      <dc:creator>Jonathan Hernández</dc:creator>
      <pubDate>Thu, 02 Jun 2022 23:24:04 +0000</pubDate>
      <link>https://forem.com/ion/consistent-hashing-simulator-go3</link>
      <guid>https://forem.com/ion/consistent-hashing-simulator-go3</guid>
      <description>&lt;p&gt;&lt;a href="https://www.toptal.com/big-data/consistent-hashing"&gt;Consistent Hashing&lt;/a&gt; is a distributed hashing scheme that operates independently of the number of servers or objects in a distributed hash table.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oZcUSyow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32rp19bzmo4ez9bk15p4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oZcUSyow--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32rp19bzmo4ez9bk15p4.png" alt="Consistent Hashing Simulator" width="880" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I made a &lt;a href="https://ionmx.dev/demos/consistent-hashing-simulator/"&gt;Consistent Hashing Simulator&lt;/a&gt; to help to understand the concept. Basically it takes random strings (titles from wikipedia) and applies the hash function, you can see load per server and add/remove servers to see how keys move between servers.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
