thisago's blog


Making my work stats public

Table of Contents

This time I'll break a little my defaults.

With some Python scripting and a better understanding of Org Mode, I managed to generate a report of how much time I spend in each task type (review, feature, bug, etc).

The insights met my initial expectations, and then, suddenly I wanted to share that.

The process

My last devlog provided an quick overview, but now it has a public repo for the scripts: https://codeberg.org/thisago/archiveReporter

I encourage you to review the real repo, but here's an overview:

  1. I have an global archive file which holds all my done/cancelled tasks.
  2. An Python script provides functions to handle the tables provided by Org Babel, which is a 2d string vector
  3. A report file (ie., reports.org), the entrypoint, uses the global archive file and the Python script to:
    1. Collects the totals with a general clocktable, scoping the job tasks.
    2. Then it declares a couple of reports, one for each major task type, matching the Org tag.
    3. The Org Babel Python block imports the script and runs with the report.
    4. A bash code block dumps the results to a file, for easy comparison.

You can see the output files (stripped hours and salary :) saved by bash code block in this repo: https://codeberg.org/thisago/personalArchiveReports

Last month report

Here's an example, the last report:

#+title: 202602

* Hour Price
Expecting 160 worked monthly hours by a XXk/mo salary:
- Worked a total of *XX* hours across *58* work items.
- This means a salary of *XX/h*.

* Comparing the Workload
Of a total of *XX* hours worked this month across *58* work items.
- =review= :: *XXX hours (22.8%)* across *19* work items (32.8%)
- =feature= :: *XXX hours (6.4%)* across *3* work items (5.2%)
- =bug= :: *XXX hours (28.0%)* across *8* work items (13.8%)
- =task= :: *XXX hours (30.7%)* across *19* work items (32.8%)
- =social= :: *XXX hours (3.1%)* across *2* work items (3.4%)
- =plan= :: *XXX hours (1.7%)* across *2* work items (3.4%)
- =investigate= :: *XXX hours (4.0%)* across *2* work items (3.4%)
- =polish= :: *XXX hours (1.0%)* across *1* work items (1.7%)

Cumulated total percentage *97.7%* (100% means all that tasks was considered)

Keep yourself on track. Bye.