<?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: daltonfury42</title>
    <description>The latest articles on DEV Community by daltonfury42 (@daltonfury42).</description>
    <link>https://dev.to/daltonfury42</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%2F406155%2F9674e8b1-e9c9-4c4c-8ac6-f62bcae0d0bf.png</url>
      <title>DEV Community: daltonfury42</title>
      <link>https://dev.to/daltonfury42</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/daltonfury42"/>
    <language>en</language>
    <item>
      <title>In case anyone is looking to learn serverless by doing a hands-on project</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 09 Oct 2021 17:14:36 +0000</pubDate>
      <link>https://dev.to/daltonfury42/in-case-anyone-is-looking-to-learn-serverless-by-doing-a-hands-on-project-kcd</link>
      <guid>https://dev.to/daltonfury42/in-case-anyone-is-looking-to-learn-serverless-by-doing-a-hands-on-project-kcd</guid>
      <description>&lt;p&gt;In case anyone is looking to learn serverless by doing a hands-on project, let me know. &lt;/p&gt;

&lt;p&gt;I have a beginner friendly backend requirement. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It will be simple CRUD of three resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data will be stored to DynamoDB.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For language, you can use golang or node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All code you write will be open source under GPL. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Our repositories are participating in Hatoberfest.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The project: &lt;a href="https://www.simplq.me/"&gt;simplq.me&lt;/a&gt; is an open source queue management software. The backend is written in Springboot and we want to migrate it to serverless as it's more economic given our traffic volume.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/SimplQ/simplQ-frontend"&gt;https://github.com/SimplQ/simplQ-frontend&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/SimplQ/simplQ-backend"&gt;https://github.com/SimplQ/simplQ-backend&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>hacktoberfest</category>
      <category>node</category>
      <category>go</category>
    </item>
    <item>
      <title>What's your experience with VSCode for Java development?</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sun, 30 May 2021 13:47:41 +0000</pubDate>
      <link>https://dev.to/daltonfury42/what-s-your-experience-with-vscode-for-java-development-31p8</link>
      <guid>https://dev.to/daltonfury42/what-s-your-experience-with-vscode-for-java-development-31p8</guid>
      <description>&lt;p&gt;Anyone using VSCode for Java development?&lt;/p&gt;

&lt;p&gt;I've been trying to set it up, it's partially working, looks like I would go back to good old IntelliJ.&lt;/p&gt;

&lt;p&gt;Have you tried it? Did you stick on with it?&lt;/p&gt;

&lt;p&gt;PS: VSCode is a great TextEditor + Git + Terminal + Docker + File Comparison Tool for me at work, where I mostly write Java in IntellIj.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Git EP01: The Five Zones of Git </title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sun, 23 May 2021 15:30:48 +0000</pubDate>
      <link>https://dev.to/daltonfury42/understanding-git-ep01-the-five-zones-of-git-36h</link>
      <guid>https://dev.to/daltonfury42/understanding-git-ep01-the-five-zones-of-git-36h</guid>
      <description>&lt;p&gt;Hello everyone. &lt;/p&gt;

&lt;p&gt;Last week at work, a sudden requirement tested my git skills. I had to go through and understand two complex git use cases: &lt;a href="https://git-memo.readthedocs.io/en/latest/subtree.html"&gt;git-subtree&lt;/a&gt; and &lt;a href="https://git-scm.com/docs/git-filter-branch"&gt;git-filter-branch&lt;/a&gt;. While reading through long articles and manpages, I realised that even though I have been using this tool for years, I don't really understand what's happening under the hood.&lt;/p&gt;

&lt;p&gt;So I set out to understand the tool, posting my notes from watching an intro course on &lt;a href="https://screencasts.delicious-insights.com/git-core-concepts"&gt;Git Core Concepts&lt;/a&gt; that I found online.&lt;/p&gt;

&lt;h3&gt;
  
  
  The three main zones:
&lt;/h3&gt;

&lt;p&gt;If you want to read the git documentation, it's very important to know the git terminologies so that you can understand what's written.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Working directory&lt;/strong&gt; is your code present in your filesystem. These are the regular files and folders and they have nothing to do with git.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index&lt;/strong&gt;, also popularly referred to as "staging area", is where we gather our changes before making a commit out of it.&lt;/li&gt;
&lt;li&gt;The local git &lt;strong&gt;repository&lt;/strong&gt; that forms the collection of all commits, and other version control data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How to navigate between the first three zones:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Working Directory to Index:&lt;/strong&gt; &lt;code&gt;git add &amp;lt;file&amp;gt;...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Index back to Working Directory:&lt;/strong&gt; &lt;code&gt;git restore --staged &amp;lt;file&amp;gt;...&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Index to Local repo:&lt;/strong&gt; &lt;code&gt;git commit -m "&amp;lt;commit message&amp;gt;"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local repo to index:&lt;/strong&gt; &lt;code&gt;git reset -—soft HEAD~1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local repo to the working directory:&lt;/strong&gt; &lt;code&gt;git reset -—mixed HEAD~1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Local repo to thin air (you lose the change)&lt;/strong&gt;: &lt;code&gt;git reset —-keep HEAD~1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Commits have a link to their parent like a linked list. Merge commits have two parents. You can also get more than two in what is called "octopus".&lt;/p&gt;

&lt;h3&gt;
  
  
  Lifecycle of a file:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Untracked&lt;/strong&gt;: When a file is created, it's "untracked". Git doesn't know about it. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Indexed&lt;/strong&gt;: git add make it "indexed" / staged. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unchanged&lt;/strong&gt;: git commit makes it "unchanged". The file on fs matches with what git knows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modified&lt;/strong&gt;: now when you modify this file that's tracked by git, it becomes "modified". Now when you stage and commit it, it goes through states (2) and (3) again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Removed&lt;/strong&gt;: finally one last state is "removed" when you do a git rm and commit that change. It's just another commit that removes the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What is stash?
&lt;/h3&gt;

&lt;p&gt;Building on the terminology from the last section, imagine there are some untracked and some indexed files, and you are not ready to commit yet. Suddenly your manager comes and tells you that there is a priority task that you need to immediately take up.&lt;/p&gt;

&lt;p&gt;Stash is a &lt;strong&gt;fourth zone&lt;/strong&gt; where you can keep aside (stash away) these tracked and untracked files temporarily while you jump to something else.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Move changes to the stash:&lt;/strong&gt; &lt;code&gt;git stash -u &amp;lt;file&amp;gt;...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Move changes back from the stash:&lt;/strong&gt; &lt;code&gt;git stash apply --index&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fifth zone: remote repo
&lt;/h3&gt;

&lt;p&gt;You can &lt;code&gt;push&lt;/code&gt; your commits to a remote shared git repo, and &lt;code&gt;pull&lt;/code&gt; other people's commit from it into your local repo.&lt;/p&gt;

&lt;p&gt;More git posts coming soon!&lt;/p&gt;




&lt;p&gt;I do 1-1 mentoring for young developers, you can book a slot &lt;a href="https://www.hiretheauthor.com/daltonfury42"&gt;here&lt;/a&gt; if you are interested.&lt;/p&gt;

</description>
      <category>git</category>
      <category>productivity</category>
      <category>programming</category>
      <category>tips</category>
    </item>
    <item>
      <title>Two ways for beginners to start using Docker to increase developer productivity</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 08 May 2021 10:44:57 +0000</pubDate>
      <link>https://dev.to/daltonfury42/two-ways-for-beginners-to-start-using-docker-to-increase-developer-productivity-1a26</link>
      <guid>https://dev.to/daltonfury42/two-ways-for-beginners-to-start-using-docker-to-increase-developer-productivity-1a26</guid>
      <description>&lt;p&gt;Hii.. thanks for stopping by. What you will find in this post:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What is docker? What does it solve?&lt;/li&gt;
&lt;li&gt;Why should you know about docker?&lt;/li&gt;
&lt;li&gt;Three ways in which you can start using docker every day.&lt;/li&gt;
&lt;li&gt;Why you should learn docker and have it in your dev toolbox.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Before we come to what's in this for you as an individual, a quick introduction to docker, and the problem it's trying to solve:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Docker is a software platform for building applications based on containers — small and lightweight execution environments that make shared use of the operating system kernel but otherwise run in isolation from one another.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Four phases from the above sentence sum it well. Docker provides a:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;small and lightweight &lt;/li&gt;
&lt;li&gt;isolated&lt;/li&gt;
&lt;li&gt;execution environment&lt;/li&gt;
&lt;li&gt;based on "containers"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What does this mean? It means that with docker you can package your application, along with the environment to run it.&lt;/p&gt;

&lt;p&gt;Why is this a big deal? Because before containers, people used to just share the application binary. When Jenna sends Ria a program that she wrote and compiled, this is what might happen before docker:&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%2F7dv5wey7wdapszltl7v4.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%2F7dv5wey7wdapszltl7v4.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It didn't happen just between the developer and QA, but it was happening everywhere. QA tested the program, but when he deployed the program into production it broke because... for example, he had &lt;code&gt;node v12&lt;/code&gt; on his test system, while in production they were still on &lt;code&gt;node v10&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Or maybe you wrote your awesome code on a Mac OSX 11.3 but someone wants to run it on his Ubuntu 18.04 where node is not even installed. Bleh.&lt;/p&gt;

&lt;p&gt;Yuck. It was a total mess! And the solution? Package the program as well and the environment together. And thus was born containers.&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%2Fiho6gsvf3gcq3zr4vr1e.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%2Fiho6gsvf3gcq3zr4vr1e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can package your application along with all its dependencies into a docker container.&lt;/p&gt;

&lt;h3&gt;
  
  
  But why should I know about docker?
&lt;/h3&gt;

&lt;p&gt;Now you might be telling, "Hey, I am good without docker because I don't have these sort of problems to deal with".&lt;/p&gt;

&lt;p&gt;Hmm. Not really, buddy. People have already packaged a lot of applications as Docker images and have made them publicly available. So you can use docker to grab and use any software when required. &lt;/p&gt;

&lt;h3&gt;
  
  
  How you can use docker in day to day life?
&lt;/h3&gt;

&lt;p&gt;These are some ways in which you can take advantage of docker to boost your own developer productivity. These are three ways in which I leverage docker.&lt;/p&gt;

&lt;h5&gt;
  
  
  1. No more need to install software on your laptop.
&lt;/h5&gt;

&lt;p&gt;I'm just making this up, say one fine morning, someone comes to you and says that you need to install and run a new type of database named "FoobarDB" on your laptop... now that you know about docker, you just go to google and type "foobardb docker". You do get the docker image name, and then type in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run foobardb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. FoobarDB is up and running on your machine. How awesome is that?&lt;/p&gt;

&lt;p&gt;What if you want to run multiple versions of the same DB at the same time. Fret not,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run foobardb:6.2
docker run foobardb:3.2
docker run foobardb:8.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I mostly use it to run databases, so for example, if you want to run Postgres:&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%2F3jjq9da862sjyedqd5r0.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%2F3jjq9da862sjyedqd5r0.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost anything you need for development is available through 100s of images, created either by official maintainers or the community. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://hub.docker.com/_/postgres" rel="noopener noreferrer"&gt;Here&lt;/a&gt; is the Postgres image on DockerHub. Instructions and different configurations for the images are available along with it on DockerHub.&lt;/p&gt;

&lt;p&gt;Now that you know about this, next time you are looking at different ways of installing software, take the docker route if they provide docker images:&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%2F4qlowaiirk3ntfj4r76j.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%2F4qlowaiirk3ntfj4r76j.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  2. Get a Linux environment on your Mac.
&lt;/h5&gt;

&lt;p&gt;I am a Linux lover but have to use a MacBook at work. There are things that I like to do from a linux shell, so I have a ubuntu image running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;docker run -d --name myubuntu ubuntu 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is where "lightweight" and "environment" helps... &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%2Fi3ptc11jpfye8am5hm9e.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%2Fi3ptc11jpfye8am5hm9e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You get the full ubuntu "environment", but since it's just an environment, it's lightweight, you get the entire OS feel, and it takes under 5MB when not being used!&lt;/p&gt;




&lt;p&gt;To summarise, docker is awesome, I wanted to cover the absolute basic usage of Docker in this post. &lt;strong&gt;It's highly recommended that you start using it, there are a lot of other advanced things that you can do to achieve it.&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No software needs to be installed locally. So the system is clean.&lt;/li&gt;
&lt;li&gt;You can run multiple version of the same software.&lt;/li&gt;
&lt;li&gt;You can delete the container and start fresh anytime.&lt;/li&gt;
&lt;li&gt;Dependencies for any software is packaged along with it.&lt;/li&gt;
&lt;li&gt;Docker is production-ready software.&lt;/li&gt;
&lt;li&gt;There are hundreds of public images available for almost anything that you need for software development.&lt;/li&gt;
&lt;li&gt;Docker images/containers are platform-independent. So you can generate a docker image/container on a Linux machine and run it on windows/mac / any other os supported by docker.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'd love to know in the comments about other ways you've seen docker being used to improving dev productivity. Thanks for reading. :)&lt;/p&gt;




&lt;p&gt;I do 1-1 mentoring for young developers, you can book a slot &lt;a href="https://www.hiretheauthor.com/daltonfury42" rel="noopener noreferrer"&gt;here&lt;/a&gt; if you are interested.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>devops</category>
      <category>docker</category>
      <category>beginners</category>
    </item>
    <item>
      <title>My first attempt at micro-SaaS; suggestions and feedback please.</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 17 Apr 2021 11:49:56 +0000</pubDate>
      <link>https://dev.to/daltonfury42/my-first-attempt-at-micro-saas-suggestions-and-feedback-please-4cf6</link>
      <guid>https://dev.to/daltonfury42/my-first-attempt-at-micro-saas-suggestions-and-feedback-please-4cf6</guid>
      <description>&lt;p&gt;One Friday evening, on pre-covid good old days, me and my friends went to a very busy fine dine restaurant in HSR Layout, Bangalore. There was a crowd in front of the restaurant, and two muscular men stood with a notepad, I gave my name and contact number, and we chilled around, occasionally pushing through the crowd to ask if our turn was up.&lt;/p&gt;

&lt;p&gt;Later in the office, there was a free help checkup for all employees, and I went multiple times, only to come back because there was a big queue. Once the lockdown was announced, unable to go outside and chill our weekends, we saw on the TV or when we stepped outside were long queues. &lt;/p&gt;

&lt;p&gt;These few things made me think if there is some generic problem here that we could use technology to solve. Thus was born the idea of Simpl-Q (Simple Queue), a "generic" virtual crowd management website.&lt;/p&gt;

&lt;p&gt;The idea was very simple. Instead of waiting in a queue, enter a link or scan a QR and wait using your smartphone. A virtual waiting room.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;No standing in an unfair physical queue&lt;/li&gt;
&lt;li&gt;No wondering if your turn is approaching.&lt;/li&gt;
&lt;li&gt;Crowded businesses can use the system to make the customer waiting experience more delightful.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I worked on a basic prototype, iterated over it a couple of times (more on that, and some learnings &lt;a href="https://dev.to/daltonfury42/simplq-how-we-went-from-a-hackathon-project-to-a-fully-open-source-project-with-contributors-d0a"&gt;here&lt;/a&gt;), and we have a fully working MVP now: &lt;a href="http://simplq.me/"&gt;http://simplq.me/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SimplQ is not a startup. It is just an idea and a MVP as of now. Honestly, it's more of a hobby project / experiment than a startup idea. We have no plans to monetize it. Our code is open source, we have around 30 active collaborators from around the globe who have contributed to the project. &lt;/p&gt;

&lt;p&gt;I am currently thinking of making an android app that would listen in to events on the queue that the user created (&lt;a href="https://github.com/SimplQ/simplQ-frontend/discussions/496"&gt;here&lt;/a&gt;), and send out SMS in the background to the people when they join the queue. Otherwise thinking of how to market the app and get some real users. &lt;/p&gt;

&lt;p&gt;Thoughts? Looking for any feedback, ideas, or any advice. Thanks.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Backend Musings E01 - Stability vs Velocity. </title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sun, 04 Apr 2021 18:55:46 +0000</pubDate>
      <link>https://dev.to/daltonfury42/backend-musings-e01-stability-vs-velocity-4lhb</link>
      <guid>https://dev.to/daltonfury42/backend-musings-e01-stability-vs-velocity-4lhb</guid>
      <description>&lt;p&gt;Any complex software must be cynical if it has to be stable. Such systems expect bad things to happen, and do not trust external external systems. They are designed and developed in a way that it doesn’t even trust itself, so internal barriers are put to protect itself from failures. They also avoid getting too intimate with other systems, because it could get hurt. &lt;/p&gt;

&lt;p&gt;When writing complex enterprise software, it is practically impossible to ensure bug free code when you release to production. In an early stage startup environment, the focus is on implementing features at minimal cost, which would lead to choosing the easiest design over the more costly but correct design. This happens mostly because you have a very short runway before you go bankrupt, and the business team might be following multiple leads or features out of which only one or two would ultimately make the product a success. &lt;/p&gt;

&lt;p&gt;Highly stable design usually costs the same to implement as the unstable one. The product as a whole being “stable” doesn’t mean that your individual applications or services have to stay up and running, but rather that the user can still get the work done. No matter how smart the engineers you hire are, individual services are going to crash. A robust system keeps processing user requests even when there are component failures. &lt;/p&gt;

&lt;p&gt;Before the catastrophic failure, some component of the system has to initially fail. The key is to contain the trigger, preventing it from spreading and taking the entire system down. Denying the inevitability of failures robs you of your power to control and contain them. Once you accept that failures will happen, you will have the ability to design your system’s reaction to specific failures.&lt;/p&gt;

&lt;p&gt;At each step in a chain of failure, the crack may accelerate, slow or stop. A highly coupled system with many degrees if coupling offers more pathways for  the cracks to propagate along. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zT30tRlu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h9bg5wfmifawoupbbsbi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zT30tRlu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h9bg5wfmifawoupbbsbi.jpg" alt="stephen-leonardi-5CH1TNfcZoo-unsplash"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The initial design decisions you take has a huge impact on stability in the long term, but those ironically are the exact decisions you have to make in the early stage with the least amount of knowledge. These are also sadly the decisions which are the most difficult to reverse later on. Stability can’t and should not be traded for velocity. &lt;/p&gt;

&lt;p&gt;Thoughts?&lt;/p&gt;

&lt;p&gt;Related Reads: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://pragprog.com/titles/mnee2/release-it-second-edition/"&gt;Release It!: Design and Deploy Production-Ready Software (Pragmatic Programmers)&lt;/a&gt;&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>startup</category>
      <category>microservices</category>
      <category>programming</category>
    </item>
    <item>
      <title>SimplQ: How we went from a hackathon project to a fully open source project with contributors</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 16 Jan 2021 16:56:59 +0000</pubDate>
      <link>https://dev.to/daltonfury42/simplq-how-we-went-from-a-hackathon-project-to-a-fully-open-source-project-with-contributors-d0a</link>
      <guid>https://dev.to/daltonfury42/simplq-how-we-went-from-a-hackathon-project-to-a-fully-open-source-project-with-contributors-d0a</guid>
      <description>&lt;p&gt;TLDR; What started a few months ago as a small hobby project is slowly gaining traction as an open source project: &lt;a href="https://github.com/SimplQ" rel="noopener noreferrer"&gt;github.com/SimplQ&lt;/a&gt;. Key lessons learned:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get a Minimum Viable Product up and running.&lt;/li&gt;
&lt;li&gt;Iterate over a Design Prototype.&lt;/li&gt;
&lt;li&gt;Work on a Product Roadmap and create small independent tasks.&lt;/li&gt;
&lt;li&gt;Use labels to let new collaborators identify easy issues to start with (&lt;code&gt;up-for-grabs&lt;/code&gt;, &lt;code&gt;good-first-issue&lt;/code&gt; etc).&lt;/li&gt;
&lt;li&gt;Add an informative readme and add detailed setup instructions, make the local dev environment easy to set up.&lt;/li&gt;
&lt;li&gt;Be open-minded when discussing solutions for issues and leave helpful reviews on PRs.&lt;/li&gt;
&lt;li&gt;List your project on websites where people look for projects to collaborate on&lt;/li&gt;
&lt;li&gt;Invest in good automation, CI/CD (&lt;a href="https://travis-ci.org/" rel="noopener noreferrer"&gt;TravisCI&lt;/a&gt; is free for public repositories).&lt;/li&gt;
&lt;li&gt;Use affordable cloud hosting. I used &lt;a href="https://aws.amazon.com/free" rel="noopener noreferrer"&gt;AWS free-tier&lt;/a&gt; (Got &lt;a href="https://aws.amazon.com/activate/" rel="noopener noreferrer"&gt;AWS Activate&lt;/a&gt; $1000 founder's credits).&lt;/li&gt;
&lt;li&gt;Invest in a meaningful domain name. &lt;/li&gt;
&lt;li&gt;Create a Github Organisation, update the description and create a simple logo. It gives your project a professional look... these things matter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;The key is not to find collaborators, but to make your project collaboratable.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now the whole story...&lt;/p&gt;

&lt;p&gt;In early April this year, we were four young software engineers locked up in our apartment, with no plans for the weekend, and wondering what to watch on Netflix.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;I've always been awed by apps like Splitwise, where technology is used to create a free software that solves some annoyances in our life. That's when my flatmate saw a newspaper article (yeah, he reads the newspaper) about how there are long queues in front of grocery stores, beverage shops etc during the lockdown. Us being reasonably tech-savvy, soon the topic of discussion changed to see if we could build a simple website, which would allow people to enter a queue virtually, without having to stand in a line. And voila, &lt;a href="https://www.simplq.me/" rel="noopener noreferrer"&gt;SimplQ&lt;/a&gt; was born. &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%2Fs1aqqui0pzzp767pt4ds.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%2Fs1aqqui0pzzp767pt4ds.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The idea was very straight forward: If someone wants to manage a crowd using a queue, go to &lt;a href="https://www.simplq.me/" rel="noopener noreferrer"&gt;simplq.me&lt;/a&gt;, give the queue a nice name and your queue dashboard is created instantly. You can then manage people in the queue, add and remove, notify, call them up etc. A joining link / QR code is generated, which can be stuck onto wherever people used to line up, and now instead of waiting in the line, they can get into the queue by going to the link. &lt;/p&gt;

&lt;p&gt;The database structure, backend, and the screens to be build were quickly finalised on a notebook, and we set out to work developing a basic MVP. Most of the work was completed in a weekend. Weekdays went with us focusing on our day jobs. We didn't want to leave it half done, so we worked on it over the next few weekends. We also enrolled in a Hackathon with this idea, which was very helpful as it gave us a deadline. &lt;/p&gt;

&lt;p&gt;By the end of the hackathon, a fully functional prototype was completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open Sourcing
&lt;/h2&gt;

&lt;p&gt;Weeks went by, after which we decided that we should productionize it, so we worked on it in our free time to see if we can turn it into something that people would gladly  use. We did two things:&lt;/p&gt;

&lt;p&gt;1) Redesigned the UI to give it a more professional look. I got my artistic friend to help out. He learned and work on a new design prototype using Adobe XD.&lt;/p&gt;

&lt;p&gt;2) We decided to open source the tool.&lt;/p&gt;

&lt;p&gt;By this time, our companies had gone completely remote, we left Bangalore and went to our hometowns. We met online regularly over the weekend and iterated over the design prototype. This exercise gave three benefits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;We could finalise on a design, and everyone had a clear picture about what is to be done, and what it's going to look like at the end.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We discussed and incorporated a lot of UX improvements which we would have missed while implementing. The cost of iterating over a design prototype is lesser than iterating over an already implemented product.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We were able to take the design, and use it to create an implementation roadmap, and then break into small tasks. The design link and screenshots were used heavily in the issues created, and this proved to be very helpful as anyone why was interested in picking up an issue had a clear idea about the task.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Though we used &lt;a href="https://www.adobe.com/products/xd.html" rel="noopener noreferrer"&gt;XD&lt;/a&gt; I've also seen &lt;a href="http://figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; being used a lot for prototyping. We haven’t had a chance to try it out yet, but free plans for both have all that's needed. If you are a creative mind like Akash, there are tons of tutorials for both the tools available online to get you started.&lt;/p&gt;

&lt;p&gt;It is very important to have a &lt;code&gt;Readme.md&lt;/code&gt; for the project, it should have detailed setup instructions to clone the repo and get the code running locally (&lt;a href="https://github.com/SimplQ/simplQ-frontend#development-environment-setup-instructions" rel="noopener noreferrer"&gt;ours here&lt;/a&gt;). Also needed is a Contributing section with some instructions(&lt;a href="https://github.com/SimplQ/simplQ-frontend#contributing" rel="noopener noreferrer"&gt;ours here&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;Once we had a design, next was a website roadmap. It gives anyone who want to help out an idea about what's been planned, and how they can contribute in a way that their work fits into the project's overall plan. (&lt;a href="https://github.com/SimplQ/simplQ-frontend/issues/207" rel="noopener noreferrer"&gt;ours 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%2Fi%2Fhsc4p4203x3l02onv99a.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%2Fhsc4p4203x3l02onv99a.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The key is not to wait for collaborators, but make your project "collaboratable". One of the biggest learning was to break a problem into independent tasks, and create well-defined issues on GitHub. The XD design that we created paid off. You can find a sample issue &lt;a href="https://github.com/SimplQ/simplQ-frontend/issues/264" rel="noopener noreferrer"&gt;here&lt;/a&gt;. Someone looking at the issue should get a clear understanding of the task, then they send a PR most of the time.&lt;/p&gt;

&lt;p&gt;The code should be easy to maintain and easy to change. We kept this in mind, and had to refactor and iterate till the code became decently &lt;a href="https://www.digitalocean.com/community/conceptual_articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design" rel="noopener noreferrer"&gt;S.O.L.I.D&lt;/a&gt;:&lt;/p&gt;

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

&lt;p&gt;Once you create your well-defined issues, the next step is to label them properly. We use labels like &lt;code&gt;You can do this&lt;/code&gt; and &lt;code&gt;Good First Issue&lt;/code&gt; to mark issues that don't have any blockers which someone new can readily work on. People/tools discover open issues on Github through labels.&lt;/p&gt;

&lt;p&gt;After this, list your project on sites where people look for open source projects to work on:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://up-for-grabs.net/#/" rel="noopener noreferrer"&gt;https://up-for-grabs.net/#/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://goodfirstissue.dev/" rel="noopener noreferrer"&gt;https://goodfirstissue.dev/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/MunGell/awesome-for-beginners" rel="noopener noreferrer"&gt;https://github.com/MunGell/awesome-for-beginners&lt;/a&gt;&lt;br&gt;
&lt;a href="https://firstcontributions.github.io/" rel="noopener noreferrer"&gt;https://firstcontributions.github.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the last few months, I also finished two books which were really helpful, &lt;a href="https://hbr.org/2013/05/why-the-lean-start-up-changes-everything" rel="noopener noreferrer"&gt;The Lean Startup&lt;/a&gt; which speaks the importance of thinking MVPs and &lt;a href="https://www.goodreads.com/book/show/18050143-zero-to-one" rel="noopener noreferrer"&gt;Zero to One&lt;/a&gt; which is a good startup myth buster.&lt;/p&gt;

&lt;p&gt;Finally it proved very helpful that my good friend &lt;a href="https://github.com/maaverik" rel="noopener noreferrer"&gt;@maaveric&lt;/a&gt; was around to review all my PRs. We reviewed each other's code. When your code goes through someone's review, you naturally start structuring your PRs well, and maintain the code quality.&lt;/p&gt;

&lt;p&gt;There are some more points in the beginning of the article that I did not cover in detail. Let me know in the comments if there are any specific questions. I will encourage you to give this a try, you will learn a lot along the way. Thanks for reading!&lt;/p&gt;




&lt;p&gt;If you would like to collaborate with me on SimplQ, do &lt;a href="https://github.com/SimplQ" rel="noopener noreferrer"&gt;check it out&lt;/a&gt;. Feature ideas, bug reports, feedback and suggestions are all welcome. (You can raise them as issues &lt;a href="https://github.com/SimplQ/simplQ-frontend/issues" rel="noopener noreferrer"&gt;here&lt;/a&gt;). Please do comment on the code structure and how we could improve there if you are a seasoned web developer. My CSS is horrible, I think it can be improved.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>react</category>
      <category>sideprojects</category>
      <category>webdev</category>
    </item>
    <item>
      <title>React/CRA: Invitation to Collaborate to SimplQ</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 03 Oct 2020 22:11:11 +0000</pubDate>
      <link>https://dev.to/daltonfury42/react-cra-looking-for-contributors-for-hactoberfest-40gf</link>
      <guid>https://dev.to/daltonfury42/react-cra-looking-for-contributors-for-hactoberfest-40gf</guid>
      <description>&lt;p&gt;We maintain a web based queue management software called &lt;a href="https://simplq.me/"&gt;SimplQ&lt;/a&gt;, that anyone can use to create instant queues to manage crowd with a smartphone. &lt;/p&gt;

&lt;p&gt;We revamped our UI, and we have been getting a lot of collaborators thanks to #hacktoberfest&lt;/p&gt;

&lt;p&gt;It's a straightforward React CRA app. We have a lot of easy to fix issues and have been merging lot of quality PRs:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D_abPvMD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/job744i0d5ccccc0uqcd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D_abPvMD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/job744i0d5ccccc0uqcd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open Issues: &lt;a href="https://github.com/SimplQ/simplQ-frontend/issues"&gt;https://github.com/SimplQ/simplQ-frontend/issues&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can see the site here: &lt;a href="https://simplq.me/"&gt;https://simplq.me/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>react</category>
      <category>webdev</category>
      <category>javascript</category>
    </item>
    <item>
      <title>AWS SES + Gmail = Free Business Email ID</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Sat, 12 Sep 2020 19:50:15 +0000</pubDate>
      <link>https://dev.to/daltonfury42/aws-ses-gmail-free-business-email-id-4phj</link>
      <guid>https://dev.to/daltonfury42/aws-ses-gmail-free-business-email-id-4phj</guid>
      <description>&lt;p&gt;My &lt;a href="https://simplq.me/" rel="noopener noreferrer"&gt;website&lt;/a&gt; is hosted on AWS Free Tier, and I wanted to create a free company/business email address for people to contact me. If you are already on AWS, and want to create an email address like &lt;a href="mailto:contact@simplq.me"&gt;contact@simplq.me&lt;/a&gt; it doesn't cost anything.&lt;/p&gt;

&lt;p&gt;What you need:&lt;br&gt;
1) An AWS Account&lt;br&gt;
2) A domain name (simplq.me in my case)&lt;br&gt;
3) Gmail account (Other email services should also work)&lt;/p&gt;

&lt;p&gt;What &lt;strong&gt;you don't need&lt;/strong&gt;: A GSuite Account&lt;/p&gt;

&lt;p&gt;(If your domain is on Google Domains, &lt;a href="https://support.google.com/domains/answer/3251241?hl=en#emailForwarding" rel="noopener noreferrer"&gt;setting up&lt;/a&gt; email forwarding is easy.)&lt;/p&gt;

&lt;p&gt;I've covered all the necessary steps in brief, but if you need help or get stuck somewhere, let me know in the comments. &lt;/p&gt;

&lt;p&gt;If you want two way communication, not all regions support it. I set this up in &lt;code&gt;us-west-2 (Oregon)&lt;/code&gt; even though my website is hosted in &lt;code&gt;ap-southeast-1 (Singapore)&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup SES - Simple Email Service
&lt;/h2&gt;

&lt;p&gt;On AWS Console, switch to us-west-2, go to SES, and verify your domain:&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%2Fkpwjuhaikyzev6phddvn.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%2Fkpwjuhaikyzev6phddvn.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If your DNS is managed by Route53, Amazon can automatically update the entries, click on "Use Route53" button on the next page. Otherwise, you have to manually set the entries in your current DNS registrar.&lt;br&gt;&lt;br&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%2F3bdh3xd0kwnnvohf69qb.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%2F3bdh3xd0kwnnvohf69qb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Your Current Email
&lt;/h2&gt;

&lt;p&gt;This step is easy, your current Gmail address that you want Amazon to relay all communications to, verify it with SES. &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%2Fstv5xvuw8rrbzwb2zh0n.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%2Fstv5xvuw8rrbzwb2zh0n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll get a confirmation email, as part of the verification process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure SES Email Forwarder
&lt;/h2&gt;

&lt;p&gt;In the coming steps, we will configure SES to trigger a lambda which will forward emails to our personal email.&lt;/p&gt;

&lt;p&gt;Create a blank Node.js 12.x runtime Lambda function with no triggers in the same region, and use &lt;a href="https://github.com/arithmetric/aws-lambda-ses-forwarder/blob/master/index.js" rel="noopener noreferrer"&gt;this&lt;/a&gt; file as the function code.&lt;/p&gt;

&lt;p&gt;There is a config object in the code which requires some tweaking:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

var defaultConfig = {
  fromEmail: "contact@simplq.me",
  subjectPrefix: "",
  emailBucket: "&amp;lt;s3-bucket-name&amp;gt;",
  emailKeyPrefix: "mails/",
  allowPlusSign: true,
  forwardMapping: {
    "contact@simplq.me": [
      "&amp;lt;your-gmail-id&amp;gt;@gmail.com"
    ]
  }
};


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;fromEmail&lt;/code&gt; should be the business email which your customers would see. We will later create an S3 bucket to store our emails. Choose a bucket name and give it as &lt;code&gt;emailBucket&lt;/code&gt;. In the &lt;code&gt;forwardMapping&lt;/code&gt; section, you should configure the gmail address which you verified in the previous step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/arithmetric/aws-lambda-ses-forwarder" rel="noopener noreferrer"&gt;arithmetric/aws-lambda-ses-forwarder&lt;/a&gt; is a awesome repo, it supports many more configurations, you should check it out if you want to create and forward multiple emails, or forward emails to multiple people.&lt;/p&gt;

&lt;p&gt;Attach this policy to the service role of the Lambda, to give it access to the S3 bucket, and also SES:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::&amp;lt;s3-bucket-name&amp;gt;/*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "ses:SendRawEmail",
            "Resource": "*"
        }
    ]
}


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Create a Rule in SES
&lt;/h2&gt;

&lt;p&gt;This ties everything together, go back to SES console and create a new Email Receiving -&amp;gt; Rule Set. You will set a rule, where you configure two "Actions", one to save all emails to a S3 bucket which you can create from this screen, and another to trigger the Lambda created in the previous setup to forward the mails. Use the below screenshot as reference:&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%2Faqpv5jegsmdcdclbtvs8.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%2Faqpv5jegsmdcdclbtvs8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point, if you send an email to your business email, the personal Email ID should receive it. Test and make sure that it works, use Cloudwatch Logs for the lambda to debug in case of issues.&lt;/p&gt;
&lt;h2&gt;
  
  
  Configure Gmail
&lt;/h2&gt;

&lt;p&gt;Next is to add this new email as a new identity to your Gmail account. Go to SES's SMTP Settings and create a new SMTP Credential.&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%2Fy2ay5hu223cwh38e69ul.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%2Fy2ay5hu223cwh38e69ul.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At the end, you'll get a username and a password, which you should add to your Gmail Settings:&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%2Frfdhv4zxe4n297hb0lwy.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%2Frfdhv4zxe4n297hb0lwy.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Last Step - Verification
&lt;/h2&gt;

&lt;p&gt;Initially your newly configured Amazon SES service will be quarantined (sandboxed) by Amazon as a measure of protection against possible abuse and spam. To remove it from quarantine and allow normal mailing, as the last step, you need to open a support ticket to Amazon and fullfill a request. Otherwise you will see how the emails you send bounce with the following error message:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

554 Message rejected: Email address is not verified. The following identities failed the check in region ...


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;They approved within minutes in my case. Go to Sending Statistics section to raise a request:&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%2Fqwyly6jzunv8xmryoa00.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%2Fqwyly6jzunv8xmryoa00.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it! Your business email is ready to use. Let me know in the comments section if you face any issues. Hope you enjoyed it. &lt;/p&gt;

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

&lt;p&gt;If you want to reach out to me for consulting or mentoring, you can book a slot &lt;a href="https://www.hiretheauthor.com/daltonfury42" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>aws</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SimplQ, a Modern Web Based Queue Manager</title>
      <dc:creator>daltonfury42</dc:creator>
      <pubDate>Wed, 10 Jun 2020 16:31:54 +0000</pubDate>
      <link>https://dev.to/daltonfury42/simplq-a-modern-web-based-queue-manager-2old</link>
      <guid>https://dev.to/daltonfury42/simplq-a-modern-web-based-queue-manager-2old</guid>
      <description>&lt;p&gt;I've recently been inspired by services like &lt;a href="http://meet.jit.si/"&gt;jit.si&lt;/a&gt;, &lt;a href="https://skribbl.io/"&gt;scribble.io&lt;/a&gt; where you go, generate an instant link and share it with others. As an experiment on how this model can be applied for crowd management, me and a few friends have developed &lt;a href="https://simplq.me"&gt;SimplQ.me&lt;/a&gt;, a website where anyone can go create a queue and use it to keep people in a... queue. :p&lt;/p&gt;

&lt;p&gt;Some screenshots...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3KMDIyAP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/841y9186wwi4h0davo0r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3KMDIyAP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/841y9186wwi4h0davo0r.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The web app is really simple, the first screen shows how someone can create a queue and the second screen is the queue admin page, where you can manage people who have joined. The third screen is what a person who is waiting in the queue will see.&lt;/p&gt;

&lt;p&gt;Once people start queuing up, you can notify users by clicking on the bell icon. People can give phone numbers while joining the queue, so you can click on the person to call them.  We are working on integrating with an SMS service, so that the users can also be notified via SMS. Also a design overhaul is being planned.&lt;/p&gt;

&lt;p&gt;The frontend is built with React, backend in Java and all the code is open source and is available &lt;a href="https://github.com/SimplQ"&gt;here&lt;/a&gt; on gitHub. Feel free to fork and improve if you have any cool ideas in mind :)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://simplq.me"&gt;https://simplq.me&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>java</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
