Pet-projects are useful to explore new technologies, to experiment with new features and approaches, and to get down the basics before diving into more advanced projects.
It might be a simple app or anything else with no serious use. Based on your learning path, you might do lots of them and your workspace can get a mess pretty quickly. So how do you organize them?
Do you develop them locally and then delete them or maybe leave them hoping you will add features later on when re-visiting?
Do you prefer to use some online sandboxes like Codepen or CodeSandBox instead, cause of easy set-up, access and no local mess?
Maybe you create a GitHub repo for each for version control/branches for experimenting and clone options later if you delete the local repo?
Or maybe you try to develop them into something useful, host them on Netlify (or services like Heroku for backend) and add them to your portfolio?
Top comments (17)
For really small stuff (say like trying out a JS method or property) I usually use CodePen. For experimental stuff I have a
projects
directory. Should a project in there become bigger and is going beyond just trying out stuff, I move it to arepo
directory and initialize a git repo. This way I kind of have a mental separation on what's just for testing and I also know which projects are actually a repo (on which I can rely to be backed up).I keep a local
scratch
dir, which is pretty a much a pile of work-in-progress, experiments and things that break everything. A scratch-pad, even. πFor work with any permanence, that goes into a very well organised source/git dir, with sub-dirs for owner/org and then repo.
Work-in-progress goes on feature branches in git. If it's really just some wild experimentation, I might not push these up, so these might just be local branches - but even so, the git diff/compare functionality is very useful, also commits & rollbacks while still experimenting.
If the work-in-progress reaches a point of sensible stability, or where I would get annoyed if I lost it even if it's not "complete",
push
it up.discovery
is also a great term!The bigger ones are developed locally and then get pushed on my GitHub.
Smaller ones are either gists or in CodePen, or, on some cases, on a tools section in my website. I also try to accompany new pet projects and experiments with dedicated blog posts.
My main pet project is called ScriptPad because it contains all my small scripts that I write to manipulate text and process information. It allows me to run these smaller pet projects on any clipboard or file. It even interacts with Alfred, Launchbar, Keyboard Maestro, Dropzone, and PopClip. It also uses the scripts from Node-Red in the built in Node-Red server and is displayable in the menubar similar to BitBar. Iβve used it in my daily workflows as well.
Itβs on a private GitHub repository with many branches of other tests that I keep trying to clean up. I manage the compiling of the code with Mask. I usually organize all my projects by language in the local directory that is backup continuously by Dropbox.
Every time I want to set up something new, I create a new cloud repository and clone it to my PC and working and sync everything in.
Events tasks, todos etc.
Once every while, I review my repositories and delete everything that is not worth keeping.
My style to organize projects cover 2 necessities:
1)Been organized.
2)Avoid working with extra long paths on your console and editor.
I have a folder structure something like:
~/programming/projects/personal/[coursera|udemy|tutorial|freecamp|frontendmaster...etc]
and inside each folder I create a specific folder for the course or tutorial.
This create a large path when working in console so what i do is to create a simlink to the home directory and I like to name the folder in home very short for example if I am doing a course on Vue 3 about the Composition API from Vue Mastery I would do the following:
Vue3 Project:
~/programming/projects/personal/vueMastery/course/vue3CompositionApi
my simlink in my home will be:
~/v3c
Then I work with the simlink in vscode and the console, hiding implementation details as a good developer π€ When I finish with the course I deleted the folder from my home directory and let the original as reference.
Btw I also create repositories in my github account for everything.
First of all, any project is its own repo, even if it's local stuff on my machine which I'm never going to publish.
Because it's important NOT TO LOOSE CODE over accidental file delete or change
~/coding directory for anything development-related
~/coding/to-be-developed/* stand-alone projects that are put aside for some time
~/coding/* stand-alone projects that are now in active development or maintenance
~/coding/open-source/* other people's open source projects
~/coding/packages/* public utilities, tools, packages I published
~/coding/abandoned/* stuff to never be maintained
~/coding/job-applications/* stuff I did to get a job
Git, and a local projects folder.
When i get too many, i move the older ones into a archived sub-folder.
Now that Github has free private repo's it became easier.
Before that, I used to use bitbucket for none public stuff.
Having it all in one place is nice though.
Going off on a tangent...
I am still working on what to do with binaries like docker images, game builds etc.
I've got a docker based home server I am considering, but no proper backup for it, only synced copies.
Maybe I should just give in and buy a NAS.
That would only leave the problem of offsite & a different medium.
Been there. UnRaid on small local servers works really really nice and no fuss with raid setup or disk/memory costs for FreeNAS
My tiny one-off projects are turned into blog posts.
yoursunny.com/t/2018/EmojiTetra-OLED/
When I explore hardware devices, each device type gets a GitHub repository, with projects in disjoint branches, so that I don't end up with too many repositories.
github.com/yoursunny/w600/tree/wea...
Local /home/work folder for projects. Everything to GitHub. Development and testing locally on home server using Docker (Xeon, UnRaid server). Remotely usually Netlify or AWS (have one small server again with Docker on RancherOS).
I create a folder, and start to code.
If I return into this folder, then I create a new repo on git(hub|lab) and I push it. I delete older folders from time to time.
github pet-projects, some one stay for years, couple of private, but the most is public, my secret upcoming one is: react-troll
I too have a "box" folder where I throw everything in it. Online ide are cool but I still more comfortable messing around on my own machine
I would like to ask... how do you usually manage the time you spend in these pet-projects?
Randomly! π