- Most files go straight to the default recommended location. This includes downloads, git repositories, programs, etc.
- Source code is on GitHub.
- Emails are on Gmail.
- Notes and todos are on Google Keep.
- Books are on Google Drive in PDF or EPUB format.
- Photos and videos are on Google Photos and YouTube.
- Music is on Spotify and YouTube.
- Movies are on Netflix, or in the Downloads folder (until they're watched and deleted).
- Documents and scans are on Google Drive. If I must name a file, I use this convention: "Some_Description-20190106.ext". I mostly rely on search, but I have some high-level folders as well: Books, Health, Finance, Travel, Work, School, Scans, Thoughts, Projects, AppData, Backups.
In 2019, I want to migrate from files to a database. My plan is to extract knowledge from files and online services, and them into a RDF triple store:
- Google
- Keep
- Maps
- Fit
- Contacts
- Gmail
- Calendar
- Reddit
- Hacker News
- Pocket
- Amazon
- eBay
- Mint
- Bitcoin
- MyFitnessPal
- Chrome
- LinkedIn
- Twitter
- Facebook
- GitHub
- 23andMe
- iCheckMovies
- GoodReads
- YouTube
- Spotify
- Netflix
- IMDB
- VoIP.ms
- Airbnb
- Uber
- Agoda
- Booking
- TripAdvisor
Lastly, I want to make a lot of this data public. I'll start by releasing the source code of old/ongoing projects on GitHub and release my ideas/thoughts on my blog.
I keep all my very current projects on the desktop along with temporary items and odd-balls I haven't classified. Everything else goes into folder called "A Reference System" which contains a folder for each letter of the alphabet.
> Everything else goes into folder called "A Reference System" which contains a folder for each letter of the alphabet.
Wouldn't it be easier to just keep the directory structure flat, and use software to jump between letters? For instance, on macOS I can just press the "C" key and Finder will jump to items that start with C.
Applications go into /Applications, unless they're games, in which case they go in ~/Games.
Downloads stay in ~/Downloads unless I have a reason to put them elsewhere. I also clear the Downloads folder whenever I'm running out of hard drive space.
Pages documents and similar go in ~/Documents.
The Desktop is my temporary workspace, for active projects.
I have a script that automatically downloads podcasts and Youtube Videos every evening. These go in either ~/Movies or ~/Music depending on whether they are audio or video.
---
Now, I also have a separate mirrored ZFS pool I consider my "Archive". This drive is meticulously organized to a semi-ridiculous degree I can't fully describe here, but here's an overview of the top level structure:
• Books: A collection of audiobooks, organized by series.
• Games: Video games, organized by franchise. All either DRM Free, or with patches included to remove online-activation requirements. Also roms of console games, for use with flash cards or emulators. I don't separate games by platform, because if I want to play a specific game, I'll move to the platform that game is compatible with, and not the other way around.
• Movies: Contains BluRay rips and decrypted iTunes purchases of both movies and TV shows, organized by franchise and/or season.
• Music: My (sadly small) music collection, all thrown into one folder because there aren't that many songs. I keep meaning to buy more...
• Personal: This contains my birth certificate, schoolwork, past job applications, health records, social media profile data exports, photographs, etc.
• Software: All software I've purchased or written myself, and free programs I want to remember to use again. Organized by platform (macOS X, Windows, DOS, etc.) with a separate folder titled "Multi-Platform" for anything compatible with multiple OS's. This unfortunately means that if I need to retrieve a Mac program I need to check both the Mac and Multi-Platform folders in order to find it, but I can't think of a better system.
I have a fairly specific system that I've developed, mostly due to my being fairly anal about not wanting to leave random files lying around after I'm done with them and wanting to keep as little as possible in my home directory. I tend to try to keep most things in my directory that's sync'd to cloud storage (previously Dropbox, now Nextcloud since Dropbox doesn't support non-ext4 on Linux); ~/Documents and ~/Pictures are both symlinks into that folder so that I don't have to keep track of which machine something is on. I try to keep my ~/Downloads directory fairly clean, and move things to the trash liberally (through trashcli) once my initial use is finished so that I can still access them later if I need to. The only other two (non-hidden) directories I keep in my home directory are ~/dotfiles (which is a private GitHub repo that I symlink my dotfiles from) and ~/code, which has subdirectories for various categories (`forks`, `scripts`, `projects`, `scratch`, and maybe a few others I'm forgetting). Finally, I have a ~/.scratch directory where I put text files I use to take notes, short scripts I write to test something, and other files I only need for a short time.
I am in the process of testing out transitioning from dropbox over to nextcloud. It has only been a couple of months, but so far, really working out great! Kudos to the devs/contributers of nextcloud!
C: windows, often used software (fastest SSD)
d: personal storage organised by type(folder), e: client files organised by client/project (future modifications get a new project folder), reference files have their own folder inside the client/project they are associated with.
More generic references go onto my personal drive.
I have it this way due to losing a ton of old work when I lost a hd, since then client files on their own drove that I backup online regularly. If I lose my personal/games drive it's no big deal to re download.
C: drive all temporary files like currently downloaded movies & music and default path files.If lost no worries.
D: Personal, Educational PDFs, Video tutorials and projects.
E: drive for videos, music and games data files.
D&E drives rsync with Google storage buckets. (GSUTIL)
Housekeeping - PDFs and Tutorial videos which I haven't referenced in 2years will be eventually deleted. On first identification I will rename the folder as CBD - Foldername(cbd - can be deleted). Next time when I am browsing files in explorer if a CBD catches my eye, I will delete it. I Regularly run dir /s and save output in TXT file for reference purposes, only one time I opened it. Decided not to rename any downloaded files as using the same name it can be found again by googling, if I rename it it's hard to find in internet. I also use a duplicate finder to find and delete duplicate files.
Project files are in google source repository and partially in GitHub & bitbucket as well.
For references links, Have a set of files named it on the subject like java.txt, git.txt, gcp.txt which contains all the commands and links which I had found useful and I am typing it regularly in marked down format itself, so it looks fancy in vscode. This reference is in D:\",
I use the out of the box defaults on my Ubuntu desktop. Documents, Videos, Music, etc... with my code going into ~/Projects. I have random binaries and shell scripts I use in ~/.bin. I do like to keep a tidy and organised hard drive and have shell scripts for various related tasks to this. Also I have heavily used cloud storage in the past, but I don't like this now, as in I'm now uncomfortable with this. I recently got a 1TB SSD and with my previous hard drive upgrades in the past I have several HDD/SSD's lying around that I back up to regularly. I have a Makefile in $HOME to do this that calls some shell scripts that use rsync underneath.
(Slightly offtopic as it doesn't answer the question)
Like more people here, I have really everything in the cloud, so my filesystem (encrypted linux ext4) is a complete mess. I have a github repository with scripts that, after entering my decryption password, will restore any linux/Mac/windows machine to the production machine I need within minutes. So I just format my drive when it gets annoying.
I get stressed about everything being in the cloud sometimes, but there is so much that I don't really know how I would back it up in an organized fashion. Still waiting for an affordable backup service that allows me to download 'the blob that is my life' from all top 25 services (gmail, google phones, drive, docs, ms office cloud, github, Dropbox etc). But I have not found something like that that actually works with the rancid volume I have and the trust I would need to provide such a service. Ofcourse business documents etc are backed up (legal requirement), but that is a really tiny % of everything I have.
I’m Johnny. Feedback much appreciated, I’m working like a busy little bee on the site as we speak. Should have a show HN app ready in a couple of months, but I’m learning JS/React as I go so it’s taking time. :-)
One issue that I see arising is the interaction with emails between your system and other Johnny Decimal systems. Say I’m running a team at the company I work at and my team uses this system jointly. Another team also uses it. I email them with an email labeled with a decimal number, and suddenly their system has items out of order.
A good question. I have an idea for handling multiple projects in an overlapping environment, but it involves typing more characters of course which you’re not going to want to do every time. (The idea is to assign each project a 3-letter prefix. So 72.02 becomes PRJ.72.02.)
I use MS outlook at work and you can actually open incoming emails, edit the subject line and save it, used this a few times as a quick way to tag my emails on what needs to be done with them, e.g.:
I'm actually using Johnny decimal now, except that I ended up using 100 buckets instead of 10 because some of the categories simply had too many items in them and they would have overflowed or had no room to grow in them otherwise.
It's so nice to have a good system and never doubt where to find something and where to put a new thing.
I switched from our previous mess to Johnny decimal by using a python script that processed a table in an emacs org mode file. The script filled the rows in the table with the file and directory names and I could then assign a category to each file or directory and say what the script should do to them. Then the script showed the outline of my Johnny decimal system so I could check that's what I wanted. This made it easy to play around with possible categories for all my existing stuff until I was satisfied. In the end it copied all the files to their new home.
The problem I'd have with that is that I'd never be able to commit to a fixed set of areas or categories since the type of work I do is constantly evolving. Plus I've always had trouble creating mutually exclusive categories.
What works well for me is to keep all things I'll need soon in the top level of my documents folder and when I'm done with it I move it into an archive folder.
This way my documents folder has few files and folders in an easily accessible flat heirarchy. While old files can be easily searched for in the archive folder.
That can certainly be an issue, yes. It's not one I personally have come across yet as I tend to have quite distinct 'domains' that don't change much.
At work, I'm a contractor and I typically spend 1-3 years on a project. Each gets its own system, nice and simple.
My home system has 10-19 capturing all of my 'personal, daily life' which leaves plenty of areas for my personal projects. For instance, 50-59 is Johnny.Decimal itself.
So far I've implemented JD:
- Managing a 2 year contemporary dance production, multiple locations, staff, ticketing, marketing, etc.
- Consolidating 200+ data centres in to 7; I did basically all of the hardware from procurement to having a green light on a NIC.
- Running an infrastructure upgrade project for a major bank.
- Running 2nd level desktop support for an international packaging company.
- My personal life, including managing the limited company that I contract through.
I plan on anonymising and documenting as many of these cases as I can on the site. I just need to find the time.
I need to write another page explaining this. You may have many non-overlapping ‘domains’, whose numbers don’t relate to each other at all. You just have to keep them separate: home computer, work computer. This job, the next job. Etc.
The system running my personal life has been going since 2012. Meanwhile, those other jobs have come and gone.
Maybe it’s just me – clearly I have a mind that loves numbers – but I haven’t found it confusing at all.
Weirdly I have found that I have developed my own internal standards. I generally need to travel with work, and that always ends up being ‘16 Travel’.
(10-19 is usually “Administration” at work.)
High on my list of stuff to write is a whole bunch of example pages. Drop me an email if you’d like me to let you know when they’re done.
I don't find the numbers confusing either. It's just my mind couldn't accept that you could fit everything in your life in 10 areas x 10 categories structure (well, 9x9 really, since 0s are for metadata). So thanks for clarifying (and this definitely needs to go on the page, IMO).
If I may ask here, how do you handle things that cut across two or more of your existing systems? Do you duplicate things? Or use references with target collection name, e.g. "Work Computer 12.34 Some shared stuff"?
This is why we need tags and other metadata in the filesystem. (Windows actually supports this via alternate data streams, but very few apps and tools use it) Used to have an overview of this here: (archive.org might have a copy) http://developeriq.in/articles/2013/aug/19/alternate-data-st...
Chunking stuff into sets of ten is a good idea, memorizing the arbitrary numbers I’m not so sure about, but...
“An important restriction of the system is that you’re not allowed to create any folders inside a Johnny.Decimal folder.”
WHAT WHY
Like let’s say I’m using your example structure and I am working on a new marketing campaign. With a ton of moving parts to it - new logos to make, contracts to sign and save, websites to design, ads to put together, brochures to design and print, etc, etc. Potentially hundreds of files for each campaign. I just throw all this stuff into the same directory as all the other marketing campaigns? This sounds absolutely insane to me.
I guess alternatively I make a new JD folder - 30.04 Rumplestilskin campaign, 30.05 Butterscotch campaign, etc, but what happens once I’ve filled up the name space and have a new project?
Your use-case needs a bit more thought, and doesn't fit the simple "marketing" example on the website. But that's the beauty of my system – it forces you to actually think about your business, about how you arrange things. It makes you deconstruct it in your mind in order to create that model. I personally find that very instructive in and of itself.
"Hundreds of files for each campaign" is clearly something that needs to be managed. If you're interested in exploring a JD solution for it, I'd be very happy to help. This is all great experience for me, and the more I know about how other people use this system, the better I can make it overall.
I can’t imagine making it work for me, to be honest. I’m looking at some finished projects and I’ve got more than ten subdirectories in most of them. Obviously this works for you but it sure sounds impractical for stuff like what you can see a hint of in http://egypt.urnash.com/media/blogs.dir/1/files/2019/01/Scre... ...
Damn. This might works for my bookmarks folder. I have ton of bookmarks on Firefox and it becomes a disorganized mess. Definitely will try it and see how it goes. Thanks for sharing it.
How do you handle old files, if you don't mind me asking? My document directory has the year at the root level, i.e. ~/Documents/2018/billing/projectname which is nice in so far that you don't have to scan through files and folders that stopped being relevant.
Because the ID is incremental, old stuff naturally sorts itself.
For example, I have '16 Travel' as a category. I make a new JD number for each trip I take and create Finder & email folders. Order details and PDFs tend to live there.
16.01 was, let me look ... a trip to Perth in 2012. And my latest, 16.31, just happened. But of course my '16 Travel' folder sorts like:
16.01 Trip to Perth to see Bart
16.02 <name of trip>
16.03 <name of trip>
...
16.29
16.30
16.31 Hunter Valley, Xmas '18
- so those old trips just kind of hide themselves away. My eye only ever looks at the most recent stuff, and all of the recent things sit near each other. It just works.
This also has the advantage in that you don't need to remember which year a thing was in. They're all there, visible.
That's a very cool actually, I hadn't even considered it being that simple. This has me convinced to give this a shot soon with a new new system. Thank you!
Projects: I have a Shared folder on ~ which has bidirectional sync with my desktop (with Resilio[1]). Inside that folder are my current projects. The old ones, are on private git repos (the codebase) and on backblaze (full replicated production project, with rclone[2]). I use Resilio because its fast, reliable and it supports ignore patters (eg node_modules)
Dotfiles: For syncing my dotfiles, ssh keys and app settings across my machines I use Mackup[3]. Life saving tool. My macbook has the exact same settings as my desktop and vice versa. I keep all my settings in a Dropbox folder and they are symlinked automatically on the machine.
General: I have 3 subfolders on Downloads. Chrome, Attachments and Torrents. Each one is self explanatory. I like my downloads to be organized, because I clean them up occasionally. I use Desktop as a temp area, therefore I don't have permanent files there. All my documents (financial, reports etc) are on Dropbox organized by year.
Everything inside I:\home\ with over a decade of shifting hierarchical patterns slowly accumulating.
Under I:\home\: archive, art, bin, configs, data, financial, logs, media, notes, photos, projects, scans, scripts, utility, vms, website, writing. (I should merge utility into bin...)
I:\home\archive\ is a mostly write-only repository of backups of other stuff (exports of bookmarks, email, old computers, old installers/isos I want to keep, etc.)
I:\home\media\ is mostly external media and further subdivided into: blender, books, comics, composing, documentation, downloads, flash, midi, music (mp3s), pdfs, pictures, recorded, screenshots, sounds, ttyrecs.
I:\home\notes\ is an ever shifting collection of .txt files, only going one or two more folders deep (fiction, game design, gaming, hobby, jobs, journaling, productivity, programming, security, self, social, style, web, etc.)
I:\home\projects\ is currently mostly a flat list of programming projects, mostly gamedev related - I have custom tools to scan it for .projnfo sub-directories containing screenshots and known files like description.txt for metadata, which are compiled into a single easy to scan html page to rediscover projects I've previously abandoned. I abuse prefixes / naming schemes to organize stuff some too (E.g. mmk.foo.bar for typescript libs, libMmk* for C++ libs, mmk_xyz for Rust projects, CamelCase for C#, www_xyz for non-library typescript projects). Current exceptions to the flat list all start with an underscore: _other (other people's projects I'm contributing to or building), _test (throwaway projects for testing compiling things), _templates (copyable projects), _nupkg (local C# nuget packages). Previously I also had "new", "stable", and "dead" categories, but I got rid of them as not useful and making my project paths unstable.
My bookmarks are a little more consistent/'modern': A bunch of icon-only bookmarks directly on my bookmarks bar, one layer of top level categories (currently "Life", "Work/Dev", "Art", "Music", "Play", "Self & Social") with one more layer of subcategory underneath that. I configured a "search engine" such that typing "b asdf" searches my bookmarks with the url chrome://bookmarks/?q=asdf , which is the most important bit - the folders are often just there to give me search terms.
I'm on Linux and use primarily command line tools for development, so I often go the path of least resistance.
I use Go quite a bit, which expects (well, not as much anymore) everything to be under `GOPATH`. Instead of messing with build scripts setting environment variables, I just set my GOPATH in one place and use a tool to check out specific versions of dependencies. It's convenient to set `GOPATH` to be my home directory, so my code projects (even non-Go projects) live in `~/src/...`, and documentation lives in each repository.
For personal stuff, I use:
- Documents - tax returns and other important docs
- Pictures - screenshots and other mostly-worthless images
- Downloads - anything temporary; gets cleared out periodically and serves as my "temp" dir
- dot files for configuration (I don't back these up on a repo or anyone, I manually copy the 5 or so files I need)
- network share - anything large or somewhat important that only gets accessed occasionally (ISOs, family movies/pictures, etc); rely on RAID to protect it
- large HDD - games, VMs, and other large data that's not very important
- a few directories in my home directory
Documents and a few random directories get backed up off site (tarsnap), and the rest is on code hosting (mix of BitBucket, GitHub, and GitLab).
Things are somewhat orderly, but not really well thought-out. For anything that the system uses, I put it wherever the system expects it (~/.local, /etc, etc). I don't worry about it too much, and I try to purge useless crap every few months (usually aim to delete a few gigs at least, which is usually a few hundred files).
All downloaded files go to huuge ~/Downloads. Files to be preserved are then moved to more appropriate location. From time to time I delete oldest and biggest files from Downloads.
Photos and videos go to Personal folder organized by year and event (ie. 2018/Cristmas).
Web development is in /var/www, /var/node per-project.
NetBeans projects in default location
Company stuff to $companyName/documents $companyName/projects etc.
Documents that are related to specific point in time are prefixed with YYYY or YYYYMMDD.
Documents that are subject to change are siffixed by v1, v2...
Movies go to movies folder, ebooks and audio books to books folder - organized per-title. Music goes to music folder in artist/album structure.
Disk images, install packages go to Install folder.
Personal documents are just a messy Documents folder.
Symlinks are used when data is stored in other location than it belongs to (ie. due to size or fixed path requirements)
I have few tmp folders where is stuff that I can afford lose at any time (but I am too lazy to delete)
I backup all important folders with rsync to remote location.
Out of all other comments in this thread, my file structure matches yours most, except company. My Dropbox is about 30gb, it has Apps for all webapps saving data to Dropbox from IFTTT, android, etc. Documents has all documents with subfolders like 01 Education, 02 Work, 03 Passport, 04 Indian etc. Then Photos, etc.
One download folder, one temp folder, one repos folder, one apps folder. Everything I care about is a git repo in the repos folder, replicated in 2 other locations. Everything else, I don't mind losing (temp and download are pretty transient anyway and apps can always be downloaded again).
- bunch of random files in ~/Desktop/
- more random files in ~/Desktop/old/
- more more random files in ~/Desktop/old/old/...
- real stuff in ~/dev and ~/Site/
- a mix of important and unimportant files in ~/Downloads/
Mine's even uglier: Since disk storage grows much faster than my use of it, the last thing I do as I move to a new computer is to copy its entire hard disk to ~/archive/MachineName. (I do delete swap files since they're large on the newer images.) I (almost) never lose anything, but it's a bear to find things, and do I really need all those Windows files? On the other hand, I can easily recreate the entire working environment, OS, apps, and all this way, and that's saved my butt now a couple of times.
Fortunately, Win10 makes it easy to delete Recycle Bin and Downloads after N days, so at least some things are self-cleaning...
- Desktop has the same fate this ^. Have a CLI tool that takes everything from the desktop and puts it in ~/Desktop/cleaned/
- ~tools/dotfiles/ hosts all dotfiles with a Makefile that sets everything up
- ~tools/<randomTools> - contains mostly useful utilities and scripts like fonts, vpn configs, terminal color schemes, config patches to apply to `/etc/` after fresh install etc.
- ~Projects/<client|company>/<project_name> for paid work projects
- ~Projects/<projectName> for personal projects
- ~Playground/<experiment> for experiments, prototypes or building software from github out of curiosity
- ~Applications/<appName> for apps I build from source and copy/link binaries to `~/bin`. I'm on Linux so this is non-standard.
- ~GoogleDrive/<accountName> for Google drive sync with Insync
- ~Vaults/<vaultName> for mounting cryfs encrypted directories from the Google Drive directories. (some times use plasma vault for this)
To be consistent, I treat myself as a client and follow all the same rules. But I also give the important ones their own "brand" name. It's a pseudo "exit" plan. That is, I could "sell" to someone else.
The gist is, doing my own projects differently took away more then it helped.
One thing I really liked in the old MacOS was that the Desktop wasn't really a location for files, it was just a place where you could move them to keep them handy to work on, and then use the "put away" command to send them back to wherever they came from. (They really needed some session management for different kinds of tasks, though.
Doing exactly this but from time to time I move my old desktop folders in a backup folder with a date. But now I have so many in there with duplicate files. I'm sure I'd win a lot of disk space by merging/deduping those folders.
Pretty much what the xkcd says. I basically never delete files, they just get moved to deeper layers as time goes by. I roughly know where to find my elementary school presentations, first websites, university assignments and emails, rotated irclogs.. The mental map will take me there if curiosity awakens, better not to mess it up by organising.
I'm in a similar boat, and I'll mention one "weird trick" that has helped me.
What used to happen was I'd download, say, an Ubuntu image, use it, and then say "... I might need this again" and leave it there. Then a week goes by, I've forgotten its there. Sorting by Date Added its now piled under 10 other items. The empire of dirt grows...
The trick? A Trash that automatically empties items older than 30 days. MacOS has this, at least. (Note, this is a rolling empty; not an "empty everything every month" kind of deal). Now I just delete those "I might need this..." files. I know I can grab it from the Trash if I need it again, which I've done a few times. Most of the time, I didn't need it, and so it gets thrown out as it should.
The effect is two fold. Obviously there's less junk in ~/Downloads in general. But that has the knock-on effect that it is now less daunting to go through and sweep up ~/Downloads.
Empirically, my ~/Downloads, ~/old.Downloads, etc. used to be filled with easily 400 files and folders each. Now? My current ~/Downloads is at 76 items after two years. And that's currently at my peak; I'm about to go through and clear out about 20 of those things. Which is easy to do, compared to trying to face a mound of 400 files with names like "TEST.txt"...
This is similar to /tmp/ on Linux (well, Debian at least). On each reboot it gets emptied which means I put there everything that I will probably not use after this session. Suspend / wake cycle doesn't empty /tmp/ directory, but just knowing it will get emptied sooner or later is enough.
I use Classifier to manage file in my Ubuntu Downloads directory; it moves files into subdirectories by extension. I run it daily from cron, and my backup script runs it before backing up.
Win10 makes it easy to automatically empty the Recycle Bin and Downloads (but sadly, not other locations). One major PITA is that Firefox does not use the standard Downloads folder/directory, but has its own. It's configurable, of course, but I never remember until I've already got a zillion things in it, and I try to run everything with a minimum of customization.
Firefox defaults to remembering where you last downloaded a file for each site. This is useful for things like image sharing sites when you always want to drop pictures into your pictures folder, but you can disable it and always use the default downloads folder.
In about:config, set 'browser.download.lastDir.savePerSite' to false (you may have to create the preference), set 'browser.download.useDownloadDir' to true, and set 'browser.download.lastDir' to your preferred location.
This used to be me until I started using screenshot shortcuts that put images in the clipboard instead of files. You can paste directly into jira, slack, hangouts, whatsapp web, and many other places.
Screenshots are a big part of my workflow too, and this made things feel a lot cleaner for me. This will automatically put all your screenshots into a specific folder (assuming you're on OSX).
i often work with some kinf of text files. i tried to simulate my workspace. Folders became like real world objects. Desk, incoming post box, archive, whiteborad and so forth. Then there is a temp folder.
Any opinions on partitioning? Or dual booting Linux and Windows?
I've been a Linux user for eons, but recently got Windows to dual boot for video editing. I'm not quite sure where to put the partition, what FS to use to share files between the two, etc.
Use GPT. No more 4 partitions limit and extended partition fiddling when risizing or moving stuff (that means UEFI for booting, if your computer is old you might have to spend some time in the BIOS to set things up).
You can resize live from windows (since version 7 I believe).
I'd use an NTFS partition to share files (because fat32 don't have enough prevention loss measure to my taste). NTFS partition access requires much CPU cycles though.
I have a few folders under home I've used regularly for many years:
docs
projects
build
bin
crap
docs contains documents organized into subcategories like biz and personal.
projects contains all my various paid and personal programming and hardware projects; each in their own subdirectory.
build is a playground for building and trying out new software.
bin contains non-packaged executables. I find /usr/local/bin to be a poor alternative because it has to be moved separately when I install a new OS.
crap contains subdirectories in the format YYYYmmdd. E.g. 20190105. Whenever I accumulate too much crap in my home directory, I move it all to ~/crap/$(today)/. today is an alias for date +%Ymd.
The single best thing I've done to keep my home folder organized is to empty my downloaded files regularly. I have a systemd timer that removes everything from ~/Downloads once a day, as well as all ~/Pictures/Screenshot* . 99% of the things we download we don't really need, and it's a great habit to move things you _do_ want to keep because then you have to say where is the right place for them.
Also, for ~/Music - I use Beets (beets.io) and it saves me so much time.
Nowadays I make a folder for everything (even if there is only one file in it) but not subfolders ever.
Movies and TV shows live in ~/Videos, Music in ~/Music, downloads in ~/Downloads and are moved to ~/Download/Archives if binaries or drivers or computer things that I might need later. ~/Documents is huge but it contains everything but only folders and it has a ~/Documents/Archives for things not needed anymore. ~/Documents is ideally for documents not produced by me. Those produced by live in ~/Dropbox (1 Tb).
I have a ~/Dev with a ~/Dev/Documentation (produced by me), ~/Dev/DocRoot, ~/Dev/tmp (for experiments), ~/Dev/containers, etc.
~/Desktop is empty.
~/Images is for memes I'll never look at again (digital hoarding) and that wallpaper I have been using for years.
There is a ~/.notmine but it's not mine, don't know what's in there or who put it there and who manages that content.
On Windows I have %USER%\Desktop\Documents because %USER%\Documents is insane (every app put things there that aren't mine).
The most important step for me that removed clutter was putting everything in its own folder.
I have my home directory on a separate partition so I don't have to lose all my files when I reinstall my OS. My downloads go to ~/Downloads. I move files from here regularly to more appropriate places.
All my projects go in ~/projects which maybe be further classified as android, web etc.
I have custom bash/python scripts in ~/scripts
All my personal photos and videos go in a separate partition, classified into year and event.
Most of my important files and documents are on Dropbox and Google drive.
I use rclone with backblaze for archival purposes.
249 comments
[ 3.3 ms ] story [ 256 ms ] thread- Most files go straight to the default recommended location. This includes downloads, git repositories, programs, etc.
- Source code is on GitHub.
- Emails are on Gmail.
- Notes and todos are on Google Keep.
- Books are on Google Drive in PDF or EPUB format.
- Photos and videos are on Google Photos and YouTube.
- Music is on Spotify and YouTube.
- Movies are on Netflix, or in the Downloads folder (until they're watched and deleted).
- Documents and scans are on Google Drive. If I must name a file, I use this convention: "Some_Description-20190106.ext". I mostly rely on search, but I have some high-level folders as well: Books, Health, Finance, Travel, Work, School, Scans, Thoughts, Projects, AppData, Backups.
In 2019, I want to migrate from files to a database. My plan is to extract knowledge from files and online services, and them into a RDF triple store:
- Google
- Keep
- Maps
- Fit
- Contacts
- Gmail
- Calendar
- Reddit
- Hacker News
- Pocket
- Amazon
- eBay
- Mint
- Bitcoin
- MyFitnessPal
- Chrome
- LinkedIn
- Twitter
- Facebook
- GitHub
- 23andMe
- iCheckMovies
- GoodReads
- YouTube
- Spotify
- Netflix
- IMDB
- VoIP.ms
- Airbnb
- Uber
- Agoda
- Booking
- TripAdvisor
Lastly, I want to make a lot of this data public. I'll start by releasing the source code of old/ongoing projects on GitHub and release my ideas/thoughts on my blog.
Maybe the rest is a little Google-centric for me. Perhaps that's why I'm having trouble being organised; I haven't bought 100% into any ecosystem.
Do you not keep source code locally? Or is it in two places?
2. Download your data [2]
[1] https://support.google.com/accounts/answer/1187538
[2] https://support.google.com/accounts/answer/3024190
Wouldn't it be easier to just keep the directory structure flat, and use software to jump between letters? For instance, on macOS I can just press the "C" key and Finder will jump to items that start with C.
Applications go into /Applications, unless they're games, in which case they go in ~/Games.
Downloads stay in ~/Downloads unless I have a reason to put them elsewhere. I also clear the Downloads folder whenever I'm running out of hard drive space.
Pages documents and similar go in ~/Documents.
The Desktop is my temporary workspace, for active projects.
I have a script that automatically downloads podcasts and Youtube Videos every evening. These go in either ~/Movies or ~/Music depending on whether they are audio or video.
---
Now, I also have a separate mirrored ZFS pool I consider my "Archive". This drive is meticulously organized to a semi-ridiculous degree I can't fully describe here, but here's an overview of the top level structure:
• Books: A collection of audiobooks, organized by series.
• Games: Video games, organized by franchise. All either DRM Free, or with patches included to remove online-activation requirements. Also roms of console games, for use with flash cards or emulators. I don't separate games by platform, because if I want to play a specific game, I'll move to the platform that game is compatible with, and not the other way around.
• Movies: Contains BluRay rips and decrypted iTunes purchases of both movies and TV shows, organized by franchise and/or season.
• Music: My (sadly small) music collection, all thrown into one folder because there aren't that many songs. I keep meaning to buy more...
• Personal: This contains my birth certificate, schoolwork, past job applications, health records, social media profile data exports, photographs, etc.
• Software: All software I've purchased or written myself, and free programs I want to remember to use again. Organized by platform (macOS X, Windows, DOS, etc.) with a separate folder titled "Multi-Platform" for anything compatible with multiple OS's. This unfortunately means that if I need to retrieve a Mac program I need to check both the Mac and Multi-Platform folders in order to find it, but I can't think of a better system.
More generic references go onto my personal drive.
I have it this way due to losing a ton of old work when I lost a hd, since then client files on their own drove that I backup online regularly. If I lose my personal/games drive it's no big deal to re download.
D: Personal, Educational PDFs, Video tutorials and projects.
E: drive for videos, music and games data files.
D&E drives rsync with Google storage buckets. (GSUTIL)
Housekeeping - PDFs and Tutorial videos which I haven't referenced in 2years will be eventually deleted. On first identification I will rename the folder as CBD - Foldername(cbd - can be deleted). Next time when I am browsing files in explorer if a CBD catches my eye, I will delete it. I Regularly run dir /s and save output in TXT file for reference purposes, only one time I opened it. Decided not to rename any downloaded files as using the same name it can be found again by googling, if I rename it it's hard to find in internet. I also use a duplicate finder to find and delete duplicate files.
Project files are in google source repository and partially in GitHub & bitbucket as well.
For references links, Have a set of files named it on the subject like java.txt, git.txt, gcp.txt which contains all the commands and links which I had found useful and I am typing it regularly in marked down format itself, so it looks fancy in vscode. This reference is in D:\",
Like more people here, I have really everything in the cloud, so my filesystem (encrypted linux ext4) is a complete mess. I have a github repository with scripts that, after entering my decryption password, will restore any linux/Mac/windows machine to the production machine I need within minutes. So I just format my drive when it gets annoying.
I get stressed about everything being in the cloud sometimes, but there is so much that I don't really know how I would back it up in an organized fashion. Still waiting for an affordable backup service that allows me to download 'the blob that is my life' from all top 25 services (gmail, google phones, drive, docs, ms office cloud, github, Dropbox etc). But I have not found something like that that actually works with the rancid volume I have and the trust I would need to provide such a service. Ofcourse business documents etc are backed up (legal requirement), but that is a really tiny % of everything I have.
Close! Johnny.Decimal. https://johnnydecimal.com
I’m Johnny. Feedback much appreciated, I’m working like a busy little bee on the site as we speak. Should have a show HN app ready in a couple of months, but I’m learning JS/React as I go so it’s taking time. :-)
Interesting note: Dewey Decimals are zero indexing. And of course, "000" is for computer science.
00 is where I store metadata.
I’ll think on this.
- [FOLLOW UP] Lorem ipsum dolor...
- [ASK MICHAEL] Lorem ipsum dolor...
- [INCLUDE IN PROPOSAL] Lorem ipsum dolor...
It's so nice to have a good system and never doubt where to find something and where to put a new thing.
I switched from our previous mess to Johnny decimal by using a python script that processed a table in an emacs org mode file. The script filled the rows in the table with the file and directory names and I could then assign a category to each file or directory and say what the script should do to them. Then the script showed the outline of my Johnny decimal system so I could check that's what I wanted. This made it easy to play around with possible categories for all my existing stuff until I was satisfied. In the end it copied all the files to their new home.
Thanks for creating Johnny Decimal.
I have come across situations where you need more than 10, yes. I plan on addressing it in a future post on the site.
If you’re able to share, I’d love to know more about your case. If not, no stress. hello@johnnydecimal.com.
What works well for me is to keep all things I'll need soon in the top level of my documents folder and when I'm done with it I move it into an archive folder.
This way my documents folder has few files and folders in an easily accessible flat heirarchy. While old files can be easily searched for in the archive folder.
At work, I'm a contractor and I typically spend 1-3 years on a project. Each gets its own system, nice and simple.
My home system has 10-19 capturing all of my 'personal, daily life' which leaves plenty of areas for my personal projects. For instance, 50-59 is Johnny.Decimal itself.
So far I've implemented JD:
- Managing a 2 year contemporary dance production, multiple locations, staff, ticketing, marketing, etc.
- Consolidating 200+ data centres in to 7; I did basically all of the hardware from procurement to having a green light on a NIC.
- Running an infrastructure upgrade project for a major bank.
- Running 2nd level desktop support for an international packaging company.
- My personal life, including managing the limited company that I contract through.
I plan on anonymising and documenting as many of these cases as I can on the site. I just need to find the time.
I really like this idea, and am reading through the site right now, and my main fear is that I'll quickly run out of top-level categories.
I need to write another page explaining this. You may have many non-overlapping ‘domains’, whose numbers don’t relate to each other at all. You just have to keep them separate: home computer, work computer. This job, the next job. Etc.
The system running my personal life has been going since 2012. Meanwhile, those other jobs have come and gone.
Maybe it’s just me – clearly I have a mind that loves numbers – but I haven’t found it confusing at all.
Weirdly I have found that I have developed my own internal standards. I generally need to travel with work, and that always ends up being ‘16 Travel’.
(10-19 is usually “Administration” at work.)
High on my list of stuff to write is a whole bunch of example pages. Drop me an email if you’d like me to let you know when they’re done.
I don't find the numbers confusing either. It's just my mind couldn't accept that you could fit everything in your life in 10 areas x 10 categories structure (well, 9x9 really, since 0s are for metadata). So thanks for clarifying (and this definitely needs to go on the page, IMO).
If I may ask here, how do you handle things that cut across two or more of your existing systems? Do you duplicate things? Or use references with target collection name, e.g. "Work Computer 12.34 Some shared stuff"?
I'll drop you an e-mail too.
“An important restriction of the system is that you’re not allowed to create any folders inside a Johnny.Decimal folder.”
WHAT WHY
Like let’s say I’m using your example structure and I am working on a new marketing campaign. With a ton of moving parts to it - new logos to make, contracts to sign and save, websites to design, ads to put together, brochures to design and print, etc, etc. Potentially hundreds of files for each campaign. I just throw all this stuff into the same directory as all the other marketing campaigns? This sounds absolutely insane to me.
I guess alternatively I make a new JD folder - 30.04 Rumplestilskin campaign, 30.05 Butterscotch campaign, etc, but what happens once I’ve filled up the name space and have a new project?
Your use-case needs a bit more thought, and doesn't fit the simple "marketing" example on the website. But that's the beauty of my system – it forces you to actually think about your business, about how you arrange things. It makes you deconstruct it in your mind in order to create that model. I personally find that very instructive in and of itself.
"Hundreds of files for each campaign" is clearly something that needs to be managed. If you're interested in exploring a JD solution for it, I'd be very happy to help. This is all great experience for me, and the more I know about how other people use this system, the better I can make it overall.
For example, I have '16 Travel' as a category. I make a new JD number for each trip I take and create Finder & email folders. Order details and PDFs tend to live there.
16.01 was, let me look ... a trip to Perth in 2012. And my latest, 16.31, just happened. But of course my '16 Travel' folder sorts like:
- so those old trips just kind of hide themselves away. My eye only ever looks at the most recent stuff, and all of the recent things sit near each other. It just works.This also has the advantage in that you don't need to remember which year a thing was in. They're all there, visible.
Projects: I have a Shared folder on ~ which has bidirectional sync with my desktop (with Resilio[1]). Inside that folder are my current projects. The old ones, are on private git repos (the codebase) and on backblaze (full replicated production project, with rclone[2]). I use Resilio because its fast, reliable and it supports ignore patters (eg node_modules)
Dotfiles: For syncing my dotfiles, ssh keys and app settings across my machines I use Mackup[3]. Life saving tool. My macbook has the exact same settings as my desktop and vice versa. I keep all my settings in a Dropbox folder and they are symlinked automatically on the machine.
General: I have 3 subfolders on Downloads. Chrome, Attachments and Torrents. Each one is self explanatory. I like my downloads to be organized, because I clean them up occasionally. I use Desktop as a temp area, therefore I don't have permanent files there. All my documents (financial, reports etc) are on Dropbox organized by year.
[1] https://www.resilio.com/individuals/ [2] https://rclone.org/ [3] https://github.com/lra/mackup
Under I:\home\: archive, art, bin, configs, data, financial, logs, media, notes, photos, projects, scans, scripts, utility, vms, website, writing. (I should merge utility into bin...)
I:\home\archive\ is a mostly write-only repository of backups of other stuff (exports of bookmarks, email, old computers, old installers/isos I want to keep, etc.)
I:\home\media\ is mostly external media and further subdivided into: blender, books, comics, composing, documentation, downloads, flash, midi, music (mp3s), pdfs, pictures, recorded, screenshots, sounds, ttyrecs.
I:\home\notes\ is an ever shifting collection of .txt files, only going one or two more folders deep (fiction, game design, gaming, hobby, jobs, journaling, productivity, programming, security, self, social, style, web, etc.)
I:\home\projects\ is currently mostly a flat list of programming projects, mostly gamedev related - I have custom tools to scan it for .projnfo sub-directories containing screenshots and known files like description.txt for metadata, which are compiled into a single easy to scan html page to rediscover projects I've previously abandoned. I abuse prefixes / naming schemes to organize stuff some too (E.g. mmk.foo.bar for typescript libs, libMmk* for C++ libs, mmk_xyz for Rust projects, CamelCase for C#, www_xyz for non-library typescript projects). Current exceptions to the flat list all start with an underscore: _other (other people's projects I'm contributing to or building), _test (throwaway projects for testing compiling things), _templates (copyable projects), _nupkg (local C# nuget packages). Previously I also had "new", "stable", and "dead" categories, but I got rid of them as not useful and making my project paths unstable.
My bookmarks are a little more consistent/'modern': A bunch of icon-only bookmarks directly on my bookmarks bar, one layer of top level categories (currently "Life", "Work/Dev", "Art", "Music", "Play", "Self & Social") with one more layer of subcategory underneath that. I configured a "search engine" such that typing "b asdf" searches my bookmarks with the url chrome://bookmarks/?q=asdf , which is the most important bit - the folders are often just there to give me search terms.
I use Go quite a bit, which expects (well, not as much anymore) everything to be under `GOPATH`. Instead of messing with build scripts setting environment variables, I just set my GOPATH in one place and use a tool to check out specific versions of dependencies. It's convenient to set `GOPATH` to be my home directory, so my code projects (even non-Go projects) live in `~/src/...`, and documentation lives in each repository.
For personal stuff, I use:
- Documents - tax returns and other important docs - Pictures - screenshots and other mostly-worthless images - Downloads - anything temporary; gets cleared out periodically and serves as my "temp" dir - dot files for configuration (I don't back these up on a repo or anyone, I manually copy the 5 or so files I need) - network share - anything large or somewhat important that only gets accessed occasionally (ISOs, family movies/pictures, etc); rely on RAID to protect it - large HDD - games, VMs, and other large data that's not very important - a few directories in my home directory
Documents and a few random directories get backed up off site (tarsnap), and the rest is on code hosting (mix of BitBucket, GitHub, and GitLab).
Things are somewhat orderly, but not really well thought-out. For anything that the system uses, I put it wherever the system expects it (~/.local, /etc, etc). I don't worry about it too much, and I try to purge useless crap every few months (usually aim to delete a few gigs at least, which is usually a few hundred files).
Photos and videos go to Personal folder organized by year and event (ie. 2018/Cristmas). Web development is in /var/www, /var/node per-project. NetBeans projects in default location Company stuff to $companyName/documents $companyName/projects etc. Documents that are related to specific point in time are prefixed with YYYY or YYYYMMDD. Documents that are subject to change are siffixed by v1, v2... Movies go to movies folder, ebooks and audio books to books folder - organized per-title. Music goes to music folder in artist/album structure. Disk images, install packages go to Install folder. Personal documents are just a messy Documents folder.
Symlinks are used when data is stored in other location than it belongs to (ie. due to size or fixed path requirements)
I have few tmp folders where is stuff that I can afford lose at any time (but I am too lazy to delete)
I backup all important folders with rsync to remote location.
But yeah, that's exactly me.
Fortunately, Win10 makes it easy to delete Recycle Bin and Downloads after N days, so at least some things are self-cleaning...
- ~tools/dotfiles/ hosts all dotfiles with a Makefile that sets everything up
- ~tools/<randomTools> - contains mostly useful utilities and scripts like fonts, vpn configs, terminal color schemes, config patches to apply to `/etc/` after fresh install etc.
- ~Projects/<client|company>/<project_name> for paid work projects
- ~Projects/<projectName> for personal projects
- ~Playground/<experiment> for experiments, prototypes or building software from github out of curiosity
- ~Applications/<appName> for apps I build from source and copy/link binaries to `~/bin`. I'm on Linux so this is non-standard.
- ~GoogleDrive/<accountName> for Google drive sync with Insync
- ~Vaults/<vaultName> for mounting cryfs encrypted directories from the Google Drive directories. (some times use plasma vault for this)
sandbox/ when you're ready to get messy
The gist is, doing my own projects differently took away more then it helped.
My only addition would be
- random documents of dubious value in “my documents”
I need a tool that will look for duplicate directory structures.
https://xkcd.com/1360/
I once found some x86 assembly code I'd written decades ago and buried real deep (the folder names were in ALLCAPS and no more than 8 characters.
What used to happen was I'd download, say, an Ubuntu image, use it, and then say "... I might need this again" and leave it there. Then a week goes by, I've forgotten its there. Sorting by Date Added its now piled under 10 other items. The empire of dirt grows...
The trick? A Trash that automatically empties items older than 30 days. MacOS has this, at least. (Note, this is a rolling empty; not an "empty everything every month" kind of deal). Now I just delete those "I might need this..." files. I know I can grab it from the Trash if I need it again, which I've done a few times. Most of the time, I didn't need it, and so it gets thrown out as it should.
The effect is two fold. Obviously there's less junk in ~/Downloads in general. But that has the knock-on effect that it is now less daunting to go through and sweep up ~/Downloads.
Empirically, my ~/Downloads, ~/old.Downloads, etc. used to be filled with easily 400 files and folders each. Now? My current ~/Downloads is at 76 items after two years. And that's currently at my peak; I'm about to go through and clear out about 20 of those things. Which is easy to do, compared to trying to face a mound of 400 files with names like "TEST.txt"...
https://github.com/bhrigu123/classifier
In about:config, set 'browser.download.lastDir.savePerSite' to false (you may have to create the preference), set 'browser.download.useDownloadDir' to true, and set 'browser.download.lastDir' to your preferred location.
More info - https://support.mozilla.org/en-US/questions/887248
These end up accumulating on my desktop over the years until I can be bothered to delete them
I've been a Linux user for eons, but recently got Windows to dual boot for video editing. I'm not quite sure where to put the partition, what FS to use to share files between the two, etc.
You'll likely want to continue using a native Linux fs for whatever you don't need to share.
Dunno about quality of any Ext drivers for Windows.
As for partitioning, back in my day people just slapped another primary partition. It's not like Windows supports Linux LVM.
You can resize live from windows (since version 7 I believe).
I'd use an NTFS partition to share files (because fat32 don't have enough prevention loss measure to my taste). NTFS partition access requires much CPU cycles though.
https://imgur.com/a/QnyCdc3
I don't remember why I still divide /root and /home. Must be a habit.
projects contains all my various paid and personal programming and hardware projects; each in their own subdirectory.
build is a playground for building and trying out new software.
bin contains non-packaged executables. I find /usr/local/bin to be a poor alternative because it has to be moved separately when I install a new OS.
crap contains subdirectories in the format YYYYmmdd. E.g. 20190105. Whenever I accumulate too much crap in my home directory, I move it all to ~/crap/$(today)/. today is an alias for date +%Ymd.
Backups
Games
Incoming
Media
- audio
- books
- photo
- video
Projects
Software
Unsorted
Also, for ~/Music - I use Beets (beets.io) and it saves me so much time.
Kinda.
Nowadays I make a folder for everything (even if there is only one file in it) but not subfolders ever.
Movies and TV shows live in ~/Videos, Music in ~/Music, downloads in ~/Downloads and are moved to ~/Download/Archives if binaries or drivers or computer things that I might need later. ~/Documents is huge but it contains everything but only folders and it has a ~/Documents/Archives for things not needed anymore. ~/Documents is ideally for documents not produced by me. Those produced by live in ~/Dropbox (1 Tb).
I have a ~/Dev with a ~/Dev/Documentation (produced by me), ~/Dev/DocRoot, ~/Dev/tmp (for experiments), ~/Dev/containers, etc.
~/Desktop is empty.
~/Images is for memes I'll never look at again (digital hoarding) and that wallpaper I have been using for years.
There is a ~/.notmine but it's not mine, don't know what's in there or who put it there and who manages that content.
On Windows I have %USER%\Desktop\Documents because %USER%\Documents is insane (every app put things there that aren't mine).
The most important step for me that removed clutter was putting everything in its own folder.
All my projects go in ~/projects which maybe be further classified as android, web etc.
I have custom bash/python scripts in ~/scripts
All my personal photos and videos go in a separate partition, classified into year and event.
Most of my important files and documents are on Dropbox and Google drive.
I use rclone with backblaze for archival purposes.