This is part 5 of the series; part 4 is here.
I've been working about 2 months on my new venture, so I thought it would be worth posting an update. Right now, I'm in prototype phase, which means that the main goal is to get a proof of concept working without worrying too much about things like a beautiful user interface, scalability, and other such distractions. After a few false starts, I decided to base the prototype on MediaWiki, which runs Wikipedia.
PHP is a dynamic language that added object-oriented features on top of procedural features. Overall, I don't like PHP very much, but its dynamic method lookup is similar to Smalltalk's and really useful for making powerful proxy classes.
The MediaWiki code base is bloated and not that easy to understand, but once you've gone through the learning curve it is not too hard to hack. The main thing I added is support for semantic web properties so that you can attach attributes and relations to concepts that are represented by wiki pages. For now, I use a single SQL table to store the tuples.
The prototyping has gone very well so far, and by the end of November I should have a rough version of the entire system working. At that point, I'll be able to demonstrate it to teachers, children, schools and parents. Assuming that the feedback is good, it'll then be time to create a production version.
I've been doing some research on languages, platforms and databases, and I'm leaning towards writing the production system using Ruby on Rails with a pluggable tuple storage backend. Working with PHP reminds me of the power of dynamic languages I've used in the past like LISP and Smalltalk, so I don't like the thought of going back to Java. The initial storage system would use SQL for simplicity but the pluggable design buys me the option of replacing SQL with an optimized implementation at a later date.
The worst part of working on the prototype is that it's so much fun that my days tend to be 18 hours long followed by 8 hours of sleep, which equals 26 hours. The result is that I wake up 2 hours later each day, which after a week means I end up going to bed around noon. I'm trying hard to get back to a normal schedule, but it's not easy.
Part 6 of this series is here.