Summer of Code/2015/Abhishek

About Me

What is your name?

Abhishek Kaushik

What is your email address?
kabhi2104@gmail.com

What is your Sugar Labs wiki username?
kabhi2104

What is your IRC nickname on irc.freenode.net?
Abhishek

What is your first language? (We have mentors who speak multiple languages and can match you with one of them if you'd prefer.)
English

Where are you located, and what hours (UTC) do you tend to work? (We also try to match mentors by general time zone if possible.)
Location: Deoghar, India

Time Zone: UTC + 5:30 (Indian Standard Time)

Working hours: 13:00 to 24:00 UTC (Flexible)

Have you participated in an open-source project before? If so, please send us URLs to your profile pages for those projects, or some other demonstration of the work that you have done in open-source. If not, why do you want to work on an open-source project this summer?
I am new to Open Source. However i have earned a little contribution to an open source organisation, Code for India.

1.Code for India Github Handle: @stndlkr200
2.Mentor for Govt. Project                  

Education is something which is very close to my heart. Sugar labs is an outstanding organisation. I am excited by each effort this organisation takes for child education. I came to know about sugar labs through OLPC laptops which i want in Govt. schools of New Delhi for kids. Gsoc 15 was few months ahead, so realized to finish something cool for kids in summer & contribute to Sugar labs as well.

About my project

What is the name of your project?
PhysicsJS and DimensionJS (Javascript port of Physics and Dimensions activities)

Describe your project in 10-20 sentences. What are you making? Who are you making it for, and why do they need it? What technologies (programming languages, etc.) will you be using?
PhysicsJS and DimensionJS are Javascript ports of Sugar's Physics & Dimensions activities. When Physics is a natural playground and a physical world simulator,Dimensions is a pattern matching game-'a wonderful tool to test observable skills' of students.

I have divided PhysicsJS development into 3 phases:

1. Making a Creatable Physics which is similar to a Paint Program and this section will be same as python version of our physics activity.

2. Developing Visual Physics 3. Developing Physics Quiz.

One Additional feature would be to let user drop their own physics simulator to run PhysicsJS. Further i am planning to cast a comparison model of how well users model does vs observed data.

DimensionJS would be same as python version with bunch of smart behaviours of Robot. As said, Dimensions encourages observable skills of users, i will try mostly to make Dimensions as smart as possible.I have good skills in Data structures & Algorithms. This would help me smartly scale the difficulty levels of Dimension based on user smartness.

Education has to be collaborative & competitive. Physics & Dimensions are nice attributes to these senses. They not only let you imagine physical world eye to eye & match pattern at first place, they also provide a progression of tools for users such that they can go from simple to rich interactions with the powerful ideas in computation. I believe these projects will head to a big success in future.

Javascript is the heart of entire develoment this year. I would build above already available Sugars's modular web-activity template. Further i would use better tools or simulators for precise & perfect collisions or other physics behaviour as well, e.g. Box2djs,Matterjs etc.

What is the timeline for development of your project? The Summer of Code work period is from May 19 - August 22; tell us what you will be working on each week. (As the summer goes on, you and your mentor will adjust your schedule, but it's good to have a plan at the beginning so you have an idea of where you're headed.) Note that you should probably plan to have something "working and 90% done" by the midterm evaluation (27 June); the last steps always take longer than you think, and we will consider cancelling projects which are not mostly working by then.

Weeks Expected Tasks
April 28 - May 8 Discussing the core Functionalities & Features of PhysicsJS & DimensionJS with my mentor Walter. Conclude the expected features.
May 10 Document a brief Report of the project features & implementation details discussed above & send it to my mentor for a quick review.
May 10-May 13 Workout on design aspects of both Physics & Dimensions. Keep the design & UI/UX aspects ready. Get approved from Walter.
May 14-May 24 Create a basic Paint Environment (Physics Project) for Physics: Add following Tool Buttons that exist in current python version.

1.Draw-Lets you draw any shape by clicking & holding.

2.Circle-Lets you draw circle of any arbitrary radius.

3.Triangle-Equilateral Triangles of any size.

4.Box-Rectangles of any size.

5.Polygon-N edged polygon.

6.Grab-Used to drag existing objects on Screen with Mouse or Arrow Keys.

7.Motor-Add motors to object that is used to drive it with rotation once object is pinned.

8.Pin-Used to pin any shape on screen.If you impulse to object, it would rotate about the pin

9.Joint-Used to connect two objects with a rod.

10.Chain-Used to connect two objects via a flexible chain.

11.Palette Menu-To adjust properties of object like Mass,Bounciness,Friction. Also add palette menu for Motor & Chain.

May 25 - May 30 Add physics to above constructions similar to python version.For example: If a circular object drawn is released and falls over a rectangular object then collision

should be behavioural. I learnt box2d js a few days ago and currently strengthening my concepts into it to add physics robustly to above constructions.

June 15 Optimization of my code and give a final presentation of Creatable physics ( Physics Project Section) i.e "Physics Paint Program" to my mentor.

This Physics will match to current python version.

June 17 Discuss with Walter the other two plans of mine:

1.Visual Physics (Physics Lab): This section has basic real life physics simulation."Ideas to try" will be my first priority to for this section.

This section would encourage students to understand nature phenomenon beautifully and imagine physics eye on eye.

2.Answerable Physics (Physics Quiz): This section has a Quiz room with every question based on a physical simulation.

Users answer the questions and run simulation to check correct answer. Scoreboard to be made global & could be shared among schools to organise

sugar physics camps or quizzes across educational centers.

June 17 Document the above 2 idea and send it to Walter for a brief review. Keep the document in my stack & start Dimensions for now.
June 18- 20 Prepare a workflow of Prime Dimensions,Word Dimensions & Pattern Dimensions.

Plan out the role of Robot to make sure cards are delivered to kids as per aspired difficulty level.

June 20-26 Finish one out of three levels. Write a Scalable Code to make sure levels can be extended to any count in future.

Also Add Journal support to make sure game states are well recorded.

June 27 Apply for Mid Term Evaluation
June 28-June 29 Break if allowed. I will go for a day trip.
June 30-July 17 Finish Dimensions. Also Add Palette for category of cards. Work on increasing intelligence of Robot. Give it a finishing touch.

Take a quick review from Mentor & improvise if needed in a day or 2.

July 18-July 30 Work on Visual Physics. Adding Idea's to try simulations to Physics.
July 31-Aug 5 Code Physics Quiz Section. Plan to make 10-15 such Quizzes.
Aug 6-Aug 10 Wrap up optimization & UI improvements to Dimensions.
Aug 12 - Aug 20 Wrap up optimization & UI improvements to Physics.
August 22 Get Walter Quick Review.
Aug 23-Aug 25 Implement Mentor's suggestions if any. Write up documentation & wiki for PhysicsJS & DimensionJS
August 27-28 Organise the entire code & host all demos on relevant sugar domains.

Convince us, in 5-15 sentences, that you will be able to successfully complete your project in the timeline you have described. This is usually where people describe their past experiences, credentials, prior projects, schoolwork, and that sort of thing, but be creative. Link to prior work or other resources as relevant.

  • Gsoc is the top priority in Summer. No prior commitments as such.
  • Familiar with most of the Sugar activities. Physics & Dimensions at top. Have revised the codebase as well, Familiar with Git. These prior knowledge would up speed my coding.
  • Can freely work 40-45 hrs a week during my vacation (May 12-July 10) & 30-35 hrs a week during college days.
  • Prior experience with Javascript,C++,Data Structures,Algorithms,Python(Basics),Web Optimization,Version Control.
  • I have led number of projects in past & fortunately have been successful to finish them. So i am confident to finish these as well.


Relevant Projects in Past:
  • Made Pseudo 3d Game when i started learning Javascript. **Use Chrome.
Vengeance Game
Pseudo 3d Game Demo
  • Made Pragyan OC App for College Techfest.
 Techfest App
  • Made few educational puzzles & Games under Sugarlabs Hack.
 Demos of Sugarlabs Hack
  • Other simple contributions & Hacks on my github
 Others

You and the community

If your project is successfully completed, what will its impact be on the Sugar Labs community? Give 3 answers, each 1-3 paragraphs in length. The first one should be yours. The other two should be answers from members of the Sugar Labs community, at least one of whom should be a Sugar Labs GSoC mentor. Provide email contact information for non-GSoC mentors.
My Opionion: Sugar believes that "Everyone is a teacher and a learner". My projects Physics & Dimensions would be one of the best available tools for learners and teachers. Around 3 Million Children are sugar users. We want Sugar and Sugar activities freely and readily available to learners everywhere, hence web ports are a dire need saying web platform are a faster & cheapest. Kids at any corner of world would be able to learn Physics practically and Dimensions to increase their observational skills that helps them think quickly & enrich their mental skills.

Walter: The Physics activity is one of the more popular Sugar activities. However, it is getting harder to maintain since the core libraries it is based on are deprecated. A fresh start is warranted.  Migrating to JS makes sense because (1) there are some well supported libraries and (2) there is the opportunity to import data from real-world sources in a web-based approach. Looking forward to seeing what you come up with.

Gonzalo: I think a open ended physics emulator activity, with a simple but powerful interface and a few clever examples the kids can use and modify would be a great addition to Sugar.There are good libraries for JS to do it, and will solve the limitations we currently have with our actual pygame implementation.

'
'
What will you do if you get stuck on your project and your mentor isn't around?

If i am stuck i always like to move on and keep the doubt in my stack. Will produce it once my mentor is back. Depending on the issue i get i will try first finding solution on my own via relevant sources say Google,StackOverflow,Sugar IRC etc. I feel there are lot of ways i can tackel this situation. Hence i will try to look upon myself for the solution in case my mentor is not around.

How do you propose you will be keeping the community informed of your progress and any problems or questions you might have over the course of the project?

I am planning to update my progress every Sunday on my sugar wiki. I am quite active on IRC as well and i believe is the fastest medium for me. Once my mentor appears i will pass links to my code,wiki,blogs to him to have a quick check up. I will create a thread on Mailing List as well that would help other developers for regular updates on PhyscisJS and DimensionsJS Development.

Miscellaneous

Screenshot of sugar development environment Home view

Describe a great learning experience you had as a child.

It was when i was in 6th standard. My Physics teacher asked me to explain the class, differences between "Regular & Irregular Reflections of Light".

I had a jumping ball in my bag. I asked my teacher, will he allow me to show a demo. He allowed and i did two experiments:

1. I asked class will ball bounce to me back if i throw it on smooth blackboard. They said yes. Hence "Regular Reflection". You can predict reflection behaviour in advance.

2. I asked class which direction ball would reflect if i throw it to the rough wall near window, they couldn't answer and everybody gave different answers. Hence "Irregular Reflections". You cannot predict the reflection behaviour in advance.

Teacher gave me a KitKat in Lunch break :) .