Lalit Pant, the developer behind this application, is interviewed below, primarily about the application and what it offers, but also about its architecture and underlying philosophy.
Hi Lalit, who are you and where are you from? What do you do in your daily life?
I'm a teacher and programmer based out of Dehradun, a small town in North India. In an earlier life, I was a professional programmer (based most recently out of Dallas, TX in the US).
In that phase of my career, over the course of about sixteen years, I built many, many systems using a range of languages – C, C++, Java, Prolog, Ruby, Python, and most recently, Scala. The last ten years of that time was spent primarily with Java. Ironically, this period did not involve any Swing based projects (ironically, because now my work with Kojo is pretty heavily Swing/Java2D based).
For the past year, I have been a volunteer high-school Math teacher (who develops software on the side!) at a school for under-privileged girls in Dehradun - Himjyoti School.
OK, so what's Kojo? And what are its competing products?
Kojo is what I call a Learning Environment. Here's a screenshot:
With Kojo, I'm hoping to:
Make it fun for kids to become proficient at using computers.
Teach them programming.
Enable them to design and create interesting (virtual) things.
Allow them to experiment with math.
Within Kojo, kids play, have fun, and work in the activity areas of, Interactive Geometry and Algebra, Art, and Animation & Visualization.
Some of the other products that play in different parts of the space covered by Kojo are: Scratch (Learning to Program), Processing (Programming, Animation and Visualization), and The Geometers Sketchpad (Interactive Math).
Why is it freely available? Is it also open source?
Kojo is freely available because I don't want monetary price to be a barrier in the way of its adoption!
Kojo is open source software, and is licensed under The GNU General Public License (GPL). The source code for Kojo is available at: http://code.google.com/p/kojo/. Kojo binaries can be freely downloaded from http://www.kogics.net.
Here is another screenshot:
It is open source for many reasons:
I have been using open source stuff forever and I'm keen to make my own open source contributions.
Within an open source product, I can leverage other open source stuff and build upon the good work of others.
People can read the source, learn from it, and help make it better; their feedback can be a learning experience for me.
Schools can use the product without any fear of proprietary lock-in.
It is created on Scala. Why? And how?
For a seasoned Object Oriented developer like me, Scala was a mind-expanding experience, for at least a couple of reasons, when I first started using it about 2.5 years ago:
It exposed me to new (and very powerful) OO features (e.g., Traits, Implicits, Abstract Types, Type Constructor polymorphism etc).
It (re)exposed me to functional programming in a very practical context by allowing me to use functional programming techniques within my Object Oriented code.
Scala has kept getting better and better over the past couple of years, and it is now my preferred language for software development.
When I started thinking of creating a programming environment for kids, my de-facto choice of development language was Scala – for the reasons outlined above.
Not only that, but the learning environment teaches the user to use Scala.
Right. I decided to make Scala the user-level language that kids would program in, because:
A pretty powerful subset of Scala is very simple to use (much simpler than Java, and comparable in complexity to Python and Ruby).
If I made Scala the user-level programming language within Kojo, I could use Kojo as a REPL for my own Scala coding. I really wanted this. ;)
What are some other unique features about the application?
I think Kojo is a very interesting effort that combines:
A very powerful language
Animation and Visualization
There are other products that do one or more of the above, but nothing that I have seen that brings all of these things together quite like Kojo does.
Kojo is very young (it's just a few months of part-time work old right now). It will continue to try to innovate in this space as it grows and matures.