Aman Singla - Gsoc'19 Final Report
Project developed during google summer of code with the objective of creating an online interactive guide for digital logic design.
Outcome of Gsoc19 project
The primary goal which was to develop an open source book with quality content which teaches digital logic design is achieved. It enable's students to learn digital design by interacting with circuits,truth table and other interactive elements as they proceed through the book.The professors and students all over the world can read and contribute to the same.
A total of 130+ commits were made by me
Overview of Interactive book
The Interactive book have two components in it.
It include's quality content which would be gathered from various books (primarily from ‘Digital Design’ by Morris Mano as its copyright has expired and is in public domain) and online material. Basic notes have already been prepared to reference the aforementioned book and are attached in the table below.
There would be two types of Interactions.
- Circuit Interactions- This include designing optimal circuits which would help to clearly understand the logic. The student would be able to clearly detect the variation of output with the change in input via these circuits. With each Interaction module, there would be a set of instructions that would guide the user to see the desired changes.
I have designed more than 20 Circuit Interactions which could be seen in the book.
- Module Specific Interactions- This include interaction which are designed for individual module like kmap simulator , truth table generatoretc.
Here are the module Specific Interactions I designed.
Interactive Logic Gates
I designed two basic application of digital logic design mentioned below.
Representing a Character
Truth Table Genrator Interaction
This is the most interesting Interaction of all and took me the longest time. With 2k+ js lines, It clearly shows how the k-maps are used in the digital logic. K-maps for variables upto 8 could be drawn from this interaction.
Flip flop Interaction
Contribution(before getting selected)
#319 Pgsearch(search on projects) Previously we were using google custom search which doesn't do a very good job. This search would search over project names and descriptions.
#297 Sidekiq I have dockerized sidekiq. Also added the Sinatra gem which is needed for the Sidekiq web UI (the dashboard is shown below)
#290 Fix_Scroll Added a scroll to combinational analysis (Tools->combinational analysis) when the number of inputs is high as earlier, the truth table was no longer viewable
#265 Empty_Project Saving an empty project produced an error. When the circuit is empty, then data_url is data:,, it otherwise is data:image/jpeg;base64,<actual_data>
#232 Implement Subscriptions Added the functionality of subscriptions to comments. This was done through gem Commontator. More to add I even changed the inbuilt functioning of the gem.
#247 Implement Voting and Mentions Have implemented voting (likes and dislikes) on comments along with mentions in the comment.
#239 Drop Mysql support Supporting two databases causes unnecessary hurdles in development. We decided to drop Mysql support and just use PostgreSQL in all environments
#187 Adding watermark to iframes A watermark "Made with CircuitVerse" is displayed on iframes on clicking to which directs to a new page in the simulator.
#298 Watermark_clickable_fix The clickable area was hidden under the simulation area. Setting the z-index solved the problem
#303 Watermark and tooltip overlap issue Changed the position of tooltip from the bottom right to bottom left.
#178 Fixing Dropdown Position Added a bootstrap class that fixes the positioning
#164 Css correction of alert in case of invalid login Css issues related to positioning were corrected.
#351 Issue raised to Implement Elastic Search Provided a step by step guide + Resources to implement elastic search.
#356 Enable edit and delete for all the comments. A quick fix in commontator.rb enabling the user to delete and edit their previous comments.
#113 Added documentation for saving projects Added documentation for saving the project both offline and online. It also includes the importance and usage of tags in online saving.
#114Added documentation for forking projects Added documentation for forking the project. Tried to explain what is a fork and when do we use it w.r.t CircuitVerse.
#115Added documentation Collaborations Explained what do we mean by collaborations in CircuitVerse Also, Explained how we can implement collaborations.
#116Typo+Grammar+Spaces in the entire repo Went through the entire repo and found a ton of mistakes. Was able to detect 35+ mistakes.