==Profile==
- **Name** : Yana Agun Siswanto
- **Time zone** : UTC +7:0
- **Email** : yana.developer@gmail.co
- **IRC nick** : yana_agu
- **Github** : <<https://github.com/bekicot>
- **Phabricator** : <<https://phabricator.wikimedia.org/p/yana_agun/>
- **Wikipedia** : <<https://id.wikipedia.org/wiki/Pengguna:Yana_agun>
- **Stackoverflow** : <<https://stackoverflow.com/users/3034747/yana?tab=profile>
- **Location** : Bandung, Indonesia
- **Working hours** : 10:00 am to 6:00 pm UTC +7:00
=Synopsis=
Integrated Article Finder to WikiEdu Dashboard System.
A tool help Instructor and Student find relevant article that is a good candidate for new comer (Student) to edit and contribute. The article must be relevant to the topic that is being used, and the UI must be integrated to the dashboard to increase the Instructor and Student engagement to the topic.
**Mentors**:
- @Ragesoss (product, Wiki Education Foundation)
- @Capt_Swing (user research, Wikimedia Foundation)
=Deliverables=
As stated in the project description, this is an open ended project where improvement will always be expected. The target for the google summer of code periods is to create a maintainable and scalable system. The overall implementation is already good in my opinion with improvement can be made to make code more extensible and separation of concern to isolate possible problem.
**Recommender System**
Recommendation can created using several factor:
- Inter Language Recommendation
- Using gap finder api <http://recommend.wmflabs.org/api/> (Random)
- Using Wikidata Item (Can customize query needed)
- Category
- Stubs
The recommender system can get additional parameters, seed. That can be used for personalized
Ranking
For gap finder, because there is no available adequate query service, there is now way we can get the high relevancy article. For wikidata item, here is a query service that we can utilize <http://query.wikidata.org>. We can also use wikipedia api to retrieve related article that falls into certain category https://en.wikipedia.org/w/api.php?action=query&list=search&format=jsonfm&srsearch=matrix+incategory:English-language_films.
To overcome the difference source, we can use a grouped search result for different service (e.g Result from gap finder, result from wikimedia api).
Presentation
- Dedicated page
A Dedicated search page
- In course Recommendation
In the course dashboard, at the students page, while clicking assign myself / other people an article, it should show top 10 recommendation.
The API
As the response from the endpoint, i would recommend using https://google.github.io/styleguide/jsoncstyleguide.xml, it provides simpler implementation than http://jsonapi.org/. It is also closer to some of the controller response.
**Phase I evaluation**
Dedicated search page In this page, the main objective is create a dedicated page to show list of articles.
- Create Search Service
- Fetch From Gap Finder API
- Fetch From Wikipedia API (For category search)
- Caching Search Query.
- Create Presenters for homogenous results between services (Gap Finder, Wikipedia)
- Create Recommender Service
- Search is the basis connecting with external Service
- Recommender system will using prepopulated data (Course name, Campaign name) for more personalized recommendation
- Create a backend API
- put /api/v1/articles/
parameters: one of which :page_id or :page_title
Create or update an article if not exist in -
- post /api/v1/assignments/
parameters: :user_id, :course_id, :article_id
- get /api/v1/articles/recommendations
- get /api/v1/articles/search
- get /api/v1/courses/article_recommendations
parameters: :type, :parameters
- get /articles/search
- Create presenters
- Caching
- Create front presentation
- Create routes in react for
- /articles/recommendations
- /articles/search
- Create initialStates definition (Takes query string in url as consideration)
- Creates List For results
- Creates viewer (Can use existing article viewer)
- Create Actions (Assign People, assign me, Make as available tasks)
- Redux Store prePopulate data upon url navigation
**Phase II evaluation**
Deep Integration in dashboard
Integration in course page
- Assign User an article. (Show list of recommended article in popup)
- Assign me an article. (Show list of recommended article in popup)
Staging Testing, And staging performance optimization
Deploy preparation.
Performance Optimization based from the data received in production server.
Write BlogPost and Documentation
**Final evaluation (Last 3 weeks)**
In the third phase, i expect everything has been done. In this phase, i will do contribution to the other area. And also, as the project is Open Ended, i expect to receive feedback and update if the feedback has been approved by the community.
=Participation=
- Responsive
- Available on slack channel and gitter or other chat platform that is prefered by the team. 10:00 am to 6:00 pm UTC +7:00
- Available on email
- Actively Monitoring wikiedu repository, help fixing urgent bugs / feature outside when neccesary
- Maybe available on Sunday while i get bored with real live :)
- Communicate actively about the project status. Early notification if i planned to get off for a days or more.
=About me=
I'm a Computational Science student with skills in web development. During my study i work part time as a freelancer to support my finance. When i'm not busy with my job and my study, i do open source contribution at GitHub. Ruby is my favorite programming language. It is not the first programming language i learn, but it is the language that makes me learn programming paradigm, best practice and convention. I learn rails and its philosophy help me to change the way i think. It makes me think that bugs / problem i have 90% of the time some other programmer could have it too. By learning the way other programmers fix the problem, I also learn the way they thinking to overcome the problem. That is the reason why I love Rails and Its Community.
Skills: Ruby JavaScript React, Ember JS, Angular 1.2 & 2
=Past Experience=
- MagLoft.com Ruby on Rails & JavaScript/CoffeeScript Developer
- Wikimedia Indonesia (Intern) Doing various of project with Ruby, Python, JavaScript
- Google Code In Mentors for Wikimedia organization Review, discuss, and approve tasks
==Microtasks carried out==
==Contributions To wikimedia==
Manual Edits <https://www.wikidata.org/wiki/Special:Contributions/Yana_agun>
Bot (With Approved Bot Request) <https://www.wikidata.org/wiki/Special:Contributions/bekicot>
Approved BOT Request <https://www.wikidata.org/wiki/Special:PrefixIndex/Wikidata:Requests_for_permissions/Bot/Bekicot>
_Bekicot is my bot user_
=My Achievement=
- Top 20% On Rails tag at stackoverflow.
- Top 36% overall at stackoverflow
- Top 30 on ruby ranking in Indonesia according to git-award.com
- Ranked 116 on Javascript ranking in Indonesia according to git-award.com
- Ranked 103 on Typescript ranking in Indonesia according to git-award.com
Source:
- <http://git-awards.com/users/search?login=bekicot>
- <https://stackoverflow.com/users/3034747/yana>
=Why Me?=
My code has been accepted by various of open source project like discourse, wikimedia, and rails. I also have been creating high quality production code through my freelancing at Upwork and internship at various company.
I'm a fast learner and can easily catch up with new technology and programming paradigm. Able to learn existing code and write feature on top of it using paradigm and best practice that is currently being used at that project. And also if the practice is something that is wrong in my opinion, i also willing do discuss and give opinion based on my knowledge, and also accept any opinion that will make the project run successfully.
I've been working with various wikpedia project before, using their API. I also contributed to the opensource tools that is utilize wikidata and wikipedia API.
I'm a self funded student that dependent on project and freelancing to continue my study at university. If i could fund my study and also contribute to the opensource it is one of the things i really wanted. Google Summer of Code is the best way of doing so. Previously, i do intern at Wikimedia Indonesia and was very happy that my code is opensourced.