-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

My workflow, tmux, vim, etc.


DATE: 2017-11-01

AUTHOR: John L. Godlee



I thought I should do the sort of post that everyone seems to do and show off my workflow, with all the horrendously try-hard command line utilities, and DIY config files. You can find my dotfiles here[1].


1: https://github.com/johngodlee/dotfiles


I spend most of my time working on my macbook pro, within an iTerm2 window running tmux.


I have a bash script that builds a tmux session and fills it with useful programs. I have vim in one window, then a whole load of small empty shell panes in the next window, and finally cmus in the last window for playing music:


#!/bin/sh

# Create new session
tmux -2 new -s 'dash'

# Start vim
tmux send-keys "vim" Enter

# New window, split into 4
tmux new-window -n 'bash'
tmux split-window -v
tmux split-window -h
tmux select-pane -t 1
tmux split-window -h

# Split pane 1 vertically
tmux select-pane -t 1
tmux split-window -v

# Split pane 5 horizontally
tmux select-pane -t 5
tmux split-window -h

# Resize panes
tmux resize-pane -D 8

# New window, start cmus
tmux new-window -n 'cmus'
tmux send-keys "cmus" Enter

# Detach and reattach to make it work properly
tmux detach
tmux a -t dash
tmux select-window -t 1

I dabbled in using tmux-resurrect and tmux-continuum to save my tmux sessions when I rebooted, but I found that these plugins weren't always reliable. Besides, I don't usually reboot my laptop unless I've first saved all my files.


I used to have a lot more things running in tmux. I used alpine to manage email from my gmail account, and I used the calendar.vim plugin with a custom .vimrc to link to my google calendar, but when I started back working full time I found that it actually saved me a bit of time to just use the default macOS Calendar and Mail apps.


Note-taking


I use vim to take all my notes. I use markdown to format all my notes. I have a note for each day, or at least each workday. The basic format of my daily note is:


# Item 1
* Thing to do one
* Thing to do two
    * detail 1
    * detail 2

<hr>

# Item 2
* Thing to do one

==================DONE===================
* Thing to do, done

==================DONE===================

At the end of the day, I copy that day's note into a new note with tomorrow's date. So in the end I have a folder of notes with names like this:


Daily_2017_10_26.md
Daily_2017_10_27.md
Daily_2017_10_28.md

I also have this neat way of roughly tracking how productive I've been. I can count the number of lines within the ==================DONE=================== tags. Then I can turn that into a csv, then import that into R and plot a graph of how much I've done over time. It's not that useful, but was a fun project to put together, and a way to learn about grep.


The bash script:


#!/bin/bash

# Create csv file of completed items from daily notes by counting lines between #DONE# marks
touch ~/Desktop/word_count.txt

# Using a for loop and multiple sed arguments to amend the file (takes longer)
for f in ./*; do { printf '%s ' "$f"; sed -n '/DONE/,/DONE/p' "$f" | wc -l; } >> ~/Desktop/word_count.txt; done

# Make multiple whitespace into 1 whitespace, to csv
awk '{$1=$1}1' ~/Desktop/word_count.txt > ~/Desktop/word_count.csv

# Replace "md " with "md,"
perl -pi -w -e  's/md\s/md,/g;' ~/Desktop/word_count.csv

# Add column names
echo -e "date,count\n$(cat ~/Desktop/word_count.csv)" > ~/Desktop/word_count.csv

# delete txt file
rm ~/Desktop/word_count.txt

# Run R script
Rscript ~/Google_Drive/Code/R/done_count.R

The R script:


# Personal productivity by #DONE# items in Daily notes

# Packages ----
library(ggplot2)
library(dplyr)

# Load data ----
prod <- read.csv("~/Desktop/word_count.csv")

# Clean up ----
prod$date <- prod$date %>%
    gsub("./Daily_", "", .) %>%  # Remove leading filename section
    gsub(".md", "", .) %>%  # Remove trailing filename section
    as.Date(., format = "%Y_%m_%d")  # Transform to Date class

# ggplot line graph ----
done_count <- ggplot(prod, aes(x = date, y = count)) +
    geom_line() +
    scale_x_date(date_labels = "%b", date_breaks = "1 month")

ggsave(filename = "ggplot_done_count.png",
    		 plot = done_count,
    		 width = 20, height = 20, units = "cm")

Edit 2017_12_08


I've been thinking more about the note-taking philosophy and have noticed a few trends in my own note-taking that make it easier for me to read things back at a later date. This has mostly come about because I am now starting to re-read my notes on academic papers as I start to write my confirmation report.


Keep notes short - It's much easier to read notes back when they are only on short lines. Only one sentence per line

Nested bullet points - In line with trying to keep notes short, it follows that nested bullet points are a great way to give some sense of inherent structure to your note taking, and make it easier to memorise things like lists of species. Nested notes also do a good job at maintaining a logical flow to discussions, by allowing you to put a retort to a particular piece of evidence as a nested bullet under the main bullet point.

Use keywords and repeat yourself - I find it much easier to search through long sets of notes if I have keywords to search for. In this sense, it follows that each bullet point should be its own self-encapsulated bundle of information, which relies little on other bullet points to give it context, this makes it much easier to scan through bullet points for the useful information.

Use Markdown - This isn't entirely necessary, but I've found it to be a great way of quickly applying formatting to my notes, as opposed to what I used to do with Microsoft Word and WYSIWYG formatting.


Screens and deskspace


I do nearly all of my work at my desk in the University. I have a widescreen monitor with a trailing HDMI cable that I can plug into my laptop, then to the right I have a HP all-in-one running Windows that is hooked up to the University network, just in case I need to use some piece of Windows software. For example, when I'm testing workshops for undergraduate students.


Desk

-- Response ended

-- Page fetched on Sat May 18 16:33:32 2024