Making progress on side projects with content-driven development
ntietz.com
ntietz.com
One thing I'm doing since a few months is creating a fresh directory for every side project I start. Even if it's just "I wonder if I can (easily) extract all course information from this really slow school website that only offers a search bar" (it appeared to be easy). For a bit of structure, each directory starts with YYYYMM and a dash, and a few keywords that remind me what next side project I just started.
Inside the directory, there should be at least one text file containing steps I took, ideas I had, or URLs I visited, to provide my future self a nice amount of context whenever I'm revisiting that side project. For the course information side project, simply documenting the steps I took in the browser while visiting the school's website and just pasting the 'Copy as cURL' command for a certain request inside that file is sufficient! (I'm aware there's a lot of knowledge hidden in that previous sentence; it's more an example of writing down what steps you took while tackling the problem)
The directory listing, over time, should also give a nice insight of all the things I've discovered, tried, or perhaps even finished.
I'm not super familiar with Obsidian, but from your general description I think it might work best - I _think_ you can just have your (markdown?) Obsidian file in the project folder like you mentioned.
I'm usually working on hardware that's at least a couple of years old, and the experience with modern day desktop applications (websites in an Electron-wrapper, if you will) is that they're terribly slow on relatively okay, albeit older, hardware. Not to mention (but I haven't checked!) that you'll need the application to search through your content, perhaps due to the use of some database, instead of grep(1)ing for keywords inside text files. I'm not opposed to optimized, application-specific search, but, for personal usage, if I need the application to search through content, this makes data portability much more difficult.
I will say (because you specifically pointed out you haven't checked - I do enjoy clear and honest communication online) that Obsidian at least deals with straight Markdown files, so while (per my current understanding) the program itself isn't OSS, the datafiles are all easily importable into other systems, and the files themselves are grep-able and mostly human readable (all text is there, but extra features and layout will not show up as nicely as in a Markdown-specific renderer) in any text editor.
Have a good day X)
- assets/ where I drop all markdown documents, images, database dumps, or any file related to the project that shouldn't go into git.
- src/ it's a directory that contains repositories with source code.
edit: format
This both helps keep the feature creep and complexity down, and makes sure you always have a running demo to show or play with.
Side projects should be all fun, if they are not, its not a side project its a second job.
You will have gaps where you will not be able to work on it and having proper tests is making sure that you can come back to it.
I'm working on a shader for a video game, any advice on how I can write some tests for it?
That page also made it to HN in 2022 [1].
[0] https://simonwillison.net/2022/Nov/26/productivity/
[1] https://news.ycombinator.com/item?id=33762438
Edit: add HN link.