months...
The first implementation was some years ago in PHP. The daemon was already
written in C and accepted work loads via shared memory. For this I used
the shared memory implementation of PHP which was quite immature. It led to
a bug report that time.
From the start I never really chose the "code infiltrated HTML" option and had every HTML bit wrapped in some "print". I was very fustrated with the inconsistend interface you see in one group of functions compared to the next one.
I did some research on alternative languages and chose Python later on. It took me already some days diciding which language fits the job.
...
The daemon was already done in big parts before I actually started
enforcing some more work for DAW. It was from really big help having already
months in mind what the result should look like. Still I actually changed
some ideas of the general URL namespace layout.
The biggest part I did in "one step" was the abstraction of the "LayerNavigator" and the parts around which actually generate the always path relative links. It took me one week approximately.
My first PostgreSQL administration steps took days. The data base design which is still in it's early days already faced some PostgreSQL limits. - For rearranging the relation between moved and divided galleries and attributes I wanted some abstraction on a lower base, to have the same code caring about inconsistencies between file system and DB. Means: persons, locations and such need to get copied by an instance which does not know the difference. This is hard without an object view on the things. - PostgreSQL supports some basic inheritence, which is still to basic to get my idea done without heavy trigger programming. - This weighting of ideas took me another week without touching the code at all...
So, it is no lie to say I developed over six month countinously counting. Bare code writing of the latest implementation was about 4 weeks "only".