# these metrics are how bogged down we are in to-do type items.
-REPORT_FILE="$HOME/cloud/overload_history.txt"
+REPORT_FILE="$HOME/cloud/fred_stats/overload_history.txt"
# given a path, this will find how many items are under it, ignoring svn and git files, plus
# other patterns we happen to notice are not useful.
-function calculate_depth()
+function calculate_count()
{
local dir="$1"; shift
- find "$dir" -type f -exec echo \"{}\" ';' | grep -v "\.svn" | grep -v "\.git"| grep -v "\.basket" | grep -v "\.version" | grep -v "\.keep" | wc -l | tr -d ' '
+ local count=$(find "$dir" -type f -exec echo \"{}\" ';' 2>/dev/null | grep -v "\.svn" | grep -v "\.git"| grep -v "\.basket" | grep -v "\.version" | grep -v "\.keep" | wc -l | tr -d ' ')
+ if [ -z "$count" ]; then echo 0; else echo "$count"; fi
}
# calculates the size in kilobytes of all the note files in a hierarchy.
function calculate_weight()
{
local dir="$1"; shift
- find "$dir" -type f -exec echo \"{}\" ';' | grep -v "\.svn" | grep -v "\.git"| grep -v "\.basket" | grep -v "\.version" | grep -v "\.keep" | xargs ls -al | awk '{ print $5 }' | paste -sd+ | bc
+ local weight=$(find "$dir" -type f -exec echo \"{}\" ';' 2>/dev/null | grep -v "\.svn" | grep -v "\.git"| grep -v "\.basket" | grep -v "\.version" | grep -v "\.keep" | xargs ls -al | awk '{ print $5 }' | paste -sd+ | bc 2>/dev/null)
+ if [ -z "$weight" ]; then echo 0; else echo "$weight"; fi
+}
+
+# calculate_complexity gets a very simple metric of how many directory components are
+# present at the target location and below.
+function calculate_complexity()
+{
+ local dir="$1"; shift
+ local complexity=$(find "$dir" -type d | wc -l)
+ if [ -z "$complexity" ]; then echo 0; else echo "$complexity"; fi
}
# produces a report line in our format.
function format_report_line()
{
- local depth="$1"; shift
+ local count="$1"; shift
local weight="$1"; shift
weight=$((weight / 1024))
- echo " $depth\t${weight}kb\t$*\n"
+ local complexity="$1"; shift
+ echo "$count\t${complexity}\t\t${weight}\t\t$*\n"
}
# two parameters are needed: the directory to sum up and the label to use for it in the report.
-# this will calculate the depth and weight for a hierarchy of notes, and then produce a
+# this will calculate the count and weight for a hierarchy of notes, and then produce a
# line of reporting for those.
function analyze_hierarchy_and_report()
{
local dir="$1"; shift
local label="$1"; shift
- local depth=$(calculate_depth "$dir")
- total_overload=$(($depth + $total_overload))
+ local count=$(calculate_count "$dir")
+ total_overload=$(($count + $total_overload))
local weight=$(calculate_weight "$dir")
total_weight=$(($total_weight + $weight))
- full_report+=$(format_report_line "$depth" "$weight" "$label")
+ local complexity=$(calculate_complexity "$dir")
+ total_complexity=$(($total_complexity + $complexity))
+ full_report+=$(format_report_line "$count" "$weight" "$complexity" "$label")
}
# scans through items in the notes folder that begin with a pattern.
function analyze_by_dir_patterns()
{
local title="$1"; shift
- local hier_depth=0
+ local hier_count=0
local hier_weight=0
- for i in $@; do
- temp_depth=$(calculate_depth $i)
- hier_depth=$(($hier_depth + $temp_depth))
- temp_weight=$(calculate_weight $i)
+ local hier_complexity=0
+ for folder in $@; do
+ temp_count=$(calculate_count $folder)
+ hier_count=$(($hier_count + $temp_count))
+ temp_weight=$(calculate_weight $folder)
hier_weight=$(($hier_weight + $temp_weight))
+ temp_complexity=$(calculate_complexity $folder)
+ hier_complexity=$(($hier_complexity + $temp_complexity))
done
- total_overload=$(($hier_depth + $total_overload))
+ total_overload=$(($hier_count + $total_overload))
total_weight=$(($total_weight + $hier_weight))
- full_report+=$(format_report_line "$hier_depth" "$hier_weight" "$title")
+ total_complexity=$(($total_complexity + $hier_complexity))
+ full_report+=$(format_report_line "$hier_count" "$hier_weight" "$hier_complexity" "$title")
}
##############
# start out the report with a header.
full_report="\
\n\
-Current information overload consists of:\n\
+current information overload consists of:\n\
\n\
"
+full_report+="count\tcomplexity\tweight (kb)\tcategory\n\
+================================================================\n\
+"
-# notes are individual files of tasks, usually, although some are combined.
-analyze_hierarchy_and_report ~/cloud/grunty_notes "grunty notes"
+analyze_hierarchy_and_report ~/cloud/urgent "high priority"
-#hmmm: make an html todo scanning function from this.
-# scan web documents for to-do lists. individual items are marked with <li>.
-# we do this one a bit differently since we have different criteria for html to-do items.
-html_item_depth=$(find ~/cloud/grunty_notes/ -type f -iname "*.html" -exec grep "<li" "{}" ';' | wc -l | tr -d ' ')
-total_overload=$(($html_item_depth + $total_overload))
-html_item_weight=$(find ~/cloud/grunty_notes/ -type f -iname "*.html" -exec grep "<li" "{}" ';' | wc -c | tr -d ' ')
-total_weight=$(($total_weight + $html_item_weight))
-full_report+="$(format_report_line "$html_item_depth" "$html_item_weight" "to-do notes in html")"
+# notes are individual files of tasks, usually, although some are combined.
+analyze_hierarchy_and_report ~/cloud/grunty_notes "grunty notes (external facing things?)"
-# is that things that are intended are not always followed up on right away. this catches us
-# being too hopeful and makes sure nothing seems to be getting done that's lagging.
-analyze_by_dir_patterns "active items" ~/cloud/*active*
+# feisty notes are about feisty meow(r) concerns ltd codebase development.
+analyze_hierarchy_and_report ~/cloud/feisty_notes "feisty meow notes (code related)"
-# scan across all appropriately named project or research folders that live in the "cloud".
-analyze_by_dir_patterns "project files" ~/cloud/*project* ~/cloud/*research*
+# home notes are a new top-level category; used to be under the grunty.
+analyze_hierarchy_and_report ~/cloud/branch_road "hearth and home notes (branch road, yo!)"
-# source examples need to be sucked into other places, other codebases. they are not
-# supposed to pile up here.
-analyze_hierarchy_and_report ~/cloud/example_source "source examples"
+# games and fun stuff. not sure why these count as backlog, but whatever.
+analyze_hierarchy_and_report ~/cloud/games_yo "games, yo!"
-# also snag the files labelled as trivia, since they're still to-dos...
-analyze_by_dir_patterns "trivial notes" ~/cloud/*trivia*
+# some source code that needs to be sucked into other places, other codebases. they are not
+# supposed to pile up here. but they have, so we track them.
+analyze_hierarchy_and_report ~/cloud/scavenging_source "source scavenging"
# and then count up the things that we think will be cleaned soon, but one thing we have learned
# unsorted files haven't been categorized yet.
-analyze_hierarchy_and_report ~/cloud/unsorted "unsorted files"
+analyze_hierarchy_and_report ~/cloud/disordered "unsorted files"
-full_report+="\n\
- =====================================\n\
+# we now consider the backlog of things to read to be a relevant fact. this is going to hose
+# up our weight accounting considerably.
+analyze_hierarchy_and_report ~/cloud/reading "reading list"
+
+# scan all the items declared as active projects.
+analyze_by_dir_patterns "active items" ~/cloud/active*
+
+# scan across all appropriately named project or research folders that live in the "cloud".
+analyze_by_dir_patterns "project files" ~/cloud/project* ~/cloud/research*
+
+# snag any work related items for that category.
+analyze_by_dir_patterns "job and work tasks" ~/cloud/job*
+
+# scan all the trivial project folders.
+analyze_by_dir_patterns "trivial items" ~/cloud/trivia*
+
+full_report+="================================================================\n\
"
-full_report+="$(format_report_line "$total_overload" "$total_weight" "Total Overload")"
+full_report+="$(format_report_line "$total_overload" "$total_weight" "$total_complexity" "total overload")"
full_report+="\n\
[gathered on $(date)]\n\n\
##############"