<?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: Alex Ayala</title>
    <description>The latest articles on Forem by Alex Ayala (@alexayala).</description>
    <link>https://forem.com/alexayala</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%2F108967%2Febd20665-6205-4643-b9f5-9b510c718574.png</url>
      <title>Forem: Alex Ayala</title>
      <link>https://forem.com/alexayala</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/alexayala"/>
    <language>en</language>
    <item>
      <title>Natural Language Understanding to Emoji 🗣️</title>
      <dc:creator>Alex Ayala</dc:creator>
      <pubDate>Wed, 02 Jan 2019 00:06:12 +0000</pubDate>
      <link>https://forem.com/alexayala/natural-language-understanding-to-emoji--3k8g</link>
      <guid>https://forem.com/alexayala/natural-language-understanding-to-emoji--3k8g</guid>
      <description>&lt;p&gt;For a good while now, I've been wanting to put together some kind of professional portfolio of my work so I can have something to show for myself and attract new clients. It's not like I can take the code I write for my day job as developer at a private company and publish it to Github 🤷🏾‍♂️. So, I started off with something relatively simple and fun. I came up with an idea of a small web app that uses natural language processing to match an emoji to the strength of an emotional sentiment for a piece of text. I just finished up my initial MVP of the app and you can check it out at &lt;a href="https://nlpmoji.com"&gt;nlpmoji.com&lt;/a&gt;. Feedback in the comments here is welcome!&lt;/p&gt;

&lt;p&gt;I want this project to help me continue to flex and sharpen some of my Java muscles. Although I am a full stack developer, I work on whatever the team needs my help on. These days, that skews more towards front end work for our particular project. I also wanted to subscribe to the idea of &lt;a href="https://johnresig.com/blog/write-code-every-day/"&gt;writing code daily&lt;/a&gt; to become a better developer. Good literary writers are constantly writing, whether they're good ideas or not, to keep those skills sharp.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--q4x-c_MS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.pexels.com/photos/159731/pencil-education-pencil-sharpener-art-159731.jpeg%3Fauto%3Dcompress%26cs%3Dtinysrgb%26dpr%3D2%26h%3D650%26w%3D940" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q4x-c_MS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://images.pexels.com/photos/159731/pencil-education-pencil-sharpener-art-159731.jpeg%3Fauto%3Dcompress%26cs%3Dtinysrgb%26dpr%3D2%26h%3D650%26w%3D940" alt="sharpened pencil"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Stack
&lt;/h1&gt;

&lt;h3&gt;
  
  
  TypeScript
&lt;/h3&gt;

&lt;p&gt;This is a must have for me whenever I do any front end development for any long lasting web app with more than a few dozen lines of JavaScript. Lot's of developers are still a bit apprehensive about static typing for JS, but once you try it, if you do it right, you won't want to do it any other way.&lt;/p&gt;

&lt;h3&gt;
  
  
  React
&lt;/h3&gt;

&lt;p&gt;Gotta love my virtual DOM and JSX.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bootstrap 4
&lt;/h3&gt;

&lt;p&gt;The visual design aspect of web development is probably the least fun piece for me. I leave the styling of core components to folks that actually know what they're doing; so Bootstrap was the easiest choice for me, but I might make some design tweaks later on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Java + Spring Boot ❤️
&lt;/h3&gt;

&lt;p&gt;It was an absolute pleasure to work with Spring Boot. From easy setup to the documentation and resources for doing pretty much anything.&lt;/p&gt;

&lt;h1&gt;
  
  
  Infrastructure
&lt;/h1&gt;

&lt;p&gt;Since this was a small hobby project, I wanted to keep costs as low as possible. With the combination of the below Gitlab, Google App Engine, and Firebase, unless I receive a ton of unexpected traffic, I should be able to run my entire application stack for free.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitLab
&lt;/h3&gt;

&lt;p&gt;I wasn't ready to open source the project just yet, so at this point I was looking for a solution that would give me private repos. Gitlab was also great with the issue management functionality and the nice UI that it provided. I took advantage to create my own Kanban board that I used to track items I wanted to complete for project MVP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Google App Engine
&lt;/h3&gt;

&lt;p&gt;With a sweet &lt;a href="https://cloud.google.com/free/"&gt;$300 credit for GAE resources for a year&lt;/a&gt;, and overall cheaper pricing than AWS, I decided to go with Google for deploying this thing. I'm not married to GAE in any way, and can switch over to another platform service provider without too much fuss.&lt;/p&gt;

&lt;h3&gt;
  
  
  Firebase
&lt;/h3&gt;

&lt;p&gt;This is a great choice if you just have some &lt;a href="https://firebase.google.com/pricing/"&gt;small static files you want to host for free&lt;/a&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Services
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.ibm.com/watson/services/natural-language-understanding/"&gt;IBM Watson Natural Language Understanding API&lt;/a&gt; for the actual NLP heavy lifting. I didn't care much to reinvent the wheel in this part of my app, and they offer a decent number of transactions for free every month.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developer.twitter.com/en/products/tweets"&gt;Twitter SDK&lt;/a&gt; for Twitter natural language processing. They also have a decent number of transactions you can make for free if you stay under their rate limit (which I make sure to do by implementing Guava's rate limiter in the backend of the app).&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>nlp</category>
      <category>showdev</category>
      <category>dailycode</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
