This is an exploratory sample in software design done by Lokad.CQRS community. You can read core discussion in Lokad google group
We attempt to explain design principles behind this project in Being the worst podcast.
This project starts extremely small (implementation of Don't break the chain) but we hope to explore following topics:
- highly-scalable systems with optional cloud deployments
- occasionally connected mobile clients (HTML5 mobile, iOS, Android, WP7)
- proactive logging and monitoring of a distributed system
- real-time performance and optimization
- continuous deployments
- collaborative development
Don't Break the chain (explained in this article) is a self-improvement system designed to be a simple and elegant way to accomplish goals, like getting into better shape or learning a new program language, by completing daily tasks.
The daily task should be specific and limited in scope to the goal by using boundaries and rules that are realistic. An example might be if I wanted to learn a new language, the goal, would be to take 15 to 20 minutes, which is a time boundary, to learn a new verb by practicing, within a specific scope, its conjugation.
As a daily task is completed for a specific goal you create chain link. You assemble the links into a chain by never missing a daily task. You get closer and closer to your goal as your chain gets longer over a period of time. If you miss a task then you break the chain. The idea is to make these chains as long as possible.
You track your daily progress on a yearly calendar and visualize your chain as an X on the specific day that you completed the task. If you are attempting to accomplish several goals at the same time then you should track them on separate calendars. The number of goals should also be small to maximize the probability of success.