<?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: Anuj Kapoor</title>
    <description>The latest articles on Forem by Anuj Kapoor (@bearbobs).</description>
    <link>https://forem.com/bearbobs</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%2F390493%2F98aaacb1-9704-4d6a-b6bf-88609b26d6a6.png</url>
      <title>Forem: Anuj Kapoor</title>
      <link>https://forem.com/bearbobs</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bearbobs"/>
    <language>en</language>
    <item>
      <title>Deliver bug-free with Slack bots</title>
      <dc:creator>Anuj Kapoor</dc:creator>
      <pubDate>Sun, 18 Apr 2021 10:02:04 +0000</pubDate>
      <link>https://forem.com/bearbobs/deliver-bug-free-with-slack-bots-1ajl</link>
      <guid>https://forem.com/bearbobs/deliver-bug-free-with-slack-bots-1ajl</guid>
      <description>&lt;p&gt;It's every engineer's dream to deliver bug-free code, having a constant eye for catching those edge cases is the most important part to reach that. Working on a data-search product for a year, I have realized regular testing and health checks are quite important regularly just to make sure general sanity for the product.&lt;/p&gt;

&lt;p&gt;Slack has been an important tool for us, not only for communication but also for delivering good products. Initially used as a tool to maintain communication among the team, I have thought of ways in which we can integrate slack for having the ease of consideration of tests and feedbacks at the dev level. It helps in collating everything in a single place , spoilers: slack 🙊&lt;/p&gt;

&lt;p&gt;Most of the processes, I have worked on, uses slack just to notify about the results. One can use any other tool of choice to replicate the same. But slack's bot network was quite helpful in making this easy to implement and scalable. I have use slack api python client, directly using api and other clients also work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Pipelines -
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Testing:
&lt;/h3&gt;

&lt;p&gt;Taking the example of our data-search product, data is updated daily and we have to make sure the sanity of it till frontend of our products. We use regular test runs and slack bot to notify about the same to make it seamless across the team.&lt;/p&gt;

&lt;p&gt;code sample:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;test.sh&lt;/code&gt; a simple bash script to test the service and sending out results to slack, which eases the process of not referring to a dashboard for the same&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    #!/bin/bash

    echo "*********************"
    echo "* Testing *"
    echo "*********************"
    echo "Running tests"
    echo "............................"
    run_test --parallel=8 2&amp;gt;&amp;amp;1 | tee -a ./test_result.txt

    echo "****************************"
    echo "*Sending Results to Slack*"
    echo "****************************"
    python3 slack_message.py

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

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;slaclk_message.py&lt;/code&gt; utilizes standard code base of slack api client in python to have a bot sending out the results in specific channel&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    import os
    from slack import WebClient
    from slack.errors import SlackApiError

    def status(str):
        if "OK" in str:
            return "OK"
        else:
            return "FAILING"

    test_resp = open('test_result.txt', 'r').read().replace('\n', ' ')

    test_status = status(test_resp)

    client = WebClient(token='SLACK_BOT_TOKEN')

    try:
        response = client.chat_postMessage(
            channel='#CHANNEL_NAME',
            text=""" Service status : {test_status}""".format(test_status=test_status))
    except SlackApiError as e:
        assert e.response["ok"] is False

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Quality assurance(getting edge cases and more):
&lt;/h3&gt;

&lt;p&gt;Notify if the quality of results from an API or Service degrade below certain threshold. Getting feedback from the user is quite important for improving the quality and they do the free labor for you by using your product. We can use similar slack client to notify about the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  Health-monitor:
&lt;/h3&gt;

&lt;p&gt;Keeps track of production infrastructure, and give health checks if utilization goes beyond limit&lt;/p&gt;

&lt;h3&gt;
  
  
  Random use-cases:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It can be used with different analytics tools like metabase to send regular insights about your products&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One of team member uses this to keep track of indexing for one of the service&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Possibilities are endless. These processes apply well for early-stage startups but might get out of hand easily for managing large infrastructure. But I think similar pipelines will help to catch those production and tailor your products in line with the expectations of your clients. &lt;/p&gt;

&lt;p&gt;Do share feedbacks and some better pipelines you can think of&lt;/p&gt;

</description>
      <category>devops</category>
      <category>testing</category>
      <category>delivery</category>
      <category>slackbot</category>
    </item>
    <item>
      <title>Getting back at blogging</title>
      <dc:creator>Anuj Kapoor</dc:creator>
      <pubDate>Sat, 17 Apr 2021 17:14:11 +0000</pubDate>
      <link>https://forem.com/bearbobs/getting-back-at-blogging-4fip</link>
      <guid>https://forem.com/bearbobs/getting-back-at-blogging-4fip</guid>
      <description>&lt;p&gt;Between the summer of 1665 and the spring of 1667, Isaac Newton made two long visits to Woolsthorpe in order to escape the plague affecting Cambridge. The bubonic ‘Great Plague’ of 1665–6 was the worst outbreak of plague in England. Issac did some amazing experiments with prism, hyperbola and gravity(famous apple incident)&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I have been …
&lt;/h2&gt;

&lt;p&gt;Me who got endless time and freedom to pursue my personal endeavors, had my share of different explorations, with bullets:&lt;/p&gt;

&lt;p&gt;🎓 Started the year as a college student and became alumini overnight.&lt;/p&gt;

&lt;p&gt;🎉 Started my first full-time job&lt;/p&gt;

&lt;p&gt;👷 Had a constant love-hate relationship with remote work.&lt;/p&gt;

&lt;p&gt;🧑‍🍳 Learned some basic cooking&lt;/p&gt;

&lt;p&gt;👨‍👦‍👦 Met a lot of people and friends online, for some of them it was literally impossible without the pandemic&lt;/p&gt;

&lt;p&gt;💻 Got weirdly into raspberry pi's, homelabs, and servers.&lt;/p&gt;

&lt;p&gt;🌳 Had some amazing life lessons overall&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion, Idk how to write blogs.xD
&lt;/h2&gt;

&lt;p&gt;Using time efficiently doesn’t always mean being productive, having a fair share of explorations is important. Last year has been a whole new experience be it life, career or technical escapades.&lt;/p&gt;

&lt;p&gt;2020 if nothing gave me a good port to host my internal services on 😆&lt;/p&gt;

&lt;p&gt;I am trying to get back to blogging again. I think bringing structure to the week is important, will try to have a weekly and biweekly schedule from now.&lt;/p&gt;

&lt;p&gt;Thanks for sticking around 🙂.&lt;/p&gt;

</description>
      <category>devjournal</category>
    </item>
    <item>
      <title>Sentiment Analyzer using SSVM</title>
      <dc:creator>Anuj Kapoor</dc:creator>
      <pubDate>Sat, 19 Sep 2020 04:40:03 +0000</pubDate>
      <link>https://forem.com/bearbobs/sentiment-analyzer-using-ssvm-2pi8</link>
      <guid>https://forem.com/bearbobs/sentiment-analyzer-using-ssvm-2pi8</guid>
      <description>&lt;p&gt;Recently I came across SSVM and WebAssembly on the server-side. It is a new way of development with ease of javascript and performance of rust. This approach combines Rust's performance, WebAssembly's security and portability, and JavaScript's ease-of-use. A typical application works like this.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The host application is a Node.js web application written in JavaScript. It makes WebAssembly function calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The WebAssembly bytecode program is written in Rust. It runs inside the SSVM and is called from the Node.js web application.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Description:
&lt;/h2&gt;

&lt;p&gt;My project uses an express API to receive 'phrase' as a parameter and then uses a rust function to do the sentiment analysis using the AFINN-111 wordlist.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Bearbobs"&gt;
        Bearbobs
      &lt;/a&gt; / &lt;a href="https://github.com/Bearbobs/ssvm-nodejs-starter"&gt;
        ssvm-nodejs-starter
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A template project to run Rust functions in Node.js through the Second State WebAssembly engine.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Sentiment Analyzer Backend using SSVM&lt;/h1&gt;
&lt;p&gt;It is an implimentation of sentiment analyzer using ssvm. It is inspired from 'Sentimental' which is in javascript
Main advantage here is that the actual logic is based on rust which is faster and the api is exposed with express which makes it simple to impliment.&lt;/p&gt;
&lt;h2&gt;
Example Usage:&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;/GET http://127.0.0.1:3000/?phrase="I am happy"&lt;/code&gt; //Score: 3, Comparative: 1&lt;/p&gt;
&lt;h2&gt;
TODO:&lt;/h2&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 Senitiment Analyzer logic.&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 File analysis
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 API&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Rust logic(Facing &lt;a href="https://github.com/second-state/ssvm-nodejs-starter/issues/13"&gt;issue&lt;/a&gt; with Rexiv2 with SSVM)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Make logic of Analyzer more refined.&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Frontend to wrap it.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Getting started with SSVM&lt;/h2&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/second-state/ssvm-nodejs-starter/workflows/Build%20and%20test/badge.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LCSmUOi9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/second-state/ssvm-nodejs-starter/workflows/Build%2520and%2520test/badge.svg" alt="Build and test"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/second-state/ssvm-nodejs-starter/fork"&gt;Fork this project&lt;/a&gt; to create your own Rust functions in Node.js. &lt;a href="https://www.secondstate.io/articles/getting-started-rust-nodejs-vscode/" rel="nofollow"&gt;Learn more&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Rust functions are in the &lt;code&gt;src&lt;/code&gt; directory. You can put high performance workload into Rust functions.&lt;/li&gt;
&lt;li&gt;The JavaScript functions are in the &lt;code&gt;node&lt;/code&gt; directory and they can access the Rust functions.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;node node/app.js&lt;/code&gt; command to run the application in Node.js.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Use Docker to build and&lt;/h2&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Bearbobs/ssvm-nodejs-starter"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The current implementation is very simple, as it is my first project with rust as well. I am working on adding file support to it so that it can parse text directly.&lt;/p&gt;

&lt;p&gt;The underlying architecture is like:&lt;/p&gt;

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

&lt;p&gt;Special thanks to second-state for an amazing &lt;a href="https://www.secondstate.io/articles/getting-started-with-rust-function/"&gt;getting-started guide&lt;/a&gt;, I was able to set it up on my local within 10 minutes.&lt;br&gt;
Overall it was an amazing learning experience and I can think of many use cases where this type of infrastructure will work.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>webassembly</category>
      <category>node</category>
    </item>
    <item>
      <title>Open Code-Coverage Bot</title>
      <dc:creator>Anuj Kapoor</dc:creator>
      <pubDate>Sat, 22 Aug 2020 06:32:39 +0000</pubDate>
      <link>https://forem.com/bearbobs/open-code-coverage-bot-7m5</link>
      <guid>https://forem.com/bearbobs/open-code-coverage-bot-7m5</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Background:
&lt;/h3&gt;

&lt;p&gt;When you try to search for some code-coverage solution that can utilize Github actions, you will definitely stumble upon two major players &lt;strong&gt;Coedcov&lt;/strong&gt; and &lt;strong&gt;Coveralls&lt;/strong&gt;. But both of them are proprietary and comes with an extra cost attached to it. When you are working on a personal project or an early-stage startup you don't want to spend extra bucks for the same.&lt;/p&gt;

&lt;h3&gt;
  
  
  Action:
&lt;/h3&gt;

&lt;p&gt;So I designed this action which makes use of action artifacts to generate coverage reports and comment them on pull-requests. It also has a feature to upload reports to a file server. I used the same for managing a very data-intensive Django project. With my test-suite workflow, I used &lt;strong&gt;coverage.py&lt;/strong&gt; to generate reports. I store these reports in a text file in actions-artifacts and also upload them. There is a little preprocessing done on the report to make it comment friendly.&lt;/p&gt;

&lt;p&gt;The whole process is divided into two parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running tests and generating the report.&lt;/li&gt;
&lt;li&gt;Modifying the report to send it as an action-bot comment, and uploading it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Expected Outcome:&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%2Fu2a7b604fb6rsehi5hno.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%2Fu2a7b604fb6rsehi5hno.png" alt="example"&gt;&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%2Fitp9b9e53vs9nmsfp02i.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%2Fitp9b9e53vs9nmsfp02i.png" alt="example2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the &lt;strong&gt;first part&lt;/strong&gt; was fairly simple, I used coverage.py to run standard Django tests.you can find the syntax in the Yaml file below. For the &lt;strong&gt;second part&lt;/strong&gt;, I created a new action repository &lt;a href="https://github.com/Bearbobs/open-coverage-action" rel="noopener noreferrer"&gt;open-coverage-action&lt;/a&gt;, It takes a text file as input and comments it on a pull-request. I am also working on adding preprocessing of the report to it. Currently, it uses basic bash to extract the part which contains the final result and add some polish, after that stores it in a new file for open-coverage-action. I also use file.io to upload a full report for further reference and also upload-artifact action to upload it as a an artifact.&lt;br&gt;
it pretty much does the job required for my workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: pr-coverage

on: pull_request

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      max-parallel: 4
      matrix:
        python-version: [3.6]

    steps:
      - uses: actions/checkout@v2
      - name: Set up Python ${{ matrix.python-version }}
        uses: actions/setup-python@v2
        with:
          python-version: ${{ matrix.python-version }}
      - name: Cache pip
        uses: actions/cache@v2
        with:
          # This path is specific to Ubuntu
          path: ~/.cache/pip
          # Look to see if there is a cache hit for the corresponding requirements file
          key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }}
          restore-keys: |
            ${{ runner.os }}-pip-
            ${{ runner.os }}-
      - name: Install Python Dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt
      - name: Generating and Uploading Coverage Report
        run: |
          touch local.env
          echo DEBUG_VALUE=1 &amp;gt; local.env
          cd data_api/
          python manage.py makemigrations
          python manage.py migrate
          coverage run manage.py test --noinput --parallel 16
          coverage report &amp;gt; results.txt
          # Modifying coverage report
          echo "Coverage Report: " &amp;gt; report.txt
          echo " Statements | Miss | Cover " &amp;gt;&amp;gt; report.txt
          tail -4 results.txt &amp;gt;&amp;gt; report.txt
          echo "   " &amp;gt;&amp;gt; report.txt
          echo "Link to full report :" &amp;gt;&amp;gt; report.txt
          # uploading report to file.io any other services can be used
          curl -F "file=@results.txt" https://file.io |     python3 -c "import sys, json; print(json.load(sys.stdin)['link'])" &amp;gt;&amp;gt; report.txt
        env:
          SECRET_KEY: ${{ secrets.SECRET_KEY }}
          ADMIN_URL_KEY: ${{ secrets.ADMIN_URL_KEY }}
          DATABASE_NAME: github_actions
          DATABASE_USER: postgres
          DATABASE_PASSWORD: postgres
          DATABASE_HOST: 127.0.0.1
          DATABASE_PORT: 5432
      - uses: actions/upload-artifact@v2
        with:
          name: report
          path: data_api/report.txt
      - uses: actions/download-artifact@v2
        with:
          name: report
      - name: Open Coverage Notifier Action
        uses: Bearbobs/open-coverage-action@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          path: data_api/report.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full file can be found in a gist @ &lt;a href="https://gist.github.com/Bearbobs/3116d04cb91ebfe4023996a81fb89620" rel="noopener noreferrer"&gt;workflow&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;This is just my first take on this idea. I am planning to reiterate on the preprocessing of the reports, to make it more polished. Currently, this workflow can be directly used by any Django project maintainers. Special thanks to &lt;strong&gt;file.io&lt;/strong&gt; for free text uploading service and &lt;strong&gt;Github actions&lt;/strong&gt;. please refer to the &lt;a href="https://github.com/Bearbobs/open-coverage-action" rel="noopener noreferrer"&gt;open-coverage-action&lt;/a&gt; repository for further reference.&lt;br&gt;
Please reach out for suggestions and feedbacks. Thank You.&lt;/p&gt;

&lt;p&gt;Links to the services used:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Bearbobs/open-coverage-action" rel="noopener noreferrer"&gt;Open-Coverage-Action&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.file.io/" rel="noopener noreferrer"&gt;File.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://coverage.readthedocs.io/en/latest/index.html" rel="noopener noreferrer"&gt;Coverage.py&lt;/a&gt;&lt;/p&gt;

</description>
      <category>actionshackathon</category>
      <category>codequality</category>
      <category>github</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The Last Project</title>
      <dc:creator>Anuj Kapoor</dc:creator>
      <pubDate>Wed, 20 May 2020 11:13:54 +0000</pubDate>
      <link>https://forem.com/bearbobs/the-last-project-3452</link>
      <guid>https://forem.com/bearbobs/the-last-project-3452</guid>
      <description>&lt;h2&gt;
  
  
  My Final Project
&lt;/h2&gt;

&lt;p&gt;It's a blog which is developed using Javascript and Graphql&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo Link
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.escapades.works/"&gt;https://www.escapades.works/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks, #githubsdp for helping with the domain&lt;br&gt;
service used: Name.com&lt;/p&gt;
&lt;h2&gt;
  
  
  Link to Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Bearbobs"&gt;
        Bearbobs
      &lt;/a&gt; / &lt;a href="https://github.com/Bearbobs/Blog"&gt;
        Blog
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Repository for Blogging my Experiences
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Blog&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://escapades.works/" rel="nofollow"&gt;http://escapades.works/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/gatsbyjs/gatsby" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ac3de73b6a2ad83edf85367f99012537d109ed32/68747470733a2f2f7472617669732d63692e6f72672f6761747362796a732f6761747362792e7376673f6272616e63683d6d6173746572" alt="Travis CI Build Status"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.org/package/gatsby" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e4f921f44451b9dc2f5075e479ccc28467376e24/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f6761747362792e7376673f7374796c653d666c61742d737175617265" alt="npm package"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/facebook/jest"&gt;&lt;img src="https://camo.githubusercontent.com/665df681e8f100f94bde7716561b73d1552888ca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7465737465645f776974682d6a6573742d3939343234662e737667" alt="tested with jest"&gt;&lt;/a&gt; &lt;a href="https://github.com/facebook/jest"&gt;&lt;img src="https://camo.githubusercontent.com/46e8585e8b6fa7127ff3ab166cadf78bb074103d/68747470733a2f2f6a6573746a732e696f2f696d672f6a6573742d62616467652e737667" alt="jest"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://app.netlify.com/sites/escapades/deploys" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/fb82fc1c0d63cf47fcced77cd2891cca25fd133d/68747470733a2f2f6170692e6e65746c6966792e636f6d2f6170692f76312f6261646765732f64303539356530332d346631372d346232372d626162382d6235303337616231366636332f6465706c6f792d737461747573" alt="Netlify Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://agile-plateau-31969.herokuapp.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/807f4856401c686adc4d55bbdac522f3a4f2517e/687474703a2f2f6865726f6b752d62616467652e6865726f6b756170702e636f6d2f3f6170703d6167696c652d706c61746561752d3331393639267374796c653d666c6174" alt="Heroku"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Simple Blog implimentation using React and Graphql&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/Bearbobs/Blog"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h2&gt;
  
  
  How I built it (what's the stack? did I run into issues or discover something new along the way?)
&lt;/h2&gt;

&lt;p&gt;It all started with a simple blog implementation using gatsby. I added some extra functionality like dark/light mode to provide a better outlook. Techstack is Javascript with Graphql.&lt;br&gt;
In next rollout, I am adding options to comment and upvote posts, and according to these ratings ordering my posts. There will also be a timeline implementation of the post.&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional Thoughts / Feelings / Stories
&lt;/h2&gt;

&lt;p&gt;I am happy to implement it, as I always thought of writing articles but was never committed enough to do the same. Now I can basically spin up some new articles while parallelly polishing my own platform.&lt;/p&gt;

</description>
      <category>octograd2020</category>
      <category>githubsdp</category>
    </item>
  </channel>
</rss>
