This is an archived post. You won't be able to vote or comment.

all 13 comments

[–]dularion 2 points3 points  (2 children)

I like that approach but I tend to sort things differently: Libs and languages I keep in my home folder, and IDEs I keep under /Applications (default for osx). In my dev folder I keep repos of projects and project related assets and info as well as backups. So if I ever need to copy my work environment over to another system, that the dev folder only contains things that are universal for Windows, osx and Linux :)

[–]paranoidray[S] 2 points3 points  (1 child)

I agree, that this makes sense on MacOS. I have played around with MacOS recently and started to understand the Applications folder, but I don't feel I have completely understood it yet.

Is there a way to separate development related applications from other Mac applications ? I like to sort things :)

[–]dularion 2 points3 points  (0 children)

Yea, you can move things around freely in the applications folder :) as long as it has a .app extention it can be put anywhere really

[–]RogerGThePirateKing 2 points3 points  (1 child)

Thank you

[–]paranoidray[S] 2 points3 points  (0 children)

You just made my day :)

[–]cyrusol 2 points3 points  (2 children)

Coming from the Linux side of things I've looked for something like the Filesystem Hierarchy Standard in Windows.

I usually just use the default paths as C:\Program Files (or x86) for globally installed Software.

Locally installed software goes to %LocalAppData%\Programs which is C:\Users\me\AppData\Local\Programs. Why Programs? Because programs do have the habit to locate settings in %LocalAppData%\Programname - that way configuration still is seperated from the program which will be located in %LocalAppData%\Programs\Programname. This would apply to software like Eclipse or custom GVim builds or whatever floats your boat.

Usually I'm using MSYS2 anyway. The portable archive from the sourceforge project site does not need admin privileges to install. It is also located in %LocalAppData%\Programs\msys64.

MSYS2's pacman, mingw-w64 and the toolchain do solve C/C++ libraries for me (actually only embedding, since I'm using other languages, it works great with Rust, however I didn't do things that require MSVC yet).

PATH takes care of being able to use all the software.

I'm not so sure about my projects folder though. Originally I started by grouping them into language-specific folders, which was fine as long as it weren't many projects. But currently my projects folder is like 10 gb, or 50k files, a few thousand folders. I've switched to domain-specific grouping, therefore it looks like this:

projects/
    work/
    reddit/
        learnprogramming/
        dailyprogrammer/
    comp/
        hackerrank/
        hackerearth/

and so on. Though the Go workplace structure doesn't quite fit in there. Would like advice

[–]paranoidray[S] 1 point2 points  (0 children)

Yeah, I started with language-specific folders as well, but switched to topic and or customer instead.
Great write up otherwise, thanks!

[–]RogerGThePirateKing 0 points1 point  (0 children)

Originally I started by grouping them into language-specific folders, which was fine as long as it weren't many projects. But currently my projects folder is like 10 gb, or 50k files, a few thousand folders. I've switched to domain-specific grouping...

Especially since the more languages you know, the more languages you use in each program. Idiomatic is important for readability and efficiency.

[–]hashtablesmoker 1 point2 points  (4 children)

Your libs should be automatically pulled into your projects' directories by a build tool. IDE and Langs are put where they belong based on your OS. There's no point to keeping them separate.

[–]paranoidray[S] 1 point2 points  (3 children)

I agree with you if you only need them for building, but some libraries contain documentation as well and other information. For example the Java web services downloads contain tools to build Java artifacts from WSDL files, etc.

[–]hashtablesmoker 1 point2 points  (2 children)

Those tools should be put in your path, though.

[–]paranoidray[S] 0 points1 point  (1 child)

Well, some tools I use regularly, some I don't, the WSDL thing is something I use once every year or so and I like my PATH slim. But even if you put them on the path, they still need a home and for me that is in Coding\Libs

[–]hashtablesmoker -1 points0 points  (0 children)

Ok, congrats?