|
|
- Friday, December 19, 2014
- =========================
-
- {timetracking}
-
- So hamster really doesn't scratch my particular itch all that well. Rather
- than devote any serious brain energy to finding or writing a replacement that
- does, I've decided to just use a text file.
-
- It looks like the following:
-
- 2014-12-17 21:55 - 2014-12-17 11:40
- 2014-12-18 10:05 - 2014-12-18 12:50
- 2014-12-18 13:45 - 2014-12-18 16:00
-
- This is just two datetimes for each range of time when I'm working on a given
- thing, delimited by `/ - /`. I just want a quick script to tally the time
- represented. (Later, if I need to track more than one project, I'll expand on
- this by adding a project name and/or notes to the end of the line.)
-
- It kind of seems like I should be able to do this with GNU `date`, but let's
- find out. Here're the [official examples][date-examples]. This sounds about
- right:
-
- > To convert a date string to the number of seconds since the epoch (which is
- > 1970-01-01 00:00:00 UTC), use the --date option with the ‘%s’ format. That
- > can be useful in sorting and/or graphing and/or comparing data by date. The
- > following command outputs the number of the seconds since the epoch for the
- > time two minutes after the epoch:
- >
- > date --date='1970-01-01 00:02:00 +0000' +%s
- > 120
-
- As a test case, I start here:
-
- $ cat ~/bin/timelog
- #!/usr/bin/env bash
-
- date --date="$1" +%s
-
- $ timelog '2014-12-17 21:55'
- 1418878500
-
- Ok, groovy.
-
- I was going to do the rest of this in shell or awk or something, but then I
- thought "I should not spend more than 10 minutes on this", and wrote the following
- Perl:
-
- #!/usr/bin/env perl
-
- use warnings;
- use strict;
- use 5.10.0;
-
- my $total_hours = 0;
-
- # while we've got input from a file/stdin, split it into two datestamps
- # and feed that to date(1)
- while (my $line = <>) {
- chomp($line);
- my ($start, $end) = map { get_seconds($_) } split / - /, $line;
- my $interval = $end - $start;
- my $hours = $interval / 3600;
- $total_hours += $hours;
- say sprintf("$line - %.3f hours", $hours);
- }
-
- say sprintf("%.3f total hours", $total_hours);
-
- sub get_seconds {
- my ($stamp) = @_;
- my $seconds = `date --date="$stamp" +%s`;
- chomp($seconds);
- return $seconds;
- }
-
- Which gives this sort of output:
-
- brennen@desiderata 14:54:38 /home/brennen/bin (master) ★ timelog ~/notes/some_employer.txt
- 2014-12-15 13:10 - 2014-12-15 14:35 - 1.417 hours
- 2014-12-16 10:00 - 2014-12-16 12:55 - 2.917 hours
- 2014-12-16 14:00 - 2014-12-16 17:15 - 3.250 hours
- 2014-12-17 15:00 - 2014-12-17 16:51 - 1.850 hours
- 2014-12-17 21:55 - 2014-12-17 23:40 - 1.750 hours
- 2014-12-18 10:05 - 2014-12-18 12:50 - 2.750 hours
- 2014-12-18 13:45 - 2014-12-18 16:00 - 2.250 hours
- 2014-12-18 17:00 - 2014-12-18 17:30 - 0.500 hours
- 16.683 total hours
-
- This is me once again being lazy and treating Perl as a way to wrap shell
- utilities when I want to easily chop stuff up and do arithmetic. It is _many
- kinds of wrong_ to do things this way, but right now I don't care.
-
- If this were going to be used by anyone but me I would do it in pure-Perl and
- make it robust against stupid input.
-
- [date-examples]: https://www.gnu.org/software/coreutils/manual/html_node/Examples-of-date.html
-
- drawing tools
- -------------
-
- Ok, so because I'm starting to poke at drawing again for the first time in
- quite a while (even to the extent that I'll soon be publishing some stuff that
- includes cartoon graphics, despite having _no_ idea what I'm doing), I thought
- I'd take some rough notes on where I'm at with toolset.
-
- The first thing is that I'm not using any Adobe tools, or indeed any
- proprietary software (unless you count the firmware on my cameras and maybe
- Flickr) to work with images. I am fully aware that this is a _ridiculous_
- limitation to self-impose, but I want to stick with it as best I can.
-
- For a long time, I've sort of fumbled my way through GIMP whenever I needed to
- do the kind of light image editing stuff that inevitably comes up in the life
- of a web developer no matter how many things you foist off on your
- Photoshop-skilled, design-happy coworkers. I think GIMP gets kind of an unfair
- rap; it's a pretty capable piece of software. That said, I've still never
- really put the time in to get genuinely skilled with it, and it's not the most
- accessible thing for just doodling around.
-
- Several years back, I [bought a cheap Wacom tablet](https://p1k3.com/2011/4/13).
- I was maybe a little optimistic in that writeup, but I still really enjoy
- [MyPaint](http://mypaint.intilinux.com/). The problem is that, while it's really
- fun for a sketchy/painty/extemperaneous kind of workflow, and dovetails
- beautifully with the tablet interface, it deliberately eschews a lot of features
- that you start to want for _editing_ an image. I don't blame its developers for
- that --- they're obviously trying to do a certain kind of thing, and constraints
- often make for great art --- but I'm wondering if I can't get some of the same
- vibe with a tool that also lets me easily cut/copy/scale stuff.
-
- I'm giving [Krita](https://krita.org/) a shot with that in mind. It has a real
- KDE vibe to it. Lots of modular GUI widgets, menus, etc. A little
- bureaucratic. It doesn't feel as fluid or immediate as MyPaint right out of
- the gate, but it's definitely got more in the way of features. Could grow on
- me.
|