Introducing BugBase 1.0
Here's something about what has kept me busy since last week - a college miniproject. The quickiest dirtiest php app I ever wrote. Still incomplete with loads of things to fix, add, etc. Nevertheless - the intro :)
Here's something about what has kept me busy since last week - a college miniproject. The quickiest dirtiest php app I ever wrote. Still incomplete with loads of things to fix, add, etc. Nevertheless - the intro :)
Labels: foo, meaningless, odd observations, old times
Weird ways I learnt a few things down the line -
Labels: old times
I started relying heavily on open source projects to learn from and use them ever since I switched to Linux about 1.5 years ago. I started learning Python about 1 year ago and it has in a way become my primary language to implement anything that comes to my mind. I have worked on SahanaPy in the past (the current steel theme, custom error pages, a bit of ExtJS work) and am quite familiar as to how it works. Interestingly SahanaPy is the first Open Source project I've contributed to.
Some thoughts over Free/Open Source Software -
Subtle - as they may look, ignore - as many people may do, but at the end of the day, there's no denying that "Open Source is the best infrastructure you can rely on" to - solve complex problems of the world, help people around the world (the way SahanaPy does!), or even to start your business.
I believe FOSS has saved humanity a lot of time by showing them that "Re-inventing the wheel" is not always the right approach to get things right.
Some of my side projects - http://github.com/ideamonk
I was initially introduced to SahanaPy on IRC by a few friends. Later in Dec 2009, I got a chance to participate in SahanaPy workout at FOSS.in. I believe that I could put in my experience in developing Web Applications very well into S3XRC frontend and help developers deal with compound results in an easier, uniform, organized way.
Besides, to the common question that people ask "How would a software help in disaster?", Sahana stands as the best example you could give them, given that it has actually been used at many incidents. The recent support shown to Haiti crisis by Sahana foundation is something that would inspire us to do good at all times. I believe I could too make significant contribution to such a great endeavour.
Currently Sahanapy uses two backends for REST - S3XRC (XML+JSON interface of the restful API) and CRUD (Web2Py crud for html interfaces). Web2Py crud is good at a few things e.g. client side validation, ease of use, but it also has limitations, i.e. It can access only single table at a time.
On current version of SahanaPy this is evident when you take a look at http://127.0.0.1:8000/sahana/hms/hospital/1.xml [1] and compare it to http://127.0.0.1:8000/sahana/hms/hospital/1 [2]
While [1] is generated by S3XRC, it contains nested resources, not only do you get hospital details, but also current status of beds.
On the other hand [2] generated by web2py is not able to do anything worthwhile to this information.
Unfortunately S3XRC has no HTML front-end yet. The backend is able to handle XML and JSON but web2py front-end (SQLTABLE and SQLFORM) are not able to handle the complex resources.
A good way out would be to replace them with new handlers - XRCTABLE and XRCFORM
Which would understand and represent or interpret S3XRC's XML/JSON output appropriately. After that jQuery/ExtJS based web interface would be made which would be more responsive and would be able to take advantage of JSON outputs of S3XRC.
This section is to provide the detail of your project proposal. Take as much space as is necessary.
<s3xrc success="True" results="1" domain="<span style=" class="J-JK9eJ-PJVNOc">rocksolid</span>" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">url</span>="http://127.0.0.1:8000/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">sahana</span>" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">latmin</span>="-90.0" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">latmax</span>="90.0" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">lonmin</span>="-180.0" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">lonmax</span>="180.0">
<resource name="<span style=" class="J-JK9eJ-PJVNOc">hms</span>_hospital" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">uuid</span>="eb903352-0a6c-4d3c-bb8c-f18f6b7a3179" created_on="2010-04-02 15:14:07" modified_by="<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Abhishek</span> <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Mishra</span>" created_by="<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Abhishek</span> <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Mishra</span>" modified_on="2010-04-02 15:14:07" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">url</span>="http://127.0.0.1:8000/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">sahana</span>/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">hms</span>/hospital/1">
<data field="website"></data>
[[ snip snip ]]
<data field="info_source"></data>
<data field="phone_exchange"></data>
<resource name="<span style=" class="J-JK9eJ-PJVNOc">hms</span>_<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">hrequest</span>" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">uuid</span>="c9aa43df-11fc-4b63-977f-d56abaefd1cf" modified_by="<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Abhishek</span> <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Mishra</span>" created_by="<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Abhishek</span> <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">Mishra</span>" created_on="2010-04-02 15:14:58" modified_on="2010-04-02 15:14:58" <span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">url</span>="http://127.0.0.1:8000/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">sahana</span>/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">hms</span>/hospital/1/<span style="background: none repeat scroll 0% 0% yellow;" class="J-JK9eJ-PJVNOc">hrequest</span>/1">
<data field="city"></data>
[[ snip snip ]]
</resource>
</resource>
</s3xrc>
Other references - http://trac.sahanapy.org/wiki/S3XRC http://is.gd/bj8Tn
developing a useful supplement to Python in education
PyKata is a community-authored website with contributions from teachers and students in math and science, as well as technical professionals. It provides you a way to quickly write programs on the web, get immediate feedback on errors, and work through a set of exercises designed by the best math and science teachers all over the world. For teachers, who may not be programmers themselves, PyKata? offers a way to integrate simple programminmg into their lesson plans, without distracting from the subject being taught.
http://en.wikipedia.org/wiki/Kata
Website - http://pykata.appspot.com/
Vision - http://pykata.appspot.com/vision/
Code - http://code.google.com/p/pykata/ , currently based on webapp+django
PyKata uses similar doctest environment as seen in Crunchy.
1. It lets you write, execute and automatically evaluate your code online.
2. Saves your work-in-progress.
3. Shows your overall progress as to problems solved.
4. Lets community contribute problems.
5. Static help
Python has been a liberating force for both programmers and for scientists and engineers who don't have time for traditional programming. It has a also added some fun and playfullness to programming.
I believe Python is the best when it comes to teaching programming at school and college levels. http://is.gd/aYO08 and personally while discussing python with some friends, I've noticed a fair amount of excitement they've shown towards Python.
PyKata has great potential of making these ideas popular and assisting in quick learning for say, college students who wish to do quick simulations, or say, new engineers on the team who do not wish to spend excessive amounts of time on learning to write programs.
I am very excited to see a Python+AppEngine task on PSF's Summer of Code Page. Here are some of the ideas that I've come up with after discussions on the PyWhip mailing list.
PyKata could benefit from an improved design (more web2.0-ish). This would not only make it attractive but also help us present the progress data, user profiles, live statistics, tutorials, news, etc in a better way as it would encourage more social interaction upon growing. A rough mock-up - http://twitpic.com/1aux8n/full
I aim to create an addictive and interactive user experience. Using game style interaction to drive participation, possibly include points, badges, rewards a great example for that would be http://stackoverflow.com
Creating a flow - once a student gets a problem right, PyKata would show her which way to proceed from there.
If a student goes wrong repetitevely, PyKata could also show him/her possible tutorials related to it. http://twitpic.com/1auytp/full
Some examples - http://codingbat.com http://spoj.pl http://codegolf.com/
PyKata relies heavily on user submitted content. As for content submissions, all new submissions would get reviewed by PyKata editors and then moved to appropriate categories. If that doesn't happen, then a problem remains in 'new' category for the time it accumulates favourable votes.
As per current plan, only a PyKata contributor would be able to modify the problem/content they submitted. Another group of users - PyKata editors would have the rights to modify problems and content for the purpose of moderation.
When a user proposes improvements to a problem, the author of the problem would have the right to decide whether to accept it or not.
As per modifications to problems, the system would preserve previous version and show the history of the problem. This would be useful for Task 9 - Course planning feature.
This involves creating a way for the community to rate contents - including users, problems, tutorials. This would help us gather good statistical data for further analysis. (this is a non priority task)
Future ideas - a canvas based whiteboard tool for teachers to create better tutorials,
Having mentioned everything that came to my mind for PyKata's improvement, I would like to point out that not every feature might be possible to be implemented within the time frame. Hence I've kept feature 9, 10, 11, 12 marked with a (*) as tentative or post-gsoc plans for PyKata if they don't fit in.
** Feature 9 would possible to implement once all other feaures get completed as it would require all other features to be functional.
April 30th - May 13th - Low action due to exams
May 13th - May 23rd - Start studying existing codebase, old discussions for getting as familiar as possible with the project. Getting familiar with different aspects of web2py and AppEngine with possible experiments.
May 24th - May 30th - Task1 - Porting existing codebase to web2py.
May 31st - June 6 - Task4 - User Profiles
June 7 - June 13th - Task5 - Live execution results (AJAX based)
June 14th - June 27th - Task6 - Content Management
June 28st - July 4th - Task 7 - Batch Uploads
July 5th - July 11th - Task3 - UI/UX Improvements (partial) and testing+review for mid term submission
July 16th - July25th - Task 8 - Export Import of data
July 26th - Aug 8th - Task9 - Course Planning feature
August 9 - August 16th - Task3 (completion), Code Review, documentation wherever necessary, testing.
* Each week is a 40 hour work week.
* Since my GSoC work would bring in a lot of changes to PyKata, I will continue as a committer and will support and evangelize PyKata.
I would be working on SVN repository of PyKata on Google Code - http://code.google.com/p/pykata/source/browse/ and I already have a committor access there. Most probably I would push my changes to test branch which could be merged to trunk after a simple review/test.
I plant to communicate quickly as for any doubts and discussions coming in between the week. In the end of every week, I plan to submit a report to my mentor. As per my schedule, I'm mostly implementing 1 feature per week, with an exception of two weeks to Content Management feature and Course planning feature. So a weekly report would be well suited.
As you can clearly observe I've been doing odd small things here and there, Google Summer of Code and PyKata really brings me an opportunity where I can create, give support to, be responsible for something that a lot of people would use and be proud about it.
Python is bound to play a big role in education, rapid prototyping and what not. At PyCon India 09, I was really happy at the announcement of FOSSEE (Free Open source Software for Science and Engineering Education) group about introducing Python to engineering colleges in India. And now I'm delighted at the fact that I too might get a chance to contribute to Python Education in a big way!
Thanks!
Abhishek