In my last blog post I fulfilled my promise to start blogging again. There is nothing worse than going to a blog where last post is a promise to start blogging made months ago. In good style I am blogging again. In fact, I will be blogging at least 3 times a week, even if those posts are just me saying I don't want to blog today.
Why am I doing this? Last year when I started writing more I created a post about micro-quotas. However, despite laying out a system for success I've failed terribly at implementing that system in my own life. This is something I am correcting, and, therefore, I am blogging at least 3 times a week.
I am not only blogging. I am also running 3 times a week (even when it is 0 degrees as it was earlier this week), I am fasting at least 24 hours straight at least twice a week, I am continuing with body weight exercises at least 4 times a week, and I am going to work on developing a project... but I haven't set a quota for that yet. That brings me to the actual topic of this post.
When I wrote that post about micro-quotas I had the idea of building a tool to help track personal quotas and their fulfillment. I started on a prototype but it fizzled for some reason I don't remember. With a renewed sense of purpose I am determined to build this thing and release it to the world... even if it falls on deaf ears. Therefore, I am announcing Kwota.io.
Kwota.io's mission it to help at least 1 person make a significant, positive, lasting change in their life using quota systems. That is to say, the success of Kwota.io is dependent upon fulfilling the quota of changing 1 person's life in the lifetime of the product.
Kwota.io will be targeted at helping anyone who wants to make significant changes in their life, who has recognized the need to have a concrete system to do so, and has opted to give a personal quota system a try. Users will be able to create quota systems, track their fulfillment, and potentially browse and implement predefined systems created by other users or experts. Efforts will be made to reinforce quota fulfillment by rewarding the user in some way with the goal of helping the user commit.
When users log in to Kwota.io for the first time they will be prompted to create a System. A System is to be a collections of quotas with a common purpose or goal. For example, I may create a System to become healthier or become a better programmer. This goal will be captured and stored when the System is created with the purpose of reminding the user why they are fulfilling their quotas. Special notes or additional information may also be attached to the system.
Once a System is created the user will be prompted to add Quotas to their system. Quotas are actions that must be accomplished within a set period of time. The user will fill out the template: I <name> will <action> at least <quantity> time(s) every [<period_multiplier](day|week|month|year)(s). For example, I Shawn Rakowski will run at least 1.5 miles at least 3 time(s) every week,or I Shawn Rakowski will learn a new programming language in-depth at least 1 time(s) every 2 years. Special notes or additional information may also be attached to a quota.
Once a System is created and Quotas have been added, the user will select a day to start the System. Quotas fulfillment periods will be based on this start date. If I choose to start a system containing a weekly quota on a Tuesday then the quota must be filled by the following Tuesday. Being a bit OCD, I am sure all of my Systems would start on Sundays to coincide with what I think of as the start of the week.
After a System is in place and has started, when the user signs in they will see the quotas they need to fulfill. By default they will be sorted in order of those that have the least amount of time remaining to accomplish. The user will also be able to organize them by system.
The user will be able to indicate that they have fulfilled a Quota. When they do this they will be allowed to optionally enter some information about the accomplishment that will go into their Journal. As they fill the Quota they will see the progress. When the Quota is fully filled they will be congratulated in some way and they will begin to see their successes pile up in a separate list. Quotas will be reset at the end of every period. For example, if I run 3 times a week and I start my System on a Sunday then every Sunday when I open Kwota.io the previous week's success will be replaced the challenge to fill the quota this week. Failures to fill quotas will be logged to the Journal with encouraging remarks.
The Journal will be a log of the activity you do on Kwota.io, and will contain your own remarks and notes for filling a Quota. This will allow the user to look back and visualize their success.
As an alternative to building their own Systems, users may browse a repository of Systems designed by other users. Users may opt to share their systems or keep them private. I may, for example, design a quota system for improving my health. If I choose I can expose this for the world to use. If I want to keep it private, that is OK too. Care will need to be taken to ensure that people don't mistake Systems for sound medical, career, or other advice, i.e. implement another user's System at your own risk.
Some system of progression or reward my be incorporated to give the user something positive for fulfilling their quotas. Perhaps taking inspiration from StackOverflow's progression and badge system.
The service will be free, and the code will be open source under a permissive license (MIT). If it were to take off I'll need to find some way to monetize it just to support the cost of hosting it. I'll depend on any community that is built to help me figure that out.
If I had this tool today I would have a System in it for improving myself as a developer. In that System I would have a Quota that says something like this: I Shawn Rakowski will work for at least 1 hour per day on a side project with a technology stack I do not use in my job at least 6 time(s) per week. I am using this project to try to advance my stagnant development skills. I could choose to build this project rather quickly with ASP.NET/C#/SQLServer, as I've done this before. However, using this stack will not expand my skill set in any way. I really need to learn something new.
That being said I will be building this project with Node.js, Express.js, MongoDB, and some yet to be determined front end UI framework. To keep things simple, my initial prototype will probably be just straight template html via Express. Later I'll probably convert much of it to a SPA and expose a proper RESTful API.
The code will be hosted on GitHub at https://github.com/srakowski/kwota.
I honestly don't have any idea what I am doing with these frameworks. I'd appreciate any pull requests or constructive feedback.
If you are interested in trying this out once I get it up and running please leave a comment down below with contact information, or use my contact page.
If you are interested in helping with the development I would greatly appreciate anything I could get. Ideally I would love to not develop this in a vacuum. I really want more experience working with teams of developers. I've done this at work, but not in a capacity I am happy with.
Cheers to filling 2/3 of my blogging quota! Hopefully as I develop this project I'll have more technical bits to share. For now, writing long emails about things I want to do or emotional nonsense is much easier. I also think I need to get my podcast up and running again. No more excuses.