<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Erebos Manannán</title>
    <description>The latest articles on DEV Community by Erebos Manannán (@erebos-manannan).</description>
    <link>https://dev.to/erebos-manannan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F10219%2F5beb00b2-834f-4a3c-bbdf-7be8f8d87ed9.jpg</url>
      <title>DEV Community: Erebos Manannán</title>
      <link>https://dev.to/erebos-manannan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/erebos-manannan"/>
    <language>en</language>
    <item>
      <title>Developer hacktivism for Ukraine</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Sat, 26 Feb 2022 18:14:41 +0000</pubDate>
      <link>https://dev.to/erebos-manannan/developer-hacktivism-for-ukraine-2ped</link>
      <guid>https://dev.to/erebos-manannan/developer-hacktivism-for-ukraine-2ped</guid>
      <description>&lt;h2&gt;
  
  
  Preface
&lt;/h2&gt;

&lt;p&gt;One of the issues currently in Russia is the heavy propaganda and disinformation campaigns, as well as limits on access to truthful information.&lt;/p&gt;

&lt;p&gt;If people inside Russia were better aware of exactly what is going on in the world, the support for the war in Ukraine could start falling rapidly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What can I do?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Software authors, OSS project contributors, website owners
&lt;/h3&gt;

&lt;p&gt;If you own a website, have authored software, or regularly contribute to popular OSS projects, one of the options at your disposal is adding a message condemning the war, Russian actions, or overall sharing the global sentiment, or truthful information on what actions Russia has performed.&lt;/p&gt;

&lt;p&gt;You could do this e.g. via geolocation if you don't want to bother all your users, but more global awareness is not a bad thing either.&lt;/p&gt;

&lt;p&gt;If you have a website, you could also use geolocation to set up a blackout for Russian visitors, with a dedicated message condemning the war.&lt;/p&gt;

&lt;h3&gt;
  
  
  Programmers of any level
&lt;/h3&gt;

&lt;p&gt;Know how to code? Submit a PR to an existing project and propose adding such messages into the software, explain the reasoning in your PR description, and maybe try to gather support for it via social media.&lt;/p&gt;

&lt;p&gt;Some practical ideas can be found via the various "awesome" -lists:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/sindresorhus/awesome"&gt;https://github.com/sindresorhus/awesome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Other members of the development community
&lt;/h3&gt;

&lt;p&gt;Can't code? No problem, you can still e.g. submit issues requesting such messages to be added to projects, particularly any that are largely made in, or popular inside Russia.&lt;/p&gt;

&lt;p&gt;Some ideas can be found from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/IonicaBizau/made-in-russia"&gt;https://github.com/IonicaBizau/made-in-russia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/igoradamenko/awesome-made-by-russians"&gt;https://github.com/igoradamenko/awesome-made-by-russians&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An example of such an issue: &lt;a href="https://github.com/notepad-plus-plus/notepad-plus-plus/issues/11302"&gt;https://github.com/notepad-plus-plus/notepad-plus-plus/issues/11302&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Desired effect
&lt;/h2&gt;

&lt;p&gt;Lots of software auto-updates, which gives an easy way to distribute such messages.&lt;/p&gt;

&lt;p&gt;Imagine Russians starting up Firefox to check something on Yandex, and Firefox includes messages on the titlebar. Imagine browser extensions sharing similar messages, SponsorBlock refusing to block ads on Youtube for Russians, or LibreOffice giving an alert message every time you try to open or save a document.&lt;/p&gt;

&lt;p&gt;Imagine Russian developers trying to develop software during their normal daily job being greeted with notifications from &lt;code&gt;npm&lt;/code&gt;, &lt;code&gt;pip&lt;/code&gt;, and other every day tools condemning their government's actions.&lt;/p&gt;

&lt;p&gt;Imagine Telegram and other messaging software sending notifications condemning the war to everyone within Russia every 12 hours.&lt;/p&gt;

&lt;p&gt;Imagine if inside Russia software or games started refusing to launch, phones or cars refusing to function normally until the war is ended.&lt;/p&gt;

&lt;p&gt;Yes, people can disable updates, make forks, etc. but it would become increasingly difficult to avoid hearing the truth.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>webdev</category>
      <category>discuss</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Please, sell me good services</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Tue, 24 Dec 2019 13:38:45 +0000</pubDate>
      <link>https://dev.to/erebos-manannan/please-sell-me-good-services-1h10</link>
      <guid>https://dev.to/erebos-manannan/please-sell-me-good-services-1h10</guid>
      <description>&lt;p&gt;I've ended up identifying basically 2 services that I need both for personal use as well as work to be efficient and safe.&lt;/p&gt;

&lt;p&gt;1) Cloud storage - ability to store files off my own computer and synchronize with all my computers&lt;/p&gt;

&lt;p&gt;2) Password manager - generating and storing good passwords and giving me convenient access to them when I need it&lt;/p&gt;

&lt;p&gt;It seems like these should be pretty widely wanted things, things that have been around for a long time, and there's a lot of competition, yet I've been unable to find any good options.&lt;/p&gt;

&lt;p&gt;My general criteria to be able to use and trust any such tool are simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Safe zero knowledge encryption based cloud storage and synchronization of my data - it cannot be possible for them to leak my data accidentally or on purpose&lt;/li&gt;
&lt;li&gt;Operating in a trustworthy jurisdiction - companies from the U.S. and Australia are at least immediately disqualified as their laws make it possible for them to be forced to change their application to either break the encryption, copy all their users' passwords, or just inject their code with trojans or whatever else at any point in time - thus making them inherently untrustworthy .. preferably my data should be stored within the EU or Switzerland&lt;/li&gt;
&lt;li&gt;Wide platform support, as I need to be able to collaborate with people, and I myself use multiple different systems - Windows, MacOS, Linux, Android and iOS are minimally required.&lt;/li&gt;
&lt;li&gt;Easy sharing of content when I need to do it - passwords and other secrets are regularly shared within a team, and it'd be very beneficial to be able to share links to documents or other files in my cloud storage, though that is less required and more a nice to have for me&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The list isn't long, it shouldn't be unreasonable, so why so many issues? Well tools exist that fulfill these requirements, but they seem to have a number of other issues that make using them difficult or at the very least unpleasant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud storage
&lt;/h2&gt;

&lt;p&gt;Additional things I'd need for cloud storage are pretty limited, really I can just think of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to configure disk space usage limits&lt;/li&gt;
&lt;li&gt;Ability to define where the local cache is stored (no need to use relatively limited SSD space when big spinning disk RAIDs are available)&lt;/li&gt;
&lt;li&gt;No unreasonable limits to storage - optimally I want to pay for what I use, regardless of if I use 1GB or 10TB, but to back up the video content I create, photos, and so on tends to take a lot of space&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What would be nice is if it had file versioning support for backup purposes, so I don't have to worry about ransomware wiping out all the files and so on, otherwise I need yet another tool for backups which will have the same number of issues.&lt;/p&gt;

&lt;p&gt;Immediately a large number of options are ruled out due to the basic requirements of trustworthiness. All the giants like Google, Azure, Amazon, Dropbox, and many of the somewhat smaller options like SpiderOak and Backblaze just get instantly disqualified for being U.S. based entities even if they had all the other features I need. Most aren't zero-knowledge so I can't trust them with any of my data anyway. Most of the remainder typically support just Windows and MacOS.&lt;/p&gt;

&lt;p&gt;I've been using pCloud for some time now as a bit of a compromise solution. It's not ideal, but it fulfills my needs better than the rest. Yet, it also regularly forgets who I am, zero-knowledge encryption requires extra hoops to jump through which causes some issues, it is limited to 2TB limiting my ability to use it, and .. it's unstable and has other really annoying bugs, some just "by design". If I try to transfer my source code folders into it, it will crash. The service just dies, the systray icon goes away, and the drive stops existing. It seems like it cannot handle large numbers of files. Same happens if I then try to delete the files from it. Also I can't move files between the crypted folders and the non-crypted ones, and there's other funky things going on with the filesystem that make it difficult for me to use it in general.&lt;/p&gt;

&lt;p&gt;Tresorit seemed to fulfill most of my needs but then I got surprised that they require my phone number on their registration form, normally not a significant concern if they have a good reason for it, but I checked what it says they wanted to use it for: "Please provide your phone number so we may better help you". Immediate red flag - what is up with this? I try to ask their support, they repeat the mantra: it's to help me set up my account tailored to my needs. Err, what does that even mean? When I mentioned to them that the only valid use I know for using my phone number is SMS based 2FA, and they didn't seem to say if it was that, so I expect they're using it for marketing - they denied this. I then found out that their privacy policy clearly states that they DO use the phone number for marketing purposes. They've kinda lost all trustworthiness at this point if they can't clearly state what they do with your data and then just flat out lie about it. Also, limited to 1TB. Still, considering the amount of issues I have with pCloud I might just buy a throwaway number (costs about 1€ at a kiosk - the reason why using phone numbers for identifying purposes is not viable) and register using it.&lt;/p&gt;

&lt;p&gt;I've even been thinking of using tools like BoxCryptor to enhance the security of an otherwise less trustworthy system, but in the past I've had bad experiences with those tools as well, especially with synchronization with multiple machines. They also tend to ruin the shareability of content, but that's the least of my worries.&lt;/p&gt;

&lt;h2&gt;
  
  
  Password managers
&lt;/h2&gt;

&lt;p&gt;Besides the general criteria, I require from a password manager:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ability to integrate to my browsers for both autofill of passwords (though does not need to be "hands off"), and generating new ones easily&lt;/li&gt;
&lt;li&gt;Good password generation algorithms&lt;/li&gt;
&lt;li&gt;Ability to survive me using multiple browser profiles on multiple devices simultaneously and overall just accessing the passwords on multiple machines.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sounds pretty basic, so what's the problem?&lt;/p&gt;

&lt;p&gt;I've tried a number of password managers but just can't seem to find anything that is truly good. Most of them just fail even on the basic requirements, KeePass doesn't handle with multiple computers having the database open simultaneously all that well, F-Secure KEY does not support Linux, LastPass is owned by LogMeIn - a company from the states, and so on.&lt;/p&gt;

&lt;p&gt;I ended up switching to Dashlane as my latest full fledged experiment, and I can't say I've been happy. The basics are in place, but the experience is pretty terrible.&lt;/p&gt;

&lt;p&gt;I keep getting logged out of Dashlane for no reason, I tell it to remember my credentials, yet I keep getting asked to login repeatedly. It's more than a minor inconvenience when your password is properly long and you've got 2FA set up on a device with also a good password required to unlock it. The browser extensions are incredibly buggy and overall poorly designed, often it just doesn't load for a website and I need to reload it several times to get the autofill to work, and it keeps suggesting saving my phone numbers, credit cards, addreses etc. which I've told literally hundreds of times by now to "never save". When I open up e.g. PayPal and Dashlane asks me to log in and I do - well .. I get redirected from the site I wanted to be on, to their dashboard for no reason. Their support is also incapable of acknowledging their software has issues, it took me literal months to initially even get to try their software as their support was so unresponsive to my clear bug reports with data about how to reproduce them and so on.&lt;/p&gt;

&lt;p&gt;They also insist on releasing "updates" to their software on a regular basis, but unfortunately do not understand the concept of quality assurance, automated testing, etc. and thus I end up regularly with my password generator simply not working and other such critical issues. Their support insists they need to make regular updates and these cannot be disabled because of security reasons, which makes me think that if they need to release security updates every 2 weeks or so that there's a lot more wrong with Dashlane than I've seen so far.&lt;/p&gt;

&lt;p&gt;Where am I going to find a password manager that I can trust, which doesn't annoy me all the time? I remember I had some reasons to not use 1Password, but that was a long time ago and that's probably not valid anymore. The list of options is gladly growing, but on the other hand not all of these options are obvious the first time you launch it but only after a month or a few of active use.&lt;/p&gt;

&lt;p&gt;If I could find a good cloud storage option, then tools that do not provide their own cloud solution, such as Buttercup, would also become more viable options for me. Until then, I can't really even consider them.&lt;/p&gt;

&lt;h1&gt;
  
  
  Crowdsourcing research?
&lt;/h1&gt;

&lt;p&gt;I'd love to pay more to get a better service, if it was available. I'd spread the gospel if I found a good tool, and recommend them to my friends, and to the teams I work in. There's just a limit of how much personal effort I can put into finding a tool. Does anyone know of good trustworthy and stable tools that would fulfill these needs?&lt;/p&gt;

&lt;p&gt;Is Tresorit a good choice? What about 1Password? Are there others I should consider, and if so - why?&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>security</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Standard Windows development environment</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Sat, 21 Dec 2019 09:49:38 +0000</pubDate>
      <link>https://dev.to/erebos-manannan/standard-windows-development-environment-46mi</link>
      <guid>https://dev.to/erebos-manannan/standard-windows-development-environment-46mi</guid>
      <description>&lt;h1&gt;
  
  
  Preface
&lt;/h1&gt;

&lt;p&gt;Previously I've written about &lt;a href="https://dev.to/lietux/developing-like-a-pro-on-windows-4bbh"&gt;how to develop "like a pro" on Windows&lt;/a&gt; with various tips and tricks about how to get your work optimized and solve common problems. Then I wrote &lt;a href="https://dev.to/lietux/introducing-aperture-control-51a7"&gt;Aperture Control&lt;/a&gt; to automate some of the common setup tasks for Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standard development environment for Windows
&lt;/h2&gt;

&lt;p&gt;Now, using Aperture Control and based on the tips, I've set up a repository to configure what I could consider a fairly &lt;a href="https://github.com/Lieturd/aperture-control-example"&gt;standard development environment&lt;/a&gt; for Windows.&lt;/p&gt;

&lt;p&gt;It's trying to not be too opinionated, but provide a good base to start from, and suggest some tools and configurations not everyone might be aware of yet that can significantly benefit a lot of developers. Most of all, it's aiming to be easy to take into use and customize as you see fit.&lt;/p&gt;

&lt;p&gt;There's all kinds of things from package managers, programmer fonts (DejaVu), CygWin, placeholders for autorun cmds, to configuring local bin folder similar to &lt;code&gt;~/.bin&lt;/code&gt; a lot of *nix users have set up and configuring some sensible defaults for Windows and e.g. Git.&lt;/p&gt;

&lt;p&gt;Usage should be simple: Fork / otherwise clone the repository, tweak to your liking (e.g. based on &lt;a href="https://github.com/Lieturd/aperture-control-recipes"&gt;the recipe collection&lt;/a&gt;), and run on the machines you want to keep synced with your settings. When you have an update to make - push it to the repo and it will be automatically updated to your other machines as a scheduled task checks for updates hourly.&lt;/p&gt;

&lt;h1&gt;
  
  
  Discussion topic
&lt;/h1&gt;

&lt;p&gt;What do you think should and shouldn't be part of a standard development environment? What are you missing, what do you not want "poisoning" your machine?&lt;/p&gt;

&lt;p&gt;Any good practices you've come up with your folder structures, or settings for Windows or other software that you'd like to share and see spread?&lt;/p&gt;

&lt;p&gt;Do you have a wishlist for things that you'd like to still see while developing in Windows? Maybe someone else knows how.&lt;/p&gt;

&lt;p&gt;My personal wish: getting my terminal to support emojis and other such things properly. I like writing scripts that output 👍 for success and 😢 for failure, yet I just end up with various rectangles and other such things on my screen when I try to use them. The &lt;a href="https://stackoverflow.com/questions/56419639/what-does-beta-use-unicode-utf-8-for-worldwide-language-support-actually-do"&gt;beta UTF-8 support&lt;/a&gt; does not seem to really help, and causes some additional issues for me as well.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>windows</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Introducing Aperture Control</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Tue, 12 Nov 2019 17:48:58 +0000</pubDate>
      <link>https://dev.to/erebos-manannan/introducing-aperture-control-51a7</link>
      <guid>https://dev.to/erebos-manannan/introducing-aperture-control-51a7</guid>
      <description>&lt;p&gt;I previously posted about how to "&lt;a href="https://dev.to/lietux/developing-like-a-pro-on-windows-4bbh"&gt;develop like a pro on Windows&lt;/a&gt;" as it seemed to me like most people really failed to understand that a lot of great tools exist for Windows that make developers very effective also on Windows.&lt;/p&gt;

&lt;p&gt;Since then I've bumped into concepts like &lt;a href="https://nixos.org/nix/"&gt;Nix, a purely functional package manager&lt;/a&gt; and have been wondering if we could reach some similar goals with Windows.&lt;/p&gt;

&lt;p&gt;The things I wanted to see synchronized between all my Windows machines, and automated after a new installation were at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Installed applications&lt;/li&gt;
&lt;li&gt;Configuration for common things like Git&lt;/li&gt;
&lt;li&gt;Environment variables, file associations, and the like&lt;/li&gt;
&lt;li&gt;Windows features (e.g. Hyper-V, and Windows Subsystem for Linux)&lt;/li&gt;
&lt;li&gt;Other Windows settings (Dark Mode, sleep and hibernation, privacy related settings, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I looked around for existing tooling and ... well it didn't look like there was much around that didn't have a number of dependencies I'd have to install first, that were free, didn't require running servers, and wouldn't relinquish control of your PC to some external system.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing Aperture Control
&lt;/h1&gt;

&lt;p&gt;After some thinking I realized the problem shouldn't be all that difficult to solve at least partially and get into a significantly meaningful level of support with some PowerShell scripts, Batch scripts, and Registry patches.&lt;/p&gt;

&lt;p&gt;I'd already seen a number of installers with a quick PowerShell one-liner, so I thought that might be the way I'd want to go and gave it a go.&lt;/p&gt;

&lt;p&gt;And so now we have &lt;a href="https://github.com/Lieturd/aperture-control"&gt;Aperture Control&lt;/a&gt; and an accompanying "&lt;a href="https://github.com/Lieturd/aperture-control-recipes"&gt;recipe collection&lt;/a&gt;" with some of the first attempts to solve my most common headaches.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LJD7GDFK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/97nopw2zkyatcag75q3u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LJD7GDFK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://thepracticaldev.s3.amazonaws.com/i/97nopw2zkyatcag75q3u.gif" alt="Aperture Control in action" width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use Aperture Control
&lt;/h2&gt;

&lt;p&gt;First step is to fork the &lt;a href="https://github.com/Lieturd/aperture-control"&gt;Aperture Control repository in GitHub&lt;/a&gt; and customize it according to your needs.&lt;/p&gt;

&lt;p&gt;Let's take the example that you would like to install &lt;a href="https://chocolatey.org"&gt;Chocolatey&lt;/a&gt;, and a number of packages with it.&lt;/p&gt;

&lt;p&gt;Step 1: Get the &lt;a href="https://github.com/Lieturd/aperture-control-recipes/blob/master/recipes/install-chocolatey.ps1"&gt;recipe to install or upgrade Chocolatey&lt;/a&gt; and copy it in your repository as &lt;code&gt;recipes/01-install-chocolatey.ps1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Step 2: Get the &lt;a href="https://github.com/Lieturd/aperture-control-recipes/blob/master/recipes/install-packages.ps1"&gt;recipe to install packages&lt;/a&gt; and copy it in your repository as &lt;code&gt;recipes/02-install-packages.ps1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Step 3: Customize according to your desires, e.g. if you wanted to install 7-Zip, ConEmu, Visual Studio Code, and Windows Subsystem for Linux you would customize the script to say something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install all the packages you want to use in other scripts&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;choco.exe&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;install&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-y&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;7zip&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;conemu&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;vscode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;wsl&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c"&gt;# This non-empty line is important, do not move it&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can find the names of Chocolatey packages with the &lt;code&gt;choco search&lt;/code&gt; command, or via their &lt;a href="https://chocolatey.org/packages"&gt;online package search&lt;/a&gt;. The collection is really quite impressive (and there's Scoop as well with a few unique additions).&lt;/p&gt;

&lt;p&gt;Step 4: Commit and push your changes to your fork.&lt;/p&gt;

&lt;p&gt;Step 5: Run Aperture Control in an Administrator PowerShell (replace &lt;code&gt;your/repository&lt;/code&gt; with the correct GitHub user and repository):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows by default seems to block execution of PowerShell scripts&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Set-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ExecutionPolicy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Unrestricted&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;New-Object&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;System.Net.WebClient&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;DownloadFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://raw.githubusercontent.com/your/repository/master/setup.ps1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'setup.ps1'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;\setup.ps1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;your/repository&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you really want, you can also store the repository contents on e.g. an USB stick and not share the scripts on GitHub. You only need to run the &lt;code&gt;run-ac-recipes.ps1&lt;/code&gt; -script as Administrator then, as &lt;code&gt;setup.ps1&lt;/code&gt; takes care of downloading the GitHub repository contents.&lt;/p&gt;

&lt;h2&gt;
  
  
  The "standard development environment"
&lt;/h2&gt;

&lt;p&gt;After writing a few recipes for my own use and thinking about what kind of tips I would like to share with my friends, I thought of the concept of a "standard development environment", what I would consider things that everyone should be doing.&lt;/p&gt;

&lt;p&gt;Similar to how in Linux world it's now common to have &lt;code&gt;~/.bin&lt;/code&gt; in your &lt;code&gt;PATH&lt;/code&gt; for all those little binaries you end up with, there should be a &lt;code&gt;%USERPROFILE%\bin&lt;/code&gt; on Windows. You will want certain tools installed, better terminal, ability to configure aliases, and so on.&lt;/p&gt;

&lt;p&gt;So with that in mind, I built &lt;a href="https://github.com/Lieturd/aperture-control-example"&gt;an example for Aperture control&lt;/a&gt; to configure what I would consider a fairly standard development environment. It's still fairly opinionated on what kind of tools and configuration people might want, but it's easy to fork and configure to your needs.&lt;/p&gt;

&lt;p&gt;I'd love to hear feedback on what kind of parts you might want to see there, what do you think is extraneous, and how it's working for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;There's a lot of things that Aperture Control still cannot do by itself, but overall PowerShell is quite capable and the &lt;a href="https://www.powershellgallery.com"&gt;PowerShell Gallery&lt;/a&gt; has lots of extra things to provide even more capabilities for it, so there really are not a lot of limits for what you can do with this.&lt;/p&gt;

&lt;p&gt;What should be considered is if it is easily possible to e.g. deal with backing up or syncing various application settings (IDEs, browsers, etc.), and how to better deal with keeping your own custom files in the repository (e.g. for &lt;a href="https://dev.to/lietux/developing-like-a-pro-on-windows-4bbh#scripting"&gt;Autorun cmd&lt;/a&gt;) and easily apply them.&lt;/p&gt;

&lt;p&gt;I don't have all the ideas for what problems should be solved, or how to solve them, but I imagine there's a lot of smart people out there who can contribute. &lt;em&gt;YOU&lt;/em&gt; can help by testing it out, spreading the word, submitting feature requests and bug reports (both for the tool and the recipes), creating new recipes, and so on.&lt;/p&gt;

&lt;p&gt;You can tell me in the comments, what would you like to see automated in your Windows environments?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit: Updated the tool a bit to have all the recipes stored in one folder for better control over the execution order of recipes of all types and updated the post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit:&lt;/em&gt; Added reference to "standard development environment"&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>windows</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Developing like a pro, on Windows</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Thu, 11 Jul 2019 18:45:26 +0000</pubDate>
      <link>https://dev.to/erebos-manannan/developing-like-a-pro-on-windows-4bbh</link>
      <guid>https://dev.to/erebos-manannan/developing-like-a-pro-on-windows-4bbh</guid>
      <description>&lt;p&gt;So it seems to me like a lot of people don't seem to value Windows for development. There seems to be a lot of misconceptions about it's capabilities, availability of tooling, and lack of understanding of what really are the options.&lt;/p&gt;

&lt;p&gt;This guide will hopefully help you guys see that Windows is a viable option just like anything else, and not just for C#. There's also a few more generic tips about Windows use not purely useful in development.&lt;/p&gt;

&lt;p&gt;This guide is based around my own working habits and principles, e.g. if you are developing something that requires a database, I'm assuming you want to avoid running it locally anyway as you'll quickly end up poisoning your system with various services. Instead you should typically try running such things on virtual machines or containers in one way or another.&lt;/p&gt;

&lt;p&gt;It is also often a good idea to run more complicated development environments in managed virtual machines or containers, to ensure that resetting the environment, or getting new team members on-boarded does not require an elaborate OS specific guide that is never exactly up-to-date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Privacy etc. concerns with Windows 10&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Terminal emulators&lt;/li&gt;
&lt;li&gt;Package managers&lt;/li&gt;
&lt;li&gt;Virtualization&lt;/li&gt;
&lt;li&gt;GNU toolchain, CygWin and WSL&lt;/li&gt;
&lt;li&gt;Apple builds&lt;/li&gt;
&lt;li&gt;Scripting, aliasing, and autorun&lt;/li&gt;
&lt;li&gt;Paths&lt;/li&gt;
&lt;li&gt;SSH keys + Pageant&lt;/li&gt;
&lt;li&gt;Window management&lt;/li&gt;
&lt;li&gt;Screenshots&lt;/li&gt;
&lt;li&gt;Emoji &amp;amp; UTF-8 special characters&lt;/li&gt;
&lt;li&gt;Fonts&lt;/li&gt;
&lt;li&gt;Git, Diff, and other such tools&lt;/li&gt;
&lt;li&gt;What about automatic restarts?&lt;/li&gt;
&lt;li&gt;Permissions&lt;/li&gt;
&lt;li&gt;Automation of much of the above&lt;/li&gt;
&lt;li&gt;Closing thoughts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;(Hey dev.to peeps, care to make it easier to do these?)&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy etc. concerns with Windows 10 &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;It's fair to touch on this topic to start with.&lt;/p&gt;

&lt;p&gt;Some people seem to still have these concerns. I can't say that running an OS from any large company is safe these days, these companies sure haven't deserved anyone's trust, but it does seem like Microsoft stepped up and alleviated them pretty well, and there are unofficial tools that help with it further.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3g9u8u8x51d7u7momrwn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F3g9u8u8x51d7u7momrwn.png" alt="Windows 10 Offline account"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firstly, when setting up your Windows computer or user account, just don't use a Microsoft account but an offline account. This disables some mostly useless features, like syncing Edge settings, and you might get nagged by Microsoft Store about switching your account to use a Microsoft Account every now and then but clicking "No" isn't that much effort. Pretty sure you can also convert your account or at least create a new one if you didn't do this to start with.&lt;/p&gt;

&lt;p&gt;Secondly, similarly when installing your computer, make sure you just answer "No" to all the tracking questions, no to ads, no to extensive metrics, etc. - this really does disable quite a lot of the things that people were concerned of.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjqokqv6iv92ybiz3e19k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fjqokqv6iv92ybiz3e19k.jpg" alt="DoNotSpy10"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And thirdly, install &lt;a href="https://pxc-coding.com/donotspy10/" rel="noopener noreferrer"&gt;DoNotSpy10&lt;/a&gt; and tweak the remaining settings you're not comfortable with. It works wonders.&lt;/p&gt;

&lt;p&gt;After these I'd trust my Windows PC at least as much as anything by Google, Apple or e.g. Canonical (behind Ubuntu, known e.g. for making shady deals with Amazon). Some Linux, BSD, etc. distributions could be a bit more privacy-conscious, but there's a limit to how much effort I'm going to put in it, and how broken a system I'm willing to tolerate.&lt;/p&gt;

&lt;p&gt;For the truly privacy-conscious I can highly recommend &lt;a href="https://pi-hole.net/" rel="noopener noreferrer"&gt;Pi-Hole&lt;/a&gt;, it's a bit of work to set up, and doesn't really work easily as a solution "on the go", but when configured in your network you can block a lot of tracking that you wouldn't want in your network. It's kinda annoying to see just how many tracking attempts it can block from my phone apps. Alternatively I know &lt;a href="https://www.f-secure.com/en/home/products/freedome" rel="noopener noreferrer"&gt;F-Secure FREEDOME VPN&lt;/a&gt; has an option for blocking online tracking as well, other VPN solutions might as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Security really is a topic that applies to all systems equally. You can get viruses on MacOS and Linux, and do stupid things online regardless of which OS you're using.&lt;/p&gt;

&lt;p&gt;On Windows by default you're quite secure, just don't go running every random &lt;code&gt;.exe&lt;/code&gt; in your email attachments or that malicious websites want to download, and you're fine.&lt;/p&gt;

&lt;p&gt;The only exception is full-disk encryption, for that I don't know of any other solution that works mostly problem-free than BitLocker and that requires Pro version of Windows. There's DiskCryptor and other such things but I've ended up having to put a lot of effort into fixing them after Windows Update breaks the boot sector.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbpd5enuztc73ryqq0wgc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fbpd5enuztc73ryqq0wgc.png" alt="BitLocker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you still worry, use something like &lt;a href="https://www.f-secure.com/en/home/products/safe" rel="noopener noreferrer"&gt;F-Secure SAFE&lt;/a&gt; or any of the of the many other security suites and get protection on a higher level. This kind of active always-on security tools are btw not really widespread on non-Windows machines, so I could easily classify them as less secure.&lt;/p&gt;

&lt;p&gt;Don't disable User Account Control (the permission dialogs), don't automatically click Yes to the UAC dialogs, and don't enable scripted content on your Office docs from random sources and you really will be quite safe.&lt;/p&gt;

&lt;p&gt;Oh and for an extra tip: use a password manager, regardless of what OS you're using. Lots of options out there, some with more features (e.g. cross-platform sync, or sharing with other people, etc.) than others. Pick any and use it, and you'll already be a lot better secured on the internet than most people on any OS.&lt;/p&gt;

&lt;h2&gt;
  
  
  Terminal emulators &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;So as an important first step, let's discuss terminal emulators.&lt;/p&gt;

&lt;p&gt;Nobody wants to look at or work with the old Command Prompt window (&lt;code&gt;conhost.exe&lt;/code&gt;, not &lt;code&gt;cmd.exe&lt;/code&gt; like most people seem to think).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9j401szlbdejy7l7r81r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9j401szlbdejy7l7r81r.png" alt="ConHost window"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The terminal suffers from many issues, it's kinda slow, has no tabbing, copy &amp;amp; pasting is clunky, font support is kinda bad. But despair not! There are options.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://conemu.github.io/" rel="noopener noreferrer"&gt;ConEmu&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8edgtsoyxd90emv3ccg4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F8edgtsoyxd90emv3ccg4.png" alt="ConEmu window"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tabs, split view, background customization, themes, tons of customization options, quake style slide down -option, profiles, options for running different different shells, etc.&lt;/p&gt;

&lt;p&gt;Yes, all these are possible with ConEmu. If all you want is a good Terminal Emulator for Windows, use this. It's easy to install, no need to look elsewhere.&lt;/p&gt;

&lt;p&gt;There's one downside that I feel I need to mention - the default prompt it's configured for is a bit annoying. You might want to edit &lt;code&gt;%PROGRAMFILES%\ConEmu\ConEmu\CmdInit.cmd&lt;/code&gt; (check the permissions -section below for how) or tweak the settings in-app to change this.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/en-us/p/windows-terminal-preview/9n0dx20hk701" rel="noopener noreferrer"&gt;The new Windows Terminal&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdney938qkk96iztc97sx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fdney938qkk96iztc97sx.jpg" alt="Windows Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft themselves realized that their terminal is kinda bad and drives away developers. So they're actively working on a new one. It's currently in "Early Preview Build" -phase, and requires Windows 10 version 18362.0 or higher. It seems very promising, but there might be reasons why you can't use it or wouldn't want to depend on it - you can just use ConEmu then.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Various cross-platform Terminal Emulators&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There's now several that I've found, you've got the Node.js based &lt;a href="https://hyper.is/" rel="noopener noreferrer"&gt;Hyper&lt;/a&gt; that has been around for a while, there's &lt;a href="http://bterm.bleenco.io/" rel="noopener noreferrer"&gt;Bterm&lt;/a&gt;, and like a long list of them on &lt;a href="https://terminalsare.sexy/#terminal-emulation-applications" rel="noopener noreferrer"&gt;https://terminalsare.sexy/#terminal-emulation-applications&lt;/a&gt; - pick one, pick 5, try them, see what you like.&lt;/p&gt;

&lt;p&gt;Personally I've really only liked &lt;a href="https://github.com/jwilm/alacritty" rel="noopener noreferrer"&gt;Alacritty&lt;/a&gt; out of those, the others that I tried felt slow or otherwise janky, e.g. Hyper tends to randomly throw popups at you about some &lt;code&gt;package.json&lt;/code&gt; parsing errors or other such nonsense when you're doing exactly nothing outside of running the default install.&lt;/p&gt;

&lt;h2&gt;
  
  
  Package managers &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;There's a few of them out there now, e.g. &lt;a href="https://scoop.sh/" rel="noopener noreferrer"&gt;Scoop&lt;/a&gt; and &lt;a href="https://chocolatey.org/" rel="noopener noreferrer"&gt;Chocolatey&lt;/a&gt; to name a few. I can't with a straight face claim they're excellent, they tend to e.g. require me to launch a separate admin shell to run their commands instead of asking for privilege escalation when I run them, but there's clearly hope in this department and currently some options exist.&lt;/p&gt;

&lt;p&gt;I personally have used Chocolatey to install a number of things and it seems to be problem-free.&lt;/p&gt;

&lt;h2&gt;
  
  
  Virtualization &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Like mentioned, I depend on virtualization to keep my various development environments etc. separate from my host OS, regardless of what OS is in question. It just seems wrong to poison your main OS with various project specific dependencies etc. that are likely going to start causing conflicts and other unmaintainable situations sooner or later.&lt;/p&gt;

&lt;p&gt;As I tend to work only in a OS-agnostic way, all development I do needs to work with cross-platform tools. There's really only 2 base technologies you can do that with that I'm aware of right now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.virtualbox.org/" rel="noopener noreferrer"&gt;VirtualBox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.docker.com/" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you know you'll always be using Docker only, then no problem, go and install Docker using their recommended methods for Windows and you're golden. It depends on Hyper-V and the installer will enable that for you if you don't have it installed yet, and that should solve all your problems. I've never been ok with Hyper-V myself so there's a high chance you'll end up with some random problems with e.g. anti-cheat systems in games and other things, but for pure development use it should be fine.&lt;/p&gt;

&lt;p&gt;For any other cases I would highly recommend using VirtualBox, and if you also need Docker, either installing it via &lt;a href="https://kubernetes.io/docs/tasks/tools/install-minikube/" rel="noopener noreferrer"&gt;Minikube&lt;/a&gt; (managed &lt;a href="https://kubernetes.io/" rel="noopener noreferrer"&gt;Kubernetes&lt;/a&gt; environment, with easy access to Docker via &lt;code&gt;minikube docker-env&lt;/code&gt;) or the old &amp;amp; vastly superior &lt;a href="https://github.com/docker/toolbox/releases" rel="noopener noreferrer"&gt;Docker Toolbox for Windows&lt;/a&gt;. Docker really is run by a bunch of people out of touch with reality, so they make it incredibly difficult to make it possible to run the working version of it&lt;/p&gt;

&lt;p&gt;I'm specifically discounting VMWare as an option as it doesn't play as well with all the tools you want to use to manage your virtual machines, e.g. &lt;a href="https://www.vagrantup.com/" rel="noopener noreferrer"&gt;Vagrant&lt;/a&gt;, and it's not really seemed worth the cost to me for years since VirtualBox has significantly matured.&lt;/p&gt;

&lt;h2&gt;
  
  
  GNU toolchain, CygWin and WSL &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Some of the GNU tools (and some other typical *nix tools as well) are pretty nifty, and while Windows does come with some similar command line tools and Power Shell might be able to do a bunch of similar functions in a neat way, I gotta admit that I've never been super happy with either option.&lt;/p&gt;

&lt;p&gt;What I do is I install &lt;a href="https://www.cygwin.com/" rel="noopener noreferrer"&gt;CygWin&lt;/a&gt; (I use the &lt;code&gt;x86_64&lt;/code&gt; version) and put it on my &lt;code&gt;PATH&lt;/code&gt;, and use the CygWin setup tool to manage the various things I might want to install. Why use &lt;code&gt;nslookup&lt;/code&gt; when I can just use &lt;code&gt;dig&lt;/code&gt;, &lt;code&gt;curl&lt;/code&gt; is easy to install as is &lt;code&gt;grep&lt;/code&gt;, and &lt;code&gt;ls&lt;/code&gt; beats &lt;code&gt;dir&lt;/code&gt; as well. There are some occasional issues when a tool bundles their own &lt;code&gt;cygwin1.dll&lt;/code&gt; or if you also end up installing MSYS2, but these tend to be rare and fairly easy to solve. I guess &lt;a href="https://www.msys2.org/" rel="noopener noreferrer"&gt;MSYS2&lt;/a&gt; is also a viable alternative to CygWin though I have little personal experience with it, it uses &lt;code&gt;pacman&lt;/code&gt; similar to Arch Linux for package management and that's kinda neat.&lt;/p&gt;

&lt;p&gt;Then when I hit some of the rare cases when Windows support for some tool I really want to use kinda sucks, I tend to be able to run it quite well under &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10" rel="noopener noreferrer"&gt;Windows Subsystem for Linux&lt;/a&gt; (what a terrible name) aka WSL. As an example I had some issues with running &lt;a href="https://jekyllrb.com/" rel="noopener noreferrer"&gt;Jekyll&lt;/a&gt; on Windows because their developers apparently don't care to make their tools cross-platform, ran it in WSL and it was fine.&lt;/p&gt;

&lt;p&gt;With WSL there's the extra fun bit that I can run an X Server on my Windows, e.g. &lt;a href="https://sourceforge.net/projects/vcxsrv/" rel="noopener noreferrer"&gt;VcXsrv&lt;/a&gt; and have even GUI utilities run. There's still a lot of limitations and e.g. getting PulseAudio routed to the real Windows -side seems near impossible atm, but there's again quite a bit of promise here.&lt;/p&gt;

&lt;p&gt;On top of that, I sometimes really rarely fire up e.g. Fedora on VirtualBox to try out some of the software that doesn't work even under WSL.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apple builds &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Need MacOS for builds of your iOS/MacOS application? Think you need to buy Apple hardware for that?&lt;/p&gt;

&lt;p&gt;There's various build automation systems that take care of it as well as things like &lt;a href="https://www.macincloud.com/" rel="noopener noreferrer"&gt;MacinCloud&lt;/a&gt; that help with that.&lt;/p&gt;

&lt;p&gt;So this also does not stop you from using Windows, and a solution like this might steer you towards the right choice of cross-platform development 🙂&lt;/p&gt;

&lt;p&gt;Really this kind of hostile business practices should be reason enough to boycott a company like Apple, but sometimes you have to deal with the realities that you want to also release your app for the people who do run Apple hardware.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scripting, aliasing, and autorun &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;BASH scripting is kinda neat for some things, and people know how to set up their favorite aliases on it easily. However this is not the only option.&lt;/p&gt;

&lt;p&gt;The Windows shell supports many basic operations anyway, especially if you already installed CygWin/MSYS2. I can e.g. run &lt;code&gt;find . -name "*.sh" -exec git update-index --chmod=+x {} ;&lt;/code&gt; or &lt;code&gt;cat README.md | grep https://&lt;/code&gt; just fine. Env variables? Can do, just use &lt;code&gt;set FOO=bar&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://en.wikibooks.org/wiki/Windows_Batch_Scripting" rel="noopener noreferrer"&gt;Batch scripting&lt;/a&gt; has been around for quite a while, and while it looks unfamiliar to most, it's typically capable enough to perform your most common problems.&lt;/p&gt;

&lt;p&gt;You can write &lt;code&gt;.bat&lt;/code&gt; or &lt;code&gt;.cmd&lt;/code&gt; scripts, as well as just run them inline. E.g. instead of something like &lt;code&gt;$(minikube docker-env)&lt;/code&gt; to execute the output of that command, you can run &lt;code&gt;@FOR /f "tokens=*" %i IN ('minikube docker-env') DO @%i&lt;/code&gt; - looks quite funky for sure if you're not used to looking at it, but works just as well. There's also the option of running VBScript for some things outside the scope of the capabilities of Batch scripting, but as always, I tend to prefer the cross-platform solutions.&lt;/p&gt;

&lt;p&gt;You CAN just run your BASH scripts on Windows, install &lt;code&gt;bash&lt;/code&gt; via CygWin (or use WSL), and they tend to work fine if people are careful with not assuming certain things.&lt;/p&gt;

&lt;p&gt;For anything even slightly more complicated, the options tend to be writing your scripts or tools with e.g. Python, Go, or Rust. Ruby is a widely used option as well that some use fairly successfully but it seems to me distributing tools made with Ruby is kind of a pain. If you're doing JavaScript development you can just use &lt;code&gt;npm&lt;/code&gt; scripts or the various CLI utility libraries.&lt;/p&gt;

&lt;p&gt;What about aliasing then? What if you want your &lt;code&gt;ls&lt;/code&gt; to actually run &lt;code&gt;ls -haF --color=always&lt;/code&gt;? Well, there's a solution for that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DOSKEY ls=ls -haF --color=always
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's again, kinda odd if you've never seen it, but it works.&lt;/p&gt;

&lt;p&gt;Want to make this permanent? There's way to do it via ConEmu and some others' tools, but for a more universal solution is where the autorun comes into play.&lt;/p&gt;

&lt;p&gt;Create a script, e.g. in &lt;code&gt;%USERPROFILE%\init.cmd&lt;/code&gt; and put your things in there. For compatibility and convenience prefix the thing with a line saying &lt;code&gt;@echo off&lt;/code&gt; to disable the commands being output every time a new shell is started.&lt;/p&gt;

&lt;p&gt;This makes the whole file look more like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@echo off
DOSKEY ls=ls -haF --color=always
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you'll want to open up &lt;code&gt;regedit.exe&lt;/code&gt; and browse to &lt;code&gt;HKEY_CURRENT_USER\Software\Microsoft\Command Processor&lt;/code&gt; and create a new "Expandable string" value called &lt;code&gt;Autorun&lt;/code&gt; (if one doesn't exist yet) with the data &lt;code&gt;%USERPROFILE%\init.cmd&lt;/code&gt; (or the path to where-ever your script is).&lt;/p&gt;

&lt;p&gt;If you trust your computer's security on random scripts you found on the internet (ever noticed how often people just curl and blindly pipe it to bash? 🤢), you could also save this as &lt;code&gt;autorun.reg&lt;/code&gt; and double-click on it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"Autorun"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,\
  4c,00,45,00,25,00,5c,00,69,00,6e,00,69,00,74,00,2e,00,63,00,6d,00,64,00,00,\
  00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That will give you a script that you can easily edit and get your aliases or other common commands e.g. to set up your Docker environment or whatever you want for each instance of &lt;code&gt;cmd.exe&lt;/code&gt; you are running regardless of which terminal it is in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paths &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Some people might not be aware of this, but you can manage the &lt;code&gt;PATH&lt;/code&gt; in Windows as well. You can either do it via the script above (&lt;code&gt;set PATH=%PATH%;&amp;lt;new item&amp;gt;&lt;/code&gt; - notice the &lt;code&gt;;&lt;/code&gt; and not &lt;code&gt;:&lt;/code&gt; as the separator), or via the &lt;code&gt;View advanced system settings&lt;/code&gt; option you can find in Control Panel / Start menu. In the &lt;code&gt;System Properties&lt;/code&gt; dialog that opens up, on the &lt;code&gt;Advanced&lt;/code&gt; tab, click on &lt;code&gt;Environment Variables&lt;/code&gt;, find either the system-wide or user-specific &lt;code&gt;Path&lt;/code&gt; and click &lt;code&gt;Edit...&lt;/code&gt;. Pretty easy, right?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr271r8tkgn9ydybdurow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fr271r8tkgn9ydybdurow.png" alt="View advanced system settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Put your CygWin &lt;code&gt;bin&lt;/code&gt; directory here.&lt;/p&gt;

&lt;h2&gt;
  
  
  SSH keys + Pageant &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;SSH keys are a bit annoying on Windows in my experience, because the only decent tool for generating them seems to be PuTTygen from the &lt;a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html" rel="noopener noreferrer"&gt;PuTTY&lt;/a&gt; -suite, but it uses it's own format by default and you need to find the options to get proper standard OpenSSH compatible stuff out of it. It is however very much doable.&lt;/p&gt;

&lt;p&gt;Pageant is the SSH key agent for Windows. I've yet to find another one that actually works.&lt;/p&gt;

&lt;p&gt;Use the PuTTy installer to get PuTTygen as well as Pageant. Use PuTTygen to generate your keys, store the &lt;code&gt;.ppk&lt;/code&gt; files somewhere on your filesystem, and if you want to keep them always loaded add Shortcuts to them to your &lt;code&gt;%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup&lt;/code&gt; -folder and when you log in they will be loaded to Pageant.&lt;/p&gt;

&lt;p&gt;If you do this make sure you have your disk fully encrypted and have reasonable security, you do NOT want your SSH keys to be easily stolen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Window management &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;For me WinSplit Revolution has been doing what I need for organizing my windows quickly and effectively, but it's not for everyone and the official project is dead. There's a fork &lt;a href="https://github.com/pupitetris/winsplit-reloaded" rel="noopener noreferrer"&gt;WinSplit Reloaded&lt;/a&gt; but it doesn't seem actively developed either.&lt;/p&gt;

&lt;p&gt;There really is a lot of options out there though if you need them, just check out &lt;a href="https://www.slant.co/topics/1249/~best-window-managers-for-windows#1" rel="noopener noreferrer"&gt;https://www.slant.co/topics/1249/~best-window-managers-for-windows#1&lt;/a&gt; for a list of some others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Screenshots &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I used to run &lt;a href="https://getgreenshot.org/" rel="noopener noreferrer"&gt;https://getgreenshot.org/&lt;/a&gt; for screenshots, and I kinda feel like I still should .. but &lt;code&gt;LWin+Shift+S&lt;/code&gt; is enough for me to quickly copy a part of my screen and paste it into my communication tools so I rarely need anything else. I've heard a lot of good about &lt;a href="https://app.prntscr.com/en/" rel="noopener noreferrer"&gt;LightShot&lt;/a&gt; as well, and really there's a number of options as well, here's again one list of options: &lt;a href="https://alternativeto.net/software/greenshot/?platform=windows" rel="noopener noreferrer"&gt;https://alternativeto.net/software/greenshot/?platform=windows&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Emoji &amp;amp; UTF-8 special characters &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Nowadays &lt;code&gt;LWin+.&lt;/code&gt; opens an emoji picker, which is pretty nifty when you want to add stuff in your output, documents, or whatever. 👍&lt;/p&gt;

&lt;p&gt;It's admittedly kinda clunky in some ways (I tend to hit &lt;code&gt;Esc&lt;/code&gt; to close it), but after using it for a while it feels pretty natural.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fonts &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Like all other systems, Windows also supports fonts, incl. the very standard TrueType -fonts. These can be used to make your IDEs, as well as your terminal emulators more clear and better looking. I personally really like to use &lt;a href="https://dejavu-fonts.github.io/" rel="noopener noreferrer"&gt;DejaVu fonts&lt;/a&gt; for both my terminals and IDEs, as they have a nice clean look to them where all the characters are clearly different.&lt;/p&gt;

&lt;p&gt;Installation is as easy as downloading the &lt;code&gt;.zip&lt;/code&gt;, opening up &lt;code&gt;Fonts&lt;/code&gt; (in Settings or Control Panel).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuhjyqw56jmwjcyfjv5ng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuhjyqw56jmwjcyfjv5ng.png" alt="Fonts in Windows Settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It seems you can get some fonts from the Microsoft Store as well, but really the offering there is quite minimal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Git, Diff, and other such tools &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Forget that awful &lt;code&gt;Git Bash for Windows&lt;/code&gt; that people seem to end up with. It poisons your system with some awful attempt to get BASH in just to run Git and fails at making it work really well.&lt;/p&gt;

&lt;p&gt;For CLI use you can either use the official binary from &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;https://git-scm.com/download/win&lt;/a&gt;, or again install it via CygWin. Both should work, both likely need some configuration to get your diff tools working perfectly, and maybe setting up a &lt;code&gt;GIT_SSH&lt;/code&gt; environment variable to get it to use &lt;code&gt;plink.exe&lt;/code&gt; (again from the PuTTY package) to use Pageant for your SSH keys (&lt;a href="https://stackoverflow.com/a/10353937/3989287" rel="noopener noreferrer"&gt;https://stackoverflow.com/a/10353937/3989287&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;However, why would you use CLI when you can use a GUI tool that will give you much better understanding of the state of the repository, and the changes you're about to commit?&lt;/p&gt;

&lt;p&gt;My personal favorite atm is &lt;a href="https://www.gitkraken.com/git-client" rel="noopener noreferrer"&gt;GitKraken&lt;/a&gt; but  &lt;a href="https://www.sourcetreeapp.com/" rel="noopener noreferrer"&gt;SourceTree&lt;/a&gt; and &lt;a href="https://git-scm.com/download/gui/windows" rel="noopener noreferrer"&gt;many other options&lt;/a&gt; exist.&lt;/p&gt;

&lt;p&gt;For diffing, I've got a soft spot for &lt;a href="http://winmerge.org/?lang=en" rel="noopener noreferrer"&gt;WinMerge&lt;/a&gt;. I've never met a diff/merge tool that does what I need from it better than it. &lt;a href="https://merabheja.com/12-best-free-file-comparison-tools-for-windows-10/" rel="noopener noreferrer"&gt;Many options exist again&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about automatic restarts? &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;Yea, Windows has a tendency now to automatically install updates and reboot when necessary. It is kind of a security feature, and typically causes little annoyance if you have your editors set up to save files automatically (though some like Sublime Text now remember the content even without saving), and don't tend to have massively important things running in terminal emulators or incognito windows or similar.&lt;/p&gt;

&lt;p&gt;The easiest way to avoid such issues is to set up the "active hours" under Windows Update settings - it will prevent your updates from happening during working hours or similar. Similarly if you are going to an important meeting, maybe just pause updates completely - there's a new "Pause updates for 7 days" -button in the same Windows Update -settings.&lt;/p&gt;

&lt;p&gt;To me personally that is also not enough on some of the computers I work on because I might leave e.g. this post open for a long while and I don't want to come back to it being gone.&lt;/p&gt;

&lt;p&gt;There's a number of additional things you can do depending on your edition of Windows.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.laptopmag.com/articles/stop-windows-automatic-reboots" rel="noopener noreferrer"&gt;Change the automatic installation to notifications&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.windowscentral.com/how-prevent-windows-10-rebooting-after-installing-updates" rel="noopener noreferrer"&gt;Removing the UpdateOrhestrator's Reboot ability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.makeuseof.com/tag/disable-forced-restarts-windows-update/" rel="noopener noreferrer"&gt;Group Policy updates and registry hacks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on your needs and circumstances some of these are more applicable than others.&lt;/p&gt;

&lt;h2&gt;
  
  
  Permissions &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;But what about the pesky file permissions? I can't edit the files when I need to!?!?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;People just fundamentally don't understand file permissions on Windows. People disable User Account Control, or just install things outside of &lt;code&gt;Program Files&lt;/code&gt; or similar to work around the permission system they don't understand instead of learning it.&lt;/p&gt;

&lt;p&gt;That's like recommending you to run everything as &lt;code&gt;root&lt;/code&gt; or running &lt;code&gt;chmod -R 0777 /&lt;/code&gt; on Linux, or disabling SELinux - insane, but you 100% know people that have done that because they just can't be bothered to learn.&lt;/p&gt;

&lt;p&gt;If you need to run a command and you don't have permissions to do the thing - run the command prompt / other application as an administrator, it's easy. In the Start Menu you can typically right-click on any item and choose "Run as Administrator". Think of this as &lt;code&gt;sudo&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Well what about when you feel like your user should have access to the files and you don't? You can edit the permissions for the specific files or folders.&lt;/p&gt;

&lt;p&gt;Open up the File Explorer, browse to the content in question, right click on the entry and choose "Properties".&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fplctcqat96vg759opo0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fplctcqat96vg759opo0t.png" alt="Windows File Properties"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then switch to the "Security" -tab and you can view the permissions set for it. Want to change them, e.g. to add permissions for yourself?&lt;/p&gt;

&lt;p&gt;Click &lt;code&gt;Edit...&lt;/code&gt;, then e.g. &lt;code&gt;Add...&lt;/code&gt; and when it asks to "Enter the object names to select" you can just write in your username, in my case &lt;code&gt;Lietu&lt;/code&gt; and hit &lt;code&gt;OK&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;With yourself selected on the screen you can then e.g. click on the &lt;code&gt;Allow&lt;/code&gt; checkbox for &lt;code&gt;Full control&lt;/code&gt;, and click &lt;code&gt;OK&lt;/code&gt; on the dialogs and voilá your problem is solved.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9qn2x46qh2s6htiwumal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9qn2x46qh2s6htiwumal.png" alt="Windows File Security"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is more akin to &lt;code&gt;sudo chown &amp;lt;username&amp;gt; file&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation of much of the above &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I wrote a tool to automate many of these things, &lt;a href="https://github.com/Lieturd/aperture-control" rel="noopener noreferrer"&gt;Aperture Control&lt;/a&gt; - free (BSD 3-clause) tool and collection of PowerShell scripts, Batch scripts, and Registry patches, to e.g. install various tools automatically from Chocolatey and Scoop, or configure your Windows setup as you like.&lt;/p&gt;

&lt;p&gt;There's a collection of ready-made recipes for it available at &lt;a href="https://github.com/Lieturd/aperture-control-recipes" rel="noopener noreferrer"&gt;https://github.com/Lieturd/aperture-control-recipes&lt;/a&gt;, which hopefully will keep growing.&lt;/p&gt;

&lt;p&gt;Using Aperture Control I also wrote a template that I consider a good &lt;a href="https://github.com/Lieturd/aperture-control-example" rel="noopener noreferrer"&gt;standard development environment&lt;/a&gt; and a great base to start using Aperture Control from. Hopefully it helps you out too. It's somewhat opinionated but I tried to leave most personalization tweaks outside of that and just add things I think are pretty universally required or make developing on Windows better.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing thoughts &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;I've been a heavy *nix user over the years, but really I find it impossible to find a *nix desktop I'm comfortable with.&lt;/p&gt;

&lt;p&gt;Windows used to be much worse, I get it if you have had bad experiences, but since Windows 7 came out Microsoft has really significantly improved on stability and reliability. The errors that you might bump into are easier and easier to find solutions for online, and you just generally have less of them. I've found &lt;a href="https://twitter.com/MicrosoftHelps" rel="noopener noreferrer"&gt;@MicrosoftHelps on Twitter&lt;/a&gt; to really be some of the best customer support experience I've had.&lt;/p&gt;

&lt;p&gt;Linux has too many issues with drivers, bugs and poorly designed features, e.g. drag &amp;amp; drop not working or having separate clipboards for mouse selection and &lt;code&gt;Ctrl+C&lt;/code&gt; &amp;amp; &lt;code&gt;Ctrl+V&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;MacOS is too dumbed down without even having basic ability to control the volume per application, or tweaking any settings at all really. If you don't like the way Apple likes it, too bad.&lt;/p&gt;

&lt;p&gt;There really are no other mature enough desktop environments to have the tooling I depend on.&lt;/p&gt;

&lt;p&gt;Windows has been a good development environment for years, and keeps getting better and better with Microsoft &lt;em&gt;actively&lt;/em&gt; fixing issues, adding things like WSL, and really listening to &lt;a href="https://wpdev.uservoice.com/" rel="noopener noreferrer"&gt;feedback from developers&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And on top of all this, you can get a much more powerful working computer, with e.g. built-in 4G modems, touch screens, etc. for the fraction of the price of a Mac.&lt;/p&gt;

&lt;p&gt;I would like to hear if you guys got any other tips, or problems with Windows development environments you might want to mention - we could maybe solve together some of these painpoints that are still remaining.&lt;/p&gt;

&lt;p&gt;My next goal might well be to try and automate a bunch of what I wrote above - get myself a nice Windows environment set up by running one Batch script or VBScript file. If you've got any tips towards that I'm all ears 🙂&lt;/p&gt;

&lt;h1&gt;
  
  
  Financial support
&lt;/h1&gt;

&lt;p&gt;This work has been made possible thanks to &lt;a href="https://cocreators.ee" rel="noopener noreferrer"&gt;Cocreators&lt;/a&gt; and &lt;a href="https://lietu.net" rel="noopener noreferrer"&gt;Lietu&lt;/a&gt;. You can help us continue our work by supporting us on &lt;a href="https://www.buymeacoffee.com/cocreators" rel="noopener noreferrer"&gt;Buy me a coffee&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/cocreators" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2znn4km0i2jib7ru1sm9.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>productivity</category>
      <category>programming</category>
      <category>windows</category>
    </item>
    <item>
      <title>Setting up a company's IT</title>
      <dc:creator>Erebos Manannán</dc:creator>
      <pubDate>Fri, 02 Nov 2018 19:06:26 +0000</pubDate>
      <link>https://dev.to/lietux/setting-up-a-companys-it-4m7k</link>
      <guid>https://dev.to/lietux/setting-up-a-companys-it-4m7k</guid>
      <description>

&lt;h1&gt;Preface&lt;/h1&gt;

&lt;p&gt;This is a set of tips, guidelines, etc. that you should follow to make sure your IT operations run smoothly, securely, and cost-efficiently. You should go through the list and pick the low hanging fruits first, and then see which ones you should implement later.&lt;/p&gt;

&lt;p&gt;If you're just starting a new company, most things should be easy to set up right from the start and doing so will help you ensure that things continue to are done right in the future as well, as you need to always accommodate for those decisions.&lt;/p&gt;

&lt;h1&gt;Data storage and access&lt;/h1&gt;

&lt;p&gt;This is how you keep and access your email, company's shared documents, and handle authentication to various services.&lt;/p&gt;

&lt;h2&gt;Password storage (&lt;em&gt;EXTREMELY&lt;/em&gt; important)&lt;/h2&gt;

&lt;p&gt;First and foremost, how you store your passwords, both for a single user and how you share e.g. login information to bought services, is a crucial first step to ensuring both smooth and secure operation.&lt;/p&gt;

&lt;p&gt;We've all heard about how Sony and other even big companies with clearly the necessary budget to do things properly, have managed their passwords on Excel sheets that then get put on low security environments for easy access.&lt;/p&gt;

&lt;p&gt;There is really no excuse to not invest in a password manager, that both:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensures the passwords you use, are unique and strong.&lt;/li&gt;
&lt;li&gt;Allows secure sharing of your passwords, among team members.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Some excellent options for password managers are (in alphabetical order):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://1password.com/"&gt;1Password&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://buttercup.pw/"&gt;Buttercup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dashlane.com/"&gt;Dashlane&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.f-secure.com/en/web/home_global/key"&gt;F-Secure KEY&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lastpass.com/"&gt;LastPass&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They all have their own pros and cons, and you need to evaluate them for your own purposes, however Buttercup is slightly more different from the others as it leaves the storage of the passwords for you to decide. With the others, you will always use their cloud storage (not certain of all of these, but typically zero knowledge encrypted) to store the database in, but with Buttercup you can use whatever you like (Google Drive, Dropbox, your company's file server, whatever).&lt;/p&gt;

&lt;p&gt;The paid services typically are about $5-$10/mo/user, so not a drain on even a small company. However, if price is an issue then Buttercup (or KeePass, or other similar systems) are worth taking a look at.&lt;/p&gt;

&lt;p&gt;You should ensure that all the company employees AND external parties who have access to your shared documents etc. use similar secure methods for their passwords.&lt;/p&gt;

&lt;h2&gt;Two-Factor Authentication (2FA)&lt;/h2&gt;

&lt;p&gt;Quite a few services with any security implications for you support 2FA using various different means. The easiest to set up typically is using either Google Authenticator, Authy, or similar mobile app to generate 2FA tokens, but a &lt;a href="https://www.yubico.com/products/yubikey-hardware/"&gt;YubiKey&lt;/a&gt; can be a good investment as well and offers many surprising integrations to e.g. PAM on Linux servers and Windows Hello.&lt;/p&gt;

&lt;p&gt;You can avoid a large number of issues by having Two-Factor Authentication set up on your:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Password managers&lt;/li&gt;
&lt;li&gt;Collaboration and productivity tools (Google G Suite, Microsoft Office 365, ...)&lt;/li&gt;
&lt;li&gt;Web based email&lt;/li&gt;
&lt;li&gt;Social media accounts (both company's accounts and everyone with access to e.g. your company's Facebook page)&lt;/li&gt;
&lt;li&gt;Cloud hosting systems (AWS, Azure, GCP)&lt;/li&gt;
&lt;li&gt;Really anything that supports it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These should be required by company policy and software configuration where possible. Once the staff has used these for even a short while they become second nature and don't really bother people, even if they feel like a chore to begin with.&lt;/p&gt;

&lt;p&gt;However, storing your backup tokens etc. becomes another little hurdle.&lt;/p&gt;

&lt;h2&gt;Document storage&lt;/h2&gt;

&lt;p&gt;Often you will want to write documents available for multiple people in your company and not just for yourself. Even if you're writing for yourself, you might want your documents to be stored securely and without risk of you losing them. Additionally sharing documents between your different devices might be a thing you might want to do.&lt;/p&gt;

&lt;p&gt;The worst option you can do, typically is to juggle your documents and their hundreds of different versions over email, but this is still the de facto standard in quite a few places.&lt;/p&gt;

&lt;p&gt;Your priorities might vary, but at least the following considerations might be important to you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security (no unauthorized access)&lt;/li&gt;
&lt;li&gt;Reliability (no accidental loss of data)&lt;/li&gt;
&lt;li&gt;Sharing (allowing access to other people)&lt;/li&gt;
&lt;li&gt;Convenience (e.g. simultaneously editing a document, etc.)&lt;/li&gt;
&lt;li&gt;Version control (knowing where to find the latest version, and keeping history)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are several good options for this, and how much value you put on each of these areas will affect your decisions.&lt;/p&gt;

&lt;p&gt;Some of the obvious easy answers are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gsuite.google.com/"&gt;Google G Suite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://products.office.com/en/compare-all-microsoft-office-products?tab=2"&gt;Microsoft Office 365 for Business&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These tools definitely rank high on sharing, and convenience, as well as version control. Typically security is pretty high too, making it possible to e.g. require 2FA, but some people just don't like U.S. corporations controlling their data. They also don't store the files in a zero-knowledge encrypted manner, which might be something you'd like.&lt;/p&gt;

&lt;p&gt;Other options I've seen used and have used to various degrees of success are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.pcloud.com/"&gt;pCloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spideroak.com/"&gt;SpiderOak&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These all operate on a quite different fashion, as both Google and Microsoft provide high degree of convenience, but using these tools e.g. simultaneous editing of documents is going to be very difficult, and version control might have to be done using filenames (&lt;code&gt;progress report 2018-11-02.docx&lt;/code&gt;). However, at least some of them can provide higher degrees of security (zero-knowledge encryption), and potentially other benefits to you.&lt;/p&gt;

&lt;p&gt;As a side note, if you ever use file/directory names for versioning, grouping or similar, use ISO-8601 (YYYY-MM-DD) to make sure they get sorted properly.&lt;/p&gt;

&lt;p&gt;Regardless of which option you choose you still need to worry about backups - human error happens and an accidental drag &amp;amp; drop or fumble on the keyboard could wipe your whole storage.&lt;/p&gt;

&lt;h2&gt;Backups&lt;/h2&gt;

&lt;p&gt;What you really need backups for are at least:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2FA backup codes&lt;/li&gt;
&lt;li&gt;Legal documents, book keeping information (invoices both in and out, etc.)&lt;/li&gt;
&lt;li&gt;Corporate documents&lt;/li&gt;
&lt;li&gt;Passwords (at least if you don't rely on a service with it's own cloud storage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;How to manage backups is unfortunately still not an easy subject, even in 2018. There are several complications, and security risks associated with backups as well.&lt;/p&gt;

&lt;p&gt;Some of the problems are if you store your documents on these cloud storage systems, you need a system able to read the files from there, before it can back them up. Additionally if your backups are not stored securely, in an encrypted format with restricted access, they might become a new weak point in your security strategy.&lt;/p&gt;

&lt;p&gt;Some systems that may help with this are (in alphabetical order):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.cloudberrylab.com/backup.aspx"&gt;CloudBerry Backup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.jungledisk.com/"&gt;JungleDisk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spideroak.com/"&gt;SpiderOak&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If in a pinch, you might get reasonable backups by using something like &lt;code&gt;rsync&lt;/code&gt; on a secured server, but hard disks fail even on backup servers, so it's yet another little thing to monitor and worry about.&lt;/p&gt;

&lt;h2&gt;Internet security&lt;/h2&gt;

&lt;p&gt;It's important for you to make sure that at least for critical things your Internet usage is securely handled.&lt;/p&gt;

&lt;p&gt;E.g. your personal social media use, gaming, etc. should optimally not be done on machines you work on. This so you limit potential damage of ransomware, other malware from getting to your corporate banking, or people stealing your secrets.&lt;/p&gt;

&lt;p&gt;Additionally, it's good to use tools like HTTPS Everywhere, and trustworthy VPNs to reduce the chances of your communications being intercepted while at an airport or cafe or similar. Having anti-virus software (yes, even on your Mac) is also important to reduce chances of malware breaches, and limit their potential damage.&lt;/p&gt;

&lt;p&gt;One of the best packages I've seen so far is &lt;a href="https://www.f-secure.com/en/web/home_global/total"&gt;F-Secure TOTAL&lt;/a&gt;, which combines antivirus, password manager, and VPN service in one package. There are however many other excellent VPN services, as well as antivirus tools, so you should check them out and evaluate them with your own needs in mind.&lt;/p&gt;

&lt;p&gt;Also make sure your office router is properly configured, with a unique strong password, so you don't fall victim to the simplest possible forms of attack.&lt;/p&gt;

&lt;p&gt;It's also a good idea to make sure your work machines are properly firewalled, and that you regularly run software updates. This applies both on your work machines, as well as that little web server you bought from that nice hosting company 5 years ago. Having someone replace your homepage with a goatse is not exactly good advertisement.&lt;/p&gt;

&lt;h2&gt;Limiting access&lt;/h2&gt;

&lt;p&gt;Does your CEO (or the CTO for that matter) really need all the SSH keys to your servers? Access to all the passwords? Admin account on every service you use?&lt;/p&gt;

&lt;p&gt;The same question applies in addition to the CEO to most other people - you should limit access to systems that are relevant to the person's work, and access levels as well.&lt;/p&gt;

&lt;p&gt;This simply so when accidents happen, the scope is limited. It's best if you can have different admins for different systems, so a compromising a single person does not compromise all your systems.&lt;/p&gt;

&lt;h1&gt;Physical security&lt;/h1&gt;

&lt;p&gt;In addition to threats from the Internet, you're always at risk of physical attacks, and more likely, negligence - e.g. losing equipment.&lt;/p&gt;

&lt;p&gt;Make sure your office has locks and alarm systems, as burglaries happen even in nice places and you don't want to lose that backup server in the back room.&lt;/p&gt;

&lt;p&gt;It's a bit questionable if this belongs in this section, but encryption is important on every system. Make sure all your work machines use full disk encryption, as well as BIOS passwords or similar when possible. BitLocker is a pretty decent tool on Windows machines (though it regularly gets automatically paused with updates for some reason so be careful), and Macs have FileVault.&lt;/p&gt;

&lt;p&gt;These rules should also apply to all phones with any work material on them (email, collaboration tools, password managers, access to company social media accounts, ...) - they should be fully encrypted, and require strong password to unlock.&lt;/p&gt;

&lt;p&gt;Now, your CEO might feel these rules don't apply to them, but you should assure them that they are not infallible either and get them to see the light.&lt;/p&gt;

&lt;h1&gt;PCI-DSS&lt;/h1&gt;

&lt;p&gt;If you operate any kind of online store, you probably fall under PCI-DSS (Payment Card Industry Data Security Standard) regulation at least on some level. For at least the lower tiers of self-certification completing the above should ensure you're fulfilling their requirements.&lt;/p&gt;

&lt;p&gt;For higher tiers you might have to do additional work, e.g. locking down what people can do on the work machines they use for certain actions. This is not exactly pleasant for anyone, so it might be best to limit the exposure to PCI-DSS regulation either by using 3rd party payment solutions, or by organizational structures, but this is a very lengthy topic and I'm not the best expert on these.&lt;/p&gt;

&lt;h1&gt;GDPR&lt;/h1&gt;

&lt;p&gt;The GDPR requires quite a few little things from your company, among which are most importantly that you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Know where your data is (especially personal data) and who you share it with (e.g. Google Analytics, PayPal, your accounting company)&lt;/li&gt;
&lt;li&gt;Use reasonable means to secure that data (encryption, limiting access, etc.)&lt;/li&gt;
&lt;li&gt;Keep only the minimal amount of data about people for your needs&lt;/li&gt;
&lt;li&gt;Notify your customers of breaches in a timely manner (a few days within breach)&lt;/li&gt;
&lt;li&gt;Get consent from your customers for processing their data&lt;/li&gt;
&lt;li&gt;Avoid collecting sensitive personal data (race, political preferences, religion, union status, health, sex life, sexual orientation, even e.g. hobbies)&lt;/li&gt;
&lt;li&gt;Provide easy way to get a copy of their data to people who request it&lt;/li&gt;
&lt;li&gt;Provide an easy way to have their data be deleted for people who want it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the above steps help you with security quite a bit, but leave most of the others still for you to figure out.&lt;/p&gt;

&lt;p&gt;To get you on the right mood to solve this problem, you might want to check out the "GDPR nightmare letter", which is quite exaggerated but highlights many potential issues for your company: &lt;a href="https://www.linkedin.com/pulse/nightmare-letter-subject-access-request-under-gdpr-karbaliotis/"&gt;https://www.linkedin.com/pulse/nightmare-letter-subject-access-request-under-gdpr-karbaliotis/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other resources on the matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://blog.varonis.com/gdpr-requirements-list-in-plain-english/"&gt;https://blog.varonis.com/gdpr-requirements-list-in-plain-english/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.varonis.com/privacy-design-cheat-sheet/"&gt;https://blog.varonis.com/privacy-design-cheat-sheet/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.varonis.com/eu-gdpr-spotlight-pseudonymization-as-an-alternative-to-encryption/"&gt;https://blog.varonis.com/eu-gdpr-spotlight-pseudonymization-as-an-alternative-to-encryption/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;Final words&lt;/h1&gt;

&lt;p&gt;There's probably still a lot missing, especially for tool and procedure recommendations, as well as some topics completely.&lt;/p&gt;

&lt;p&gt;I'll try to update this over time as I get new ideas to add here.&lt;/p&gt;

&lt;p&gt;What do you think about the suggestions? What did I forget to mention? Let me know in the comments.&lt;/p&gt;

&lt;p&gt;I at least identified a need to write more on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internal communication tools (Slack, Discord, Microsoft Teams, and the like)&lt;/li&gt;
&lt;li&gt;Calendar&lt;/li&gt;
&lt;li&gt;Email&lt;/li&gt;
&lt;/ul&gt;


</description>
      <category>security</category>
      <category>gdpr</category>
      <category>pcidss</category>
      <category>passwords</category>
    </item>
  </channel>
</rss>
