David Koelle is a Boston-area software developer who creates user-centered intelligent systems by day, and develops fun and typically brainy software on the side.

JFugue is my JavaTM API for Music Programming. It makes music programming very easy (as it should be), and facilitates creating and experimenting with musical phrases. JFugue has received lots of praise, and I presented JFugue at a JavaOne 2007 technical session (Read the reviews or See the slides and (oddly compressed) video)

Project Antares will be a new type of simulation and exploration application to foster and inspire Science, Technology, Engineering, and Math (STEM) learning. I am actively seeking assistance for this project.

idea2product is my blog, where I talk about the full lifecycle of software product development.

I'm doing some work with Algorithmic Music. I'm exploring multiple ways to create captivating music programmatically.


The Alphanum Algorithm is an algorithm I developed to address what I think is a glaring usability problem: most computer programs sort lists by ASCII comparisons, which is not how humans actually sort things.

In API Usability, I discuss tips for creating highly usable programming interfaces. As I know from my work on JFugue, I know that a clean, concise, and usable API directly impacts the success of your library.

Persistent Externalization: If you're a Java developer, and you get frustrated when your previously serialized or externalized objects cannot be used once you change your class's member variables, then this solution is for you!

I believe that Recreational Programming is an important part of getting young people interested in computer science, but has become increasingly neglected despite the spread of computing.
   - Problems in Recreational Programming
   - Recreational Programming Resources
   - Recreational Programming Magazine