A Linux/LEMP discussion on Twitter today reminded me that I’ve spent about 10 years within a Linux environment now. It’s not exclusive per se, there were times where I got back to Windows for a few months (keeping at least one system Linux-driven all the time), but it’s been a great time and I’ll tell you my experience with the mystic or notorious (depending on where you stand) platform.
Note: Most of you know that I’m not an Apple fan but I’ll keep it for myself in this post, just reviewing some slides over the years. Therefore please keep the rant/wars out of the comments, thanks!
The first steps
Somewhere around 2001-2004 I was working for a local computer club (the ones where we used to play Quake, then Counter Strike, Diablo…) as a maintenance guy. My first home computer arrived around 1996 and since everything was new (and resources were quite limited), I had the habit of breaking everything. Luckily we had the “IT guy” who was patient enough to come every 2 months and fix my mess for the first 2 years, until I get smart enough to not delete .dll files and “everything that wouldn’t fit a floppy disk” (I was desperate for HDD space).
We had two folks at the service who wanted Linux systems, Red Hat at that time. It was quite new to us, given the fact that I had about one thousand Windows installs and configurations for two years, and we were poking and researching that mysterious non-Windows thing. It was fun and we learned a few things.
I installed Slackware at home and it was incredible. Like that punk guys that we all imagined that hack NASA and everything all the time, just with a few clicks. Tons of things didn’t work at first and I kept spending weeks and weeks on learning and customizing the system. I had the installation CD already so reinstalls could happen without the intervention of our IT guy, which made it safe for me to test everything all over again.
The first big “ouch”
Everything was somehow straight-forward with Windows. One major version at a moment, one file system, one setup of standard tools. One well known Office package, everything.
With Linux it was completely different. I already new about Red Hat Linux and Mandrake, I used Slackware at home and I was doing research on other distros. I decided to try Fedora as I had issues with the monitor display frequency at Slackware and my eyes couldn’t handle too much time poking around.
That was in 2004 right after the Fedora Core 2 release. I had that installed at home and it looked quite nice, fancier than Slackware with some packages available for install. My Slackware experience prior to that was configure && make && make install, browsing for dependencies, headbanging…
I got 5 more friends who were ready to try it and learn together, and we did it. It was great for a few months.
Then one of our friends came and said: “Guys, my system was completely wiped over the night. I got nothing left, make sure you’re safe”.
We laughed and called him dumb. 2 weeks later my system was wiped too. You can guess what happened with the other guys in a course of few more weeks.
It was some poor file system handling on Fedora’s side, which was mostly an edge case for a specific not-that-reliable file system, but we knew almost nothing and configured it the very same way, so we all suffered. And we learned our lessons.
You know what they say – there are 2 types of people: people who lost sensitive data and ones who are about to lose.
I was pissed and switched back to Slackware.
The package system of Slackware was almost non-existent, if existing at all. Everything had to be compiled for that system. It wasn’t nice and it took too much time, but it was a good lesson for how does the system actually work – something completely unknown in the Windows world.
However, in 2005ish I started working for a media company, building small sites on the top of a platform. It was a content directory for various topics, where you basically compile a categorized list of various subjects in a single page. Quite handy for local people to find the best eCommerce stores by categories, or Egypt resources (for tours, security, insurance… name it).
My work involved data entry too, and I’ve noticed that my Windows flow was faster than Slackware’s. My 4+2 buttons gamer mouse wasn’t completely functional on Linux, and due to the language switcher (for people like me who speak a non-English language at home) I wasted time. How? My alt+shift combo switched between Cyrillic and Latin, and while I was on Cyrillic (typing a label for a site), I wasn’t able to copy-paste until I switch to English. The Ctrl+V wasn’t captured as it triggered different ASCII codes. It looks stupid, but if you have to enter hundreds of labels today, it takes 20-30 minutes longer. That’s how I learned to value my time. And switched to Windows for that job, while using Linux in my spare time.
A year later, and I was already working as a Java developer. My Open Source preferences were compatible with the job, and we always used FOSS tools at work. Good thing was I was able to work at home under Linux, bad thing was we were teaching people and using PowerPoint, and OpenOffice.org wasn’t able to display most of our slides properly, which is why I co-used Linux and Windows on my work and home machines.
Working in the enterprise world was related to tons of configuration changes in Tomcat, using Ant/Maven for building stuff (as Composer in PHP) and fine tuning specific settings. It felt natural to me after spending years in Linux, and I liked it. Back then Linux was already advanced enough to provide repos for popular tools, and I found that my Linux box was way faster than the Windows one, mostly due to the lack of registries who are bloated all the time. Also we had to use antivirus and software firewall solutions at work which made that even slower.
I had a 24/7 desktop at home with Windows though that I used for remote desktop and printing.
Over the years Linux got better and more stable. The media company I mentioned migrated to Ubuntu, and I was stunned. I had never seen Ubuntu before that, and we generally migrated more than 30 non-tech people to that – editors, journalists, photographers, site administrators and many more. Managers were comfortable with it, using QIP for ICQ client, listening music with Xamp (I think was the Linux clone of Winamp), and generally browsing happily and virus-free. It was my first experience with completely non-tech people getting totally used to Linux, 40 hours a week.
My second Java job was after Windows Vista was out. My boss told me that I get to pick my PC out of a catalog, together with the handset, keyboard, mouse (which was pretty cool and I advise all business owners to support similar decisions), but install a copy of our OEM Windows Vista license. I rejected the offer and we shaked hands at me using Slackware at work.
I spent some time setting all servers and tools up (as it was still wonky at that time), but I kept using the system with no more mods all the time, just working and enjoying my cozy environment.
My notebook was Linux-only too, a KUbuntu (before they introduced KDE 3.5 or 4 with the Plasmoids) and it was great, except for the times when I had to connect to weird networks and burn CDs, or connect to printers and scanners – it was pretty weird and part of that still is.
I stick with Fedora now on my machines and I’m happy with it. Occasionally I try other distros for a bit, but I like my Fedora setup quite a lot. All of my servers are on Linux of course, some CentOS or Debian, except for the times when I hit a wrong Ubuntu.
For the past three years I’ve been using my system for development, training courses, entertainment, chilling out at home, everything. I have almost every package I need in my official repo (or a reliable non-official one), my drivers work smoothly, I connect to every projector out there, watch movies, browse, code, debug, everything. I feel pretty comfortable in my terminal and my virtual desktops, and totally love my notebook – ThinkPad T520.
Now and the Others
I promised that I won’t rant against Apple and I won’t 🙂 I’ll even give some props on their Air notebooks, thanks to their weight (air-ish) and battery lifetime of about 12 hours or so. That’s quite impressive and I hope that we’ll be able to use similar configurations soon.
There are few models on the market that actually recreate that experience, I’ve seen one Samsung and one Toshiba models with about 20h of battery life time and 12-13″ displays. There are two or three business class ThinkPads that could cope with that, but they’re way more expensive than most Macs (here they’re more than $3000). My 15.6″ thing has 5-6 hours of battery life time with a normal work load, especially with the TLP optimizer.
A few more painful issues with Linux I’d definitely outline are connecting to external devices – scanners, 3G USB sticks, etc. ATI video cards are known as problematic for most Linux distros, as well as Nvidia Optimus, the rest however is pretty fine, including dual video card support with integrated Intel chipset or so.
One more issue is the power management – most systems I’ve used have troubles hibernating or suspending the state, I currently get a fail in suspending (sleep mode) here every 30ish attempt. It sucks. But that’s pretty much the only thing I loathe in my system.
Most devices however have drivers and Linux support. I’ve seen devices that work out of the box with Linux and won’t run on Mac OS. It’s fair and it’s much common to find a working device now than 5-8 years ago.
The first few years I didn’t quite realize how important it is for me for the system to be open. I spent a few months with .NET and, compared to other open platforms and languages, I freaked out when I was unable to see what a single Console.WriteLine (that’s like `echo`) does behind the scenes. It was wrong for me, I know that many people don’t care, but I do.
I sent a few reports and patches to Linux tools over the years, not too many (my C is not that fluent), but it was a good experience. I was able to mod some Python tools as I would like and the enormous now community provides tons of quality feedback on the forums where one could find solutions to almost every problem.
I like the idea of picking my software and hardware from various providers. If Red Hat do a dumb move (imagine the SOPA thing with some hosting providers), I have no issues with migrating to dozens alternative organizations or even people (Slackware used to be run, or maybe still is, by a single guy who used to write blog posts when he’s on a vacation that he’s not available for support for two weeks!). I didn’t have to rant against KDE 3.5 as I switched to Gnome, and I didn’t think much after Gnome 3 came out as I use Mate now for a desktop environment. It’s crucial for me as major new UI updates could totally break my flow and waste more time and nerves.
I like to be able to pick Lenovo’s ThinkPad instead of IdeaPad for internal reasons (different product managers, ThinkPad T’s are still operated by the old IBM division), pick Samsung if I have a Samsung phone (which I have), or Acer, Asus, whatever. It helps me sleep at night really. And I’m quite pretentious on details such as the keyboard (which I use 15 hours a day), the lack of NumPad (some like it tho’), the position of the touch pad, the number of buttons or anything. There are hundreds if not thousands of modern models I can pick from.
It’s important to note at the end that this variety hides surprises at times. Your favorite distro might not support as well a given touchpad model or a specific ATI video card. But here’s the thing – I pick my notebooks based on preferences (configuration) AND their support for a given distro. Ubuntu (and other vendors) maintain a list for certified hardware which helps you pick a guaranteed solution for your distro. Nothing stops you from trying with other hardware too.