I need something to manage my life outside of work. Not necessarily my bills and grocery lists, but ideas that I have that I want to pursue. I have lots of ideas, some I want to pursue, some I don't. I need a way to capture those ideas into a system that I will check regularly, and I can reject ideas or work on them from there.
I have a lot of ideas. Always have. Most of them I think, "That would be a good one", and I write them on a piece of paper. I've emailed and texted them to myself. I've recorded voice messages on my phone. The phone is the easiest, I must have a hundred ideas recorded in there, but it can be the hardest to get them into a trackable state. No matter the medium for capturing/storing the ideas, I need a way to track them beyond a voice note. So here's what I need is a system that:
I'm a software developer. I use Git everyday. I only use about 10% of what git is capable of, but it is meant for this kind of tracking. Most of my "work" (my personal projects) are text and image files (code, blog posts, images). I'm into video and music too, but I can deal with the large files indirectly (e.g. links to an s3 bucket or local NAS).
Everything starts from the CONTENT_OS directory. I put mine as a variable I can use in ~/.zshrc.local.
Start by adding ideas (zsh function for now):
newidea "Git Content OS"
Creates a file in ${CONTENT_OS}/ideas that has the current date-time stamp as a filename and an H1 with the text of the newidea command. I can be anywhere in my system. I will just have to type in my phone-captured ideas... for now.
Start with listing all the ideas in the root folder of the repo.
Then run showideas to evaluate the ideas:
showideas
20251230034228.mdx
# Git Content OS
If the idea is a good one, run newproject and make a branch for it:
newproject content-os 202512390034228
This will create the new folder called content-os in the ${CONTENT_OS}/projects folder. I then create a new branch (probably called 'content-os') and commit those changes and push it to the origin.
If the idea is not one I will pursue, then I add it to the "Free Ideas" list on the HiP (Human In Progress) website. That way someone else can have it if they want.
Checkout the branch:
git checkout content-os
Then I have an alias to nvim to the word "edit", so I just type:
edit projects/content-os
To leave a project, I just have to remember to leave the folder AND then go back to the main branch.
Branches are getting out of hand. Branches have just become an easy way to hide away ideas and, since I only create branches for the good ideas, I'm basically hiding my good ideas away from myself. Not to mention the fact that I'm able to more easily ignore ideas in flight and the overwhelming number of them currently in flight (like 10 as of this writing).
May need to figure out a mechanism that naturally limits my branches. I should also name them a little better, maybe bpi-my-idea-snake-cased for blog post ideas, lip-idea-name for linkedin posts, vid-video-idea-name, etc. Or post:BlogPostIdea, lip:LinkedInPostIdea, vid:VideoIdeaName.
This is the first post from the first idea in the system. I am dog-fooding the system and it should, hopefully produce several blog or linkedin posts.
I need to break my little test scripts our of my ~/.zshrc file and make them real files. Real scripts with error checks and error handling. I've not written a bunch of scripts in the past, but I might even trying to put some tests around them.
The newproject should check the number of current project branches going on and limit my work in progress (via a configurable variable) and reject the creation of a new project. The error message can be blunt, since it's just for me:
"Error: You've got 5 other project you're currently 'working on'! Finish something, motherfucker!"
I can call it the Samuel L. Jackson Productivity System.
I also need to get the newproject command to do more. I can script out a git checkout -b ${projectname} and a git add and a git commit with a canned message from inside the function.
I want to learn more about Git worktrees. I've hear amaxing things, and watched a few videos. They may be overkill for waht I am doing now, but if I'm going to build my entire content system around Git, I should know it inside and out, which isn't a bad thing for a software developer anyway.
The point is: I'm sharing all this in the hopes that others will try to form their own systems for getting ideas into action. That way I can steal your ideas and actually finishing projects, instead of leaving waves of half-finished projects in my wake.