<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.2">Jekyll</generator><link href="https://pavanjoshi914.github.io/Blog/feed.xml" rel="self" type="application/atom+xml" /><link href="https://pavanjoshi914.github.io/Blog/" rel="alternate" type="text/html" /><updated>2022-05-28T09:28:42+00:00</updated><id>https://pavanjoshi914.github.io/Blog/feed.xml</id><title type="html">Pavan Joshi</title><subtitle>Personal blog for sharing my work experience</subtitle><author><name>Pavan Joshi</name></author><entry><title type="html">Summer Of Bitcoin - Intro and Onboarding Week at Bitcoin</title><link href="https://pavanjoshi914.github.io/Blog/sob/First-week-of-bitcoin-intern/" rel="alternate" type="text/html" title="Summer Of Bitcoin - Intro and Onboarding Week at Bitcoin" /><published>2022-05-16T00:00:00+00:00</published><updated>2022-05-04T21:20:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/sob/First-week-of-bitcoin-intern</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/sob/First-week-of-bitcoin-intern/">&lt;p&gt;Voila, readers 👋! It’s been a week since I started my journey with bitcoin as a Bitcoin Intern. It has been a great learning experience so far.&lt;/p&gt;

&lt;p&gt;If you are willing to know more about Bitcoin Internship, kindly check my previous post - &lt;a href=&quot;/Blog/sob/First-week-of-bitcoin-intern/&quot;&gt;&lt;strong&gt;Summer Of Bitcoin- A global Internship Program&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cdn-images-1.medium.com/max/3200/1*uzwM2clU6ZpB--X_bKy9TQ.jpeg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;During the first week of the Bitcoin Internship, I got the opportunity to meet many Tech Bitcoin experts worldwide. We took a deep dive into &lt;em&gt;Bitcoin protocol&lt;/em&gt; and how we can enhance career opportunities through this Internship.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;We got to hold a welcome session conducted by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Summer of Bitcoin&lt;/code&gt; Admin &lt;em&gt;Adi Shankara&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During this session, we learned about different initial tasks like getting started with (TODOs), Stats of Summer of Bitcoin 2022, Expectations of the program from its selected interns and many different perks and opportunities this internship provides. ✨&lt;/p&gt;

&lt;p&gt;For this year, out of 20k applications worldwide, only 82 interns from 15 different countries were selected, making it into Summer of Bitcoin in the first attempt and being a part of those 82 interns makes me feel overwhelmed. 🎉&lt;/p&gt;

&lt;p&gt;Session Presentation: &lt;a href=&quot;https://drive.google.com/file/d/1B1sPPvJDYH9ao5TnfrmC5lRpU-9QasrM/view?usp=sharing&quot;&gt;&lt;em&gt;Here&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;The second session was conducted on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Communication, Collaboration and Career Development&lt;/code&gt; by &lt;em&gt;Caralie Chrisco&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During this session, we got to know about various technical interviewing skills and more about technical concepts such as ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Technical Blogging&lt;/li&gt;
  &lt;li&gt;Network Building&lt;/li&gt;
  &lt;li&gt;Technical Interviewing&lt;/li&gt;
  &lt;li&gt;Resume Making&lt;/li&gt;
  &lt;li&gt;Answering Technical Questions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt; 🔽&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.canva.com/&quot;&gt;Canva &lt;/a&gt;— Free graphic design software 💻&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.grammarly.com/&quot;&gt;Grammarly&lt;/a&gt; — Check your writing ✍️&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://hemingwayapp.com/&quot;&gt;Hemingway &lt;/a&gt;— Improve your writing ✅&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://medium.com/&quot;&gt;Medium &lt;/a&gt;— Create your own blog 📃&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.meetup.com/&quot;&gt;Meetup &lt;/a&gt;— Meet people with similar interests, and build your network! 🧑‍🤝‍🧑&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;a href=&quot;https://www.break-in.tech/&quot;&gt;Break-In&lt;/a&gt; —  Blog for junior devs, with some relevant articles on technical interviewing 🔰&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;The third session was conducted on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Bitcoin and Open-source Development&lt;/code&gt; by &lt;em&gt;Adam Jonas&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During this session, we learnt many different aspects of Bitcoin and sessions conducted by chain code &lt;em&gt;labs&lt;/em&gt; in order to understand Bitcoin protocol development in a better way. 🔀&lt;/p&gt;

&lt;p&gt;Resources: &lt;a href=&quot;https://chaincode.com/&quot;&gt;&lt;em&gt;Here&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;The fourth and final session of this week was conducted on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Deep-dive into Bitcoin&lt;/code&gt; by &lt;em&gt;Matthew Zipkin&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this session, we had a quick glance at Bitcoin, Goals of Bitcoin, Cryptography in Bitcoin, Account-based VS Coin based model, Bitcoin OP codes, Proof of Work etc. 🪙&lt;/p&gt;

&lt;p&gt;Session Presentation: &lt;a href=&quot;https://drive.google.com/file/d/1m-ex3tgCbx5J9UcIDkbYbQMc1uv9ocLw/view?usp=sharing&quot;&gt;&lt;em&gt;Here&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For more, stay connected !!&lt;/p&gt;

&lt;p&gt;Best Regards ~ &lt;a href=&quot;https://github.com/pavanjoshi914&quot;&gt;Pavan&lt;/a&gt;&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="SOB" /><category term="SOB" /><summary type="html">Voila, readers 👋! It’s been a week since I started my journey with bitcoin as a Bitcoin Intern. It has been a great learning experience so far.</summary></entry><entry><title type="html">Summer Of Bitcoin - A Global Bitcoin Internship</title><link href="https://pavanjoshi914.github.io/Blog/sob/2022-all-about-summer-of-bitcoin/" rel="alternate" type="text/html" title="Summer Of Bitcoin - A Global Bitcoin Internship" /><published>2022-04-05T00:00:00+00:00</published><updated>2022-05-04T21:20:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/sob/2022-all-about-summer-of-bitcoin</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/sob/2022-all-about-summer-of-bitcoin/">&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;“Bitcoin will do to banks what email did to the postal industry.”&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;— Rick Falkvinge, Founder of the Swedish pirate party&lt;/p&gt;

&lt;p&gt;Hey readers 👋! I have been selected as a developer in this year’s Summer of Bitcoin 2022 program. Yay!! :stars: 👊 I made it into &lt;strong&gt;Bitcoin Internship&lt;/strong&gt;**_ in my very first attempt.&lt;/p&gt;

&lt;p&gt;I consider this as very another achievement after the successful completion of Google Summer of Code 2021.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/sob/sob_banner.jpg&quot; alt=&quot;sob_banner&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In this post, I will be discussing what exactly Summer of Bitcoin is and how this internship can help you to get excellent career opportunities in direction of the latest technology and its trends such as Blockchain and Bitcoin.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Bitcoin is a virtual currency designed to act as money that gives individual the power to control thier money without the need for traditional banking intermediaries. 💰&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;what-is-the-summer-of-bitcoin-&quot;&gt;What is the Summer of Bitcoin? 🤔&lt;/h2&gt;

&lt;p&gt;The Summer of Bitcoin, often abbreviated as SOB is an &lt;em&gt;&lt;strong&gt;International Annual Internship Program&lt;/strong&gt;&lt;/em&gt;. It introduces university students to bitcoin development and designing in which Bitcoin award &lt;strong&gt;stipends&lt;/strong&gt; to students who successfully complete &lt;strong&gt;coding project&lt;/strong&gt; during the summer.&lt;/p&gt;

&lt;p&gt;Summer of Bitcoin is a &lt;b&gt;competitive event :computer:&lt;/b&gt; in which students apply to mentoring organizations and compete with other aspirants for their selection. The one who completes all the rounds and tasks provided in the selection phase gets selected for this internship.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Students who complete Summer of Bitcoin successfully get a handsome amount of &lt;b&gt;$3000 dollars&lt;/b&gt; :dollar: as a stipend and &lt;em&gt;&lt;strong&gt;Internship Certificate&lt;/strong&gt;&lt;/em&gt; from &lt;em&gt;&lt;strong&gt;Bitcoin&lt;/strong&gt;&lt;/em&gt; :boom:.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Along with this many different swags such as Bitcoin hardware wallet (interesting), Hoddies etc are waiting for you.&lt;/p&gt;

&lt;h2 id=&quot;summer-of-bitcoin-stats-&quot;&gt;Summer of Bitcoin Stats 📊&lt;/h2&gt;

&lt;p&gt;In 2022, 20317 applications came from all around the world for this internship, out of which only 82 participants were able to make it into this internship. After the release of stats, this made me feel great as well as overwhelmed for being one of the selected participants.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/sob/sob_stats.png&quot; alt=&quot;sob_stats&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Key Benefits of Bitcoin Internship - ☑️&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Get to learn about the working latest technology trends and Bitcoin which is one of the world’s biggest monetary revolutions :dizzy:.&lt;/li&gt;
  &lt;li&gt;Handsome amount of $3000 dollars as a stipend along with internship swags 🤩.&lt;/li&gt;
  &lt;li&gt;Bitcoin Internship Certification :stars:.&lt;/li&gt;
  &lt;li&gt;Direct job referrals in Bitcoin companies around the world&lt;/li&gt;
  &lt;li&gt;Fundings for different Bitcoin based startups, get connected with investors and advisors&lt;/li&gt;
  &lt;li&gt;Open Source annual grants&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;summer-of-bitcoin-journey-️&quot;&gt;Summer Of Bitcoin Journey ⬇️&lt;/h2&gt;

&lt;p&gt;After completing my Google Summer of Code 2021, I become more enthusiastic for working on challenging codebases and solving harder problems. One of my friend introduced me to Summer of Bitcoin.&lt;/p&gt;

&lt;p&gt;Initially, I had no prior experience in blockchain and working of Bitcoin. I was able to crack &lt;strong&gt;screening round&lt;/strong&gt; through my coding skills and elevated myself in the direction of Bitcoin and Blockchain by learning more about it.&lt;/p&gt;

&lt;p&gt;During this time, I got to meet many different Bitcoin contributors from different parts of the world. It really excited me to give my best in this direction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is my acceptance letter from Bitcoin&lt;/strong&gt; 🔥&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/sob/sob_acceptance_letter.png&quot; alt=&quot;bitcoin_acceptance_letter&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;project-details-&quot;&gt;Project Details 📑&lt;/h2&gt;

&lt;p&gt;I will be working on making Bitcoin payments transactions smart with structured metadata with Alby Community. This is possible by extending the latest technologies such as &lt;strong&gt;WebLN&lt;/strong&gt; and &lt;strong&gt;LNURL&lt;/strong&gt; which are being build on top of the &lt;strong&gt;Bitcoin and Lightning Network&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The aim of this project is to extend existing standards such as Webln and lnurl to enrich transactions with additional information as structured metadata so that transactions containing static data contain more meaningful information giving more interactivity to the transactions.&lt;/p&gt;

&lt;h3 id=&quot;objectives-&quot;&gt;Objectives 💻&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Research different use cases which supports the concept of making transactions smarter with structured metadata.&lt;/li&gt;
  &lt;li&gt;Markup metadata so that it is structured and properly organized using specifications such as schema.org.&lt;/li&gt;
  &lt;li&gt;Writing specifications for extending standards such as Webln on client-side as well as Alby wallet side.&lt;/li&gt;
  &lt;li&gt;Implementation of the specifications in Alby.&lt;/li&gt;
  &lt;li&gt;Different prototypes demonstrating use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more, stay connected!!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ &lt;a href=&quot;https://github.com/pavanjoshi914&quot;&gt;Pavan&lt;/a&gt;&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="SOB" /><category term="SOB" /><summary type="html">“Bitcoin will do to banks what email did to the postal industry.”</summary></entry><entry><title type="html">Final Report - GSoC’2021</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-final-report/" rel="alternate" type="text/html" title="Final Report - GSoC’2021" /><published>2021-08-31T00:00:00+00:00</published><updated>2021-08-31T21:17:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-final%20report</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-final-report/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/post10/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This blog report summarizes the work, I executed during the 10 weeks of &lt;strong&gt;&lt;em&gt;Google Summer of Code 2021&lt;/em&gt;&lt;/strong&gt;. GSoC’2021 Coding Period was started on June 7, and officially ended on August 16.&lt;/p&gt;

&lt;h2 id=&quot;my-project-details-&quot;&gt;My Project Details 📋&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href=&quot;https://summerofcode.withgoogle.com/projects/#6365426910494720&quot;&gt;Internationalization&lt;/a&gt; mainly aims at creating I18n architecture for the CircuitVerse platforms to localize or translate them into multiple languages.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During GSoC, I aimed to create an I18n infrastructure such that CircuitVerse platforms can be internationalized into global languages. And the platforms can be emerged as the &lt;strong&gt;&lt;em&gt;Global Platforms&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I also aimed to create an &lt;strong&gt;&lt;em&gt;I18n architecture&lt;/em&gt;&lt;/strong&gt; for &lt;strong&gt;&lt;em&gt;5 major technologies&lt;/em&gt;&lt;/strong&gt; used on different CircuitVerse platforms. They are:-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby on Rails (CircuitVerse Main Platform)&lt;/li&gt;
  &lt;li&gt;JavaScript (CircuitVerse Simulator)&lt;/li&gt;
  &lt;li&gt;Jekyll (CircuitVerse Interactive Book)&lt;/li&gt;
  &lt;li&gt;Flutter (CircuitVerse Mobile App)&lt;/li&gt;
  &lt;li&gt;DocsifyJs (CircuitVerse Docs)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;final-report-&quot;&gt;Final Report 📃&lt;/h2&gt;

&lt;p&gt;During the first five weeks of the GSoC coding period (Phase One), I did work in the major portions of the Rails codebase. Phase two was majorly dedicated to working on &lt;strong&gt;Simulator&lt;/strong&gt;, &lt;strong&gt;Mobile App&lt;/strong&gt; and &lt;strong&gt;DocsifyJS&lt;/strong&gt; as well.&lt;/p&gt;

&lt;p&gt;More Details about my work in Phase one can be found here:
&lt;a href=&quot;/Blog/gsoc/phase-one-evaluations/&quot;&gt;I18n Phase One Report&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;phase-two--&quot;&gt;Phase Two :-&lt;/h2&gt;

&lt;h2 id=&quot;simulator-&quot;&gt;Simulator 🔌&lt;/h2&gt;

&lt;p&gt;We cannot use Rails I18n in webpacker served JavaScript modules directly. A Wikipedia library &lt;strong&gt;banana-i18n&lt;/strong&gt; is used to localize JavaScript-based product.&lt;/p&gt;

&lt;p&gt;In order to localized Simulator I divided it into different sections ⬇️&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Simulator Configuration Modules and features such as Verilog, CombinationalAnalysisalong, SubCircuits etc along with third-party npm packages.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Simulator Circuit Element Modules&lt;/p&gt;

    &lt;ol&gt;
      &lt;li&gt;Circuit Element Modules&lt;/li&gt;
      &lt;li&gt;Sequential Element and TestBench Modules&lt;/li&gt;
      &lt;li&gt;Project Data, Hotkey Binders, themers etc&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week-6-begin-with-localizing-simulator-configuration-modules-&quot;&gt;Week 6: Begin with Localizing Simulator Configuration Modules 📂&lt;/h2&gt;

&lt;p&gt;In total, there were 36 configuration modules written in JavaScript, which I had to check and localize without breaking any code.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in Simulator controls interface in &lt;strong&gt;UX.js&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;I18n in Simulator Guide in &lt;strong&gt;tutorials.js&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;I18n in Simulator functionalities such as Verilog, SubCircuits, CombinationalAnalysis etc.&lt;/li&gt;
  &lt;li&gt;Completing I18n and testing in all the remaining 36 configuration Modules and functionalities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week-7-localizing-simulator-circuit-element-modules-&quot;&gt;Week 7: Localizing Simulator Circuit Element Modules 🔄&lt;/h2&gt;

&lt;p&gt;I started working with circuit element modules, hotkey binders, themers, testbench and sequential circuit element modules.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in 67 different JavaScript modules which belong to circuit elements, sequential circuit elements, testbench, mutable properties of circuit elements etc&lt;/li&gt;
  &lt;li&gt;I18n in Themers and Hotkey Binders, Project Data configurations etc&lt;/li&gt;
  &lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I finished working on the Simulator which required &lt;strong&gt;800+ lines&lt;/strong&gt; of code changes. 🎉&lt;/p&gt;

&lt;h2 id=&quot;mobile-app-&quot;&gt;Mobile App 📱&lt;/h2&gt;

&lt;p&gt;Despite some of the benefits of Flutter, such as rapid Mobile-App development. Flutter was quite in discussion for its uneasiness for internationalization (I18n).&lt;/p&gt;

&lt;p&gt;Previously provided configuration of I18n used a complex approach to feed translations in the app, and needs to be upgraded to a cleaner workflow.&lt;/p&gt;

&lt;p&gt;The Mobile App interface in Flutter is made of several built-in widgets and custom widgets&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Built-in widgets provided Flutter API for Rapid App Development.&lt;/li&gt;
  &lt;li&gt;Custom Widgets created by Developers for specific purposes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week-8-upgrade-i18n-workflow-and-begin-working-with-mobile-app-&quot;&gt;Week 8: Upgrade I18n Workflow and Begin Working with Mobile App 📈&lt;/h2&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Upgrade I18n workflow with the more appropriate one.&lt;/li&gt;
  &lt;li&gt;Localization of built-in widgets using flutter_localizations package(package supports 80 different locales)&lt;/li&gt;
  &lt;li&gt;Localize Custom Widgets(UI of Flutter) using Intl package.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week-9-continue-localizing-custom-widgets-&quot;&gt;Week 9: Continue Localizing Custom Widgets 🚧&lt;/h2&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Create a Language Switcher using the &lt;strong&gt;locale provider package&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Continue localization in Custom Widgets.&lt;/li&gt;
  &lt;li&gt;Localize interpolated strings using concept of &lt;strong&gt;companion messages&lt;/strong&gt;.&lt;/li&gt;
  &lt;li&gt;Fix unit tests for all the Custom Widgets.&lt;/li&gt;
  &lt;li&gt;Documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I finished working on the Mobile App which required &lt;strong&gt;2400+ lines&lt;/strong&gt; of code changes. 🎉&lt;/p&gt;

&lt;h2 id=&quot;week-10-i18n-architecture-in-docsifyjs-and-final-enhancements-&quot;&gt;Week 10: I18n Architecture in DocsifyJS and Final Enhancements ✨&lt;/h2&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in DocsifyJS via a designing mechanism for loading sidebar, navbar, and markdown dynamically into the Page.&lt;/li&gt;
  &lt;li&gt;Language Switcher for DocsifyJS.&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Fixes in Rspec tests and enhancing Language switcher for Rails and Simulator capable of handling scenarios such as -&lt;/p&gt;

    &lt;ol&gt;
      &lt;li&gt;Language switching when the user is not logged in(session-based).&lt;/li&gt;
      &lt;li&gt;Language switching when the user is logged in.&lt;/li&gt;
      &lt;li&gt;Taking care that, Language switching through switcher and User Form does not conflict with each other.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;implementation-&quot;&gt;Implementation 💻&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/pull/2397&quot;&gt;I18n in CircuitVerse Main Platform (3000 lines of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/pull/2368&quot;&gt;I18n in CircuitVerse Simulator (1100 lins of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/mobile-app/pull/126&quot;&gt;I18n in CircuitVerse Mobile App (2500 lines of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerseDocs/pull/307&quot;&gt;I18n in CircuitVerse Docs (excluding markdown content - 100+ lines of code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;major-milestones-achieved-️&quot;&gt;Major MileStones Achieved ☑️&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Rails Platform.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Simulator Platform.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Mobile-App.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of CircuitVerse-Docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I felt amazing after completing my work on the different technologies and codebases during this journey! 🥳&lt;/p&gt;

&lt;h2 id=&quot;future-scope-ℹ️&quot;&gt;Future Scope ℹ️&lt;/h2&gt;

&lt;p&gt;I believe that I18n is not a time-bounded project and has a scope of continuous enhancements.&lt;/p&gt;

&lt;p&gt;Some of the major enhancements which can be done are as follows -&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Translation System for translation management. &lt;a href=&quot;https://hosted.weblate.org/projects/f-droid/#languages&quot;&gt;Example&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Localization of CircuitVerse API to generate a localized JSON response&lt;/li&gt;
  &lt;li&gt;Localization of Model Data&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;final-thoughts-&quot;&gt;Final Thoughts 💭&lt;/h2&gt;

&lt;p&gt;Firstly, I would like to thank the CircuitVerse community for giving me this amazing opportunity.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a href=&quot;https://github.com/tachyons&quot;&gt;Aboobacker MK&lt;/a&gt;, my mentor. I got opportunity to work under his guidance, during my initial contributions to the community and in GSoC’2021 as well.&lt;/p&gt;

&lt;p&gt;I had a great enhancement in my coding skills from reviews I got from mentors and during GSoC’2021 journey. cheers! 🎉&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Signing off&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Thankyou&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry><entry><title type="html">GSoC Coding Period - Week10 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week10/" rel="alternate" type="text/html" title="GSoC Coding Period - Week10 Report" /><published>2021-08-22T00:00:00+00:00</published><updated>2021-08-22T21:20:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week10-</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week10/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/post10/i18n_gsoc_cover.png&quot; alt=&quot;gsoc-final-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Today marks the end of my 10-week programming journey at CircuitVerse under Google Summer of Code.🥳&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;All the code served to community, initial reviews, improvements in existing code, blogging, weekly catchup calls with mentors and team members felt awesome!!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This blog post summarizes my work done in last week of GSoC coding period.&lt;/p&gt;

&lt;p&gt;As I have already finished my working in major 3 platforms i.e. Main Platform, Simulator, and Flutter Mobile App, it was the time to work on DocsifyJS and do relevant improvements in the previous work.&lt;/p&gt;

&lt;h2 id=&quot;mechanism-behind-i18n-for-docsifyjs-&quot;&gt;Mechanism behind I18n for DocsifyJS 💻&lt;/h2&gt;

&lt;p&gt;DoscifyJS is simple JavaScript framework, when loaded into HTML file gives theming facility to the documentation. Such project structures can be simply served using Python Simple HTTP servers.&lt;/p&gt;

&lt;p&gt;As it is a very simple structure, it is a very good practice to design general i18n mechanism without using any external tool.&lt;/p&gt;

&lt;p&gt;For this, three tasks need to be done :-&lt;/p&gt;

&lt;p&gt;1️⃣ Load NavBar and SideBar dynamically according to the language.&lt;/p&gt;

&lt;p&gt;2️⃣ Mechanism so that language switcher works well.&lt;/p&gt;

&lt;p&gt;3️⃣ Load content(Markdown) dynamically in the DOM of web page accoring to the current active language.&lt;/p&gt;

&lt;p&gt;All the above tasks can be performed simply using basic logic to workaround the concept of generating links for each file.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/post10/docsify.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week-10-i18n-architecture-in-docsifyjs-and-final-enhancements-&quot;&gt;Week 10: I18n Architecture in DocsifyJS and Final Enhancements ✨&lt;/h2&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in DocsifyJS via a designing mechanism for loading sidebar, navbar, and markdown dynamically into the Page.&lt;/li&gt;
  &lt;li&gt;Language Switcher for DocsifyJS&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Fixes in Rspec tests and enhancing Language switcher for Rails and Simulator capable of handling scenarios such as -&lt;/p&gt;

    &lt;ol&gt;
      &lt;li&gt;Language switching when the user is not logged in(session-based).&lt;/li&gt;
      &lt;li&gt;Language switching when the user is logged in.&lt;/li&gt;
      &lt;li&gt;Taking care that, language switching through switcher and user form should not conflict with each other.&lt;/li&gt;
    &lt;/ol&gt;

    &lt;h3 id=&quot;implementation-&quot;&gt;Implementation 🔄&lt;/h3&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/pull/2397&quot;&gt;I18n in CircuitVerse Main Platform (3000 lines of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/pull/2368&quot;&gt;I18n in CircuitVerse Simulator (1100 lins of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/mobile-app/pull/126&quot;&gt;I18n in CircuitVerse Mobile App (2500 lines of code)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerseDocs/pull/307&quot;&gt;I18n in CircuitVerse Docs (excluding markdown content - 100+ lines of code)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;hr /&gt;

&lt;h3 id=&quot;major-milestones-achieved--️&quot;&gt;Major MileStones Achieved  ☑️&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Rails Platform.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Simulator Platform.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of Mobile-App.&lt;/li&gt;
  &lt;li&gt;Complete Infrastructure for Internationalization of CircuitVerse-Docs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I felt amazing after completing my work on the different technologies and codebases during this journey! 🥳&lt;/p&gt;

&lt;h2 id=&quot;final-evaluations-&quot;&gt;Final Evaluations 📧&lt;/h2&gt;

&lt;p&gt;In the upcoming days, mentors will be reviewing my code and will be uploading my results on GSoC portal. Lets hope for the best🤞!!&lt;/p&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry><entry><title type="html">GSoC Coding Period - Week8 and Week9 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week-8-9/" rel="alternate" type="text/html" title="GSoC Coding Period - Week8 and Week9 Report" /><published>2021-08-17T00:00:00+00:00</published><updated>2021-08-17T21:20:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week-8-9</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week-8-9/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After finishing my work on the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Rails&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;JavaScript&lt;/code&gt; codebase, I started my work with CircuitVerse Mobile App written in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Flutter&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Flutter is widely used and popular Open Source Software Development tool and It is used to develop cross platform applications for Android, iOS, linux etc.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Despites of some of the benefits, such as rapid mobile app development, Flutter was quite in discussion for its uneasiness for internationalization (I18n).&lt;/p&gt;

&lt;p&gt;Major I18n packages provided by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Dart community&lt;/code&gt; were the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;intl&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flutter_localizations&lt;/code&gt; package. Their previous configuration of I18n uses a complex approach to feed translations in the app and needs to be upgraded to a cleaner workflow.&lt;/p&gt;

&lt;p&gt;Here is the glance of previous I18n workflow provided 👀&lt;/p&gt;

&lt;p&gt;This requires CLI commands to generate localization class generation and needs to follow the steps given below -&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Create string resources for all the strings present in app&lt;/li&gt;
  &lt;li&gt;Create AppLocalizations class and AppLocalizationsDelegate&lt;/li&gt;
  &lt;li&gt;Generate &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.arb&lt;/code&gt; files from string resources&lt;/li&gt;
  &lt;li&gt;Convert them into dart code by creating ```messages_all.dart``&lt;/li&gt;
  &lt;li&gt;Translations can be feed using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AppLocalizations.of(context).title&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was updated to more cleaner workflow as follows -&lt;/p&gt;

&lt;p&gt;Upgraded workflow will provide easy steps to provide optimal I18n support in Flutter and considered to be used 🔽&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;intl&lt;/code&gt; package and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flutter_localizations&lt;/code&gt; package with flag generate:true&lt;/li&gt;
  &lt;li&gt;Create &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;l10n.yaml&lt;/code&gt; describing path of translation directory and name of localization class.&lt;/li&gt;
  &lt;li&gt;Add localization delegates to the flutter main.dart&lt;/li&gt;
  &lt;li&gt;Create &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.arb&lt;/code&gt; files for providing translations.&lt;/li&gt;
  &lt;li&gt;Run &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flutter packages&lt;/code&gt; to trigger automated localization class generation.&lt;/li&gt;
  &lt;li&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AppLocalizations.of(context).key_name&lt;/code&gt; to provide translation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Upgraded workflow provides automated localization class generation and easy workflow to fill translations in existing translation files.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week8---upgrade-i18n-workflow-and-begin-working-with-mobile-app-&quot;&gt;Week8 - Upgrade I18n Workflow and Begin Working with Mobile App 🔄&lt;/h2&gt;

&lt;p&gt;Mobile App interface in Flutter is basically made of a number of built in widgets and custom widgets&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Built in widgets provided Flutter API for rapid App Development&lt;/li&gt;
  &lt;li&gt;Custom Widgets created by Developers for specific purposes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Upgrade I18n workflow with the more appropriate one&lt;/li&gt;
  &lt;li&gt;Localize built in widgets using flutter_localizations package(package supports 80 different locales)&lt;/li&gt;
  &lt;li&gt;Localize Custom Widgets(UI of Flutter) using Intl package&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week9---continue-localizing-custom-widgets-&quot;&gt;Week9 - Continue Localizing Custom Widgets 💻&lt;/h2&gt;

&lt;p&gt;As most of the Flutter UI is made of Custom Widgets, corresponding sections took ample amount of time for doing I18n in them.&lt;/p&gt;

&lt;p&gt;Flutter uses the concept of companion messages for interpolation, and hence I had to use companion messages wherever Interpolation was needed.&lt;/p&gt;

&lt;p&gt;Companion messages generally convert localization key names into methods and hence we can pass variables as an argument so that there is no need of breaking string.&lt;/p&gt;

&lt;p&gt;Along with this I had to find solutions for the unit tests, unit tests for localized Flutter widgets needs delegates and current locale to be defined explicitly.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Create a Language Switcher using the locale provider package.&lt;/li&gt;
  &lt;li&gt;Continue localization in Custom Widgets&lt;/li&gt;
  &lt;li&gt;Fix unit tests for all the Custom Widgets&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;A major problem here is we can’t use the I18n function outside the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BuildContext&lt;/code&gt; i.e I18n will work fine in widgets but not outside the widgets. App also contains models, services and constants which need to be localized.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Currently I am trying to find the solution for the same. ☑️&lt;/p&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html">After finishing my work on the Rails and JavaScript codebase, I started my work with CircuitVerse Mobile App written in Flutter. Flutter is widely used and popular Open Source Software Development tool and It is used to develop cross platform applications for Android, iOS, linux etc. Despites of some of the benefits, such as rapid mobile app development, Flutter was quite in discussion for its uneasiness for internationalization (I18n). Major I18n packages provided by Dart community were the intl and flutter_localizations package. Their previous configuration of I18n uses a complex approach to feed translations in the app and needs to be upgraded to a cleaner workflow. Here is the glance of previous I18n workflow provided 👀 This requires CLI commands to generate localization class generation and needs to follow the steps given below - Create string resources for all the strings present in app Create AppLocalizations class and AppLocalizationsDelegate Generate .arb files from string resources Convert them into dart code by creating ```messages_all.dart`` Translations can be feed using AppLocalizations.of(context).title This was updated to more cleaner workflow as follows - Upgraded workflow will provide easy steps to provide optimal I18n support in Flutter and considered to be used 🔽 Add intl package and flutter_localizations package with flag generate:true Create l10n.yaml describing path of translation directory and name of localization class. Add localization delegates to the flutter main.dart Create .arb files for providing translations. Run flutter packages to trigger automated localization class generation. Use AppLocalizations.of(context).key_name to provide translation. Upgraded workflow provides automated localization class generation and easy workflow to fill translations in existing translation files.</summary></entry><entry><title type="html">GSoC Coding Period - Week6 and Week7 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week6-7/" rel="alternate" type="text/html" title="GSoC Coding Period - Week6 and Week7 Report" /><published>2021-08-01T00:00:00+00:00</published><updated>2021-08-01T21:20:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week6-7</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week6-7/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Completing my Ruby on Rails codebase work, I started working with JavaScript coded CircuitVerse Simulator during these two weeks 💻 .&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The simulator is currently integrated into Rails using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;WebPacker gem&lt;/code&gt; to deliver JavaScript on the frontend and Ruby as well.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;We cannot use Rails I18n in Simulator as individually it was a node-based (ES6) product. As decoupling of Simulator is going on in parallel, I only had to work on JS files served by WebPacker and not interface of Simulator written in Ruby ERB template&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The simulator structure is divided as follows ⬇️&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Configuration files in simulator/src along with third-party npm packages.&lt;/li&gt;
  &lt;li&gt;Digital Circuit elements in form of modules (General modules, Sequential modules and Testbench modules).&lt;/li&gt;
  &lt;li&gt;Relevant tools like themers, hotkey binders (to run custom shortcuts through the keyboard), and data folder handling project-based scenarios.&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week6---localizing-configuration-files-&quot;&gt;Week6 - Localizing Configuration files 📁&lt;/h2&gt;

&lt;p&gt;In total there were 36 configuration files written in JavaScript, which I had to check as well as localize without breaking any piece of code.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in Simulator controls interface in UX.js&lt;/li&gt;
  &lt;li&gt;I18n in Simulator Guide in tutorials.js&lt;/li&gt;
  &lt;li&gt;I18n in Simulator functionalities such as Verilog, SubCircuits, CombinationalAnalysis etc.&lt;/li&gt;
  &lt;li&gt;Completing I18n and testing in all the remaining 36 configuration files and functionalities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;week7---localizing-circuit-modules-and-some-basic-services-️&quot;&gt;Week7 - Localizing Circuit modules and some basic services ☑️&lt;/h2&gt;

&lt;p&gt;Here I worked with element modules, hotkey binders, themers, testbench and sequential circuit element modules&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I18n in 50 Circuit modules and a total of 17 sequential circuit element modules and testbench as well.&lt;/li&gt;
  &lt;li&gt;I18n in themers and hotkey binders&lt;/li&gt;
  &lt;li&gt;I18n in mutable properties of Circuit Elements (If Any)&lt;/li&gt;
  &lt;li&gt;I18n in configuration handling Current Project Data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, some problems encountered in themers and hotkey binders are that they render JavaScript object keys directly to represent the corresponding field names that can’t be touched as it breaks the back-end package.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;In the end, I finished working on the Simulator which required 800+ code changes and started working with Flutter based Mobile App 📱.&lt;/p&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html">Completing my Ruby on Rails codebase work, I started working with JavaScript coded CircuitVerse Simulator during these two weeks 💻 . The simulator is currently integrated into Rails using WebPacker gem to deliver JavaScript on the frontend and Ruby as well. We cannot use Rails I18n in Simulator as individually it was a node-based (ES6) product. As decoupling of Simulator is going on in parallel, I only had to work on JS files served by WebPacker and not interface of Simulator written in Ruby ERB template The simulator structure is divided as follows ⬇️ Configuration files in simulator/src along with third-party npm packages. Digital Circuit elements in form of modules (General modules, Sequential modules and Testbench modules). Relevant tools like themers, hotkey binders (to run custom shortcuts through the keyboard), and data folder handling project-based scenarios.</summary></entry><entry><title type="html">GSoC’2021 - Phase One Evaluations</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/phase-one-evaluations/" rel="alternate" type="text/html" title="GSoC’2021 - Phase One Evaluations" /><published>2021-07-17T00:00:00+00:00</published><updated>2021-07-17T21:17:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/phase-one-evaluations</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/phase-one-evaluations/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This blog report summarizes my work which was done during the first phase of &lt;strong&gt;&lt;em&gt;Google Summer of Code 2021&lt;/em&gt;&lt;/strong&gt; coding period. First phase of GSoC’2021 was started from June 7 and officially end on July 12.&lt;/p&gt;

&lt;h3 id=&quot;my-project-details-&quot;&gt;My Project Details 📋&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;a href=&quot;https://summerofcode.withgoogle.com/projects/#6365426910494720&quot;&gt;Internationalization&lt;/a&gt; mainly aims at creating I18n architecture for the CircuitVerse platforms in order to localize or translate them into multiple languages.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My aim during GSoC is to create I18n infrastructure so that CircuitVerse platforms can be internationalized into global languages and platforms can be emerged as a &lt;strong&gt;&lt;em&gt;Global Platform&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;During GSoC my aim is to create &lt;strong&gt;&lt;em&gt;I18n architecture&lt;/em&gt;&lt;/strong&gt; for &lt;strong&gt;&lt;em&gt;5 major technologies&lt;/em&gt;&lt;/strong&gt; used in different CircuitVerse platforms.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Ruby on Rails (CircuitVerse Main Platform)&lt;/li&gt;
  &lt;li&gt;JavaScript (CircuitVerse Simulator)&lt;/li&gt;
  &lt;li&gt;Jekyll (CircuitVerse Interactive Book)&lt;/li&gt;
  &lt;li&gt;Flutter (CircuitVerse Mobile App)&lt;/li&gt;
  &lt;li&gt;DocsifyJs (CircuitVerse Docs)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;phase1-report--&quot;&gt;Phase1 Report :-&lt;/h3&gt;

&lt;h4 id=&quot;week-1-turning-coffee-into-code----&quot;&gt;Week 1: Turning Coffee into Code (☕ - 💻)&lt;/h4&gt;

&lt;p&gt;In this week, I started setting up fresh repositories for &lt;strong&gt;&lt;em&gt;Rails codebase&lt;/em&gt;&lt;/strong&gt; along with &lt;strong&gt;&lt;em&gt;linters&lt;/em&gt;&lt;/strong&gt; and my favourite extension &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RuboCop&lt;/code&gt; for Rails.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Adding locale to CircuitVerse API endpoint.&lt;/li&gt;
  &lt;li&gt;Update JSON Schema and validate RSpec tests to adapt new changes.&lt;/li&gt;
  &lt;li&gt;Generate array of locale codes following ISO 639-1 standards (130+ locales).&lt;/li&gt;
  &lt;li&gt;Advancement in Current I18n setup in Rails.&lt;/li&gt;
  &lt;li&gt;Localize Teachers and Simulator module (partially).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;week-2-begin-with-localizing-circuitverse-modules&quot;&gt;Week 2: Begin with Localizing CircuitVerse Modules&lt;/h4&gt;

&lt;p&gt;In my 2nd week, I started preparing for a bunch of localization rules so that consistency in I18n is maintained throughout the codebase by me as well as by future contributors.&lt;/p&gt;

&lt;p&gt;For this task, I had to take proper overview of the codebase and design module specific rules for running quality I18n processes throughout the module.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Preparing localization Rules.&lt;/li&gt;
  &lt;li&gt;i18n-js : First I18n architecture for Simulator (Depends on Ruby).&lt;/li&gt;
  &lt;li&gt;Localization of CV Modules - Views (10 modules localized).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;week-3-continue-working-with-circuitverse-modules&quot;&gt;Week 3: Continue working with CircuitVerse Modules&lt;/h4&gt;

&lt;p&gt;In this week, I worked on localization process of CV modules and other aspects of project.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;i18n-js : Second I18n architecture for Simulator (Depends on Rails I18n Mapping).&lt;/li&gt;
  &lt;li&gt;Localization of CV Modules - Views (13 modules localized).&lt;/li&gt;
  &lt;li&gt;Localize string oriented gems commentator, activity notifications, mailers, paginators etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;week-4-working-on-library-documentation-and-modules&quot;&gt;Week 4: Working on Library, Documentation and Modules&lt;/h4&gt;

&lt;p&gt;4th week consisted of working on major aspects such as library, documentation and modules of project.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;banana-i18n : backend independent I18n architecture for Simulator (Finalized and Merged).&lt;/li&gt;
  &lt;li&gt;Official documentation written on CircuitVerse wiki pages.&lt;/li&gt;
  &lt;li&gt;Localization in controllers and form attributes (All accomplished).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;week-5-starting-work-on-simulator-and-mobile-app&quot;&gt;Week 5: Starting work on Simulator and Mobile App&lt;/h4&gt;

&lt;p&gt;In my final week, I started working on simulator and mobile app.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Localize &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CombinationalAnalysis.js&lt;/code&gt;.&lt;/li&gt;
  &lt;li&gt;Design Language Switcher and I18n test Suite for Rails.&lt;/li&gt;
  &lt;li&gt;Start of initial work in Mobile App.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;implementation&quot;&gt;Implementation&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://gist.github.com/pavanjoshi914&quot;&gt;Research based documentation for I18n&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/issues/2288&quot;&gt;Curated list for all I18n Pull Requests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/wiki/Internationalization-%28I18n%29&quot;&gt;Documentation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/CircuitVerse/CircuitVerse/wiki/I18n-Localization-Rules-%28Rails%29&quot;&gt;Module specific I18n Rules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;additional-information&quot;&gt;Additional Information&lt;/h3&gt;

&lt;p&gt;All the commitments I have made for phase-1 of the coding period had been achieved. Instead of CircuitVerse Docs, I have started my work with Mobile App in parallel and I18n for Docs will be done in the ending weeks as it becomes ready for I18n.&lt;/p&gt;

&lt;h3 id=&quot;blog-posts&quot;&gt;Blog Posts&lt;/h3&gt;

&lt;p&gt;I have also created this blog covering my GSoC journey as well as my preparation during pre-GSoC, in order that future GSoC aspirants receive an advantage from it .&lt;/p&gt;

&lt;p&gt;Kindly check other posts! &lt;a href=&quot;https://pavanjoshi914.github.io/Blog/&quot;&gt;Blog&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;final-thoughts&quot;&gt;Final Thoughts&lt;/h3&gt;

&lt;p&gt;I would like to thank the CircuitVerse community for providing me this amazing opportunity. Open Source contributions at CircuitVerse helped me a lot in enhancing my coding skills and soft skills as well.&lt;/p&gt;

&lt;p&gt;Special thanks to my mentors &lt;a href=&quot;https://github.com/tachyons&quot;&gt;Aboobacker MK&lt;/a&gt; and &lt;a href=&quot;https://github.com/Nitish145&quot;&gt;Nitish Aggarwal&lt;/a&gt;. It was a great learning experience for me to work with them during phase one.&lt;/p&gt;

&lt;p&gt;Looking forward for an exciting phase two!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Thankyou&lt;/p&gt;
&lt;/blockquote&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry><entry><title type="html">GSoC Coding Period - Week5 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week5/" rel="alternate" type="text/html" title="GSoC Coding Period - Week5 Report" /><published>2021-07-12T00:00:00+00:00</published><updated>2021-07-12T21:17:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week5</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week5/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Currently, I am in the 5th week of the coding period before GSoC phase one evaluations. During this week, I had a relaxing time, as major commits done for phase one evaluations were already completed.&lt;/p&gt;

&lt;p&gt;We had a slight change in the timeline for this week. Instead of working on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Docsify.js&lt;/code&gt; framework, I started working with Simulator and Mobile App. Along with this, I had to focus on preparing my code for Phase one evaluations.&lt;/p&gt;

&lt;h4 id=&quot;week-5-starting-work-on-simulator-and-mobile-app&quot;&gt;Week 5: Starting work on Simulator and Mobile App&lt;/h4&gt;

&lt;p&gt;Major portions of Ruby code was already covered and consequently, I started working on Simulator and Mobile App.&lt;/p&gt;

&lt;p&gt;Following tasks were achieved during this week ⏬ :-&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Start localizing JavaScript-based Simulator Code.&lt;/li&gt;
  &lt;li&gt;Design Language Switcher and I18n test Suite for Rails.&lt;/li&gt;
  &lt;li&gt;Start of initial work in Mobile App.&lt;/li&gt;
  &lt;li&gt;Working on I18n documentation&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Waiting for the results of phase one evaluations ahead!!!&lt;/p&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry><entry><title type="html">GSoC Coding Period - Week3 and Week4 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week3-4/" rel="alternate" type="text/html" title="GSoC Coding Period - Week3 and Week4 Report" /><published>2021-07-04T00:00:00+00:00</published><updated>2021-07-04T21:17:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week3-4</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week3-4/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hey Readers!👋 The first two weeks of coding period was a great learning experience for me, along with positive feedbacks by mentors on my pull requests.🤩😎&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;&lt;strong&gt;In that duration, I created the I18n infrastructure for the first 10 CV modules along with some parallel coding work and experimentations.&lt;/strong&gt;&lt;/em&gt; 🏁&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week-3-working-with-cv-modules---ruby-gems---mailers-&quot;&gt;Week 3: Working with CV Modules - Ruby Gems - Mailers 💻&lt;/h2&gt;

&lt;p&gt;It was the beginning of completing my work on the remaining major modules. Some of the modules like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;logix&lt;/code&gt; took 500 lines of code changes.&lt;/p&gt;

&lt;p&gt;It was quite hard to understand and get familiar with part of codebase I haven’t visited before. Unfamiliar modules took an ample amount of time in understanding Ruby code and JavaScript based logic along with running quality I18n processes on them.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working with modules&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;This week I completed my work in 6 major modules along with provisional completion of the remaining 7 modules.&lt;/li&gt;
      &lt;li&gt;Testing and experimentation will be carried in upcoming weeks before the final deployment to the CircuitVerse Servers.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working with gems&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;I also had a strong hand on understanding the structure of different gems such as &lt;strong&gt;&lt;em&gt;devise&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;activerecord error messages&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;commentator&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;activity notifications&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;mailers&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;paginators&lt;/em&gt;&lt;/strong&gt; etc.&lt;/li&gt;
      &lt;li&gt;I also got introduced with the awesome gem &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MailCatcher&lt;/code&gt; which can catch mails send locally and can show us direct results.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At the end of this week, I finally completed my major work on all 23 modules which is a single modules on its own 💠 3 PRs merged and current two under review.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week-4-banana-i18n-integration---other-modules-&quot;&gt;Week 4: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-I18n&lt;/code&gt; Integration - Other Modules ⏬&lt;/h2&gt;

&lt;p&gt;During this week, I felt relaxed as major work required was already done locally. I started working on &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-I18n&lt;/code&gt; JavaScript library along with working on controllers, helpers etc on Rails side.&lt;/p&gt;

&lt;p&gt;Before &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-I18n&lt;/code&gt; I proposed two integrations of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;i18n-js&lt;/code&gt; in different ways. Second integration still landed with dependency of Rails &lt;strong&gt;&lt;em&gt;I18n mapping&lt;/em&gt;&lt;/strong&gt; 😶😶.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-I18n&lt;/code&gt; library &lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-I18n&lt;/code&gt; library is a Pure JavaScript form of Jquery-I18n library developed by wikipedia. They also provide React and Vue bindings of the library for use in specific environments.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;In our case JavaScript modules are statically compiled by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;webpacker&lt;/code&gt; and are served on frontend. As &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banana-i18n&lt;/code&gt; is written purely in JavaScript it was a good choice at first glance.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Basically this library allows us the instantiation of a constructor which can hold an object named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;messages&lt;/code&gt; which when passed to the constructor, the library interprets it through their scripts and provides I18n support for JS based modules.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Working with Loading Mechanism &lt;/strong&gt;&lt;/p&gt;

    &lt;p&gt;Oops!😬 Library don’t provide their own &lt;strong&gt;&lt;em&gt;Asynchronous mechanism&lt;/em&gt;&lt;/strong&gt; to load JSON in the library, Here I had to implement &lt;strong&gt;&lt;em&gt;loading mechanism&lt;/em&gt;&lt;/strong&gt; by myself.&lt;/p&gt;

    &lt;p&gt;Here I tested three Asynchronous loading mechanisms ⤵️&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Use of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Fetch API&lt;/code&gt; in Web Environment&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Keeping configuration in Web Environment and implement &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CommonJs&lt;/code&gt; methods via &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RequireJs library&lt;/code&gt;&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ES6&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CommonJs&lt;/code&gt; environment provided by webpacker&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Selecting Loading Mechanism &lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;First method is a very basic method but uses &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;HTTP calls for Asynchronous loading&lt;/code&gt;. This won’t play nicely in offline apps hence was eliminated after discussion with mentors.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Second method depends on external dependency, consequently I tried to avoid using this method.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Third method seemed more promising as dynamic loading is also applicable in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CommonJs Environment&lt;/code&gt;, however &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ESLint&lt;/code&gt; yelled at me for my approach frequently.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Finally I decided to go with CommonJs methods to dump JSON files into the library, and basic JavaScript to switch between Default language JSON and Current locale JSON.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If a JSON for the current locale is not available, I had to load default JSON, which can be done easily using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;try{}.. catch{}&lt;/code&gt; JavaScript syntax.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here we can &lt;strong&gt;&lt;em&gt;instantiate default JSON&lt;/em&gt;&lt;/strong&gt; in object directly and use &lt;strong&gt;&lt;em&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;try{}... catch{}&lt;/code&gt;&lt;/em&gt;&lt;/strong&gt;  for current locale JSON, even if asynchronous loading fails for current locale, object will already have a default json file and library will be good to go in any exceptional case.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;what-next-&quot;&gt;What Next ✨&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;After the end of the upcoming week, Phase one Evaluations will be held from 12 July onwards. According to GSoC timeline mentors will review code and will pass and fail students after analysing the work they had done till now.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I have completed almost all the tasks that I had committed before Phase one evaluations.🥳🥳 In the upcoming week I will design a test suite for I18n, language switchers and prepare for my phase one evaluations. ☑️&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;I will also start working parallely on Mobile App and Simulator as well.◾✍️&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry><entry><title type="html">GSoC Coding Period - Week1 and Week2 Report</title><link href="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week1-2/" rel="alternate" type="text/html" title="GSoC Coding Period - Week1 and Week2 Report" /><published>2021-06-20T00:00:00+00:00</published><updated>2021-06-25T21:17:02+00:00</updated><id>https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week1-2</id><content type="html" xml:base="https://pavanjoshi914.github.io/Blog/gsoc/gsoc-coding-period-week1-2/">&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/i18n_gsoc_cover.png&quot; alt=&quot;i18n-gsoc-cover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Hey folks! :wave: GSOC coding period was officially started on 7 June :man_technologist: :man_technologist:. After the community bonding period this is my first article on coding period, sharing my first two weeks coding period experience with CircuitVerse.&lt;/p&gt;

&lt;h2 id=&quot;my-project-details-&quot;&gt;My Project Details 📋&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;&lt;em&gt;Internationalization mainly aims at creating I18n architecture for the different platforms in order to localize or translate them in multiple languages.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In short, my aim during GSoC is to make &lt;strong&gt;&lt;em&gt;CircuitVerse&lt;/em&gt;&lt;/strong&gt; platform a &lt;strong&gt;&lt;em&gt;Global Platform&lt;/em&gt;&lt;/strong&gt; so that it can be introduced at global level. It will help both Indian as well as foriegn clients to use it efficiently and make the most out of it.&lt;/p&gt;

&lt;p&gt;During GSoC I will be creating &lt;strong&gt;&lt;em&gt;I18n architecture&lt;/em&gt;&lt;/strong&gt; for &lt;strong&gt;&lt;em&gt;5 major technologies&lt;/em&gt;&lt;/strong&gt; used in different CircuitVerse platforms. &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;:one: Rails (CV main platform) &lt;br /&gt;
:two: JavaScript (CV simulator) &lt;br /&gt;
:three: Jekyll (CV interactive book) &lt;br /&gt;
:four: Flutter (CV mobile app)&lt;br /&gt;
:five: DocsifyJs (CV docs)&lt;br /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;week-1-turning-coffee-into-code----&quot;&gt;Week 1: Turning Coffee into Code (☕ - 💻)&lt;/h2&gt;

&lt;p&gt;In this week, I started setting up fresh repositories for &lt;strong&gt;&lt;em&gt;Rails codebase&lt;/em&gt;&lt;/strong&gt; along with &lt;strong&gt;&lt;em&gt;linters&lt;/em&gt;&lt;/strong&gt; and my favourite extension &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;RuboCop&lt;/code&gt; for Rails.&lt;/p&gt;

&lt;p&gt;Prior to the coding period, the complete project was divided into multiple tasks. Among them, following tasks were acheived during Week 1.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Adding locale to CircuitVerse API endpoint &lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;CircuitVerse API exports ruby objects in form of JSON via data serialization techniques using &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;FastJsonapi&lt;/code&gt;. Mobile app renders such data to show content of main platform in mobile app.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Adding locale value and updating JSON Schema of User API will help in using same locale value used by user in main platform in mobile app also.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Using ISO standards for locale on frontend&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Next task was to convert locale acronymns into full names following &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ISO 639-1 standard language codes&lt;/code&gt;. and integrating them with CV forms. This is helpful in picking up desired language almost instantly.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt; Initial I18n setup in Rails&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;Basic I18n setup to make use of nested directory structure&lt;/li&gt;
      &lt;li&gt;Fixing rspec test to adapt new changes and updating JSON schema for users as well as project API.&lt;/li&gt;
      &lt;li&gt;Other relevant tasks including prepation of yml directory structure, translating page in alternate locale, etc.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;My first PR was merged with the awesome feedback by mentors 🤩&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://pavanjoshi914.github.io/Blog/assets/images/gsoc/post4/feedback.png&quot; alt=&quot;search by category&quot; /&gt;&lt;/p&gt;

&lt;p&gt;During this week, I also had a call with my mentors for discussing I18n architecture for Simulator.&lt;/p&gt;

&lt;h2 id=&quot;week-2-begin-with-localizing-cv-modules-&quot;&gt;Week 2: Begin with Localizing CV Modules ⏬&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt; Preparing localization Rules &lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;2nd week started with preparing bunch of localization rules for CV Rails platform and document them so that consistency in I18n is maintained throughout the codebase by myself as well as by future contributors.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;This includes designing module specific rules by having proper overview of codebase.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt; Introducing first I18n architecture for Simulator &lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;I decided to go with famous &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;i18n-js&lt;/code&gt; library for giving I18n architecture to Simulator. Integration worked great in perspective of I18n but failed in terms of dependency on Rails.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;I18n-js is present in form of gem as well as npm library but module they are using are still written in ruby and requires erb loader with webpacker for its integration.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;CV simulator needs backend independent architecture so that it can be decoupled in future and integrated in other platforms such as mobile app.&lt;/p&gt;

        &lt;p&gt;Currently, I am working further and doing more research on proper backend independent JS libarary for Simulator.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Localization of CV Modules&lt;/strong&gt;&lt;/p&gt;

    &lt;ul&gt;
      &lt;li&gt;
        &lt;p&gt;Week 2 was the beginning of localizing 23 modules. Out of which 10 modules where localized in 2nd week.&lt;/p&gt;
      &lt;/li&gt;
      &lt;li&gt;
        &lt;p&gt;Pushing a bunch of changes in single PR is irrelevant and also hard to review for mentors. Regarding this, I decided to create different PR for each module. Hence a proper workflow of 2 PR’s was created for review and merge at a time.&lt;/p&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Some of the aspects where more care is to be taken while doing I18n in modules were&lt;/strong&gt;  🔷&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Use of proper designed module specific rules.&lt;/li&gt;
  &lt;li&gt;Taking care that logic doesn’t break while introducing I18n&lt;/li&gt;
  &lt;li&gt;Use of powerful features of Rails I18n API.&lt;/li&gt;
  &lt;li&gt;Directory Structure&lt;/li&gt;
  &lt;li&gt;Key-value pair naming conventions along with interpolation and pluralization.&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;what-i-learned-&quot;&gt;What I learned 🎯&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;More exposure to API and data serialization&lt;/li&gt;
  &lt;li&gt;Creation of localization rules to give best possible infrastructure.&lt;/li&gt;
  &lt;li&gt;Working with RSpec tests and behaviour driven development&lt;/li&gt;
  &lt;li&gt;Experience of integrating different JavaScript libraries&lt;/li&gt;
  &lt;li&gt;Designing backend independent I18n solutions.&lt;/li&gt;
  &lt;li&gt;Core knowledge of I18n and about localization of modules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more, stay connected!!&lt;/p&gt;

&lt;p&gt;Best Regards ~ Pavan&lt;/p&gt;</content><author><name>Pavan Joshi</name></author><category term="GSoC" /><category term="GSoC" /><summary type="html"></summary></entry></feed>