|

Got back from Hanging with Ben & Kevin at Kevin's cabin. On Monday family helped me move out a lot of the big remaining stuff from my apartment in to storage: bookshelves, desk, bedframe. Everyone helped and left exhausted.

my-modern-scrapbook: wrote a blog post about the Scrapbook system I have been building, which is good, because I realized how much sprawling work I have put into it without a clear understanding of my motivations. Sitting down to write 2000+ words on it made me really think about that side of things, which is good.

I also figured out it's super easy to get little videos into my blog posts since I already have an Automator action to automatically via a shell script run through an Automator folder action that triggers anytime a new file is added to screenshots - it automatically uploads videos, too, like the ones recorded if I hit CMD+shift+5 and record a little segment of my screen. Once it's uploaded its URL is copied to my clipboard, and I just swap out mp4 for gif. It's also nice to set some extra Cloudinary processing params like /q_auto/w_768/e_loop/ to make the quality automatic, resize to a width of 768, and loop the gif

Here's the script that auto-uploads to Cloudinary and appends the screenshot to my weekly note with cld

#!/bin/bash
 
# API keys for Cloudinary
export CLOUDINARY_URL=cloudinary://foo@bar
 
# Function to get the current year and week number
get_weekly_note_path() {
  local year_week=$(date +%Y-%V)
  local note_path="/Users/ejfox/Library/Mobile Documents/iCloud~md~obsidian/Documents/ejfox/Week Notes/${year_week}.md"
  echo "$note_path"
}
 
# Iterate over each passed argument
for file in "$@"
do
  # Check if the file exists
  if [ -f "$file" ]; then
    # Upload to Cloudinary and capture output
    upload_output=$(/opt/homebrew/bin/cld uploader upload "$file" use_filename=true unique_filename=false 2>&1)
    upload_exit_status=$?
 
    # Check if the upload was successful
    if [ $upload_exit_status -eq 0 ]; then
      # Attempt to extract the URL using the absolute path for jq
      url=$(echo "$upload_output" | /opt/homebrew/bin/jq -r '.url' 2>/dev/null)
 
      # Check if the URL is non-empty
      if [ -n "$url" ]; then
        echo "$url" | pbcopy
        # Display success notification with the URL
        osascript -e "display notification \"Uploaded $file to Cloudinary and URL copied to clipboard: $url\" with title \"Screenshot Upload\""
 
        # Get the weekly note file path
        weekly_note_path=$(get_weekly_note_path)
 
        # Append the markdown image format to the weekly note file
        echo -e "\n![Screenshot - $current_date_time - $filename]($url)" >> "$weekly_note_path"
 
        # Display notification for appending to the weekly note
        # osascript -e "display notification \"Appended screenshot URL to weekly note: $weekly_note_path\" with title \"Weekly Note Update\""
      else
        # Display notification for empty URL
        osascript -e "display notification \"Failed to extract URL from output\" with title \"Debug\""
      fi
    else
      # Display notification for upload failure
      osascript -e "display notification \"Failed to upload $file to Cloudinary. Error: $upload_output\" with title \"Screenshot Upload\""
    fi
  else
    # Display notification for file not found
    osascript -e "display notification \"File does not exist: $file\" with title \"Debug\""
  fi
done
 

Projects Worked On

Spliff & Espresso

  • Bought <spliffandespresso.com> and got @spliffandespresso on IG
  • Did some experimentation with colors and typefaces for the logo

Creative Endeavors

I've been playing a lot with Cardinal the free and open-source modular synth, and it's a great way to lose hours of your life to tweaking knobs and dragging cables. It absorbs time almost as well as Crusader Kings 3


Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - - Screenshot - -