Hacker News new | comments | ask | show | jobs | submit login
Ask HN: How do you organise your hard drive?
275 points by cogs 41 days ago | hide | past | web | favorite | 244 comments
By project, by tool? What do you do with pdfs and reference stuff, surely not Dewey Decimal?

  - 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/

- 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.

+1 for Playground/ I was just trying to decide where to put some experiments I was working on and Tests/ just didn't look right :-)

I called my version of this ~/sandbox.

Yeah I like this too. Perhaps I use playground/ for when I am in a good mood and sandbox/ when in a bad mood.

playground/ when you expect things to be clean

sandbox/ when you're ready to get messy

+2 Yeah that is so much better.

same here

I put 'em in ~/rad Research and Development

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.

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.

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.

More info - https://support.mozilla.org/en-US/questions/887248

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.


You forgot the "old desktop (2013)" naming structure.

But yeah, that's exactly me.

Lucky you, I have nested subfolders with roughly the same folder structure within the old desktop from my even older desktops.

I never thought another human being exists who does this exactly. I bet there are millions of us!

I have a z.old with various folders in it

  - z.old/macbook.2016
  - z.old/macbook.2013
  - z.old/thinkpad.2011
  - z.old/downloads.201705
  - z.old/downloads.201701
  - z.old/desktop.2014
  - z.old/SERVERNAME.2018
going back to around 2002, I could probably delete the entire thing and not miss a thing heh

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 is the dumping ground for screenshots for me. I take a lot of screenshots at work which get pasted into things like JIRA tickets, slack etc

These end up accumulating on my desktop over the years until I can be bothered to delete them

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).

    mkdir ~/Pictures/Screenshots
    defaults write com.apple.screencapture location ~/Pictures/Screenshots

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.

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.

This is my problem right now. I'm trying to clean this all up and, while there's tools to find dupes, they're still cumbersome.

I need a tool that will look for duplicate directory structures.

This is sadly so true of my own orginzation.

My only addition would be

- random documents of dubious value in “my documents”



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.

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.

Withought Spotlight I‘d be lost

Hey, it's exactly like me

“...surely not Dewey Decimal?”

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. :-)

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.

Thanks for creating Johnny Decimal.

That’s amazing to hear. Thank you!

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.


That sounds very interesting. I'm sure /r/emacs and /r/orgmode would be interested in reading about that. :)

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’ll think on this.

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.:

- [FOLLOW UP] Lorem ipsum dolor...

- [ASK MICHAEL] Lorem ipsum dolor...

- [INCLUDE IN PROPOSAL] Lorem ipsum dolor...

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.

To clarify: for all those activities you listed, you used a separate JD system for each, or were they all within the same system?

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.

Separate! Absolutely separate.

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.

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.”


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?

Ha! Well...

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... ...

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.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!

If you have no more than 10 buckets and no more than 10 categories per bucket, why not just use 0-9 for each?

I’m sorry, I don’t understand the question. Would you mind re-phrasing?

I believe edraferi is just asking why you chose to use a 1-indexing system vs a 0-indexing system. https://en.m.wikipedia.org/wiki/Zero-based_numbering

Interesting note: Dewey Decimals are zero indexing. And of course, "000" is for computer science.

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.

Using domain names and symbolic links. Seriously.

    omeid.net/friends/joe/2018-royal-national-park-hike -> omeid.me/hikes/2018/royal-national-park
    omeid.me/hikes/2018/royal-national-park -> omeid.me/hikes/royal-national-park/2018
    some-company-i-work-for.com/legal/contracts -> omeid.me/contracts/some-company-i-work-for.com
    some-department.some.gov.au/projects/speed-view -> github.com/some-department-speed-view
And so forth.

I started this route after being influenced by GOPATH. Can’t imagine anything else now.

Same for me: I have a program that indexes Git repositories in $GOPATH and provides fast access:

  $ cg gh:foo/bar
  $ pwd
Source is at https://github.com/majewsky/gofu/tree/master/pkg/rtree, README is at the top of the repo.

how does that work? Can you explain?

Using the same way but for repositories:


One thing that changed my life is z, a utility to navigate easily to arbitrary directories based on frecency. Makes dir structure a bit less relevant; with z the distance between any two dirs is effectively constant.


     	By project, by tool? What do you do with pdfs and reference stuff, surely not Dewey Decimal?
~/proj ---> all my current projects and stuff i've pulled down from GitHub so I can examine it. usually 20 or so. subdirs for employer, etc

~/Dropbox/personal ---> scanned documents, receipts, etc

~/Dropbox/work ---> subdirs per client/employer

~/Dropbox/ebooks ---> organized into subdirs by topic

~/Dropbox/pdfs ---> web pages i've "printed" to pdf for archiving/reference. organized into subdirs by topic

~/Desktop/old ---> the "junk drawer" i occasionally clean out. doesn't get too big

~/Music ---> mostly just iTunes doing its thing

I also have a truckload of media (games, movies, music) stored on external hard drives since there's not much room for it on the internal SSD.

I thought 'freceny' was a typo until I clicked the link, but sadly the man page doesn't really explain what it is.

Could you maybe give a few examples of how you might find something eg. using find(1), and then how you could find it using z?

Frecency is a portmanteau of "frequency" and "recentness."

I don't know the exact scoring mechanism but potential matches are scored by both frequency of access and recentness of access. Firefox uses this for matches in the URL bar, and I think other browsers do as well.

For `z`, as an example, suppose I have two paths:



`fun_stuff_1` has been accessed 100 times, but all of those accesses were over two years ago.

`fun_stuff_2` has been accessed only once, but it was five minutes ago.

So if I type `$ z fun_stuff` or even `$z fun` it's going to rank `fun_stuff_2` ahead of `fun_stuff_1` in the possibilities. In practice, while obviously not perfect, frecency tends to match the user's intent a surprisingly high amount of the time... a good frecency implementation is a delight for the user, honestly.

I assume it's a mashup of frequency and recency.

z works a bit like a web browser does when autocompleting URLs from history rather than a file system search tool like find. z “learns” the file system paths as you traverse them in a terminal.

A bit off topic: I have a large collection of videos, but organizing them was exceptionally annoying, so I built a tool: Video Hub App with advanced search features and instant previews of screen-captures from each videos. Think of it like YouTube for videos on your computer: https://videohubapp.com/

And it's now open-source: https://github.com/whyboris/Video-Hub-App

What a great idea, thank you so much for doing this! I'm pumped to try it out.

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!

Yes, I'm super impressed at how well it works! I haven't had to touch a single thing since I got it up and running

Which fs are you using nextcloud with? Is it as seamless as ext4 with Dropbox?

I ditched for the same reason - I run btrfs on my workhorse machine. I'm very happy with nextcloud (though it leaves something to be desired as a developer who wants to contribute). The biggest difference though, is that now I have a product that beats the hell out of any cloud storage provider. 6TB of space (drives I had lying around, basically), integrated with Plex and my Roku, encrypted off-site backups (free azure allotment from my work, but pennies anyway), and better use of my internet connection. If I need more space, I can buy it very very cheap as a one time expense. I never have to go back to Dropbox again. Feels good, man.

My personal laptop and desktop are on btrfs and my work laptop and desktop are still on extra; I haven't noticed any difference between how well it syncs between those sets of machines. In fact, after the initial setup of it on a Digital Ocean VPS (20 GB is enough for my uses), it's been virtually the exact same experience as Dropbox for me; the initial sync on each my my machines too roughly the same amount of time as the Dropbox sync did, and every change since then has been essentially instantaneous to my other devices. As an Arch user, it's actually easier to install than Dropbox (nextcloud-client is in the main repos, whereas Dropbox is only in the AUR), and the Android app has also worked perfectly for me. Assuming you're okay with a bit of upfront cost to get the server set up (I basically just followed the Arch wikis and then used Let's Encrypt for the TLS certificate) and the cost of a VPS, I'd highly recommend it for people who want filesystem sync'ing for non-ext4 on Linux.

Hierarchy starts in Documents. $name is employer name

- .{$name}

  - {$name} Administrative = my personal corporate footprint.  W-2s, onboarding, perf reviews, etc

  - {name} Projects

    - PMO Projects

    - Leadership Projects

    - Team Projects = internal initiatives

    - Administrative Projects = stuff like, we need to update our service catalog portfolio or create a new RACI

    - Application Projects = stuff like, “migrate the Fruitbasket database’s nonclustered indexes and staging tables to new filegroups”.  Small technical projects, surfaced by our team

  - {$name} Troubleshooting

    - YYYYMMDD-$app-problem-desc = all the documents and data for a specific issue.  Log dumps, AARs, executive summaries

  - {$name} Management

    - Vendors

    - Budgeting + Forecasting

    - Expenses

    - Technical Portfolio

    - Team Members

    - SLAs / OLAs

    - Audits

    - Onboarding

  - {$name} Documentation

  - {$name} Forms and Templates

  - {$name} Meetings = all meeting agendas and write ups.  Each is a txt file named as YYYYMMDD-stakeholder/app-topic.  Can be a tossup whether a meeting write up goes here or in a project folder.

  - {$name} Change Management = docs and data for each change I’m either submitting or implementing.  Each sub folder named by the Servicenow ID and a description.

  - {$name} Operations = heat maps, log dumps, baselines, WIP documentation.  Much of this is getting moved to github.

I have a few folders under home I've used regularly for many years:

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.

For organizing files I can suggest a combination from meaningful folder structure and tags. Mac OS offers a great way to organize files with tags, but it is limited only for the Apple world. There are bunch of tools offering organizing files with tags, but most of them are cloud based or use databases for storing the tagging information. Both ways are locking your files in a third party systems in some way. A tool for organizing local files and folders with tags lacking these limitations is TagSpaces. If is open source and freely available from https://www.tagspaces.org

If you happen to be fishing for app ideas, here's one I'd pay $50 for:

An app that controls `~/Downloads` and automatically organizes (somehow), tracks usage and schedules files for deletion.

Once a week I'd like to see a dialog listing files likely to be unwanted, info about how many times they've been accessed, where they came from, etc. With a simple, one button, 'trash them all'.

The idea would be to optimize sets of files so they're more likely to be 'all trashed' because they aren't useful anymore, while minimizing situations where you want to trash all but a few and have to spend time managing that.

Not sure what the heuristic would be.

Sounds like the Hazel app : https://www.noodlesoft.com/

One of the biggest regressions in modern browsers is how they all automatically download to the Downloads folder. I really miss the dialogue you used to get where you’d get asked where you’d want to save the file (im aware you still get that if you right click and go “save as” but that’s not always possible with some sites).

You can disable auto download in settings of Chrome, Firefox and many other browsers. You get the Save dialog then.

On the other hand, I like that all stuff goes to Downloads and you can handle it with your favourite file manager that is much better than zhe default save dialog.

> On the other hand, I like that all stuff goes to Downloads and you can handle it with your favourite file manager that is much better than zhe default save dialog.

You still get to handle it with a file manager with the dialog, only with the added bonus that you don't have to manually launch it, navigate to where it's been auto-downloaded to, then cut and paste it to where you actually wanted it.

As others have said, this can be configured in all popular browsers to ask for the download location. Also, if you use macOS, there’s a paid application called Default Folder X [1] that allows you to set default folders for different applications and dialogs (open/save) and also has shortcuts to get to different folders.

[1]: https://www.stclairsoft.com/DefaultFolderX

I have no need to specify it for every download. I can move them when it's done and I won't lose where my download had gone to that way. Definitely not a regression.

FF, Safari and chrome all have that option. Dig in the settings.

maybe it's just because it works well with my downloading "workflow", but I find it a reasonable default.

most of the files I download are installers that will soon be out of date or blank forms that I need to fill out and return once. the rare important file will be quickly moved to a permanent location. everything else gets deleted once every month or so, and it's convenient for these ephemeral files to all be in one place.

My workflow could probably be described as the exact opposite of that. Nearly everything that gets downloaded needs to be archived off somewhere and might be called upon again months later.

Being a Linux user, the closest thing I have to downloading installers is either user repositories (which are handled by the package manager) or version controlled (typically git). So browser downloads is only generally stuff that matters.

It's not a regression. It's a more sensible default which makes the general user happy, but the power user can have more control if they wish.

You'd be amazed at just how often I've seen people question where stuff gets downloaded to - or even if it had downloaded - with the current defaults. It's not actually that clear to most "general users" what's happening nor where the files go (though Chrome UI is a little better than Firefox in that regard).

I'm not saying there shouldn't be a Downloads folder nor that it shouldn't be the default location. I'm just saying having download there without a prompt is a step backwards in my personal opinion.

It's not Mozilla's fault that there are people out there who never bother to learn their computer well enough to understand what the "Downloads" folder is. It's a ubiquitous archetype found in every OS both desktop and mobile.

What's the point in setting standards if you don't use them?

You do realise the people you're criticizing are actually the vast majority of people who own a computer? The arrogance demonstrated on HN sometimes just shows that some people in tech are completely detached from how normal people interact with a computer.

> What's the point in setting standards if you don't use them?

Just to be clear, you're talking about a de facto standard and nothing more. Also there's nothing stating people have to follow standards (particularly given how many standards are out there which contradict each other) let alone the de facto ones.

I didn't criticize anyone. It's a simple fact that most people don't take the time to sit down and understand the systems they use. I don't understand how recognizing that makes me arrogant. Recognizing there is a disconnect is the first step towards creating better systems and educational material for those systems.

> Just to be clear, you're talking about a de facto standard and nothing more.

It doesn't get much more standard than a "Downloads" folder in your user directory. It doesn't need to be an ISO standard to be recognized as a standard that everyone should learn.

Honestly you're the one being arrogant and assumptive right now. Accessibility is very important to me, and I'm not simply disregarding the vast majority of users. What's better, one ten-second educational widget for a user which teachers them to better understand the system they use, or a prompt each and every time you want to download something?

Prompts scare people, a lot of people never even read them. I've seen people download things, go through the download folder prompt, and then immediately ask me where the file was saved to.

> I didn't criticize anyone.

> Accessibility is very important to me, and I'm not simply disregarding the vast majority of users.

Fair enough. The language you used did feel like it was intended to be a criticism (re "It's not Mozilla's fault that there are people out there who never bother to learn their computer") because the common complaint techies seem to make about people who are less computer literate is that they hadn't bothered to learn it (an argument you maintained in your last post too). When in fact it's often a case that they have tried but simply don't understand where to start, or they're not naturally used to that kind of activity (much like how I'm useless at writing songs regardless of how hard I used to try). And some people are just intimidated by computers so always second guess themselves even when they probably do know what they're doing.

> Recognizing there is a disconnect is the first step towards creating better systems and educational material for those systems.

At risk of degrading the discussion, technically I was the one who highlighted the problem in the context of creating better systems. You then went on to say it's not system’s (Mozilla’s) fault.

> What's better, one ten-second educational widget for a user which teachers them to better understand the system they use, or a prompt each and every time you want to download something?

That's an interesting question. The truthful answer is I don't know. I've worked with people who only needed to be shown something once and they picked it up straight away; but I've also worked with people who have no ability to remember how to operate a computer or were intimidated by it so would second guess themselves constantly and thus they needed the machine to walk them through each step of the process each and every time. I'm an unofficial tech support for my elderly neighbours (which is unfortunate for all parties involved because I don't use any of the platforms they run so spend most of my time making educated guesses) and they also benefit from repeated instructions.

> At risk of degrading the discussion, technically I was the one who highlighted the problem in the context of creating better systems. You then went on to say it's not system’s (Mozilla’s) fault.

I'll clarify that point. The thing is that there is a deficit in computer literacy education when it comes to learning some basic portable operating system conventions. The Downloads folder is one of those conventions. Tools are supposed to work together and not step on each others' toes. This allows compartmentalization of problems and scope so that the workload can be shared.

In the case of Mozilla/Google making it the default to use a convention set by its parent system, the OS, that is exactly what they are supposed to do. It truly isn't their problem if users aren't familiar with this convention, and any onboarding about the Downloads folder shouldn't need to happen in the browser and thus be replicated many times by any program that uses the Downloads folder, but instead the onboarding needs to happen from the OS side.

So I'm not dismissing the casual user who hasn't bothered to read the directories listed in their home directory and do some very basic critical thinking. They aren't stupid. They're just afraid of their computer more than anything else, like a car. They're afraid they could break something. But the problem is their OS's to solve, not their browser.

I get the point your making but unfortunately you're completely wrong on all technical details described:

1/ The downloads folder wasn't an OS convention that browsers adopted. It was actually the reverse. Some browsers created that folder and defaulted there and then Windows later adopted it to it's portfolio of configurable user directories (like the Pictures folder). I was a heavy Windows developer at that time and had been working on my own 3rd party browser so I remember that transition well.

2/ Also there is no such convention on Linux nor the BSDs. Some desktop environments such as KDE will copy the conventions used by Windows but KDE has always been influenced by Windows's classic desktop shell (explorer.exe) so it's little surprise that KDE will come with a Downloads directory. However there are other desktop environments and standalone window managers won't create a downloads directory and thus browsers are back to creating one themselves. Sure you can argue that Linux is fragmented so doesn't count but the same is true for BSD and all the desktop "hobby" OS's I've used too (aside ReactOS - but again it aims to mimic Windows). So this isn't a universal cross platform convention as you described but really more of something that just Windows (and possibly OS X?) plus a few mobile OSs have adopted. However if your sample size just consists of browsers on Windows then I'm sure "Downloads" would feel like a standard to you.

3/ This is also limited to mostly just the big desktop browsers (Firefox, Chrome, etc). Many smaller browsers - and particularly ones not based on Chromium / Blink - don't follow that convention. So again, if you're only comparing Chrome, Firefox and possible IE and/or Edge then I could see how you might consider this a standard but the reality is that's not the case.

When you consider that there are as many - if not more - exceptions as there are instances that follow that convention, it really becomes hard to even call this a de facto standard; it's certainly not universal across all platforms (browsers nor desktops) like you argued it was and it wasn't even a convention which Microsoft created as an OS standard which browsers were forced into adopting.

This is why I keep pushing back when you say "standard". It isn't. It's not standardised and it's not even de facto.

4/ You argue it's the responsibility of the OS to educate people where stuff gets downloaded to but that's just passing the buck. Yes Windows (for example) could make stuff more discoverable for sure but it's the browser which the users are using to download their actual files on so that's the browsers UI they're interfacing with and the UX they're experiencing when the confusion hits. You wouldn't blame the oven for cooking a bad meal if someone misread the instructions in a cook book. Blaming the OS for a bad UX in the browser is equally misguided.

However I do agree with you that some users are afraid of their computer but then you are just reiterating the argument I opened this tangent with.

I haven't used BSD much so I can't make any claims as to the typical user directory layout.

> particularly ones not based on Chromium / Blink - don't follow that convention

To be fair, browsers with small market share are not the ones who decide what informal standards are considered.

> When you consider that there are as many - if not more - exceptions as there are instances that follow that convention, it really becomes hard to even call this a de facto standard;

Again, this boils down to how you believe informal standards should be considered. No doubt you can say there are more exceptions to the rule when anyone with two hands can make their own browser. But should we be considering those browsers, or just the ones with overwhelming market share? That's kind of the point of standards: Cover the typical use cases.

> Microsoft created as an OS standard which browsers were forced into adopting.

That's just not true. Microsoft forced neither Mozilla nor Google to implement this standard. No one was forced to do anything, it just seemed like a sensible idea and caught on.

This is why I keep pushing back when you say "standard". It isn't. It's not standardised and it's not even de facto.

Again, I need to point out that it doesn't need to be an ISO standard to be considered an informal standard. Informal standards are created organically, not intentionally.

> just passing the buck

Lol no. It's called not repeating work. It's a core tenant of the open software community. Don't do someone else's work if you don't have to. Why should each single program onboard the user to a directory which is informally standard on most popular operating systems? It's not passing the buck, it's being DRY.

> You wouldn't blame the oven for cooking a bad meal if someone misread the instructions in a cook book.

Bad analogy. The cookbook doesn't offer instructions on how to use your oven. The oven manual does. If you use an oven without reading the oven manual and expect to learn every safety tip from a random cookbook or internet recipe, then you're not operating your oven correctly. At least a computer won't explode on you.

> you are just reiterating the argument I opened this tangent with.

Only if you strawman me.

This isn't a chance for either of us to come out superior. This is just a conversation about UX. So put the compulsive need to batter down every point I make on ice and look at things for what they are.

> To be fair, browsers with small market share are not the ones who decide what informal standards are considered.

Nobody decides what informal standards are considered. Someone comes of with a standard or convention for that particular application and others either use it or they don't. The market share might help encourage others to adopt it but we frequently see de facto standards born from small hobby projects just as we also often see standards from projects with large market shares completely ignored by the rest of the industry.

What you're trying to do is manipulate reality to suit this argument you've invented rather than accepting that perhaps some of the technical points you raised weren't entirely accurate.

>> > Microsoft created as an OS standard which browsers were forced into adopting.

> That's just not true. Microsoft forced neither Mozilla nor Google to implement this standard. No one was forced to do anything, it just seemed like a sensible idea and caught on.

You've just misquoted me and derived the complete opposite meaning from what I actually posted. I said Microsoft categorically did NOT start the convention. It was Firefox and Chrome (tbh I can't remember which). Microsoft LATER added that convention as a profile folder and only AFTER Firefox/Chrome was already creating and using a downloads directory. Microsoft (nor OS's in general) deserve no credit for the invention of this non-standard "standard".

>> This is why I keep pushing back when you say "standard". It isn't. It's not standardised and it's not even de facto.

> Again, I need to point out that it doesn't need to be an ISO standard to be considered an informal standard. Informal standards are created organically, not intentionally.

Perhaps you don't understand what the term de facto means but I had literally countered your "informal standard" point in the very text you were quoting with regards to your argument about informal standards. There are more exceptions than there are examples so it's a stretch to call it a standard. At best it's a convention.

> It's called not repeating work. It's a core tenant of the open software community. Don't do someone else's work if you don't have to.

But you're doing just that by writing a competing browser anyway. Plus rendering engine alone is several orders of magnitude more work than any UX presented to a user with regards to where downloads are being saved. Let alone the JS JIT compiler, CSS parsers, codifying the multiple HTTP specs, exception handling, etc. To reiterate myself: I know this from first hand experience.

Plus how are you expecting the OS to inform users about a file downloaded via a 3rd party browser?

> Why should each single program onboard the user to a directory which is informally standard on most popular operating systems

Except I had already proved it isn't.

> Again, this boils down to how you believe informal standards should be considered. No doubt you can say there are more exceptions to the rule when anyone with two hands can make their own browser. But should we be considering those browsers, or just the ones with overwhelming market share? That's kind of the point of standards: Cover the typical use cases.

The point of standards - even de facto / "informal" ones - is that things are uniform, typical, consistent, predictable. But "standard" you're describing is only common on a small subset of platforms and easily re-definable on those too. So why you keep holding on to the term "standard" when it's abundantly clear it's a misnomer is beyond me. Particularly when you could make the same argument regarding UX by simply saying it's a known default convention on the major desktop browsers that non-techies would likely use.

> Bad analogy. The cookbook doesn't offer instructions on how to use your oven. The oven manual does.

Actually they often do. They tell you which temperature to set it and sometimes even what shelf to put the food on if it's not a fan assisted oven.

> If you use an oven without reading the oven manual and expect to learn every safety tip from a random cookbook or internet recipe, then you're not operating your oven correctly. At least a computer won't explode on you.

You're expanding the scope of the analogy. I wasn't talking about ovens exploding nor safety tips; I was talking about the food tasting bad.

I do blame myself for that confusion though because analogies are a terrible way to explain things to stubborn people because the very point of an analogy (ie being an imperfect comparison) means they're easily manipulated, nitpicked and disregarded (a friend would describe it as "death by a thousand paper cuts").

When I describe you as stubborn it's knowing I'm guilty of the same as well. I'm being just as stubborn in this discussion too. But then I have literally commited hours of my life developing code in this specific field and also around the period when the downloads directory started springing into existence. So I have first hand experience on this and that's why I'm being so dogmatic about defining what is and isn't technically correct.

> Only if you strawman me.

> This isn't a chance for either of us to come out superior. This is just a conversation about UX. So put the compulsive need to batter down every point I make on ice and look at things for what they are.

Now you're just being hypocritical. I was literally the person who raised the point about UX and you dismissed straight out of hand, blaming the users. I then argued that not all users are going to be competent on computers t which you then back paddled heavily while arguing a whole load of ill-informed horseshit about standards, who created what and so on and so fourth.

I'm happy to agree to disagree if you think I'm just here to "batter" you down but lets not forget that you replied to me with corrections in the first place and have been "compulsively" arguing your points ever since. So your "compulsive battering" argument does work both ways.

In any case, I've made my point. You might still disagree but the argument has become cyclic and I don't want it to get abusive (it's been teetering on the edge of getting personal for a little while) so if you're still unconvinced by me (and I expect you probably aren't?) then perhaps we just agree to disagree and move on with our lives :)

You're being a pedantic asshole, and yes apparently I did misread your quote about Microsoft, but the rest of this tl;dr post is so riddled with assumptions and insults that I no longer wish to entertain this conversation. Go work on your people skills.

Ok, I guess we’re not going to end this amicably after all....

1. You call me an asshole and insult me in nearly ever post then finally say I need to work on my people skills? Don’t you think that’s at least a little hypocritical?

2. I’m being pedantic when I’m correcting a point you’re making but you’re not pedantic when you attempt to correct other people? Again, you’re being a massive hypocrite.

3. I wasn’t the one making assumptions. I’ve backed up my points with plenty of counter examples. Like I keep saying, I have experience in the field.

I’m genuinely not trying to be an arse; I just don’t appreciate someone lecturing me with misinformation on a topic I’m well versed on. And then throwing your toys out of the pram when i dare correct you is an equally special move.

That is no problem in Firefox to my understanding. Set in the options to always ask where to save the file.

In Firefox there is a setting to _always_ prompt the user for the location to save the file.

This would be actually quite easy. Run a script every x minutes that scans ~/Downloads and grabs accesstime. Put it in a database or json-file, and output a statistic on demand and marks everything by some rules, like no access, last access, etc.

If you want a GUI it will become a bit more work. Modern scripter will properly just throw some electron on it.

you can try maid (https://github.com/benjaminoakes/maid), or hazel on Mac, but I am not sure whether they can do this automatically. I think your question essentially is a set of boolean expressions and a last-chance rescue check, bash scripts should work

Hazel is great for creating rules like this. It also empties trash

128gb personal Macbook Pro, which requires being somewhat creative.

* Lightroom collection (library & photos) on Samsung T5 external drive

* GoPro video collection also on Samsung T5 external drive

* All sites, organized by domain name, in /Sites/ (Use DNSMasq + Apache vhosts to map the folder to sitename.mac domain locally)

* Various github clones in ~/Clones/

* Nonsite code projects in ~/Projects

* Google Drive folder:

  * personal will/last wishes: "_In case of emergency/"

  * scanned things: documents/ 

  * so many tax docs: legal/

  * college/design projects: projects/
And finally, Google Photos for all photos (turned off icloud photos). 10 years of photo arquives is so cool. I want to switch to something more private though, maybe Synology has something similar when I upgrade to a NAS

Backup strategy:

* Home folder: Arq to Google Drive (in appdata folder)

* /Sites/ folder: Arq to Google Drive

* Google Drive to Google Drive

* Samsung T5: Arq to Google Drive

Summary: Paid G Suite for business account for my wife and I provides ample backup storage online, but eventually I'd like everything to live at home and only encrypted backups on S3, when I want to drop $700 on a decent NAS setup.

Update: Synology does have what looks like a Google Photos replacement (https://www.synology.com/en-global/dsm/feature/moments). Anybody who's used it care to share experience?

I tried it and my (albeit 2 year old) Synology ds416j didn't have the horsepower for the app.

Please forgive the self-plug, but if you have the time and inclination, I'd love to get your feedback by trying a beta build of PhotoStructure, which currently has ports for Mac, Linux, and Windows, but I've designed it to also be runnable on headless boxes, like on your NAS (I just haven't had the time to build installers and updaters for those platforms yet, and frankly I have no idea what the demand would be for those ports).

The signup is on the home page, https://photostructure.com/. Feel free to send me an email at hello (at) photostructure.com if you have any other questions.

I like the ICE thing. I should get around to that.

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.

My approach to file management is delegation:

- 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


- 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.

Since you seem to store everything on various Google services, what is your backup strategy in case you loose access to your account?

I think the GP meant what if Google erroneously block access to your account for a supposed T&C violation or what have you.

Option 2. You can download all you data.

I do like the idea that "Most files go straight to the default suggested path".

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?

> Do you not keep source code locally? Or is it in two places?

When I clone a git repository, it goes there by default:


* ~/Projects/<git-repo-name> - all my git repos

* ~/.bin - only scripts, so this dir is in my $PATH

* ~/Pictures - only images, my rices, wallpapers, screenshots, etc

* ~/syncthing - files I sync with syncthing (my .kbdx and my memes folder)

* ~/Documents/<topic> - my university stuff, a courses folder (files I created doing some courses), some cheatsheets in .md, a library folder where I keep all material I have colected throughout my life, and a backup of my memes folder

* ~/suckless - suckless software with my modification (dmenu, dwm and st)

The same way I organize my whole life, everything is either new and unprocessed, being processed, or done.

- unprocessed, unsorted, new information: /Downloads

- currently being processed or worked on, otherwise empty, synced to NAS: /Documents /projects

- processed / finished / rarely accessed: /archive on NAS, indexed, backed up to backblaze

/archive also contains all media in a neat folder structure, but indexed (by the NAS) and searchable through Finder.

This way my work folders stay clutter-free except for current projects/work

This is good. I might try to adopt it.

Check out https://www.reddit.com/r/datacurator/ and https://www.reddit.com/r/datahoarder

Been there and learnt some good directory structure for keeping archive and organizing my NAS, from MP3, Games, Installer, OS iso to VMs, tutorials, pdfs, etc

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:\

Slightly OT, but I yesterday launched my script [1] to go through 2 decades of family photos (200GB) that are structured in no sensible way (i.e tree depth of over 6 and over 500 folder with no descriptive names) and organize them.

The script will copy the files, ignoring duplicates, and format them as follows. Files are renamed to their date of creation (when the photo/video was taken/shot), e.g. 2019.01.07_08.28.34.jpg, and then stored in folders sorted by year.

ETA is 40 hours for the remaining 150GB. I suspect that the bottleneck is my network (running the script on my PC, but the photos are available through NFS). I assume it would go much faster if photos are stored on the same computer as the script is being run on.

Anyway, I thought this might be relevant for anyone who wants to get a grip of their photos :)

PS: would greatly appreciate style/performance/correctness tips on the code AND recommendations of any other naming strategy you deem better than my approach!

[1]: https://github.com/johan-andersson01/photo_renamer

While I initially avoided looking for any similar project (because I want to build it myself!) I now discovered elodie [1] which seems to serve the same purpose as my script.

For any others than myself, that might be more suitable.

[1]: https://github.com/jmathai/elodie

An update for the curious:

I reduced the total running time of ~60 hours to ~3 hours by connecting my PC and my server directly with an ethernet cable :)

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.

Few people here have referred to the /tmp directory. This is essential in my workflow. I put a lot of things there (this is also my Downloads folder) and when the computer reboots, its clean again!

One of the computers I use stay turned on for long times, so I have /tmp/t and a cronjob that cleans all files older than 1 day in this directory:

    # Remove all files in /tmp/t older than 1440 min (one day)
    */10 * * * * find /tmp/t -cmin +1440 -delete > /tmp/.find-delete-1440.log 2>&1
Besides that, I have a lot of bunches in $HOME. dot.files, dot.vim, dot.mutt, etc., are all in private git repositories and I have a "~/s" directory I keep synchronized among different machines with rsync (I don't trust Google nor Dropbox). I was thinking about starting using Syncthing [1], though.

[1] https://syncthing.net/

Using /tmp for my downloads folder became problematic for me when downloading big files.

1. You may want to pause the download and restart it after reboot.

2. It's quick to redownload small files but a pain to have to redownload large ones.

3. Arch puts /tmp on a tmpfs, so big files can eat all your memory!

I run all my computers in roughly the same way, be they Mac or Windows (although I don’t have Dropbox on my Windows machines, and OneDrive for Business runs only on my work machines):

- Everything goes into a cloud-backed folder (even git repos)

- I follow a Mac-like hierarchy on all services (Documents, Development, Library, Pictures, etc.)

- Inside each top-level folder, I have subfolders for each context (Personal, Customers, GitHub, Travel, Expenses, etc.)

- Any truly confidential files go into encrypted disk images that are also synced to the cloud (old habit from pre-Dropbox days). Each image has a similar hierarchy inside.

Some example filenames:

- ~/Dropbox/Documents/Home/Blueprint.blend

- ~/Dropbox/Pictures/Unsorted (exported from iCloud for triage)

- ~/Dropbox/Pictures/To File/2018/12 (Good pics from Xmas)

- ~/Dropbox/Development/GitHub/piku (my PaaS wrapper)

- ~/OneDrive/Development/Infrastructure/terraform-azure-ha (an ongoing work sample)

- ~/OneDrive For Business/Library/Presentation Resources

- ~/OneDrive For Business/Customer Deliverables/WidgetCo/Project X

Being systematic helps. And yes, I keep git repositories on both Dropbox and OneDrive (accessible to WSL in the latter case), and it has worked flawlessly for ages, even across platforms. As long as you’re the single human accessing them, they work fine and sync across without conflicts or corruption.

Edit: I don’t keep files on the Desktop unless they’re a slide deck I’m going to present within a few hours or shortcuts to stuff for demos, and have scripts to tidy up my Downloads folder as well...

Oh, and I name my work documents ‘YYMMDD Foobar.ext’, too. Helps tremendously when you go back to a project to place things in time, and also in searches (I seldom have to type more than 4 digits to get to a file)

This is pretty much my system too. Including the YY(YY)MMDD naming, even for folders.

Only except keeping all the repos inside Dropbox, I regularly rsync my working folders to Dropbox (to prevent Dropbox from constantly reindexing and eating my CPU).

I have 3 subdirectories in my home directory:

Under doc/ I have a few sub-categories

This is where I put things I intend to keep, whereas projects/ is for things I'm working on. There are files in doc/ that I change often as well, so maybe I don't really need two separate directories...

And incoming/ is where downloaded files go, temporarily, until I delete them or move them to a proper location.

The only tool I use is a filename normalisation tool that I wrote myself, so that filenames don't contain spaces or capital letters which slow me down on the command line.

Even with sane organization, things get messy quickly. I use everything.exe [1] on windows. It is much better than Windows search.

[1] https://www.voidtools.com/downloads/


Am still looking for the kinix alternative

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.

I would feel skittish without a more formal structure.

Wow. But then the question is - what word does the letter represent: is it a topic, a project, the name of the tool ... ?

I play it by ear and just let my decision happen without worrying about. If I don't remember where it is, a system-wide search eventually leads me to it.

Just browsing through the alphabet is enjoyable as it brings up neat things I had forgotten about.

I try to organise my hard drive as if it could die anytime.

~/Downloads: everything downloaded will be stored here. Nothing here should be backed up. Nothing here will still be important in a month. If it should, then move it to ~/Documents

~/Documents: everything here is important such as scanned documents, invoices, pdf files, settings, configurations etc. Each file is backed up somewhere else continiously.

~/src: all code goes here. Default “git pull” location. No sub folders except “test”(ease on muscle memory). No backup needed since all has remote origin as well.

~/src/test: code, git, and bash experiences goes here.

In this way, if my hard drive fails on me, i think, i will not have huge problems.

I'm on a Mac. On my main hard drive:

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 my documents organized by topic, my code repos organized by... well, each folder is a repo in ~/code.

Stuff like bills and receipts I don't usually download, I just keep copies in my email archives and purge old ones once a year or so.

I keep everything that's pending review in ~/downloads, even if it's not a download, because my home folder is a bit cluttered with dotfiles and I like to keep hidden files visible. I don't use a desktop folder so this is my equivalent to what many people use their desktops for.

My pictures are generally just in folders with a date and meaningful name like "2018-11-FL-Vacation".

Music is just all piled into one folder since my car's USB reader can only read from the top-level folder and I mostly download stuff to listen to in the car.

By the way, since you mentioned PDFs, a handy tool to use is pdfgrep (https://pdfgrep.org/) to do text searches of PDF documents. I also use the 'locate' command a lot to quickly find files by filename/directory.

Main SSD:

A few partitions each containing critical system images like Windows 7 and a few Linux OSs, and then all non-critical system images live within /pool. My home directory is limited to 2GB because no work happens in my hypervisor OS.

Each system image has a home directory which usually contains ~/Projects, ~/Scripts, ~/Documents/notes, ~/Documents/maps.

For literature and reference materials, I use the BISAC[0] system for storage with a folder for each heading and subheading. I feed these into Calibre which maintains its own internal library so this doesn't matter much anyway.

Linux user programs are installed in /usr/local/bin which is mounted separately. Windows user programs are installed in a junctioned folder which points to a regular HDD to take some load off the SSD, at C:\Users\<User>\Apps and C:\Users\<User>\Utilities. %APPDATA% and all user libraries are also junctioned and pointing to an HDD.

I have several drives split into two LVM volume groups, with some logical volumes taking up multiple drives. These volumes are passed into my VMs, which see continuous filesystems for each category of data, such as video, music, games, and documents. That way these filesystems can be extended as needed without hassle.

[0] https://bisg.org/page/bisacedition

I use OSX.

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

- www -> it's a PHP convention. I put all my repos here and it gets cluttered. I cache it in a subfolder if it's not in use

- downloads -> when I am not sure of where things should go. It gets messy here, I usually cache it in a subfolder by date range if not in use

- dropbox/pdfs/x -> PDFs of everything

- dropbox/photos -> organized by YYYY-MM folders. These are the original files cut-pasted from my phone with original metadata on it. I use googlephotos

- dropbox/software -> backups of different software configs

- dropbox/social -> a few set of images I reuse for portfolios / logos etc

- dropbox/sharex -> I usually have all my screenshots placed in a specific folder by default


I organize work files by department.

- Operations - Common docs needed across entire company - catalogs, fill-out-forms, leasing, guidelines, SOPs, etc

- Management - Accounting, credit references, w9 forms, HR, etc

- Images - Asset images only, of products /events/ services etc done. These are organized by major category

- Vendors - These are PDF/excel/word doc files from vendors, sorted alphanumerically by vendor name

- IT -> all IT related files here, backups of databases, data, spreadsheets, etc

- Outsource -> When I need to send a dropbox folder worth of contents to a developer, these are requirement / spec docs

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).

That whole GOPATH thing is the reason I could never stick with Go. I'm curious to learn how it's less invasive now. Thanks for the heads up.

The posts have made me realize how little I use an actual computer for day to day personal use.

My work computer has all of our repos under the \git folder

For repos that I have started it is

\git\{project} - contains all of the CodeBuild, CodeDeploy, and CloudFormation related files as well as Word and markdown docs

\git\{project}\src\{language} one project can have a combination of languages and each are built differently

\git\{project}\sql\ - usually there are some one off scripts that we need to run related to a project.

As I said above my personal computer doesn’t get used as anything too much besides as a Plex server and all of my movies and TV shows are stored in the Plex recommended structure.

Photos - I don’t have that many in the grand scheme of things but they are all in Google Photos and are automatically tagged and organized by date and location. I guess I should sync them to my computer to be backed up by Blackblaze.

Random Notes - in the Notes iOS app organized by subject.

Technical Ebooks in PDF format - Google Drive folder and shared with friends.

Personal documents in PDF format - in iBooks backed up to iCloud.

Resumes and a few other Word docs - in OneDrive.

If either my computer, phone, or iPad got destroyed, I wouldn’t be too inconvenienced. The most inconvenient part would be waiting for BlackBlaze to ship a hard drive with all of my media.

By project

Sometimes I have a file in the project's top level directory explaining what the subdirectories are.

Or if I have five or six scripts which accrete over time with data going in one end and coming out the other end, I write a file explaining how I do it, before my shell history disappears and I forget.

I go with Ubuntu's default Music, Videos and Downloads. The other high-level directories are a development directory, a work directory, a personal projects directory, a personal directory, a development scratchpad directory, a things-to-do directory, and an old accumulated junk directory.

The development directory has some binary packages, git repositories, development journal notes (not on my blog), as well as some notes on aspects of languages and frameworks.

The development scratchpad directory has subdirectories by date. Mostly for code I am writing.

My work directory has all work information.

My personal projects directory has tax info for my S-corp, bank information, as well as information on personal side business projects and code.

My personal directory has my resume, contact info for friends and family as well as pictures of them, personal tax info, and this sort of thing.

I also try to name directories, and sometimes files, so I can find them with locate.

I organize my projects inside my Documents folder. Specifically, my main folders are:

~Documents/MSc ~Documents/Projects ~Documents/Documents

the MSc folder goes like that:

~MSc/A/class ----> letter (A, B, or C) is the semester, and then the class (simplified of course)

inside each class the structure is:

~class1/class_material ----> where is the documents (pdfs, slides etc) provided by the instructor and scanned notes if any ~class1/Project(s) ----> where are the projects for the class.

Each project has 2-3 subfolders: ~Project1/src ----> source code (different approaches for the same project go in here in seperate folders) ~Project1/documents ----> reports, presentations etc, and a txt with refereneces to papers, books and websites used. ~Project1/Results ----> if i have to do tests comparing approaches, models etc I keep my results in here In the root folder of each project I keep the project requirments

My /Projects folder has the same approach

My Documents folder, for now is divided in two folders: ebooks and papers, and inside those folders are just bunch of files (with proper filenames, though, so searching is working) --- My Photos folder goes like that:


each "event" folder has the raw files and an "exported" folder where the processed photos are. If I do panoramas, there is also an extra folder, called "panoramas": ~event/exported ~event/panoramas --- my Downloads folder is just a temp folder, so there is no need to waste time there. --- My Desktop is always empty (and icons hidden)

I gave up.


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.

/ and ~ are on an SSD raid so I don't put much in there.

/ssd is a 1TB mx500 I got last year that I put video games on. /ms is my Mechanical Storage disk.


All my bulk data is on the mechanical drive with regular BUP backups to a 3TB one and syncthing on most of it.

My laptop is setup the same way - / on ssd and /ms is the mechanical data drive.

Specific to project organization /ms/code is just about a thousand project directories of git repos and such, and I always setup cmake to build /ms/code/foo in /ms/build/foo. I maintain a lot of aur packages I keep in /ms/aur and build to /ms/Data/packages, and my package cache is /ms/Data/pacman.

I don't like mounting disks under ~ unless the user can actually do the mounting in their own session (ie with a systemd unit). Since only FUSE can do that and all my other drives are persistent I mount them at / even though my user owns the top level directory.

I've thought about this a lot because I would like to keep things for a long time without it getting a mess. Since I started using Linux as my main OS six years ago, I had the chance to rethink my structure and this one still holds up through multiple reinstalls and studies/companies:

    ~/p/$projectname for bigger projects
    ~/p/$language/$projectname because there is usually
        one obvious language to use for a given project

    ~/d/$school/$subject_code for current subjects
    ~/d/$school/$year/$subject_code for previous subjects
    ~/d/$company/ documents related to the company, such 
        as a contract, correspondence, or just work
        documents. In most cases I get a company laptop,
        so then this folder is really small.
    ~/d/archive/$year/($school or $company) for old things

    ~/d/private/$YYYY-MM-DD-description can be either a
        file (such as 2019-01-01-Microsoft-support-call)
        or a folder (2019-01-Microsoft-support-case)
    ~/d/private/finances/ is one of a few special folders
        that do not use the time-based prefix. Other files
        include a passport-style picture, encrypted copy
        of passport, a folder containing my CV, etc.

    ~/Music a few things that are not on Spotify and
        audio book archive (I don't trust Audible to keep
        my library available as mp3 indefinitely).
    ~/Videos similar to Music but for videos
    ~/tmp/rm-me-on-YYYY-MM-DD files/folders which would
        previously clutter my desktop indefinitely, but
        which should survive a reboot (otherwise, /tmp)
    ~/bin/ user applications
    ~/bin/pf/ program files for ~/bin 
Unsolved problems:

~/Downloads is a huge mess. I've been thinking of symlinking this to /tmp to force myself to move out what I want to keep, but did not get around to it, so I don't know whether it's a good solution.

Programs put files in random places, mostly dot folders in my home directory such as ~/.gnupg. This causes the following:

~/old-ssd still contains files from my previous SSD, and I'm not sure how to decide which ones to keep. Every few months, I dig something up from there, so it's definitely not ready to be thrown away despite having copied the aforementioned folders.

For people who haven't seen it, ncdu is great for purging cruft, it's an ncurses app that sorts by size (descending) and helps identify where to focus cleaning efforts.

During the GTD craze of 2005, I came up with a system that has served me well over the years. My primary goal is to minimize the amount of time I spend looking for files.

Rule #1: All data must be stored in a single root folder. As others on this thread have mentioned, this makes it easy to backup data and move it around. On Windows, this means I put everything in:

* `c:\data`

File systems are typically treated as hierarchies, so we now have to decide the most important aspects of data files that can be used to group and organize them. I believe that ownership is of first-order importance. Is this a file that I personally own, or is it a product for my employer? Is this a file I want to grant my family access to, or my wife? By separating things by owner first, it makes it easy to apply sensible permissions to data, apply organization-specific data retention policies, and copy it around when relationships change.

* `c:\data\acme-corp` * `c:\data\benjamin`

The next most important aspect is source of truth. Is my machine the primary storage location for this file, or am I keeping it sync with other machines? This info is critical for setting up automated jobs that safeguard your data.

* `c:\data\acme-corp\columbia` (the name of my machine) * `c:\data\acme-corp\git`

The final decision to be made is whether the data is "reference" data or "project" data (this is a GTD concept). An example of reference data would be your resume -- you want it to always be handy and current. But really, 99% of my data ends up being project data -- data that's very important to me right now, but will probably of little importance in six months.

So, my reference data is typically a handful of files single folder, and my project data is stored in a series of monthly folders.

* `c:\data\acme-corp\columbia\projects\2018\12` * `c:\data\acme-corp\columbia\projects\2019\01` * `c:\data\acme-corp\columbia\reference`

I absolutely love the monthly folders. I create the new monthly folders as a I need them, and older files silently slip out of my view as time goes on. Months later, when I'm searching for a file for an older project, I typically find several related files bunched together, which is hugely helpful. And organizing data by date makes it simple to adhere to corporate data retention policies.

Beyond that, I create sub-folders as needed, if there's a lot going on in that area that month.

* `c:\data\acme-corp\columbia\projects\2019\01\financial` * `c:\data\acme-corp\columbia\projects\2019\01\legal`

Everything important goes to ~/data/ and inside various folders like project/, so all I need to do for backup script is to sync that folder.

I don't put anything intentionally under Documents/ as various apps try to put stuff in there to taint the folder layout.

Temporary files downloaded just stay at Downloads/ folder unless I need to keep it for a long while and I move it under data/.

Random text notes go to Notes app tagged instead of in random text files scattered which can also embed images.

Also Desktop/ is entirely empty this way. Wallpaper is as clear as it gets.

Also stuff I no longer need access to frequently like finished project goes to local encrypted folder (macOS specific) which I can open at will with a password but otherwise stays encrypted as a single file for archival purpose.

I also put all dotfiles in ~/data/ansible/home/ which get symlinked individually to ~/, so that whenever I launch a new server, most recent version of dotfiles get deployed to servers as well. (dotfiles are written in portable way across macOS, Linux and FreeBSD)

This is basically why I do in Windows too - I don't use the Documents, Photos folders and the like.

I have C:\Data, with subfolders inside for various 'topics', such as a 'Projects', 'Library', 'Cash Flow', 'Home' and 'Misc', as well as a folder for each family member.

For media and archival, I have 2x 4TB drives in a RAID 1 array. This contains many thousands of photos, as well as videos and films.

I use Seafile to Sync stuff between machines, with my Seafile server storing data in Azure blob storage (which is cheaper than Azure disks).

I humbly recommend my Video Hub App for keeping a catalog of your videos. It's an open source app! https://github.com/whyboris/Video-Hub-App

For media files like Music, I keep them on Windows desktop which gets synched to OneDrive 1TB account which came included with MS office subscription which I need anyway that is only $10/mo for both app and storage which sounds like a steal against other cloud storages.

Ah yes, I forgot to mention that I use OneDrive for an additional backup of photos - I have an MS Action Pack subscription, which gives me something like 5TB of storage (I forget exactly how much, but it's a lot!)

  - Random scratch files in ~/Desktop/Rug (purged monthly, no backup)
  - All development in ~/Workspace (routinely backed up)
    - Source controlled development in ~/Workspace/Repos/[entity]/[project name] (excluded from backups)
    - All non-SCed files in ~/Workspace/[entity]/[project name]
  - Downloads in ~/Downloads (purged daily of older than two weeks, not backed up)
  - Personal computer has ~/Workspace symlinked from a Dropbox folder: ~/Dropbox/Bryan/Workspace
  - Family photos in ~/Dropbox/Family/Photos/[year]/[month]/[YYYY-MM-DD HH-MM-SS].[format]
    (routinely push-only sync to Amazon Glacier)

  * Several cron jobs to help maintain everything
  * Several custom Zsh plugins to make jumping around in shell a breeze
  * Daily bullet journal+markdown style notes auto source controlled in

(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 survived more than 3 hard-drive failures/system failures over the years without losing my data. My system setup helped in the survival so this might help. I had desktops and laptops that died, crashed or otherwise became unusable. The data survived. Here is what I do: I have three categories of files: (1) small, very important files (source codes, scripts, articles, notes, documents) (2) large but important files (photos & videos, Virtual Machine images ) (3) unimportant files (downloads, temporary files, screen captures) 3 main folders are setup for each category. Category 1 is backed up to (1) a cloud based continuous back up service (crashplan) (2) gitlab as part of version control (3) local external HDDs daily Category 2 is backed up to (1) crashplan and (2) local external HDDs Category 3 is never backed up. Having a copy in local external HDDs helps in quick recovery.

Organising the hard drive keeping a unexpected crash in mind helps in quick recoveries.

I have a folder named ~/old_home/old/old_docs/Desktop, if that helps you understand my system.

I put miscellaneous software, stuff I need to extract and build from source, random git checkouts, etc., in ~/sw. Stuff I'm working on actively goes outside that. I have ~/prefix/bin in my PATH, so I can use --prefix=$HOME/prefix.

I'd like to throw my datacurator-filetree[1] in here, which is aimed at the datahoarders among us and it's what my system is roughly based on. I welcome help and contributions :)

[1] https://github.com/roboyoshi/datacurator-filetree

I use a system where I've a max of 7 sub directories per directory. In that way I can quickly navigate to the directory or file I'm looking for.

It is based on the theory that one can process up to 7 items quickly. (Currently, I've no reference to this).

This implies that when a directory becomes too 'crowded', I add sub directories for further categorization. E.g. a directory containing an archive consultancy projects is split based on year of project. The current year is split up by proposal, ongoing, and archive.

For each project directory, I use standard sub-directories: Analysis, Input, Data, Report, Visuals, PM (Project Management) The difference between Input and Data is qualative and quantative data from the client.

Probably room for improvement, but it works quite good. For now a 80/20 trade off not to invest in a better system.

On Linux here. I have a directory for anything that needs to be backed up. That contains:

- Business (plans, invoices, tax receipts etc) - Documents (general non-business documents) - Email (Thunderbird profile folders) - Projects - Client 1 - code - docs - Client 2 - code - docs

Keeping code and docs together for each client works for me. Apache and hosts are set up to point to various web roots under ~/Projects/Clientn/docs with aliases like https://client2/. Git likewise.

Outside the "backupable" root directory are the usual folders like Downloads, Pictures, Videos etc ... I don't care if I lose anything in these locations in a meltdown.

Things were much more complicated when I ran Windows as a dev environment, but it's pretty straightforward now.

I actually do classify my eBooks with Dewey decimal numbers, but like a library they also have barcode/reference numbers, and hence are stored by those. I recently wrote a feature for my home automation system to retrieve them for me so I can read them when I am not at home. My older actual "library database" software is from 2010, and doesn't actually interact with the file storage at all. I'm now working on connecting the two systems a bit.

I have a few main folders Library, Projects, Website, etc. They're mostly uninteresting, I'm more proud of how I back them up. Everything syncs offsite, I've got multiple hard drives in multiple sites. The other thing I try to do is to use a common drive letter between PCs. So my Music folder is at the same location on any PC, for instance.

A very related question: I'm looking for a(n ideally FLOSS) e-reader that works on both Windows and Android so I can start building and cross-referencing my e-book/article (EPUB/PDF) library. I'm currently using Calibre but did play with Xodo before and liked both (Xodo has the nicer interface and allows for writing on pages with a stylus -- that's awesome).

The killer feature I need is saving any highlighting/bookmarking right into the file (eg: a particular quote or diagram). If I can extrapolate these highlights along with page numbers and citations (APA format would be ideal) that would be even better. If there is some citation software out there that does this, that's fine too... though I do have EndNote but don't see these archival options available on it just yet.

Any solutions out there?

Joyread has been build with annotations support built in. It's web-based, so platform independent.

For PDFs, references and notes I highly recommend using an app that can assign tags―several for an item, of course. Preferably, tags themselves should be organizeable at least in a hierarchy.

You won't create a good collection of tags right away, but you'll grow and groom it over time. It's important to assign tags to new items as soon as they come in. Gradually, you'll learn what words you actually use when you're looking for something, and those will become your tags.

I can't recommend a specific app right now: I happily used one that begins with 'E' but alas it went to shit.

Also not sure about the merit of any software for tagging files. I know that some say good things about TheBrain as evolution of the mind maps idea, and that it apparently can link files in its data, so you could try that.

I know it's kinda pricey, and not everyone can afford it. But if you can, Evernote is actually pretty great for PDFs and tags, etc.

I didn't 'get' it for the longest time. But I moved from one country to another, and I didn't want to bring all my paperwork around with me. So I bought a scanner which can scan duplex (both sides), and a red stamp which says 'Scanned'. I digitized everything except super important things like (birth cert, etc). Tagged it, and it sits in Evernote. I've been in many situations where I am at a business or company, and someone asks for X document, and expect I have to leave to get it, but I can whip it up on my phone and mail it to them if needed.

I scan my bills, and the payment receipts, etc. I keep copies of paystubs, etc.

When I start projects I make a new folder under my existing 'Projects' notebook, and I can put everything related to it in there.

With premium, it also scans through the PDFs and can help you find things when you need them. Again, I know not everyone can afford it. Just pointing out that, if you are in a position where you can, and you could use this kind of functionality, I find it super helpful.

Last tip, use the 'Scannable' app (iOS at least). You can scan documents (very well, surprisingly!!) on the go. For example, once I got roped into signing a new contract for a phone plan. I didn't want to carry all the paperwork around all day, so at lunch I used scannable to send it all directly to my Evernote, and shredded the originals.

Not affiliated either, just a fan who likes the software.

Yeah, the problem is, basic functionality like text editing and even just scrolling keeps getting worse, slower and more broken with each version, at least on Mac. Display of web-clipped pages and images becomes buggy. The desktop app somehow gets bugs in its window switching behavior. The Android app is slow and heavy like a glacier, can't save data on an SD card, fills all internal storage to the last byte if there are too many notes to sync (incapacitating the phone), and needs lots of memory to edit simple text notes.

Meanwhile the developers are fiddling with the interface to keep up with MacOS, and the company is adding more useless front line layers to the support to shield itself from the customers. And this all has been going on for years.

So, been there. The price is not the problem.

And for Android users, CamScanner is a great scanning app. It turns quick cellphone photos into great, clean, auto-cropped scans that it can then bundle into PDF batches (great for grouping receipts by month, for example). The free version does watermark these files (small text on the bottom right of each page), but it's a great app otherwise. I've even used it to scan family photos from distant relatives while traveling and it's worked great (no watermarks on photos, just on the PDFs it renders as far as I can tell).

Qiqqa is a great program for managing a PDF library. It does OCR, full text search, shared libraries, cloud libraries, bibtex for citations, tagging, and doesn't choke on massive libraries.

I've largely stopped using local storage, but I suppose the question isn't limited to that.

~/documentation - Git directory containing various personal & project notes, running unedited public documentation, and general ideas dump directory (there is a bit of structure but it's fairly free form)

~/workspace/{language}/{project} - I have active projects in several languages, some I group in large categories such as "linux" or "sites" when I feel they're more specific. These are all version controlled, mostly in Git repos.

~/remote/{media,backups,archived_projects,data_sets,unsorted} - On-demand NFS mount. Is the destination for automatic backups, where I archive old projects, and miscellaneous files I want to share between machines

Ubuntu 18.04

ASUS ROG G750JZ lappie

2x-256GB SSD RAID 0

LUKS FDE using LVM - /boot/efi: 512M - /boot: 488M - /: 460G - /SWAP: 15G

1x-1TB HDD


  /home almost exclusively .folders.

  /home/documents/<everything is a project>

  Every <project> is a private git repo

  /home/documents is my only VS Code Workspace

  Everything is markdown with yaml frontmatter.

  Everything possible is a snippet.

  All screenshots are pasted into an .md file. The VS Code extension places each at /project/assets. 

  All photos and videos are taken and stored on phones. 
Backed up to external drives every 6 months or so.

  /home/Desktop is empty, /home/Downloads gets emptied often
HDD: unused

- A folder called Repos on a data drive, not attached to the OS drive

- Each folder in Repos holds a repository for different types of work:

- Personal holds important documents, CVs, clearances

- Sensitive docs are passwd encrypted before push

- Thesis work in its own repo, now dormant

- Business in its own repo(s). Folders for individual contracts and personal dev work.

- Data folder to hold experimental data

- Music folder to hold CD rips and audiobooks

- Keys folder for repo keys

- Photos on dedicated external drive

- Desktop and Downloads contain important files, but limited to about 30 max (pending final destination)

- A Backups folder that holds old files from pre-repo days. Most are junk.

- Games folder for all games, Steam, etc. on dedicated drive labelled Scratch.

- Saved games end up wherever the games themselves store them, but I don’t care if I lose them.

- Documents folder holds temp files and junk from other family members. If indicated as important, moved to Personal repo.

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.

I have one simple rule that I (magically) am able to stick with for so long - make sure you clean up at the end of the day. No file on Desktop/Downloads, file things in their rightful place - or delete right away if it's not important.

Sound mundane, but once you just did it, it usually took about what, 5 minutes? But the impact the next time you turn on your computer and see the clean workspace without guilt is great.

Another tip is the same as commenter about trash bin above - let software automatically clean things for you at certain time, and you'll never worried about it again.

This so much. It works really for your house too. I find that decluttering my physical and digital workspace at the end of the day means I'm not stressed about mess in the morning.

- ~/docsync: Files I edit on a daily basis and is synchronized with Syncthing to all my devices. I put all projects I'm currently working on in the top-level of this folder except for the categories below. Archived projects are zipped and then put in ~/docsync/old


- ~/docsync/accounts: Accounting stuff

- ~/docsync/audiobooks

- ~/docsync/books: All my PDF books

- ~/docsync/dotfiles: git controlled dotfiles.

- ~/docsync/Pictures

- ~/docsync/Music: Lossy compressed music.

Other folders in home directory

- ~/hq-media: Mostly FLAC audio

- ~/git: Clones of other people's git repos

- ~/srv: File shares other than docsync.

- ~/Mail: offline copies of email

- ~/tmp: temporary stuff I'll probably don't want to keep.

- ~/Downloads: Random stuff I've downloaded

~/Downloads/source/<version control system>/<project> for checked out sources of tools etc.

~/Downloads/programs for OS images, large binary blobs etc.

~/Development/<technology>/<project name> for development projects

~/Documents/<project name/company name> for documents relating to specific projects or customers

~/Operations/<server> for various files related to servers and infrastructure (manual backups etc.)

/dev/shm as a dumping ground for temporary files that I would like to get rid of with a reboot

As I grow older, I find I have less and less 'random' stuff on my machine.

I have a two main folders:



Where the tool can be IntelliJ / vim or tmux config and other programming related files.

Apart from those, downloads do land in /Downloads and I keep that more or less clean.

/Documents holds docs.. most of this is text files for a Spanish course I am taking.

My projects fit under a language in /Development/Code/{language}/{project} so if I need any documents for the project I will make a subdir in the project folder, to keep the files close to the code.

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.

My go to folders that are usually backed up.

/downloads - for all downloads under respective sub-folders like /media, /books, /software etc

/projects - personal projects

/freelance - for the freelance / consulting work with a sub-folder for each client

/business - accounts, taxes and stuff

/my-name - personal stuff including scanned documents, pictures etc

/archive - random stuff

I currently have lots of files on the Desktop which requires sorting out. Most of these are either text files with notes and ideas and some PDF. I am planning to move them into a system like Notion.so

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.

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.

- [smb]/archives/hardware/<devicename>/* system tools and software specific for a device I own

- [smb]/mediadepot/audio/* music and audio podcasts

- [smb]/mediadepot/literature/* ebooks and pdfs

- [smb]/mediadepot/pictures/* pictures

- [smb]/mediadepot/software/<platform>/* software archives

- [smb]/mediadepot/videos/* videos

- [smb]/personalstudy/* personal junk of all kinds

- [smb]/projects/* software development stuff

- [smb]/temp/* global temp directory

- [smb]/ps2/* PS2 games

How do you handle downloads, just ctrl+A->Delete the folder regularly? Where do you put school or company data (material for subjects, or a contract or something)?

All the code is in the ~/Projects/subfolders. Everything else is in ~/Downloads. Every once in a while the whole ~/Downloads content gets moved to ~/Downloads/old/001, 002, ... etc (thousands already), once the space runs out I move these to an external hard drive. I actually dream of something like what WinFS was supposed to be where there would be no folders/locations but only meaningful metadata you can find files by.

For my coding projects, many start as a mockup/jsfiddle first. Then I got a ~/projects folder where all maker projects go when they get slightly more serious.

My "random stuff" folder is mostly ~/Downloads, with up to 5 files also in my ~/ folder. I regularly clean those and either put those files in a more stablished folder or delete them.

The other mess I got is ~/Pictures, I keep having to revisit and clean them but I don't even know how to start.

I usually go with this structure

  --Operating Systems  
  --TV Shows  
  ---Show Name  
  -Downloads (keep files there for 30 days max, then categorize or delete)
The whole thing is synced and versionned with Syncthing across several nodes.

- ~/Desktop/ Contains mostly screenshots. I use `defaults write com.apple.finder CreateDesktop false` to hide all the icons

- ~/Documents/ is where stuff goes before it gets organized

- ~/Documents/<topic>/ is where things go when there are enough of them to form a group

- ~/Documents/projects/<project-name>/ is where I clone projects from github or create my own. Occasionally I clear out projects I haven't touched in a while.

- Using Gopath for all coding stuff, I.e I have a src/github .com/MYUSername/Project path as well as any other checkouts from different projects on Github or elsewhere.

Then there is a /scratch directory to dump any data, which I might need for temporary processing, but which should survive restarts

A Documents directory with Ebooks

A desktop with temporary files (mostly screenshots) and the obligatory nested folders like “old/old01”

* ~/dotfiles has all my dotfiles version controlled with a shell script to set it all up

* ~/sandbox/ has various experiments and stuff that I'm not sure has a lifespan.

* ~/lib/<language_name> has most of my more serious projects. since I often need to add that to some sort of path variable.

* ~/DropBox/ has most of my essay writing and non code artifacts organized somewhat randomly if I'm honest.

I do run a custom full text indexer on it all so I can search it. Which helps me find stuff when I need it.


The year is the year I created the project directory (used over multiple years), so kind of arbitrary, but it's a useful rough guide. Started using this system in ~2010 or so and never looked back.

I do have some miscellaneous other stuff (guess what ~/Music, ~/Diary contain) but that's mostly it. I make heavy use of ISO-8601 YYYY-MM-DD dates in filenames.

- Random stuff all over ~/

- User-specific bin folder ~/LocalApps (with lots of scripts)

- Projects etc. in a GoCryptFS-encrypted directory synced with Syncthing with NAS (with NFS+Kerberos on my desktop rather than Syncthing). Vendor-directories (/vendor/, /node_modules/) are not encrypted as not to slow down development, they are bind-mounted to a cleartext directory.

- PDFs, MP3s, etc. in Dropbox

~/.build (random stuff I've had to build)

~/projects/personal/ (any of my stuff)

~/projects/<orgname>/<projectname>/ (work stuff)

~/Dropbox <obvious>

~/Scratch <workbench for random stuff I don't care about backing up>

~/Journal <vscode journal plugin>

~/Applications <for stuff like yEd/WireframeSketcher that doesn't play nice with linux file systems>

That's about it really.

What is the vscode journal plugin?

Dropbox is also not really obvious. It's obviously a reference to Dropbox Inc, and I assume you don't work there so it must be a synchronised folder, but I can't smell what's in there from this distance.


And the related view plugin, excellent easy to use journaling with automatic naming by day and other stuff.

It works mid because you can learn all of it in ten minutes and if you are already a vscode user you’d have it open anyway.

Client work by folder name in Dropbox. Personal stuff mostly in documents but a bunch of stuff on desktop or desktop/old

Mix of important and unimportant things I may delete when I find free time in /downloads (usually when I run out of space)

Dropbox is my storage solution for personal and work. I may go NAS sometime but been too lazy to switch. Oh, also have an external drive to hold photos.

For a long time I’ve kept everything important in project folders under ~/Projects. Each folder is a Git repository also stored in Bitbucket. I clone these on all the computers I work with.

There are some exceptions like photos, videos and music which don’t fit Git well so I keep them in their own places and backup manually. Luckily macOS provides default locations.

~/Downloads symlinked into ~/Dropbox, used for everything ephemeral.

~/Documents symlinked into ~/Dropbox has documents I actually need to keep track of. There's not really that many.

~/Dropbox/Media/{Videos,Music,Books} sort of self explanatory

~/Pictures symlinked to ~/Dropbox/Photos

~/code has all the stuff I work on

~/source has stuff I don't edit/control

Hard drive: nothing established yet. File system: since I use file names to browse for stuff I've saved, and since the most common thing I can remember is when I created them, I name beginning with datestamp, then title, then people affected. Projects: this is a much more interesting question than can be addressed here.

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).

I keep quite literally everything in my Dropbox folder.

I use Hazel to automatically clean my desktop by moving progressively older files into Downloads -> Clean up. The clean up folder is also in my Dock, so that I can move one or two item into the trash easily whenever something shows up there.

By file type at first (Ie music, documents, professional development, books, etc). For finances, I aggregate by year - 2016 Finances, 2017 Finances, etc.

Others have mentioned a process system so Parsing, Not Parsing, Long Term Not Parsing (nas). I think I’m going to adopt that into my workflow as well.

I take the same approach a forest takes: optimizing for regular “forest fires” to clear out the old.

I start with the year: Eg. 2018

Then I break it into

- Projects

- photos

- personal

- etc...

Then each year I start a new folder Eg. 2019.

I only bring in Projects I’m still working on.

This method is not optomized for searching, but rather for destruction of what is no longer needed. I find this the best thing to optimize for.

I am mostly an artist. I do both standalone images and large projects. This is what I've settled on over the years:

~/Documents/gfx/working/ holds pretty much everything.

~/Documents/gfx/working/ . this year. alias of the appropriate yearly folder, named to sort first in the Finder

~/Documents/gfx/working/ big project 1

~/Documents/gfx/working/ big project 2

~/Documents/gfx/working/ big project 3 aliases to big projects, space-prefixed to sure ahead of the yearly folders





~/Documents/gfx/working/1999/2000/ Yearly directories. Big project folders live inside the appropriate year.

~/Documents/gfx/working/old big project 1

~/Documents/gfx/working/old big project 2

~/Documents/gfx/working/old big project 3 aliases to big projects I don't want to keep at the top of the list

There's some really old stuff a level up in ~/Documents/gfx/ but it's a remnant of a time when I had different ideas about organization.

I keep ~/Documents/gfx/working/ in the Finder's favorites sidebar, along with the . this year . alias and the aliases for 3-4 current projects. Makes it easy to get to them them through both the Finder and file dialogs.

Big projects have their own file structures within their directories. Usually it's a bunch of Illustrator source files with Finder tags to tell me what's been finished and/or posted to Patreon, and subdirectories for things like web renders, reference files, book production, ads for the project, etc.

General reference/inspiration stuff either ends up in a directory outside of this - maybe in ~/Documents/ebooks/, maybe in something like ~/Pictures/reference/ or ~/Pictures/random inspirational/, there's no solid system. Reference stuff can also go in Evernote depending on how I figure I'll want it.

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 don't remember why I still divide /root and /home. Must be a habit.

You can use NTFS, with ntfs-3g on the Linux side. I've done that and it worked smoothly, if rather slowly. FAT is just too 90s for serious use.

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.

Just use a ntfs partition for sharing files between Linux and windows.

Does anyone use a good indexer on Linux? I removed mlocate from my system because it always eats up CPU cycles when I least want it to. Also, the index is always out of date. And it doesn't index the contents of e.g. PDF files.

Recoll is useful, though kind of arcane to use...but it has the upshot of indexing even PDFs

I use tabbles on windows

I can organize, tag, annotate any file and then use the powerful search when I need it.

It has useful plugins and is easy to batch tag things.

I don't even bother organizing files or folders anymore I just dump them all in one place and then use tabbles.

'Every document belongs to a project':


Random stuff on my Desktop

Random stuff in Downloads

Large files on the 1 TB Seagate drive

Frequently used files on the SSD

Everything else gets dumped on the NAS drive

And symlinks everywhere (for when programs don't let me specify data storage locations)

In my home directory I use ALL CAP directory names for stuff I don’t backup like GITHUB for repos, TENSORFLOW for library source code and examples.

Lowercase for things that I backup

c:\install for downloads, once in a while cleaned out apart from directories that I want to preserve. Browsers download there by default.

c:\work for work-related things, subfolder for each project.

Listary (and other app launchers previously) have made it easier to jump around without caring where a folder is.

C:/ Here goes all my installed softwares


- Movies

- Programming projects //my personal projects

- softwares //all softwares setups

- Documents //all of my books

I just have three directories in my Documents directory:

1. code 2. files 3. garbage

Any important files that I may need in future lives on OneDrive.

I keep my porn in a folder called: Definitely not porn.

~/Desktop/workspace is always a folder containing all my git repositories. That's it.

Don’t even ask about how we organize our favorites, that’s probably a nightmare for many people.

Everything gets classified into a bunch of related folders and symlinked if needed.

Other than that a Readme file

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.

besides standard folders that are delivered with the OS, I tend to create folder `/projects` with my personal side-gigs and `/work` with commercial projects for other people. nothing fancy.

projects in subdirectories of

  c:/work  for Windows
  /work    for Unixen
Unfortunately user directories are too much complication to seek too all the time

I just use “locate” to find files. Don’t care where they are.

Its "Desktop-Placing" all the way down....

  New Folder With Items

The twist: I don't. Lol.

The root of my drive:

├── apps

├── books

├── business

├── courses

├── downloads

├── games

├── media

├── music

├── notes

├── podcasts

├── research

├── src

├── tmp

├── tweets

├── twitch

└── youtube

Source code specifically (the contents of the src/ folder above):

├── ansible

├── contracts

├── courses

├── github

├── legacy

├── scripts

├── sites

└── tmp

On physical side:

- two SSDs for the OS and part of the /home data in mirror

- two HDDs without raid for rest of my data

On logical side: mdadm+LUKS+lvm+nilfs2 for most of volume, /boot in ext4

On home taxonomy:

- a "document" tree, mostly pdfs and org files about taxes, invoices, scanned tickets, home/car/* documents etc in there I also have my maildir mounted from a separate LV volume, and few dirs are "live" few are "archives". I have few scripts that check for age and add "to be deleted/reviewed" older files in org-agenda but are only a awful spaghetti code collection that cover only few cases... Mostly guarantees period for stuff I buy, expire period for some tax-related docs etc...

- a "knowledge base / library" tree with mostly org and pdfs files + few images/video/audio it's a mix between a personal wiki in org and a pdf-libraries plus extras and few still-to-be-migrated leftovers (ZIM Wiki used in the past and others)

- a "work" tree composed mostly of text files with very few binaries, it include a small fossil (VCS) wiki and few stuff are bind-mounted in personal "KB/KL"

- a "miscellaneous" tree composed of all that's not documents nor book nor work stuff

- a "multimedia" tree composed on personal videos/photos and few movies

- a "temporary" tree for anything that need to be categorized, that do not last longer etc. All files inside are "monitored" with a simple find+ls script, file older than a year are reported weekly on my org-agenda with a proper dired link and are mostly leftovers I periodically delete.

- an "environment" tree contains my configs mostly inside org mode, other simply "drop in" like firefox profiles, other still to be org-ifyed or nix-ifyed via homeManager... Relevant configs are bind-mount to proper dotdirs in home via global hwconfig.nix (NixOS).

- a standalone "Desktop" dir, empty since few X apps keep creating it... About freedesktop dirs my download dir is ram-mounted in /tmp/download since anything I download and not refile somewhere is garbage.

As "todo when I have time and desire" I plan to:

- completely org-ify my configs, NixOS included so I can deploy my new desktop directly via Emacs, or to be more precise a stripped-down emacs with only relevant configs booted from a NixOS custom live image. Actually I'm quiet ready only for my mail setup (my_mails.org witch contains notmuch, mbsync, IMAPFilter and afew configs etc tangled in their relevant places) and a custom NixOS iso with add Emacs but not run it at login...

- use afew to completely replace IMAPFilter and add to afew tagging some "mail-management" query to help keep my maildir clean (like "all mail from $biped that are not flagged or have other extra tags except attachments and have more than two year" => mark for garbage collection)

- extend and generalize in a single script my actual awful collection of auto-doc-refilers (script that are executed by notmuch post-new hooks to automatically collect and refile regular phone&c bills to docs taxonomy, add agenda's todos for electricity bills that are NOT (sgrunt) attached as pdfs but force me to log in to EDF portals to download them manually just to have a proof I received them... etc).

- consolidate and cleanup a bit with some kind of periodicity/strategy instead of "when I feel in the mood of cleanup following an incoherent agenda reminders about old files...


Everything is under $HOME/Data divided in categories:

  - Apps -> executable binary software 
  - Backup
  - Code -> sourcecode of software 
  - Config -> dotfiles and stuff which goes to $HOME/.config or .local
  - Documents -> PDF, Epub, etc. Everything which is mostly readonly
  - Notes -> Plaintext-documents which are for read/write
  - Pictures
  - Projects -> Active Projects
  - Software -> Setup-Files for binary software, roms, etc.
  - Text -> Plaintext-data like logs, traces, etc. Usually readonly and generated from Software
  - Vault -> Binary App-Specific Data. Some readonly, some read/write
  - Video
  - VirtualEnv -> Python-Environments
  - VM -> Other Environments
Every categoryfolder has subfolders which contain projects/product/app-specific data. In case of App for example each folder is one app. In case of Code each folder is a repository. In case of Config each folder is for one specific app, with exception of misc which contains single config-files. Projects cotains folders with mixed data, each related to a specific shortliving task or project. Long living data go to other categoryfolders. Readonly means I don't change those data by myself, while read/write means I work with them regulary.

Overall everything quite simple. But reality is more complicate. $HOME/Data is the store and used as base for a script which will generate several link in my home-dir. This is done with #Tags in the foldername, or some predefinend rules, or by using a list of predefinend targets from a file (mostly used for Config-Entrys).

Main targets are:

  - $HOME/Archive -> Subfolders with #Done
  - $HOME/Playground -> Projects without a tag which are a git-repo
  - $HOME/Tasks -> All other Projects or subfolders with #Task
  - $HOME/Workspace -> Subfolders with #Workspace (usually from Data/Code or Data/Config)
I have then functions in my Editor and shell to access them comfortable and can avoid crappy projects-addons.

BUT, this is not the whole of it. $HOME/Data itself is also just a linkfarm. I don't have just one hard drive, but several drives and multiple devices from which use them. $HOME/Data is just the merge from the available drives on each device. Drives are mostly Dropbox, multiple NAS, Localdrive and external Drive. The simple reason for this setup is that I have some data I sync between devices, some other data are exclusive for specific locations (work) and I'm legally obligated to not mix them with personal data. Some other data are just to big to sync and I want them on a centralized system, and because there are so many of them I have multiple of them, and sometimes also workplaces with some NAS.

So, how I use this is, I mount drives somewhere, usually /mnt, and link them to $HOME/HUB. My script then iterates through them, and updates $HOME/Data. Hierachy is HUB/$DRIVE/$NAME/$CATEGORY. $CATEGORY are the topfolders from $HOME/Data (App, Code, Config...). $NAME is another special that I use to divide data even per drive. Normally I use it to separate personal workplace-related data which I'm allowed to mix with other data, like my own scripts or configs, or just some SFW wallpapers. but also old Projects where I could keep the sourcecode or other data. My script then collects the folders under $CATEGORY, generates $HOME/Data/$CATEGORY if it not exists, and links the folder there. If there are multiple folders with the same name it adds also $NAME to the linkname, so nothing gets forgotten.

I developed this in the last 10-15 years, and over the years it evolved in some way or another. Biggest pain is to create new, rename or move existing folders, because I in this case I can't work on the link. For this I use scripts which in 99% works painless. Additionally I have some more scripts which move files from certain locations (mainly download-folder) to specific targets. Works fine for regulary files with structures names, not so much for random stuff.

I use GNU/Linux and use the default layout.

~/Downloads <- Everything I download, torrents seeding

~/Downloads/old <- Entropy is here

~/Desktop <- Empty I don't like to keep files here

~/Documents <- Personal documents, my university stuff is grouped by year/subject

~/Documents/Library <- Here are all my e-books keep in perfect order, most of this later

~/Dropbox <- Cloud sync, mostly files shared with others mates

~/Pictures <- Photographs group by month and year, or event name

~/Pictures/memes <- Internet memes

~/Pictures/Inkscape <- Vector images i created, mostly from tutorials followed

~/Pictures/Blender <- 3D projects, I just learning

~/Music <- All my music keep in perfect order, most of this later

~/tools <- Some programs downloaded and not installed globally

~/Videos <- Unsorted videos, my own screencast, offline YouTube videos

~/Videos/Anime <- Anime series keep in perfect order, most of this later

~/Videos/Movies <- Movies keep in perfect order, most of this later

~/Videos/Series <- TV series keep in perfect order, most of this later

~/Videos/Tutorials <- Tutorials I purchased for offline consume

~/Workspaces <- All my coding projects

~/Workspaces/github/<project name> <- My personal and other open source code

~/Workspaces/<company name>/<project name> <- Work and Freelance projects

For keep in order:

- Music: I use https://picard.musicbrainz.org/ if the metadata isn't yet available then I left in downloads folder

- e-books: I use https://calibre-ebook.com/

- Videos: I use https://www.tinymediamanager.org/

- Projects: All my projects are GIT repositories

- Encrypted stuff: Plasma vault for folders and https://www.veracrypt.fr/en/Downloads.html for disk

Sync folders between devices: rsync

Navigate between directories in terminal: ranger, z, oh-my-zsh, byobu

Compress files: tar and lrzip

My home directory is a shared drive with:

~/Backup/... Just random things I needed to backup from somewhere else, stuff like my wifi router config files ends up here, or images of my phones

~/Code/<project name>/... This is mostly source code I wrote organized by project

~/Docs/<category>/... These are documents (mostly PDFs) organized by category, e.g. "History", "Manuals", "Datasheets", etc... Some documents are further grouped inside these

~/MyDocs/... These are documents I've generated myself, this is pretty flat, the only further organization inside is taxes/<year>/...

~/Images/... ~/Images/backgrounds/... These are mostly images I've found online, images that would make good backgrounds are copied into backgrounds. Some of my machines pick desktop backgrounds automatically from there

~/Movies/<movie name>/ These are movies made by other people

~/Music/<artist>/<maybe album>/... Music made by other people

~/Photos/<device_YYYY-MM-DDn>/... These are photos I've taken, organized by device and date

~/Temp/... Temporary files, theoretically this gets emptied out, realistically I haven't run out of space yet

~/Videos/... ~/Videos/<device>/<YYYYMMDD>... ~/Videos/<project>/... Parts of various video projects I've worked on. Source material organized by device and date, bits for specific projects organized thus

~/VMs/... Images and state for various virtual machines

The home directory has a few other subfolders dedicated to important or ongoing projects, for instance each of my kids has a folder, as does the house I'm designing. The home directory also accrues a good amount of other random files, often prefixed with some useful grouping id and an underscore. I try to gather these up or delete them from time to time when it starts to feel cluttered. A few files are mainstays. I also have a few dotfolders for things I want to configure the same on different machines.

On my individual machines I usually link ~/Downloads and ~/Share to local storage. My general rule is to always copy files from Downloads, leaving the original file intact. Thus the Downloads directory acts as a historical archive of everything I've ever downloaded on a machine. The Share folder contains copies of files I'd like to share with the world. I use this folder when configuring p2p filesharing services.

I let the OS manage the rest of the hard drive however it sees fit. If I'm using a system that allows me to put files on the desktop I try to refrain from doing so, but occasionally I'll use the desktop as a temporary space.

Google Drive

- Documents

- Photos

- Games

- Media

On my Nas:





- audio

- books

- photo

- video




Applications are open for YC Summer 2019

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact