I wanted to make Continuous TODOs – a simple app for my
LineageOS FP3. It was meant to be a weekend project. It has prolonged
and only excuse I came up with is to log the process. So here we
are.
What is Continuous TODOs? I found what I want from a TODO application
after testing four or five and after using one or two. And there was
none I liked. They were too complicated, I wanted something simple.
Why Continuous TODOs (the name)? Because tasks can be continuously
hidden and unhidden, until the whole context is deleted. (Then tasks are
also deleted.)
The following are the development stages I approximately
recognize.
Thinking about the idea
I spent one week by occasionally
thinking.
In this stage the idea came.
The name is decided, but can be changed later.
It is important for me to do nothing – I need time at this
stage.
However, research, i.e., information finding, is allowed.
Thinking about tools – in this particular idea, I declined Android
Studio because I have 2 GB RAM only. I want to write a simple (!) app
for my phone. I came up with the idea of JavaScript web page, but I need
to solve the storage problem – where to store the data?
Resist coding! Wait until it’s unavoidable and only then sit down
and put the idea onto a paper. Unavoidable means it’s not possible to
keep track of all the ideas anymore.
Put the idea onto a paper
I spent ten minutes by putting the idea
onto a paper while cooking masala.
Write main components.
Draft data structures.
Link components.
Put some notes.
Resist coding!
Work on the idea and
research technologies
I spent three hours by improving the
idea on the paper and by reading about
IndexedDB.
Technologies are completely decided; read about them.
Fill the paper with all possible details that came up to my
mind.
There are changes to the paper while getting familiar with the
technologies.
The result of “Work on the idea and research technologies” – A4
filled with detailed information about the project to be written:
Continuous TODOS idea on
paper.
After this, there MUST be break of at least one day. Resist coding
yet!
Hacking on the proof of
concept
I spent four and four hours in two days by
making proof of concept.
Make first commits in the repository (license, readme, editorconfig)
nice and clean. Publish repo. Create branch. Publish branch, but just to
backup the work.
Proof of concept means that it looks it works in developer console
(F12 in Firefox.)
Creating git history that will be overriden later – but it helps
when testing particular feature, because I can simply add/reset/checkout
whatever I need to.
Draft
I spent two and half hours by
drafting and reading about the semantic web.
An app without CSS but with all HTML elements and
functionality.
The app works as it will at the end, but:
The Git history is ugly – there should be less commits.
The code is ugly – hacks and shortcuts and inconsistencies. It
should be refactored.
Note possibilities about abstractions, find patterns (like “mod” =
“get” with “put” in callback).
Still sometimes drop the database, because of the need to change the
db structure (like adding “hide” to “app” to store if tasks should be
hidden/shown). However, it’s not wanted to keep the history of the
database changes yet – it’s development in separated Git branch.
I showed the app and the source code to the collegues.
I downloaded the app to my mobile phone and started using it to find
out what is wrong with the app. Here, in fact, begins the testing
stage.
Release
I spent more than moth by testing and maybe
two hours with the release.
This time the testing stage was more than one month, particularly
because I missed free time. It could be less.
I did minor improvements to CSS and documentation.
I finished writing this note and publishing it along with the
Continuous TODOs app.
Conclusion
These are the development stages in summary:
Thinking about the idea (one week)
Put the idea onto a paper (ten minutes)
Work on the idea and research technologies (three hours)
No coding yet! At least one day break!
Hacking on the proof of concept (four and four hours)
Draft (two and half hours)
Testing stage (more than month this time)
Release (maybe two hours)
I was a bit suprised that the simplest way for me to develop an
Android app is to make a single-page application. But I probably
shouldn’t be, because web browsers are everywhere, at the end.