1. 21

I’m starting work at a bigcorp, the sort where I file a piece of online paper to get my manager to approve and then automatically get new things installed on my computer. Things like installing Vim directly would be tricky. Things like a fullscreen Linux VM are almost definitely out.

How do you recreate your high efficiency environment? I’m a Linux, dwm (like Awesome but suckless), vim, zsh, user. I’m going in to this place with Windows 7, and hope to make a useful contribution. I’d feel better if I could leverage the skills and tools I use at home.

What tools would you use with such restrictions?

  1.  

  2. 21

    Developer productivity on Windows comes for me in the form of treating it like Windows, instead of like Linux. That way lies to disappointment. Embrace Visual Studio - it’s a lot better than the Unix crowd gives it credit for.

    1. 6

      Embrace Visual Studio - it’s a lot better than the Unix crowd gives it credit for.

      Honest question: could you give some examples?

      1. 3

        Mostly the typical IDE stuff; VS just traditionally has executed it well, compared to say, using Eclipse. The debugger, jump to definition, etc. all work very well compared to other IDEs.

        1. 5

          The debugger, jump to definition, etc. all work very well compared to other IDEs.

          It’s funny how since I almost never use these kinds of tools, since most things I work on just don’t require them, I always have a sense that I’m missing out on something, but not only that, I’m also ignorant about it. A kind of knowledge of not knowing what I know.

          When seeing all the hype regarding VS Code, as an (avid) Emacs user I think to myself that there must be an entire dimension of improved experiences I could be ignorant about, and then comparing that to Visual Studio proper, simulates a realm of luxury programming.

          Then again, whenever I try these things out, I don’t really feel it. There’s a distance between expectation and what I experience, that might not be unlike what first time Emacs/vi users feel… Or maybe it’s just my use-case?

          1. 3

            You’re not alone zge

            The psychology of software & ecosystem comparisons

            I have friends that swear by their IDEs. I try to understand them, but I think this fits into the same category of “software A vs B” wars. You will prefer whatever you are used to and consider everything else strange, silly and inadequate when you try it.

            For example: I used to use Photoshop CS2 for years. Moving to the GIMP was painful – everything was wrong, features were missing, UI design seemed stupid. Over time I only used the GIMP and learned to love it.

            Years later I was put in a reverse situation: forced to use photoshop instead. I found photoshop to be stupid and illogical, especially the UI. I craved for the GIMP.

            Another recent example: 3D modelling software. For years I used gMax (an old MAX derivative). I tried blender for a bit and found it made little sense, had a stupid UI and didn’t work the way I wanted it to. Now that I’ve gone back to gMax I’ve found my feelings are mixed.

            Really the only good way to avoid these psychological biases is to spend several months or so using both alternatives simultaneously. I’ve never been able to convince myself to use an IDE for long, so I’m not going to be able to give a proper unbiased review.

            My biased view on IDEs

            Most of my attempts to learn IDEs have been marred by tutorials that are out of date. From what I have seen many IDEs like to change their interfaces and metaphors every few years whilst keeping the same name. I hate this: a tool is not something I want to be a hammer one day and a buzzsaw the next. A good tool is made of stainless steel so that it won’t give me problems down the track.

            Of the IDEs I have managed to get working: I end up feeling a bit trapped and restricted inside of them. When a project is designed around a specific IDE/environment there tends to be only “one correct path” to building it, something that sucks if that particular path does not want to work for you today.

            Easily being able to get stuff working on someone else’s computer is key for me. I work in education across many devices and servers, doing everything from fixing production database interfaces to helping students with their first programming projects. There is nothing more reliable, stupid and annoying than complex build systems, IDEs or toolchains not wanting to work on some particular laptop or VM; regardless of whether it’s Windows or Linux.

            I consider complex build systems (like many of the big make/cmake/etc scripts you see out there) to be somewhat like an IDE. They control how you build, debug and manage your files. They are the “one correct path” to building that particular project. The fact they look different (no GUI, no text editor) makes little difference once things go wrong. When they do go wrong you have limited options.

            I really see value in having choice as to how you work on and build a project:

            • Can’t install that compiler? Try another.
            • Can’t get the meta-build system working? String together a few compiler lines by hand and get it working anyway.
            • Need to get the project working on different distro or OS? No need for the latest version of your build system.

            I also really see value in:

            • Letting people choose their own text editors. There has been some really interesting innovation in this area over the past several years, and changing a text editor is “almost” zero cost if it’s not an IDE.
            • Not tieing yourself into one specific debugger. We all have our favourite debuggers and interfaces (this is inevitable, given how complicated they all are). Being able to immediately run a different debugger (GDB, valgrind, scanmem) on someone else’s computer/VM where it has never been used before is a bit like magic.

            Finally there’s the ethical issue of the internet and software dark ages. I regularly try to get old games and other programs to work, so this one really bites me where it hurts. I want my code to still be possible to compile or run (with minimum effort) if it’s dug up 10 or 20 years from now. I don’t want it to be a strange artefact that requires arcane software and period hardware controlled by the one last old wisened man to get working again.

            Overall: I don’t give a damn how good software is when it is working. I care about my experience when it fails. All software fails and all software has limits, being able to change your tools on the fly (ie not be locked in) is a godsend, especially if you ever have to develop on more than a single device.

            1. 3

              Visual Studio is super nice, especially if you work in C# or C++. The UI is pane-based, customizable, and simple. The debugger has the usual breakpoints and locals. But it also has tracepoints that can print out things as you execute the program - like printfs that can be changed during execution. It also has immediate mode where you can type in expressions and they’re evaluated in the scope of the function where you’ve broken. All these debugging features save time because you don’t have to keep modifying code and running it over and over again. I recommend using the Vim plugin for Visual Studio. It’s pretty good.

              1. 1

                In of itself, it wouldn’t seem like anything you couldn’t do with GDB though? Printing out values as thing execute is display. Commands like print can evaluate miscellaneous terms and functions, also within a scope. And while the text mode might be a bit difficult to use, Emacs GUD makes it somewhat more – although not necessarily as pleasant as I imagine VS might be? I can’t say.

                1. 1

                  gdb can do these things, but the interface for doing so is clumsy. (But it could be much worse too - I had to use dbx more than a few times, and you start to crave gdb after that!)

                  1. 2

                    But my main question is (for instance): What can VS’ debugger do that I couldn’t with GDB?

                    From my world it seems so foreign, I can’t really judge it – is it really more advanced like a human language that could describe colour to a blind person or do we just use different words for “Hello”?

                    1. 4

                      Some things off the top of my head:

                      • you can see your code as you step through it (not possible without some gdb wrapper)
                      • there’s a window with lots of variables in it that updates every time you step and highlights any changes (all the gdb wrappers I tried that claimed to have this were completely broken)
                      • when your program crashes outside the debugger you get a popup asking if you want to debug it (possible with some signal hacks but it’s complicated and fails all the time)
                      • if you use windbg can do reverse debugging too (rr is annoying to set up and failed in very trivial cases last time I tried it)
                      1. 1

                        I know I sound really defensive, but the first two can actually be done with GDB, by running C-x 1 and C-x 2 (as far as I remember) that display the register/variable contents and the code – but I get your point.

                        1. 1

                          if you use windbg can do reverse debugging too (rr is annoying to set up and failed in very trivial cases last time I tried it)

                          As of 2017, the VS debugger can do this too, at least for C.

                    2. 1

                      I think you can do most of those things with GDB, but it’s just all much easier with VS. It’s the classic tradeoff between being easy to get started and being able to master tools. A beginner with a 20 minute intro can use all of these tools well without memorizing much. You can always do WinDBG scripting if you want more complex behavior.

                  2. 2

                    Debugger is one thing, but you don’t feel a desparate need for jump-to-definition / peek-definition? For me, this is a similar sort of leverage as first discovering-and-utilizing auto-complete drop-downs while-you-type, and on-hover (or key-combo) info-tips with doc-comment summaries — impossible to go back and do without. You must have a deeply ingrained personal system for organising what sorts of definitions go in what sorts of file names / dir names — either that, or not minding typing names into search fields a lot.

                    1. 3

                      but you don’t feel a desparate need for jump-to-definition / peek-definition?

                      Oh no, I love jump-to-definition and type previews. They give you a much better feel for the language and it’s sublanguages (libraries, functions, structs/classes/…) – it’s just that non of this is too foreign or hyperadvanced. Even mg (formerly MicroGnuEmacs, a public domain Emacsen) comes with cscope support built in that provides basic support for this kind of discovery:

                      C-c s c		cscope-find-functions-calling-this-function
                      C-c s d		cscope-find-global-definition
                      C-c s e		cscope-find-egrep-pattern
                      C-c s f		cscope-find-this-file
                      C-c s i		cscope-find-files-including-file
                      C-c s n		cscope-next-symbol
                      C-c s p		cscope-prev-symbol
                      C-c s s		cscope-find-this-symbol
                      C-c s t		cscope-find-this-text-string
                      

                      Again, all I was asking was what VS does that really has no comparison functionality-wise, no real alternative – because that’s the impression I get when people talk about the program, without understanding quite why. I think @qqbear’s take on the issue is probably the right one: same potential power, just easier to learn.

                      1. 3

                        Again, all I was asking was what VS does that really has no comparison functionality-wise, no real alternative – because that’s the impression I get when people talk about the program

                        “Functionality-wise” I think you’ll be hard-pressed to find anything — except perhaps for the vastness of the extensions ecosystem. For anyone who has breathed and lived in their vi/vim/emacs setup for years on end, there’ll never be any compelling “funcionality-wise”. What makes VSCode uniquely smooth and persistently enjoyable is usually for folks coming from big fat laggard bloated IDEs (proprietary or foss) or non-terminal-based “programming editors” with poor extensibility and/or half-baked limited customizability and/or broken/sub-par addon/plugin landscapes and/or missing or sub-par/half-baked integrated-terminals. I can tell you that’s a lot of people and ever more of them converged on vsc and often further added to it via some typescripted additions small or large. The editor is a real productivity upgrade for many coming from say Eclipse / Notepad++ / Sublime / Geany / Textadept / SciTE / VS. It’s the snappiest, near-native-like Electron app around. Your extensions can do many things without ever breaking UX. Whipping up missing auto-completes or go-to-def etc. for not-yet-supported or custom or exotic or config langs, say, is incredibly trivial to first prototype with dummy data, then the real logic.

                        Etc. Nothing some 40+-year-old terminal-based editor couldn’t do in its own way with their historically-accrued flavours of key-chords and idiosyncrasies and own well-known mode/script combos. But for the set of folks outlined above, including me, those will never ever become a viable smooth option. Not happening.

                    2. 1

                      I’ve given VS Code a try, and I would describe it basically as “Emacs for young people” (that is, people who have grown up with GUI applications all their lives and have their expectations shaped by them). It is not more capable than Emacs; in fact, rather less. But it has a hint of the Emacs nature in that it’s extensible in its own implementation language, and people do, in fact, extend it. It heavily uses language servers (LSP) to provide completion and such, much the same as Emacs. Like Emacs, it occupies a space in between simple text editors and IDEs.

                      IDEs are just a different universe from text editors…not better, just different. I work on C# on Windows at work, and I prefer to develop in Emacs (with OmniSharp), but manage builds and debug in Visual Studio.

                2. 4

                  I’d add Powershell for scripting. It’s different than sh, but overall not bad.

                  1. 2

                    PowerShell is really interesting, I just never had an opportunity to explore it. Even the simple uses impressed me though.

                    (Unfortunately, it’s a little slow…)

                  2. 2

                    Depending on your technology, one of the JetBrains IDEs plus the vim plugin could also bring you far

                    1. 1

                      I’ll chime in in support of this statement. I’m a long time Emacs user and when I need to do stuff in Windows, I don’t bother with Emacs. It’s a fish out of water. Adapt to the different environment. You’ll be better off for it.

                      1. 1

                        Depending on your technology, one of the JetBrains IDEs plus the vim plugin could also bring you far

                        1. 1

                          Agreed! Visual studio is pretty awesome. You should take half an hour to google some useful shortcuts (find all references, go to definition, peek definition, that kind of stuff) and it’s the best editor around. Too bad it’s so slow (and that, when I worked at BigCorp, I had to access it over two remote connections, and had about half a second of lag).

                        2. 13

                          What tools would you use with such restrictions?

                          A job board.

                          Now seriously: In Windows everything is pointy-n-clicky and is based in Visual Studio/VS Code in some way or another. Going away from that path is just pain and thinking “Why can’t I just use something Unix-y”.

                          Agree with the majority of the rest of tips already given, specially with: “Embrace Visual Studio - it’s a lot better than the Unix crowd gives it credit for.”. Visual Studio does a lot of things, it’s just that, given enough time, slows down without any reason and does a lot of magical things without your explicit permission and it’s hard understanding what the hell it’s doing, and that’s something that unixy people get a hard time while getting used to it.

                          One final thing: If this doesn’t work for you: https://lobste.rs/s/byz48p/fix_windows_10_terminals_use_linux don’t even try, just surrender and embrace PowerShell. Resistance is futile. The rest of terminal emulators are just slower and buggier PowerShell bridges.

                          1. 4

                            Seconding the job board, even though it’s quintessentially nonconstructive advice.

                            I used fullscreened Virtualbox at my job at a large company with heavily-managed Windows developer workstations. This suuuuucked (for one thing, the Windows install plus all the corporate crap reliably wasted 5-6GB of RAM), but I find Windows itself utterly intolerable so it was much preferable to that. I would absolutely quit over being forced to work in the Windows shell.

                          2. 13

                            A moment of silence for all the UNIX-y people that are forced, under terrible conditions, to work with non UNIX-y operating systems.

                            1. 5

                              I appreciate the sarcasm. I almost do.

                              Conditions are great, I just need to be able to move fast and work well, and there seems to be a good reason I don’t run Windows at home.

                              Pointy clicky.

                            2. 5

                              I went from fulltime Windows to fulltime Linux, and the thing I miss most of all is AutoHotKey. It’s incredible.

                              1. 4

                                Isn’t xdotool basically what you’d use to replace that? But thanks, will keep that around

                                1. 3

                                  Seconding AHK - it has enough features to let you emulate “real” window management. Combine it with Git for Windows or mingw/cygwin as others suggested[1] and that might be “good enough.”

                                  But, for the work itself, you’re probably just going to have to learn to get along with the same IDE (or other main toolset if it’s not a development role) that everyone else is using. Otherwise you might become That Guy whose computer-related stubbornness just ends up making life difficult for your colleagues.

                                  [1] for me, each of those eventually fell over irreparably - WSL has lasted the longest but that’s Windows 10 only.

                                  1. 1

                                    xddotool is compared to AHK like bannana compared to McDonald’s.

                                2. 5

                                  Honestly, I never quite managed it. I was using windows 10, where I was able to use WSL and have quite a lot of my familiar tools, but it was never quite the same. I recommend experimenting with msys2, mingw, cygwin, and git bash and seeing which one gives you the toolset you need. Install a terminal of some kind because the one that comes with windows sucks. You can try conemu (or cmder, which bundles it); or you can run a unix terminal through x11. I haven’t tried it, but afaik if you install vcxsrv you can run xterm, konsole, gnome-terminal, etc. through cygwin. Latter will give you a better terminal experience, but more overhead and possibly more input lag.

                                  Regarding vim–see if you can get permission to install chocolatey. They have an enterprise package, which will appeal to the sorts of people who want to restrict what you can install, and they have a tonne of software you will find useful, including vim (among other things). Also, see if you can get permission to install powershell core. There is a powershell.exe, which comes with the system and is infinitely better than cmd.exe, to the point where I recommend never using the latter if you can help it, but powershell is getting old and powershell core is an updated version (launch with pwsh.exe) that’s a bit nicer. It’s officially made by microsoft; so again, shouldn’t be too hard to convince them to let you install it.

                                  Good luck!

                                  1. 1

                                    There is non admin install for chocolatey.

                                  2. 5

                                    tl;dr: Switch to Emacs. :)

                                    Switching to Emacs was life changing for me in that aspect. It made Windows manageable for me. I could use Visual Studio, but always preferred to edit files in Emacs and compile/debug in VS. The aspect I miss the most from my macOS/Linux dev env are system wide emacs keybindings. One more thing I install on Windows is BareGrep but I think it could be done from Emacs with Eshell and some essential Unix commands installed…

                                    1. 3

                                      If you’re going to go with that, it might be worth looking into some speed improvments to make Windows usage more tolerable.

                                      1. 3

                                        yeah yeah, I saw you reply on mastodon few days ago. :)

                                        I mean I personally had to go this route because of graphics programming and at job we use visual studio exclusively (c++, graphics, enough said haha). At home I usually boot up to Linux, and Emacs works there flawlessly.

                                    2. 4

                                      Here is what you do generally (later about restrictions):

                                      • Use Chocolatey to install ALL tools (similar to apt-get) and script your system. You may even want to get funky with Boxstarter but IMO not much required. Chocolatey has everything you need.
                                      • Use Powershell for everything. I mean, literally everything, do not use GUI if you don’t have to, it will slow you down at the start but you will become very fast in few months. Powershell is hard, but its the best thing in the universe and x-platform, so why aren’t you yet learning the shit out of it ?
                                      • Learn Windows specific tools: total commander, everything search engine, kitty (not putty), tortoise git, etc, but mostly use cross-platform tools and languages such as vim, copyq, mplayer, vscode, git, go, python, ruby, npm, less etc.
                                      • Use ConEmu, its sorta like tiling window manager
                                      • Never, I mean NEVER use cmd.exe. Its embarrassing.
                                      • Use Authotkey for GUI stuff and general desktop speed ups (portable hotkeys, little tools etc.). Its amazing language and not comparable to anything on Linux.
                                      • You generally do not need WSL for anything.
                                      • Try not to use wizards, massive IDEs (including Visual Studio which is great IDE if you want one, but you seriously generally don’t need one) and monolithic tools. They spoil you and there is too much magic going on. Also try to configure anything without control panel, but use Powershell modules. You can find bunch of them on Powershell Gallery or github and if none is there write your own.
                                      • Use some debloater (not with Windows 7 tho), it really helps to remove shit out (example: https://github.com/W4RH4WK/Debloat-Windows-10)
                                        • Disable Windows Defender, it hogs down the system a lot, disable Store, it does so even more.

                                      With restrictions, you still can use most of above tools as they are either portable or come in such variant. Chocolatey packages have .portable extension for this reason (i.e. 7zip.portable vs 7zip.install). Some of above suggestions are not possible on such restrictions, such as debloater.

                                      Its way better to educate your manager that some people need local admin rights to be seriously more eficient.

                                      Finally: dont listen to naysayers that think Linux is better then Windows in any aspect except community and price. You can do anything in both, automation and non-click-next aspects of Windows are today state of the art (ready to take downvotes, but get a life really).

                                      1. 4

                                        Emacs. Then I do everything from eshell.

                                        1. 3

                                          Git-for-Windows has a nice checkbox in its installer to install “common unix tools” in the PATH. It has a nice big warning that it’ll overwrite some existing command names (that no one has ever used in Win land anyway) in cmd, so I think many don’t choose it. But you get a lot of bang for the buck with just one installer (meaning in your case, just one ticket) that way, you get sh and bash and ls and rm and whereis and quite the number of additional quite-common commands. Very base tools, doesn’t go all the way to top or ed etc. It’s not all-in-one like Busybox but for your situation pretty nice bang for the buck so you won’t lose much time initially figuring out cmds or powershells own peculiarities if you tend to be efficient doing stuff in a terminal, I mean “command prompt”.

                                          Or get a ticket for installing an ssh client (“putty” is one that I know of in Win land) and a cheap Linux box online.

                                          Is this a dev role? Even big-corps very often tend to give devs admin-powers on their own machines, and try to ensure some security via network rules/config.

                                          If on Win7, they’re bound to migrate to 10 before long. Some reason or other will eventually pressure towards this. That gives a possibility of WSL down the road eventually.

                                          But by then you might already be highly productive in your env — most of this is formed-habits after all. I say this as an at-home Linux user and freelancer who at current client corp also needs to use Win10 and has formed muscle memories from earlier days of a Win-only existence. Before Win8 it wasn’t all that bad anyway. Happily hacked in go/node/python in Sublime in it back in the day. Of course the terminals-and-shells situation was and is atrocious.

                                          Get some sort of (lean & mean, non-Enterprise-bloated) language going on there that will let you easily and joyously recreate any programs or tooling missing over the weeks and months: sounds like a place where there will be much X waiting on Y waiting on Z anyway, and that’s one way to stay sane and not feel drained at the end of the day. Plus gives a nice old-school computing retro feeling of “my machine can do nothing so I can do anything”.

                                          1. 5

                                            Or get a ticket for installing an ssh client (“putty” is one that I know of in Win land) and a cheap Linux box online.

                                            Taking company data to a cheap Linux box online is likely to get you fired.

                                            1. 2

                                              Very quickly.

                                            2. 3

                                              Even big-corps very often tend to give devs admin-powers on their own machines

                                              Think bigger. Think “need to ask the second in command in the org for permission to have your IO ports turned on.” Think “even the fourth in command visits your campus maybe once or twice a year.”

                                              No, they will not have local admin. I think I shall have to embrace the Windows somehow.

                                              1. 1

                                                That is not about embracing Windows. Its about educating superiors that local administration is not a wish but a must, and that security can be done correctly with some people having local admin rights. I am not sure what kind of job you do, but any serious development without local administration is simply impossible without it on Windows.

                                                1. 2

                                                  Most large corporations are OK with sacrificing 90% productivity in the name of conformance with the company processes. It’s OK if you spend a month doing nothing while waiting for something essential to be installed. It’s not uncommon to meet people that have spent 18 months doing nothing due to an organizational glitch and it wasn’t their making or fault at all. With their sheer size, connections and monopolies, they have access to such ludicrous deals that they can afford to hire 10 people instead of 1. So, your “impossible” (that rounds 0.1 down to 0) is “good enough” for them.

                                              2. 3

                                                Or get a ticket for installing an ssh client (“putty” is one that I know of in Win land) and a cheap Linux box online.

                                                Don’t send things outside the company intranet/firewall.

                                                I worked somewhere with Windows desktops, but Linux servers for Web stuff (separate VMs for dev, staging and production). The dev VMs were meant for testing, but I did all my development on them too. As a bonus, everything I was using (usually just Emacs) would stay running when my desktop machine powered off each evening (thanks to GNU screen).

                                                I actually had local admin access, so I installed cygwin and ran X full screen over SSH. If you can’t do that, a terminal might be friendly enough.

                                                1. 1

                                                  Get some sort of (lean & mean, non-Enterprise-bloated) language going on there that will let you easily and joyously recreate any programs or tooling missing over the weeks and months

                                                  Reminds me of this talk which I really enjoyed. As for the language I suggest Racket, with comes with a massive stdlib including a GUI library, and offline docs to all of it.

                                                2. 3

                                                  Request WSL (or WSL2 if possible) and VcXsrv. You can then install Linuxbrew.

                                                  1. 1

                                                    Will WSL run on Windows 7?

                                                    1. 1

                                                      It will not. It’s a Windows 10 feature.

                                                      1. 1

                                                        Sadly no. If you’re still on Windows 7, I suggest either waiting or moving to another bigcorp. Windows 7 is terrible.

                                                    2. 3

                                                      I switched to VS Code with VsCodeVim from mostly using vim/nvim, and for terminal I use ConEmu with PowerShell with a custom prompt and some aliases. Overall I feel like it’s an upgrade from minimal vim, but it comes with a lot of caveats.

                                                      I miss not having to touch the mouse. Vimperator is gone and its alternatives are not nearly as good, VS Code technically can be controlled with keyboard only but it’s a bit awkward, and VsCodeVim has some annoying bugs and a terrible ex mode (which for some reason (extensions limitations?) is in the status bar with a small font instead of opening a palette). I’m considering emacs, but I’d have to sit down with it for a while before I can confortably use it at work, and I also feel like it’d be inferior to VS Code for the work that I do. The next logical step is to write my own vim extension, but ain’t nobody got time for that.

                                                      It also helps that I do frontend stuff at work, so I only have to set up yarn instead of installing libraries globally. Sometimes I use WSL when the environment doesn’t play well with Windows. I recently installed NixOS on my laptop so I really miss nix-shell…

                                                      1. 3

                                                        I spend most of my time in either firefox, a WSL window (used to be cygwin) with fish/tmux/vim/git/ag/etc, or the program I’m developing so it ends up being much the same as on linux.

                                                        For window management, I just use the built in win+N to switch windows and pin things so they stay consistent. Last time I looked all the virtual desktop/tiling window managers were no good so I don’t bother.

                                                        Autohotkey is handy for binding keys to launch commonly used programs/mapping capslock to escape/disabling windows keys/etc. Everything is real good, you can configure it to sort by run count and run when you hit enter. I use it as a dmenu replacement (bind it to the same key with AHK).

                                                        1. 3

                                                          I wish for you to find a job in a corp that does not have unproductive rules. GitBash may help you!

                                                          1. 3

                                                            I’ve had to write code on Windows to pay bills too, here’s what I did. The biggest conceptual change I had to make was to leverage my IDEs/environment for help instead of trying to use GNU tools for everything. Keep in mind there might also be hosted tools to use, for things like code search.

                                                            Visual Studio. You have to explicitly disable telemetry, but after that it’s pretty tolerable. Learning it is an absolute pain, as a bunch of useful shortcuts in it are exceptionally well hidden. The debugger is what really sold me on using this. I have never succeeded in making it not look ugly.

                                                            Visual Studio Code. This is more and more becoming the go-to IDE on Windows. There are enough plugins to make it feel like home.

                                                            A Jetbrains subscription. Their license allows you to use your personal subscription for your professional work, so this is my preferred tool now. The MSVC debugger is now experimental for CLion. Jetbrains IDEs works on Linux too, so I swapped to using it for home work so professional work on Windows doesn’t seem as weird.

                                                            For terminals, there’s WSL, cygwin, msys2, Cmdr. I’ve always run into weird quirks with all of these in terms of automation dealing with passing paths to/from native Windows programs. With WSL you can install Ubuntu straight from the Windows store and then use apt to grab a lot of things. This gives me GNU tools for examining logs.

                                                            For simple automation: use the Powershell ISE. Powershell misses the terseness of commands of the GNU tools, but the ISE is kind of an IDE for writing scripts with decent built-in docs and autocomplete. It should also be installed by default.

                                                            Python also typically comes installed, so use it for more in-depth automation tasks.

                                                            1. 1

                                                              +1 to using Visual Studio, getting a better terminal (anything’s better than the default console), and installing Python.

                                                              Perhaps use Ninite to setup a machine easily.

                                                              It can be helpful to install basic unix tools like cd, ls, etc to make it easy to transition. At the end of the day, you will be better off learning windows commands.

                                                            2. 3

                                                              I concur with /u/calvin – don’t try to make Windows into Linux – you just introduce a whole layer of new bugs and oddities on top. If you want to use Linux – run a VM, but it sounds like BigCorp is a windows shop, so become an expert. What follows is my two cents on the best way forward. Hopefully, most of this is already approved / easy to approve. I stayed away from esoteric stuff that will likely raise an eyebrow (even if I love it).

                                                              • Visual Studio is very good, use it. Use a plugin to make it work like you want (vim style, emacs style, etc)
                                                              • VSCode is probably approved and has a Vim mode (multiple)
                                                              • Autohotkey makes basically everything able to be automated and programmed, you can emulate virtual desktop, do lots of amazing stuff with it, basically anything. I honestly miss it when on Linux.
                                                              • Powershell is amazingly powerful, embrace it as your shell on Windows. Learn about object pipelines, become an expert, it will allow you to live in the console.
                                                              • SysInternals is an impressive set of tools, now owned by MS.

                                                              Sadly, beyond that you get into tools that will likely cause a much longer discussion with management, but the cool thing is – between Autohotkey and Powershell – you can have remarkable control over your UI and a remarkably powerful terminal.

                                                              1. 3

                                                                Most of these I install via Chocolatey. It’s not clear to me if that’s something you’ll be able to do, though. This is my standard Windows toolset and with it I don’t really miss *nix that much.

                                                                Gvim (plus exuberant ctags) - of course

                                                                ConsoleZ - a better Windows console. It can get confused by resizes, but it’s otherwise great. I prefer it to conemu because it has “copy on select” and “copy word on double click”

                                                                Clink - This gives me vi mode in a command prompt and usable tab-completion.

                                                                UnxUtils - I prefer this to cygwin or WSL because it does things the Windows way - in particular, it understands backslashes for directory separators and drive letters - so it works better with the rest of the Windows ecosystem, which isn’t going to understand filenames that start with /mnt/d.

                                                                I usually install a Windows gawk too - it’s not part of UnxUtils. And I use the ssh/scp from Window Git or WSL if I need it.

                                                                1. 2

                                                                  Windows comes with a linux kernel now. WSL version 2 runs a real linux vm under the hood. So at least you can have all your commandline goodness.

                                                                  1. 3

                                                                    I specified Windows 7; too old for WSL

                                                                    1. 1

                                                                      oh shit, sorry, obviously didn’t read carefully enough. Cygwin is the closest unixy thing there then. Probably can install it without admin rights. Also you can replace the windows shell with a custom one. bblean is a blackbox clone for windows which completely replaces explorer.exe. Definitely made my windows 7 more productive. Maybe someone knows of a more modern up to date one.

                                                                  2. 2

                                                                    Isn’t Win 7 EOL in like 2 weeks, even for the bigcorps?

                                                                    1. 2

                                                                      5 months, and not if you have enough dollars I think.

                                                                    2. 2

                                                                      Emacs, as others have said.

                                                                      That said, I avoid working in those environments, because Windows isn’t usually as efficient for workflows.

                                                                      You might be able to swing IntelliJ IDEA Ultimate and use that as a good all purpose tool.

                                                                      1. 2

                                                                        I wasn’t able to live in Windows day to day without BBlean and Cygwin.

                                                                        This was last needed ~8 years ago so I don’t know if there is anything that followed BBLean and I suppose WSL can replace cygwin.

                                                                        1. 1

                                                                          Silly question - people here seem to assume you’re a developer (although that’s not explicitly stated.) Is this a true assumption? Will you have something like Visual Studio?

                                                                          I ask because if you do, then your job kind of requires that you’re able to compile and execute code, and that in turn provides at least the technical capability to improve your toolchain. How would your org feel about you compiling source?

                                                                          I also work at a Windows based bigcorp, although from the sounds of it, much less restrictive. One of my many frustrations about the Windows ecosystem is because people find themselves in these positions, there’s a culture of “build your own tools and don’t share them” which results in a fair amount of busywork writing tools most of which aren’t very good.

                                                                          1. 1

                                                                            I will be doing applications development, mostly Python, mostly applications in the sense of the old mainframe culture of “it’ll run at some time, probably”.

                                                                            For liability reasons, accesses are audited. My manager will get emails reminding him that I have access to certain toolchains every so often, and he’s supposed to turn off accesses that are obsolete.

                                                                            I can’t even access Edge. I can use IE and, oddly enough, Chrome.

                                                                          2. 1

                                                                            I find my productivity these days on Windows is higher than on Linux.

                                                                            On Linux I futz with settings and drivers and configs until things sort-of work. Then a new version of whatever distro comes out in a year or two, and I have to learn it all over again. I recently installed Ubuntu 18.04 on a NUC, and it segfaulted out of the box on the first login! I’ve never seen a BSOD on Windows out of the box except on faulty hardware. Printing on Linux is out of the question for me. I spent 6 hours recently trying to print to our office printer, trying different drivers and configurations, eventually causing the printer to run out of memory. I finally emailed the document to a coworker with a Mac, who printed it for me with no trouble.

                                                                            I still use Cygwin, even though WSL is here. I can get vim/zsh/etc installed on a new machine in a matter of minutes. The main downside for me is that starting some processes is slow (starting irb, for example, takes seconds). I’ve also used mingw and colinux in the past, but cygwin is the most fuss-free for me.

                                                                            If I could only pick one application from my Linux environment to install, it would be vim. I’d learn to live without zsh, and figure out Powershell. Last time I used Visual Studio (2003?), there was a plugin of some sort for vi-like keybindings; it worked well enough after a week or so of adjustment.

                                                                            1. 1

                                                                              I deliberately stopped futzing with my systems. I do not rice. I don’t even change my background images on my phones.

                                                                              If it won’t impact productivity, I have better things to do.

                                                                              I think I’ll try powershell and see what happens when I run Windows on adequate hardware.

                                                                            2. 1

                                                                              I’m a big user of Linux and BSD at home, but at work (I sysadmin a Pre-K to 12th grade school) the vast majority of our infrastructure is Windows-based, from servers to workstations. But instead of trying to force one to be like the other I just treat each one as what it is. So I’ve worked to optimize my use of Windows using “Windowsey” paradigms. PowerShell is pretty great, and window management is superior to Mac out of the box. My biggest frustration is that many of the end-user security defaults are not best-practice, but this is slowly starting to change.

                                                                              1. 1

                                                                                I can’t directly answer your question, but I also had to deal with a similar type of red tape at a previous job (they were a mix of Mac and Windows, and I had a Mac).

                                                                                The wheels of change may be slow, but if you like the company and would like to work there for any length of time, I would recommend identifying why they have these rules in place and (without making enemies) work towards fixing this. As a software developer, installing software on your own computer is paramount to your ability to successfully do your job. It isn’t uncommon to need to install software on your computer on a daily basis, and often many times a day.

                                                                                In my case, the people responsible for setting the policies didn’t exactly know the reason, but they knew it had something to do with SOX compliance. They never had to deal with these kind of regulations until they were purchased by a larger company. This policy was largely fear based and the result of an incomplete understanding the requirements.