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 Make the template configurable by setting it in a separate file Retrieve TODOS from previous days 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