First, my idealistic and self-indulgent project, and second, the project that would assure me I was actually providing value to the world.
1. My self-indulgent dream: an IDE built around text editor integration. Think Eclipse, but constructed as an exoskeleton that Emacs and Vim could slip into and become real IDEs.
Of course my priorities would come to the fore. The core would be written in a concise but statically typed language, plugins could be written in the same language or in a clean, concise scripting language. It would be trivial to run code from within the editor. And it would be nice if one day it generalized into an application framework like Eclipse.
2. My actually socially productive work: interactive educational software. I would construct interactive software specialized for very small units of learning. An app to teach French verb conjugations, an app to teach the concept of electron valence, an app students could use to interact with a writing coach, an app to teach basic programming, and so on. I would try to implement what had been learned from studies about learning, and it would be awesome if I could provide a research platform for education research.
In the end, I hope that the software work on teaching individual subjects would generalize to a set of templates for interactive learning that would let people construct reasonably effective interactive learning tools for many different subjects, with a reasonable investment of effort. Just as a software engineer would look at a problem and construct a solution out of well-known systems, an educator could look at the material and skills they want to teach in a class and construct an interactive course from different parts: spaced repetition to teach certain information, an interactive coaching module and a drill module for medium-complexity skills involving several steps, a submit/teacher review/revision module for writing tasks, and a portfolio module for the semester project. Those are the kinds of general modules that come to mind now, but the aim of constructing completely ad hoc software for a variety of subjects would be to discover novel design patterns for interactive learning.
Custom modules created by teachers, researchers, and hackers could be trivially published, for free or for sale, and incorporated into course-specific modules or explored by self-guiding students. Utopia! (Whew.)
P.S. If I had to show ads to cover support and operations costs, I would only show them to adults, and I would let people pay to turn them off. (Nobody should have to feel guilty for running AdBlock, so I think it's important to let AdBlock users pay extra to turn off the ads they would see.)
"1. My self-indulgent dream: an IDE built around text editor integration. Think Eclipse, but constructed as an exoskeleton that Emacs and Vim could slip into and become real IDEs."
For the idea of Vim within an exoskeleton, you might be interested in these ideas:
I've been working on a variant of the latter idea on and off for about 4 years now. We got some funding (through an NSF grant) but I couldn't maintain full-time development on it. I'm presently working on a project that sprang up after I identified problems in the original design.
I'd love to hear more about your ideas; ping me @gmail if you want to chat.
Ah, but this is if money doesn't matter :-) My job is very challenging, and after eight hours at work, I can't sling code anymore, much less tackle an entirely different set of technologies than I use at work. Also, I don't think I could do justice to the idea without being face-to-face with teachers and students, which would be a full time commitment. I can't put myself in a position where I'll end up disappointing either my employer or a classroom full of kids.
My current job pays well, though, and I plan on retiring at least fifteen years before I'm too old to program, so the "money doesn't matter anymore" scenario is a realistic one. I have a feeling that whenever I retire, educational software will still feel like the right thing to work on.
1. My self-indulgent dream: an IDE built around text editor integration. Think Eclipse, but constructed as an exoskeleton that Emacs and Vim could slip into and become real IDEs.
Of course my priorities would come to the fore. The core would be written in a concise but statically typed language, plugins could be written in the same language or in a clean, concise scripting language. It would be trivial to run code from within the editor. And it would be nice if one day it generalized into an application framework like Eclipse.
2. My actually socially productive work: interactive educational software. I would construct interactive software specialized for very small units of learning. An app to teach French verb conjugations, an app to teach the concept of electron valence, an app students could use to interact with a writing coach, an app to teach basic programming, and so on. I would try to implement what had been learned from studies about learning, and it would be awesome if I could provide a research platform for education research.
In the end, I hope that the software work on teaching individual subjects would generalize to a set of templates for interactive learning that would let people construct reasonably effective interactive learning tools for many different subjects, with a reasonable investment of effort. Just as a software engineer would look at a problem and construct a solution out of well-known systems, an educator could look at the material and skills they want to teach in a class and construct an interactive course from different parts: spaced repetition to teach certain information, an interactive coaching module and a drill module for medium-complexity skills involving several steps, a submit/teacher review/revision module for writing tasks, and a portfolio module for the semester project. Those are the kinds of general modules that come to mind now, but the aim of constructing completely ad hoc software for a variety of subjects would be to discover novel design patterns for interactive learning.
Custom modules created by teachers, researchers, and hackers could be trivially published, for free or for sale, and incorporated into course-specific modules or explored by self-guiding students. Utopia! (Whew.)
P.S. If I had to show ads to cover support and operations costs, I would only show them to adults, and I would let people pay to turn them off. (Nobody should have to feel guilty for running AdBlock, so I think it's important to let AdBlock users pay extra to turn off the ads they would see.)