interface

Recently I got a new laptop and of course there was an installation image on it with Windows 10. Being a distro-hopper anyway I thought why not give it a try and use this to do my private work for some time. You need to do real work with something for some time to be able to have an opinion about that something, so I use this as an opportunity.

So this blog post is special because I have to port the tools I use them on a different platform. What a great opportunity to see if the tools I decided to use are in real that flexible as I expected them to be.

Disclaimer

Just to make it clear, I am not planing to move to Windows, recommend it as primary platform nor leave Linux. The reasons why I invest time into this topic are the following:

  • If I ever have a customer that requires me to work on Windows 10 I have to be able to do the job

  • Writing platform independent code means I have to be able to compile my code also with MSVC, and therefore I do boot a Windows installation from time to time anyway.

  • As a C++ developer I need to be at least a lite bit familiar with Visual Studio

  • Being interested in the ongoing development of new C++ standards MSVC is a requirement to know since a lot of development happens there

  • I have at least 3 other PCs with various Linux installations around me anyway, so Windows is not the only and not the main option for me

  • If someone would give me a Mac I would also do some development on Mac, just to know it (feel free to contact me for donations:-)

You can see this as a help and documentation for people like me that do not have so much idea about Windows but need to spend a few hours on this platform, maybe to do some C++ development.

So no need to leave any fanboy like comments because of the topic. Thanks!

Installation

The Windows 'installation' was via the system restore partition of the laptop. Nothing special. Some questions, and it’s done. This Thinkpad came with very lite bloat ware, so I keep the default installation. Possible Lenovo has learned something from some of it’s security debacles due to bloat ware? Don’t know, but possible I will make the (d)evolutions of Thinkpads to an own topic in this blog one day. Anyhow, this one is about Windows 10, not Thinkpads.

One special note to the installation: Windows 10 has the unbelievable stupid habit. If you use your Microsoft online id as your user account it will create a home folder named after the first 5 letters of your given name. In my case it became C:\Users\haral .
This might be irrelevant if you never see an console, but for a lot of developers this is unacceptable.

Of course, you can not change the homefolder name in a simple way, without registry hacking. How fulminate stupid and arrogant, I am not the only one who complains about that, just look for this on the internet.

To fix this, create a new user with the name you want, make it an administrator, log in with the new account, delete the account with the crippled home directory name. You can than, if wanted, map the online id to the user created. I did this, and now my home directory is C:\Users\a4z , and windows explorer shows me Harald Achitz, that is how it should be.

So, if you have to spent time on the console, and you do not want to read you given name in a crippled form over and over again, do not use the MS online id as a user in the installation. Create a local user and map it to the online id if you want.

Getting some useful programs

Browser

The first thing for me is of course to get the browser I am used to use. In my case this is firefox with some plugins that I need.

Microsoft edge is an interesting alternative, and indeed I use it to browse some pages from time to time. If it ever becomes a ublock alternative I might even spent more time in it.

I am not a fan of changing from an IE dominated world to a chrome dominated world, but of course this might be the browser you want to use.

Keyboard layout

Having a browser the next thing for me is to get a usable keyboard layout. I have to deal with 3 languages on a daily base, so my requirement are a bit special, but not that special. I share this need with a lot of other people.
The layout "us int" exists, but not without dead keys. This is a problem and I do not understand why it is still not default available as an option on Windows. Luckily, there are solutions for this.

For example this, what I use currently:
http://freeman2222.mywebcommunity.org/us-intnd.zip

This page has more options, so if you look for a special layout you might find it here.
http://keyboards.jargon-file.org/#USINTLNX

Text editor

Notepad++:
https://notepad-plus-plus.org/
The only plugin in use is DSpellcheck since this is a great spell-checker that can work with multiple languages at the same time. Currently no other plugins, since I have also emacs installed for other work like writing a text like this one. But we will see. Notepad++ is great, but its limitation to Windows is a minus.

To make Notepad++ the default text editor the default application must be set via the control panel. The new settings application gives just some defaults and opens than the windows store, so this is useless. Hopefully MS will never have the idea to take away the control panel to 'push' the new settings app, but I fear they are able to do so.

Emacs is installed from here:
https://sourceforge.net/projects/emacsbinw64/

Archiver

I use PEA Zip, works fine for me.
https://sourceforge.net/projects/peazip/

There is also 7zip and some other alternatives but I do not want to trial them all.

Office software

libreOffice, the stable, not the latest one.
http://www.libreoffice.org/download/libreoffice-still/

There is a very annoying get MS Office advertisement application, it pops up every now and than and disturbs my work. It can be uninstalled, the name is 'get ms office'. (I can not look up the exact name since I removed this program :-)

It is not that I do not like MS Office, if it ever becomes available on other platforms I might even consider to buy it. The prices are OK, especially together with the storage space and it is not a bad software at all. I also think the web version is a very good example for a web application and I prefer outlook,com over docs.google. But such aggressive AD methods make me avoiding a product.

Development environment

Visual studio

The evaluation of Visual Studio Community is great. From recently until 10 years ago you have been heavily limited with the Express edition since various plugins only worked with the full version. And more than 10 years ago there has been no alternative at all form Microsoft, you had to use other software form other vendors or pay (too much for home use).

This again shows how super important competition is. Since there is gcc and clang MS has to move, and the outcome is great for all.

Microsoft also announced MSVC will become available as a stand alone compiler, without IDE, but I have not investigated if this is already the case.
Visual Studio is available here:
https://www.visualstudio.com

gcc, git, bash and co

msys2 + mingw64!
https://msys2.github.io/

Having a pacman command line for package management on windows is marvelous.

The available packages selection is overwhelming, so far everything I looked for existed. When a package exists in both msys2 and mingw64 version, it is still a bit confusing at the begin, but after working a while with that it will become clear how things belong together.

However, if you simply want to have a gcc available + git and some useful libraries like boost, sdl, …​
https://nuwen.net/mingw.html
This is from Stephan T. Lavavej, the C++ STL developer at Microsoft who gives the great talks, …​ well, you might know him. Just extract it to C:\MingW and add the bin folder and the git bin folder to the path and you are good to go. I used that in previous times and it did a good job.

other IDEs

eclipse CDT

Eclipse CDT (C/C++ Development Tooling):
https://eclipse.org/cdt/

Well, not much to say to eclipse CDT, just that I added MSYS_HOME and MINGW_HOME environment variables which point to msys2 the mingw64 directories so that eclipse finds them. Native support for msys2/mingw64 in eclipse is in work since I am not the only one who is impressed but this project.

qt creator

I downloaded the Visual Studion 2015 version since I have the gcc version available via mingw64.

Ruby

For this blog I need ruby and some gems.

Ruby is available in various ways for Windows , I currently simply use jruby since I am curious how it works.
http://jruby.org/

So far no bad experience, it works, start up is a bit slow, but when it is up and running it runs fine.

I don’t use ruby much beside this blog, mostly I use irb as a calculator and for some fun. This works, irb either via jruby or via the msys2 package which I also installed just to see how it works.

python

I have the standard python 2 Windows installation, and again, the msys2 version.

git and mercurial

As mentioned, git comes with msys2, but I have also windows git installed.
https://git-scm.com/download/win
The explorer integration is nice.

I also use mercurial, just installing via pip works fine. I did this 2 times, one time for the windows installation, and one time for the msys2 version since this has its own environment.

Developer environment summary

Not much to say, things work. It is interesting to see how, explore Visual Studio, Visual Studio Online, having the possibility to experiment with C++ modules, …​
Yeah, its a good time for C++ developers :-).

The redundancy between the Windows versions and msys2/mingw64 feels sometimes a bit strange, but I guess you can get used to it. And thanks to the pacman interface of msys2 the administration of the msys2/mingw64 environment is not a work at all. I think I have to look how I can make a small donation to this project.

Other tools

ConsoleZ:
https://github.com/cbucher/console
I like it. Even if cmd.exe is now resizable, it is nice to have a powershell, cmd.exe and others like mingw shell in the same window and work with tabs. Just look at the screen shoots.

Things I need for writing documentation, generating diagrams:
doxygen, image magic, dot , plantuml
If you need them you will find them, there is nothing much to say except, of course, there is a windows version and a msys2/mingw64 one :-).

The same for CMake.

I did not mention java because it is not worth to mention, .. just kidding
Of course, it is required for jruby, also eclipse runs on java, but browser integration is turned off.

Cygwin, which I have installed just to see how this works, but it is currently unused, I am happy with msys2/mingw64.

I think thats it.

Summary

Of course, it would not be Microsoft if , there would not be a few principal problems but first, MS it not the only company with that kind of problems for the user, and second, this is another topic.

Since Microsoft loves Linux (TM:-), integrates bash and ubuntu, puts the Powershell on Linux, multi platform development has become a bit more interesting again.
Of course I am aware that companies primary love to make money, and there is a lot of marketing and calculation involved, and that the main motivation might be Linux on Azure, but every company that has to make money has some motivations.
I think this new competitive situation can only be a win for the users and especially for developers.

With some attentional tools like Windows pager and those mentioned above, Windows 7 was also not that bad to work with, but still a frustration. Non re-sizable windows, like of the cmd.exe or several configuration windows in the 21st century?

I am glad to see that this times seem to be over, and that the stagnancy on the windows desktop has ended, at least it seems so.
And it makes me curious to see how the situation on the desktop will continue to develop, maybe some day the Windows desktop will become a alternative to XFCE, Gnome, KDE, or any other useful desktop environment ;-).
This again, like with the compilers, shows how important competition is and why the desktop monopole from MS was/is hat bad for users.

If I have missed some useful tool or information, what for sure is the case, please add it in the comment section below.

Thanks for listening/reading!
If you have any comment, please feel free to use the comment section below.