Josh's Project Ideas
I am currently trying my best not to start any new projects. Instead, I want to focus my time on making improvements to my existing work.
However, I find it incredibly challenging to contain my excitement for new ideas, so I am keeping track of them here.
Table of Contents
- A todo list/task manager/calendar for teachers
- Website annotation tool (for drawing all over the internet)
- Super easy, low-stakes database for tiny projects
- A programming language & editor optimized for live-streaming
- Joint to-do list app for couples (or friends)
- AI Code Merger
A todo list/task manager/calendar for teachers
There is an infinite need for new task managers because everyone thinks & works differently. I've never found one that works for me, and I've always wanted to design a solution for myself.
Problems I want to solve:
Teaching is a paper & pencil profession. I don't know why, but it's much easier to use a pencil & paper than digital tools while teaching. Maybe it's because you're keeping track of lots of information at once but never have time to slow down and organize? I'm not really sure.
No matter the reason, an organizational system for teachers would need to make space for handwritten notes (and perhaps would not use technology at all).
Separating work and life. I want to have one system that I can use to track everything I need to do in life. But I also want strong barriers between school and home to help me maintain as much work-life balance as possible.
Website annotation tool (for drawing all over the internet)
(This idea spawned from the previous one.)
In real life, a wonderful trick for remembering things is to put physical reminders in your actual world. If you need to wear a certain shirt for an event, hang it someplace you can't miss it. If you need to bring something with you to an event, put it in your car the night before.
Digital sticky notes & annotations would allow us to do this online too.
On every website, allow the user to place down sticky notes, highlight text, draw pictures, and so on. That way, when they return to the same page later, their note will be waiting for them.
Let the user include todos and reminders in their annotations. The physical note on the page can serve as a reminder, but the user could also find all of their todos on one central list (without needing to return to the location where they placed the note). That way you never lose anything.
Also allow the user to add annotations with reminders that fire at a certain time. At that time (or place, or whatever), the browser could remind you to come back to that page and do whatever you need to do.
Super easy, low-stakes database for tiny projects
I sometimes make tiny websites, games, etc. that need a database. Sometimes I want to store just a couple of values (some settings or information about the website). Sometimes I want to store a leaderboard of top scores in a game. Sometimes I want users to be able to create & publish extremely small objects of some kind.
Setting up an entire database is overkill when all I want to do is store a tiny bit of data for a personal project, so why not make a tiny one?
A tiny data store for tiny projects. No complicated SQL setup. No sharding or indexes. Nothing like that. This is for tiny projects that just need to store a few things.
No backend necessary. Some projects a personal. Maybe you're making a website for just a few friends. You don't need top-notch security, you just want to bodge together something that works for a few people you trust. If you want to read and write to your data store directly from the frontend, you should be able to via some simple API calls.
Easy manual editing. When you're working on a tiny project, you might not want to set up an entire admin view. But you do want to have quick & easy access to your data so you can read & change it manually.
To accomplish the above goals, I propose a tool that makes it possible to read & write to JSON files. Via a web frontend or an API, you can create a JSON file that's hosted on the web. Then, you can read & write to and from that file via an API. If you'd like to password-protect that file you can, or you can let anyone edit it without any permissions necessary (for extremely small & loose projects).
A programming language & editor optimized for live-streaming
Although people try, coding is one of the least live-streamable activities out there. It's almost impossible to watch someone else code, because so much is happening in the brain of the programmer that is not visible on the screen.
I want to see a programming language that puts your thinking on the page. What would it look like to program in a language optimized for showing your thought process as you make changes? Surely it would be better for individual programmers too.
Joint to-do list app for couples (or friends)
A todo list is great for reminding me of the tasks that I need to accomplish. But sometimes I need more than a reminder. I need motivation.
A simple phone notification just doesn't do it. My phone doesn't know better than I do, I think, and I certainly don't have to do what it tells me to!
But what if, when I haven't gone on a run in a long time, my phone doesn't notify me—it notifies my partner? Who can then convince me to get out and do it. That would certainly help.
AI Code Merger
Merge conflicts are infuriating. They're extremely confusing to solve, and feel like they shouldn't be necessary.
The fundamental problem is this: My friend and I are collaborating on a code project. On my computer, I write the code for Feature A. On her computer, my friend writes the code for Feature B. When we get back together, we should have a complete project with both features. But it's not actually that simple.
Code is extraordinarily finicky. A single mistake or mismatch anywhere in the code can break the entire project. And features need to be carefully integrated with each other to work properly. This is why we can't just collaborate in real-time in the first place; two changes being made at the same time can conflict with each other and need to be carefully merged together.
Merging code changes is a process that is too complex to write a straightforward algorithm for, but too tedious and painstaking for a human to enjoy. Fundamentally, it's a complex writing problem—perfect for a large language model.
So here's the pitch: Create an AI system that can take two versions of a codebase and intelligently merge them into a single, functional repository. Basically, an AI that handles merge conflicts.
If you built this successfully, and it could operate in near-realtime, it would unlock a whole new paradigm for collaborating on code.
Imagine a world where two people are collaborating in real-time, Google Docs style, on a codebase. Currently, this doesn't work because somebody always has a syntax error or the two features step on each other's toes or something. It's just not feasible.
But if an AI system could be constantly working under the hood to patch out broken features with feature flags & fix conflicts when two changes occur in roughly the same place, you could imagine a world where real-time code collaboration is possible.
Designing a code editor that makes this process make sense would be a bit of a heavy lift, but I don't see why it wouldn't be possible. And it could completely change the way we collaborate on code.