michael_teter

michael_teter

Windows and Linux co-development

Can some of you folks who use Windows for development suggest some guides on workflow?

For example, regarding WSL (Bash on Windows), I’ve read stern warnings against modifying any WSL files from Windows. So that means I’m not supposed to use Windows Atom editor to edit files that exist in my WSL folders. However, it seems that trying to have my Git project in my Windows folders screws up all the permissions (creating a Git war with my Mac, since each side sees the permissions changing on all files).

Do any of you do your development purely in Windows, without WSL? (Git, iex, PostgreSQL!?, etc.)? If so, do you also have to do the Putty stuff to try to get working ssh keys?

I’m finding this quite a challenge moving from Mac to Windows for development… recipes for success would be very helpful :slight_smile:

Most Liked

dimitarvp

dimitarvp

I’d like to chime in with some more contemporary info. Bare in mind this is a mix of facts and opinions. Also, it’s huge.


Linux

Laptop scene is tragic and always has been. Even specialized Dell XPS laptops that come pre-installed with special Ubuntu builds have several repeating complaints regularly on Reddit and HN (has been the case for like 2 years now) – mostly failing to sleep when closing the lid, drivers crashing after reopening the lid, random WiFi stops and restarts, static noises from the speakers, Bluetooth being flaky, font rendering problems with several displays with differing DPI…

Many Linux devs are purists, don’t care about media and don’t mind these complaints much – however many younger devs come from MacBooks or Windows desktop machines and are unable to tolerate the problems. I’ve read about such painful transitions just 2 days ago on HN… things sadly haven’t improved at all. Even the highly acclaimed Librem laptops suffer from several pretty blatant UX and hardware issues like those pointed above.

If you want to develop on Linux, better get a desktop PC or use one of the very few laptops that are known to have zero issues with Linux – mostly Thinkpads. Some people report no issues while using some of Lenovo’s Yoga laptops and 2-in-1 devices as well. The Yoga machines are pretty cute and relatively strong laptops, I will give them that.

TL;DR: do a very detailed research if you want to use Linux on a laptop. There are very few laptops that come without issues. For desktop machines however you can practically install Linux on everything and use it very efficiently.


Windows 10

Avoid WSL. It works but it comes with a baggage of WTF issues and is significantly slower than a native Windows installation of Elixir. WSL however gives you the advantage of being able to compile any C bindings without an effort. Admittedly, the WTF issues I read about a year ago are being addressed one by one and things are improving in terms of stability and Linux feature parity. 50/50 though, depends what you need.

Using a native Elixir installation: well, good luck if any of your dependencies need to compile a native library! Outside of that I had no problems, Elixir is very fast on Windows 10. I never felt it being slower compared to a MacBook or native Linux.

As for general usability, I might get some flak for this opinion but Windows is just fine. It’s not as polished or beautiful as macOS but it remains very usable and robust. Only had 1 blue screen for 3 years of usage and it was related to a random failure in the RAM that never happened again. Also, while DPI management on multiple monitors is sometimes aggravating – namely tiny text on the laptop screen if you use higher DPI to get the most of your external 4k monitor – for the most multi-monitor setups Windows 10 is absolutely viable.

TL;DR: Avoid Windows 10 if you need to compile native libraries for your work often. While installing and using Visual Studio’s compiler stack takes no more than an hour (10 minutes for me), you will inevitably fall victim to WTF compiler errors at some point. While using gcc under the MINGW sub-platform might work better, I had problems with it in the past as well.


macOS

Another not very popular opinion, it seems: Macs are very close to the ideal programming machines if you are prepared to delve into XCode’s peculiarities; however those are much less than Visual Studio’s WTFs. Getting to know XCode’s environment is mostly a one-time investment and then you can compile whatever with barely any issues. (There are always exceptions but I’ve coded in 7 programming languages on my MBP 2015 and they had all sorts of native bindings and never had problems compiling whatever they needed. Not saying there are no problems at all with macOS’ compilation stack. I’ve heard about a good number of them – but for most of programming I don’t think you can expect issues unless you do very exotic things.)

MacBooks work flawlessly for me, and I have two. Save for the once-a-year lockups or random screen corruptions that get fixed by a reboot (or fix themselves a minute later), they are perfect. Image quality and text legibility are unparalleled. My eyes are less tired after reading on my 15" MBP compared to my gaming 35" monitor that works on 144Hz. Go figure but apparently Apple knows how to do displays.

Many bemoan the “lack of package manager” which is only true if you count Apple-provided ones (which are zero except for the App Store); brew however is alive and well, and works just fine. Never had it install faulty software on both of my MacBooks.

Big drawback however might be that if you want to work on a desk for hours on end and preserve image quality and text legibility you should pay the hefty price for an external Apple-certified monitor… I found it hard to work more than 4 hours on a 15" laptop screen, sadly. Even with the superior displays of the MacBooks that are easier on the eyes, I get tired quicker overall if I stare at the smaller screen for longer periods of time… :frowning:

TL;DR: In my opinion macOS is the best candidate for a laptop programming machine right now. There is some time investment to make sure things compile without a hitch but I found it small and non-distracting, and never had to actually fight the OS (unlike Windows where I have been putting whole weekends without result).


Closing thoughts

If you will work on a desk in a company office or home office, you better work on a desktop machine. You will have access to bigger displays and can buy whatever mouse and keyboard you fancy – these 3 factors are very important when you spend a lot of time working stationary! So in this regard using Linux or Windows 10 with Linux VMs is just fine – I spend 2/3 of my work on my Win10 PC with Linux VMs and never had an issue. Recently ditched Debian for Manjaro and was never happier with a Linux distro. A Windows 10 laptop I can only 50% recommend; many work just fine but many also don’t. Battery life is inferior to MacBooks; average battery life is 4 hours (which is admittedly not a problem for many; Dell XPS and Lenovo Yoga have been known to be close to MacBooks battery life btw).

HOWEVER, if you really really want to use a laptop, don’t settle for anything else but a MacBook Pro. If the display size is a not a problem for you, at least invest in a good laptop stand and external keyboard and mouse – makes the longer work sessions much better when you are on a desk. If you don’t use an external display, most MBPs can go 6 to 8 hours on battery depending on load.

Don’t think for a second that Windows 10 or Linux experience on laptops is optimal. I and many others have tried and tried and then tried some more for years on end – things are barely improving.

In conclusion: don’t make compromises with your work machine. You might think laptop speakers that produce static noise aren’t a problem now but 2 short weeks down the road you will think otherwise.

Sorry for huge post, hope that helps someone. And always take these with a grain of salt. I cite things that are widely regarded as true in rather big communities, however many people still get by just fine with Linux or Windows laptops. Do your own research!

michael_teter

michael_teter

Given my need to use Adobe Premiere and Illustrator, it’s Windows or Mac for me. But in terms of basic usability, I’m shocked at poor Windows is compared to my Mac.

For example, this old rMBP 15 will drive three large monitors in addition to its screen. But when I try to run just one 4k monitor on my new XPS 15 (with better Nvidia GPU), I get laggy external display, and limited to 30Hz refresh.

With Windows, I can’t have Docker and Virtualbox. I have to use a 3rd party program to manage my ssh keys!? (And it doesn’t integrate easily with everything.) Outlook 2016 on Mac has unified inbox, which is good since I have 8 different accounts I need to check. Outlook 2016 on Windows doesn’t have that feature, and the party line on the official windows forum is that the feature is only possible for POP3 accounts (which is obviously not true). I have a much longer list than this… these are just the ones I can think of off the top of my head.

Meanwhile, Apple won’t let me have their fastest laptop with an ESC key. Or > 16GB RAM. But now my complaints about my Mac seem insignificant.

Azolo

Azolo

Use the Windows 10 Mail Client, I think it’s better anyway. There are really not that many times I need to get into to outlook to do anything anymore.

This is because Docker works with Windows Server containers as well. I haven’t downloaded the new Docker that supposedly does this out of the box, but it runs on Hyper-V not VirtualBox. You can probably make it so that it uses VirtualBox instead of Hyper-V, but if you haven’t tried Hyper-V you should. I like it better than VirtualBox most of the time.

Like I mentioned in the other post, I use the ssh stuff that ships with msysgit, though now I think it’s just called Git for Windows. It ships with all the ssh stuff you need, just create a .ssh folder in your User Profile/Home directory.

These aliases are what are in my PowerShell Profile. Use Write-Host $PROFILE to find it’s location

set-alias ssh-agent "C:\Program Files\Git\usr\bin\ssh-agent.exe"
set-alias ssh-add "C:\Program Files\Git\usr\bin\ssh-add.exe"
set-alias ssh "C:\Program Files\Git\usr\bin\ssh-add.exe"

It also comes with ssh-keygen, but I only used a couple of times and was too lazy to create an alias.

Though I haven’t used ssh in awhile, and I think that I had it starting the agent and adding my key in my profile. When I stopped needing to SSH, I just took those lines out.

The only other thing is NIFs, you will need a compiler of some sort. I think that there is an Elixir package that uses Visual Studio automatically though? Either way I hate having a compiler in my path. But I have msys2 and mingw on my machine, and have a function that will add it to my path for when I do need it.

NobbZ

NobbZ

As I mentioned quite a few times now (also in this Thread), docker still can use VBox on windows, just use Docker Toolbox instead of Docker for Windows.

I know, Toolbox isn’t advertised anymore, but at least they said that they want to update it until an unknown point in time.

NobbZ

NobbZ

Stay with Mac or move to Linux.

Even if it is possible to develop elixir projects on windows, I’d do this only if windows is the targeted platform to run the application.

I do totally refuse to use WSL, instead I use MINGW2 if I have to do something on windows.

Since I often have trouble when it comes to libraries that use NIFs, I try to avoid windows as much as possible. And if MINGW2 doesn’t help me out, I fire up a VM or a Docker-Container.

I had never problems with permissions in my git repository when doing the dance with linux and windows. The most common problem are the lineendings though, but after one has configured his git correctly (on both sides) it just works.

Where Next?

Popular in Questions Top

lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
Werner
Hi, I’m using Ubuntu 18.04 and after updating to OTP-24.0 yesterday i have this warning when I run “mix local.hex”: 14:57:30.512 [warn] ...
New
Phillipp
Hey, I have a NanoPi-M3 and try to install Elixir on their Ubuntu image. I followed the Raspberry Pi installation instructions from the ...
New
mathew4509
I have a list say x = ["23gh", "56kh", "97mh"] I would like to pass each element to Val in each iteration. Say, in iteration 1 -------...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New
Codball
Mix format works fine if run from the cmd. I’ve followed this to facilitate the implementation into VSC which involves downloading an ext...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
jc00ke
Expanding on this topic: https://forum.elixirforum.net/t/map-typespec-question/19217 Let’s say I have a map with required and optional k...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New

Other popular topics Top

9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New

We're in Beta

About us Mission Statement