NAME
App::Standup::Diary - Manage a simple Markdown journal for your daily standups
SYNOPSIS
# From command line
diary --data-dir /home/smonff/diary/ --project-name SeriousWork
# In your Perl code
my $diary = App::Standup::Diary
->new(
data_dir => $data_dir,
project_name => $project_name
);
$diary->write();
DESCRIPTION
This module is the implementation of the diary command, that can help to keep a directory of organized daily notes aimed at standup preparation and presentation.
It provides a couple of ways to customize the notes template.
It use internal tools built with CPAN modules:
- App::Standup::Diary::Template
-
The Markdown template where your data are interpolated.
- Standup::Role::Date
-
Provide date features for all the
diary
uses. - Standup::Role::Project
-
Provide a project name, so far.
MOTIVATIONS
Daily standups are a common, tried and tested modern work methodology. They are "brief, daily collaboration meeting in which the team review progress from the previous day, declares intentions for the current day, and highlights any obstacles encountered or anticipated" (source).
This tool is supposed to provide self-support for persons:
- Who struggle with daily standups presentations oral expression
- Surely familiar with the Perl ecosystem
How did it start?
Social anxiety can make my standup presentation very confusing. I also tend to forget key points if improvising, due to the stress of having no talk notes support. Keeping a diary of my thoughts drastically helped me to stay calm and collaborate better with the various teams I worked with. And if they are well sorted by year, month and day, it makes very easy to find old notes for eventual later usage.
Ready for production
I have been using it at work since 2021 and it helped me to reduce the stress of standups and meeting.
Methodology
Every morning, create the daily file by running diary
. It's template is a simple 3 items list. Open the day file in $data_dir/$year/$month/
and stash your thoughts by using the following methodology:
done
-
List of tasks you accomplished in the previous day
todo
-
List of tasks you plan to accomplish today
blockers
-
List of eventual blockers, so that your colleagues can support you
Then just read the notes during the daily standup.
Experiment with Object::Pad
App::Standup::Diary is my pet project for Perl's Corinna implementation of the core OOP features. diary
use Object::Pad, not the class
feature introduced in Perl 5.40
. Object::Pad is the test bed for the new core OO system.
INSTALLATION
For common usage
cpanm App::Standup::Diary
It will make the diary
command available in the ~/perl5/bin/
directory. Should be available in your PATH
.
See diary for command line usage.
For development
# Install a Perl module manager
apt install carton
git clone git@codeberg.org:smonff/Diary.git
cd Diary
# Install CPAN dependencies
carton install
How to use it?
I set an alias in my .bashrc
. Should also work in your own-favorite-shell:
alias diary="diary --data-dir /home/smonff/diary --project-name SeriousWork";
Each morning, before my work standup, I run diary
. It create a Markdown file in the specified --project-name
directory. I then edit my thoughts with an editor.
See diary for command line usage.
FIELDS
config
daily_data_path
data_dir
template
A App::Standup::Diary::Template object.
METHODS
build_full_file_path()
build_path($self->date->ymd('/'))
Use the date from Standup::Role::Date
to build the final path file name.
create_directories_tree()
If $self-
should_create_dir()> returns a true value, it would take care of the directory creation using Path::Tiny mkpath
.
init_daily_data_path($file_path)
Helper that initialize $daily_data_path
with a Path::Tiny
instance for the current day diary entry.
# foo/2022/03 (Path::Tiny)
$self->init_daily_data_path($self->build_path)
should_create_dir()
Check if a new year or month directory should be created so that we can store the standup file. In simpler words: are we the first day of the year, or of the month?
write()
This is App::Standup::Diary
entry point, AKA main()
.
TODOs
See the issues tracker.
SEE ALSO
A couple of similar tools:
- StandupGenerator
-
On the CPAN, this is pretty much all what I found. I like the spirit of this one.
- Almanac
-
A similar effort written in Bash.
ACKNOWLEDGEMENTS
Thanks to the maintainers of Config::Tiny, Mojo::Template, Object::Pad, Path::Tiny, Time::Piece.
LICENSE
Copyright 2022-2024 Sebastien Feugère
This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.
See perlartistic.
AUTHOR
Sébastien Feugère - seb@feugere.net