Software developer
To ease the pain of hourregistration, I have created a command line shell for Achievo, the hour registration system we use at Redpill Linpro. The code is hosted on Github, and you can find the code together with install instructions here.
To illustrate it’s capabilities, I’ll walk you through an example session.
$ rlwrap achoo # rlwrap adds some line editing goodness, but you can start it with just 'achoo' as well
Welcome to Achoo!
1. Register hours
2. Show flexitime balance
3. Day hour report
4. Week hour report
5. Holiday balance
6. Lock month
0. Exit
[1]> <enter>
Date ([today] | ?)> ?
Accepted formats:
today | (+|-)n | [[[YY]YY]-[M]M]-[D]D
January 2010 February 2010 March 2010
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7
4 5 6 7 8 9 10 8 9 10 11 12 13 14 8 9 10 11 12 13 14
11 12 13 14 15 16 17 15 16 17 18 19 20 21 15 16 17 18 19 20 21
18 19 20 21 22 23 24 22 23 24 25 26 27 28 22 23 24 25 26 27 28
25 26 27 28 29 30 31 29 30 31
Date ([today] | ?)> <enter>
Recently used projects
1. p1: NiceCustomer - Consulting
2. p2: AnnoyingCustomer - Consulting
3. abs: Absence
4. var: Various
0. Other
Project [1]> 2
If the project you are looking for is not in the list with recently used projects, select 0 to get the complete list of your projects.
When there is only one phase assosiated with the selected project, achoo will automatically select it and move on. For projects with more than one phase, you get a menu:
Phases
1. Cool phase
2. Boring phase
Phase ID> 2
VCS logs for 2010-02-18:
--------------------------------<( PROJECT_1 )>--------------------------------
Added breathtaking feature X
Refactored Y
--------------------------------<( PROJECT_2 )>--------------------------------
Made some tests pass
Remark> Fixed a lot of awesome stuff
Last log:
Powered on: (0+09:44) Today 06:01 - 15:45
Awake: (0+00:09) Today 06:01 - 06:10
Awake: (0+07:44) Today 08:01 - 15:45
Hours [7:30]> <enter>
Do you want to change the defaults for worktime period and/or billing percentage? [N/y]> <enter>
date: "2010-02-18"
project: "p2: AnnoyingCustomer - Consulting"
phase: "Boring phase"
remark: "Fixed a lot of awesome stuff"
hours: "7.5"
worktime: "Normal"
billing: "Normal (100%)"
Submit? [Y/n]> y
Notice that to you get some extra help with registering remark and hours. Achoo fetches the log for your commits for the given day and shows you when your laptop has been awake (not suspended).
: ...
2. Show flexitime balance
: ...
[1]> 2
Date ([today] | ?)> <enter>
Fetching dayview ...
Flexi time balance: 2:30
: ...
3. Day hour report
: ...
[1]> 3
Date ([today] | ?)> <enter>
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+
| Project | Phase | Remark | Time | Billing rate | Currency | Billing percentage |
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+
| p1: NiceCustomer - Consulting | Cool phase | Foo | 07:30 | 1000.00 | NOK | Normal (100%) |
+-------------------------------+------------+--------+-------+--------------+----------+--------------------+
: ...
4. Week hour report
: ...
[1]> 4
Date ([today] | ?)> <enter>
Fetching weekview ...
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| Project - Phase | Mon (02-15) | Tue (02-16) | Wed (02-17) | Thu (02-18) | Fri(02-19) | Sat(02-20) | Sun(02-21) | Total |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| p1: NiceCustomer - Consulting - Nice phase | 7:30 | 2:00 | | | | | | 9:30 |
| abs: Absence - Holiday | | 5:30 | 7:30 | 7:30 | | | | 20:30 |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
| Total | 7:30 | 7:30 | 7:30 | 7:30 | | | | 29:30 |
+--------------------------------------------+-------------+-------------+-------------+-------------+------------+------------+------------+-------+
: ...
5. Holiday balance
: ...
[1]> 5
Balance: 26,00
Achoo selects the previous month as the default
: ...
6. Lock month
: ...
[1]> 6
Period ([201001] | YYYYMM)> <enter>
period: 201001
Submit? [Y/n]> n
Cancelled