A little background about me before we begin fully:
A little over a year ago, I switched from Windows to Linux completely on my journey to finding a better development environment that would serve me on my home machine. At the time, the Windows Subsystem for Linux did not exist. There were a few reasons I wanted to switch over:
grep
, dd
, zsh
, git
and a host of other things. Some of these worked fine under Windows, such as git
, but the experience was not as good.I spent a long while deciding on what distribution to install and I eventually settled on Arch Linux. There were a few reasons for this but the main decision points just boiled down to this:
dmenu
. This made it harder to choose distros that would prepackage their own environment which I would then have to dissect.The runner ups were Ubunutu and Manjaro. Ubuntu was too stock and in the way of what I wanted to do, so it was out. Manjaro? Well, I read something about a SSL certificate that went something like, not once, but twice:
Hello!
Our SSL certificate has once again expired. We are waiting for a new one to be issued (while also looking at more sustainable alternatives, i.e. Let’s Encrypt). If you’re having problems accessing any of the sites please use a different browser profile, or Private/Incognito Browsing. You will then be able to add a temporary exception.
Example (Firefox 46)
https://manjaro.github.io/SSL-Certificate-Expired/
.. and it left a bad impression. So, that was out. I figured I might as well for the full authentic experience.
So, I followed the Beginner’s Install Guide and was installed in a couple hours with GDM and i3-gaps
with a multi-monitor setup using arandr
to configure myself. I did the initial run with gnome
since I figured it would give me the least amount of problems and at least a working environment to boot into. These are the notes I left for myself when I had installed:
arandr
did not work out of the box and I had to manually create my xorg
file. This was kind of annoying but considering it worked under the GNOME Environment that I initially installed, I assume it was a bug with arandr
or the way I was using it.i3-gnome
which gave my some of these “sane defaults” I wanted by running some of the GNOME subsystem. Other things missing which I did not realize I had missed: easy screen snipping, volume management, and well thought out settings GUI applications for the day to day stuff.ldd
… I guess I asked for it.Note: At the time of writing this, it looks like the Beginner’s Guide no longer exists. It seems it has been consolidated. I cannot comment on the quality of this new guide.
The final setup looks something like this after all is said and done. I think the only thing I have done since is added another 8GB of RAM to keep things happy, especially since I needed the Windows VM from time to time now.
' -` touma@setsuna
.o+` -------------
`ooo/ OS: Arch Linux x86_64
`+oooo: Kernel: 4.13.11-1-ARCH
`+oooooo: Uptime: 7 days, 6 minutes
-+oooooo+: Packages: 1649
`/:-:++oooo+: Shell: zsh 5.4.2
`/++++/+++++++: Resolution: 1920x1080
`/++++++++++++++: WM: i3
`/+++ooooooooooooo/` Theme: Arc-Dark [GTK2/3]
./ooosssso++osssssso+` Icons: HighContrast [GTK2/3]
.oossssso-````/ossssss+` Terminal: terminator
-osssssso. :ssssssso. CPU: Intel i5-2500 (4) @ 3.7GHz
:osssssss/ osssso+++. GPU: NVIDIA GeForce GTX 970
/ossssssss/ +ssssooo/- Memory: 7041MiB / 16013MiB
`/ossssso+/:- -:/+osssso+-
`+sso+:-` `.-/+oso:
`++:. `-/+/
.` `/
There’s nothing much to say here. I always liked brew
on macOS even if it was a bit clunky to use and the method of installing it was, shady, at best. After using pacman
for a while, I can say that I never want to go back to manual installers infested with AdWare ever again. You get so much for free with pacman
, some of which is not exclusive to it, but just a part of package managers in general in most distros:
Seriously. They are awesome. I wish Windows was more careful about this kind of thing and that macOS supported something a bit better. I guess the application stores are getting there, but they are a little more cumbersome and not really “developer oriented”.
I won’t go into this more. There are dozens of articles on the web detailing why they are great.
There are replacements for the file managers on Windows as well but they are not as well integrated and a lot of them I find are pretty clunky. I have found I actually really like pcmanfm
. It has very few animations on my setup, the search is very fast, I can hop directories with little trouble, it integrates well with my dark theme, and it still has enough features to not get in my way. For example, with gvfs
it plays with automounts fine, script executing, and good selection capabilities. And it’s integrated with my system with no additional trickery. I also tried dolphin
and nautilus
and found them okay as well but not quite my taste.
In Windows and macOS, changing the file manager is pretty tricky across the entire system from my experience. Windows Explorer I find is pretty good. I found “Finder” almost unusable and just using MacRanger
on macOS for the small amount of times I need a file manager there.
It was refreshing to pick something I like and being able to zip through folders at high speed.
There is also not much to say here, either. For my development work there were a few immediate benefits in most cases:
git
or some other tool you wanted to run? There is a chance it is written in bash
or perl
They ran with no problem without any additional tools in most cases. When they did not, pacman -S
got me sorted in a few seconds.Overall, a much better experience than Windows and even a little better than macOS. I’m looking at you, long polling implementations for file watching under macOS.
**C#: ** Project Rider and Visual Studio Code do a wonderful job of giving you a competent environment to write code for this language. I was able to maintain the handful of console applications and the .NET Core applications I needed to without much trouble within these environments. They ran pretty good. Visual Studio Code is a bit laggy but much more responsive than Atom. Considering writing C# code on Linux was not even an option not so long ago, this is something I am excited about.
**Java: ** IntellIj worked out of the box pretty much the same. No comment here.
All things considered, the experience in these were on par with what I was getting before. Thus, no complaints.
I use Steam to play most of my games. It’s not a secret that if you want to access the largest collection of games possible, you need to have an account here. I also happen to like playing games with some of my friends on this platform. These are a few notes from that experience.
A surprising amount of games have ports that run pretty well. For example, Terraria had a good port and Minecraft runs very well. Civilization works well, as well. Borderlands 2 was a nice surprise, as well. Some of the games that did not have ports would run fine under WINE. For example, the first Borderlands was played from start to finish over the Internet with a Windows user. I had a hard crash or two but other than that, everything went fine. However, there are a few times where I spent way too much time trying to get things to work. For example, “Duck Game” was not working in my prefix for some various reasons which I eventually resolved. It’s kind of annoying to have friends ping you to ask you to play – just to have to turn them down because you cannot start the game. Ouch. Nowadays, we mostly play Linux compatible titles with more and more companies releasing for the platform. For single player games, I just do not buy games that do not support my platform of choice or I just play on a console.
I made an exception for the Trails in the Sky series. The series is amazing and the XSEED team did an amazing job bringing it to us. If you have not read the struggle and immense amount of work that went into localizing the game I suggest you read it here if you have some time. The article is a bit long but it comes from the heart. I’ve played the latter two games inside of WINE with no problems since they are older.
Performance is just okay. There are a few instances where the performance has clearly taken a hit in order to be playable on Linux. There were problems unrelated to ports, too. When I first installed dolphin-emu
from the AUR, I was unable to play any emulated games of my choosing from my ripped library with adequate performance. Most of them would lag pretty hard. I was not the only one, either. Check out these quotes from the AUR:
Dolphin-emu is still super slow with the new Nvidia driver 364.16 (it was all good months ago). -Neros
I’m also using NVIDIA and noticed that the performance is very impaired in some cases. I don’t know since when exactly, because I’m not playing regularly. -Martchus
There are other cases as well. At the time of writing, the problem no longer exists. It resolved itself after a routine update sometime a few months ago. However, I am documenting it here since it was real and it stopped me from playing some of my older games without unpacking my Gamecube.
In other cases, some emulators worked better under Linux in terms of compiling and setting up. Simply put, the experience is not the same. However, for me, the experience was close enough that I am happy with it in 2017.
I’ve been using i3
for a about a year now. And when Wayland hits, I think I will also check out sway
(link) and continue to use the same kind of layout for a while. These are the primary reasons I wanted to start using it:
i3
has a whole other level of control in this category.I followed this set of screen casts to learn the basics and then after and that I went on to read the documentation to put a few more customizations in place that I required (mostly floating windows for my file manager and a few keyboard repeat settings and color changes) and then I used the setup for about a year. These are some things I found awesome about tiling window managers, and i3 in particular:
Super + Right
will get you sorted out there without guessing how many “Alt-Tab”s you would need to get there. Your hands are already on the keyboard anyway, right?)i3
, I was able to replicate the old Alt + Tab workflow where it was needed. I could stack a bunch of things in sequence and get it done.i3bar
and i3
with no window chrome allows me to focus on what I am doing. I’m typing on typora
right now and everything is clean and with little distraction. I can full screen any application with the press of a few buttons. There is nothing to get in my way of authoring content.What was not so hot?
Super + -
and this lets it float over top of the other windows. This is handy when I need to just recall something very fast and don’t want to have to place it somewhere. However, it’s not the only application…I will also say this: The i3
developers have done a great job making things robust and stable. I have not had to fix or tweak my .i3config
much since I created it. Things have just been working. Kudos! If you have not tried a tiling window manager and you have similar needs to me, it would be worth checking out at least. I was skeptical at first but it was a game changer for me.
rsnapshot
is amazing and I love backing up my server with it. Part of this is the great filesystems provided and available with Linux.Git
to my laptop is nice. Keeping configs in sync on other platforms is less than fun without some kind of cloud storage.youtube-dl
against a site and noticing that I was already running the most up to date version and that I would not have to waste time making sure I was up to date. The same goes with other packages.There’s a few things that bother me and they might have something to do with me running an odd setup. However, I wanted to give an honest recollection from someone who just dove right in.
I did a full system update like any other day. Then, I got a bunch of errors about repositories that I had been using being discontinued. I guess “Infinality” had been discontinued and it was now up to me to decide what to do. I was not able to update until I resolved it.
I probably spent a couple hours resolving things while I was trying to figure out what was going on. At the same time, I really needed a newer version of a package and this was kind of in the way. Arch has a pseduo-rule that you should never do partial upgrades, so that was out of the question.
In the end, I found some advice to migrate away and managed to get my system into a better state.
A day in April I did a full system update, using pacman
and then tried to run my wine-prefix
containing Microsoft Word. Yeah, I was using this product since I was used to it and needed something to ease the transition. It stopped working, WINE was a pain to debug and in the end I discovered I really only needed Google Documents and LibreOffice for the occasional thing. So, I never got to the bottom of this. However, it is annoying that things stop working “randomly”.
I treat this as a minor incident but I wanted to point it out since a lot of the time you will hear the rumour that “Arch does not break! It is user error if your system stops working.”
User-space applications certainly do break sometimes.
I was working on a new client project and had inherited some .NET Core code that was already running in production. I had the goal of adding some new features to and re-writing the UI. I estimated this would probably take a dozen hours or so, of which maybe 10 of them would be billable. The rest of them would be new environment configuration that I was responsible for since I had not worked in .NET Core before. I was pretty excited to start especially since Microsoft had announced recently that .NET Core support would be coming to Linux. They had even announced a cool new editor that is now loved by many, known as Visual Studio Code. Alas, things were not so easy…
Arch Linux was not a supported problem. I ran to the AUR which is my response to these kinds of things to see what I could find. I found a package (that is no longer available now) and installed it. The package itself installed fine without many problems and I wrote a couple “Hello World” applications. I started up a basic ASP.NET core project as well and everything seemed fine. Success! or so I thought. As it would turn out, making any sort of database query would cause a native exception to be thrown. You can read about how I ended up resolving this here but in the end it ended up costing me over 6 hours to debug this thing and trace it down. I doubt I am the only one either, since if you end up searching for my post, it’s linked around the web a few times as well as the solution to the problem for the .NET Core 1.x series. I have not followed up to see if the .NET Core 2.x series has this problem.
In the end, it was not so bad but on Windows this probably would have worked out of the box considering it’s Microsoft’s own platform. Then again, I have vague memories of installing Visual Studio and it not starting and having no recourse to debug…
I ran a full system update and there was an OpenSSL change. I took the upgrades and followed the mailing list advice but still ended up with a bricked machine. A little disappointing but it was probably my fault somehow. Still, bricking a machine is no fun. The journal had indicated something about failed updates and failure to rollback – so I left it for a while.
I never did figure out the exact problem, however, when I did ssh
into the machine from a different PC and ran another full system update the next day, the problem resolved itself. +1 for being able to read your logs, huh?
Huh. I still need to dig into this one.
In one of my previous posts, I reverse-engineered the game “Trails in the Sky” and provided an introduction to Kaitai Struct inside of it. You will notice I used a lot of NIX* tools in that guide. However, what is glossed over, is that a lot of the debugging was done on Windows with a debugger there. This is partly because the game is a Windows Executable and partly because the tools for debugging them were just better over there. There’s a couple reasons for that but it all stems to the ecosystem:
Some people might try and convince you that GIMP is a fine replacement but they were probably not power users. It’s true, if you just need to move some things around on a canvas and trim them, it is probably fine. Even for basic effects, it is probably fine. However, I found when loading complicated images and trying to do operations, things were just too different. Could I have done them with GIMP? Yeah, I probably could have. For now? I will stick to the free edition of Photoshop CS2 that was given out and use my time for other things that are of more value for me. There are only so many hours in the day and re-learning an image editing tool for the simple tasks I need to do are not worth my time. For the record, I found even basic stuff like: scaling layers, adding text effects, actions, and blending modes – a bit cumbersome. I think it was a combination of unfamiliarity and the clumsy UI. It also did not cooperate very well out of the box with i3wm
and I had to do some setting tweaks and set it to full screen to get it to work even remotely well.
For some of the Windows applications I was holding onto, I was trying to run them in a wine prefix under PlayOnLinux. I figured that since I only had a couple applications that I wanted to run, as the the old Photoshop CS2, I could just use this and not worry about learning the details. Unfortunately, in a lot of cases the scripts are older and use a very old WINE version. In some extreme cases, they do not work at all anymore. I assume this is due to changing systems and things probably do not look like they did when they were written. I learned fairly quick that backwards comparability in some parts of the ecosystem is not a priority. In the end, I decided to just use a virtual machine for the occasional thing I needed and it worked great.
/r/linux
and /r/archlinux
for me in particular were helpful on Reddit in order to keep up on how things were doing. You will be happier if you are aware of what is going on.Arch Linux was cool and it let me learn a lot. I think Linux in general is pretty awesome and I want to continue using it as my daily driver. I think will probably continue to do so for a while. That being said, there are some very cool distributions that are cropping up lately that are now on my radar. I like the “DIY” experience but not the breakage that comes with it some cases. Perhaps I can find something that can meet me in the middle, but that is the joys of the Linux ecosystem, I can choose…
With the Windows Subsystem on Linux now available as well, I plan on giving that a try and seeing how much of the tools that I am using can be used there now. I have a feeling that some of the pros I have listed will become the gold standard there now, such as the NIX* tools working out of the box. Games will work a heck of a lot better there, too, I am sure. And despite the random complaints on the Internet sometimes, I would probably get less random breakages in some cases, since there are less choices to make.
But in the end? I think I will stay where I am for now. There is much more to learn and so much more to gain. Compared to the pain, I think I am still way ahead.