21 luglio 2010

Ruby Summer of Code, Midterm

As I've gotten this exiting opportunity to work on Hackety Hack for the whole summer, it's only fair to let people know what I've been up to. Let me thus summarize what has been done in the first half of this great Summer of Code.

I started by making some improvements to the editor and the Try Ruby console. The editor now has undo and redo support using key shortcuts, highlighting of blocks and brackets, and simple automatic indentation (when starting a new line the indentation level of the previous line will be used). I also improved the history browsing in the console, which is triggered using the up and down keys, and while doing so I fixed a few bugs and made some other minor improvements to the console; some work is still needed there, as I recently noticed a few bugs that need fixing, I hope to have them smashed soon. This phase provided the additional benefit of allowing me to familiarize more with the code base and with Shoes, upon which Hackety is built.

Next I implemented a turtle graphics DSL. I think turtle graphics is a nice way to introduce young people to programming, it's fun and lets you understand how the flow of execution of code works. ashbb made a great video capture of the turtle in action (thanks!). If you feel adventurous and want to try it out you can download the latest development snapshot, or fetch the development version from github, you can find some documentation for writing turtle code here.

Once this was done I had to dive back into the code of the main application, and did a little bit of boring but needed refactoring. Then I started to write the code needed to be able to write lessons. For more info about the lesson architecture you can read the email I wrote on the mailing list. Here follows a screenshot where the current state of the lessons can be seen:

All in all I'm very happy with what I've been able to accomplish so far, my ruby knowledge has improved a lot, especially with regards to reflection and to writing DSL, having written two! (one for the turtle graphics and one for the lessons)

It seems we will easily manage to release 1.0 in time for whyday, thanks also to the help of Steve who is rewriting the website. I've finished doing exams for university, thus from now on I can concentrate more on Hackety coding myself. It seems things are moving again in Hackety land, people starting contributing, the mailing list having become quite active again, and the downloads at github showing people displaying interest in the development process. The priority will now be 1.0, finishing the lesson architecture, and writing a few basic lessons, and then stabilizing and polishing until the 19th of August. But I've already got a few interesting post-1.0 ideas in mind. You will hear from me... Happy Hacking (or Hackety-ing? =)