Category Archives: Technology

My passions are many, though Open Source is probably one of the greatest ones. A collection of thoughts and how-tos

The Dystopian Future of Big Data

Being a nineties geek, I grew up with the Matrix and Skynet. From there on, I moved to Asimov, HG Wells, Clarke, etc. Sci-fi and fantasy drew me in as surely as a flame does a moth. They talk about dystopias, these authors. Worlds where Ragnarok is about to happen, or has already happened. They talk about times when machines overwhelm humans, or times when the human civilization loses coherence due to any number of factors. Even today, games like Mass Effect strive to keep stories about impending doom alive. With enemies like the Reapers and Skynet coming, humanity needs to prepare as well as it can, right?

Well, maybe we should stop and think about where we’re going first.

Today, an increasing amount of data created by humans is indexed by bots and stored online. We create documents in GDrive/Office 360, send our mail over Outlook.com/Gmail, blog on WordPress/Tumblr, and tweet and post indiscriminately. Few of us think about what we’re doing. And even fewer think about the consequences of this concentration of data.

I talked to a friend of mine about the demerits of actually using Google services. I was arguing against Google, and he was arguing for. He had many points in his favour (efficiency, awesome interface, seamless integration, etc.) while I had just one. Google collects my data.

“And so what?” he replied. “Number one, you have nothing worth collecting anyway, and number two, the only thing they do with that data is advertise according to what they find out.”

I stared at him, almost aghast at his open face which reflected none of my own disgust at this situation. Think about it. Someone’s looking into the conversations you’re having with your girlfriend, those little virtual kisses you share and keeping track. That same someone is also reading your conversation with your best friend when you ask him or her about life, the universe and everything. Your deepest and darkest secrets, which were once the solely known to the intended recipient and the paper it was delivered on have bots and spiders crawling all over them.

Upon making this argument to him, his reply was, “But they’re just bots. No humans look at this info.”

And he’s right. No one person, or even a thousand person company has the time to look at all those billions of conversations taking place on Whatsapp or Facebook Messenger and actually decipher them. But they don’t need to either.

Big Data

Big Data is the newest buzzword on the block. Wait. Actually, that’s not true. Big Data has been a fad ever since the internet entered its teens. And now that it’s in its tweens, Big Data has begun assuming even more significance.

For the ones living under a rock, Big Data is simply those terabyte-sized chunks of data Facebook generates every minute in messaging volume. Algorithms designed to decipher them fall are selling like hot cakes now. And that’s where the problem comes in. If someone with access to these databases wants to know about you, he doesn’t need to trawl through all your years of Facebook conversations. With the right algorithms analysing that data, he can easily get out whatever information he wants with the click of a button (or the right shell script).

Think about it. Your documents, your music, your videos, your conversations, everything is online. The NSA has already demonstrated that it has the capability to look at this data through any number of back doors. It was alleged that the NSA had compromised the RSA algorithm during the key-generation process. and with the power of Big Data, the NSA doesn’t need to trawl through your conversations to know about you. It simply has its algorithms do that for it.

The future of Big Data

If you think that isn’t such a big deal, you’re living an ostrich’s life. In the upcoming Apple event in September, Apple’s rumoured to be releasing a wearable. Most probably a watch. Google has already built prototypes of Google Glass and is deploying them in the real world. Samsung, LG, etc are building their own category of smart-watches. And this doesn’t even count things like Fitbit, the Nike Fuelband etc.

All these devices track you in some form or the other and store that data online. Whether it’s the number of steps you walked that day, or your heartbeat, your pulse or even the calories you consumed. All that data goes online and is stored on a server where it’s being indexed and analysed.

How does that affect us apart from advertising?

Well, the one place where this data would be extremely valuable is insurance. Insurance is one hell of a data-intensive industry. The more data they have about you, the more accurately they can judge how to screw you over when it comes to premiums. Minor health problems may be overblown, tiny things about you which might actually make no difference to your case might be taken into account while drafting your policy etc.

And it might not really stop here. The government hasn’t exactly shown consideration about user data as of yet. One of the things it might decide to do is to incentivise being healthy by allowing tax benefits to people who show a certain amount of exercise/calorie intake etc.

It might start from here. And it might go somewhere else entirely. Sure, it might be difficult to get this one passed, for there are great arguments for both sides. However, incentivising a healthy population might just win out over freedom of choice, especially in countries where obesity is rising alarmingly. And from there, it’ll become easier and easier to pass laws which convert a welfare state into a nanny state, and finally a police state.

The state might want to track people, for people joining terrorist groups is a national security concern. But once tracking starts for a few, extending that net to cover everyone becomes much easier. And once the internet of things becomes a reality, the state will finally know as much about you as you yourself do, if not more. Today, people are protesting against Israel by refusing to buy kosher goods. Tomorrow, your fridge might log the absence of kosher goods, and the bot reading these logs might flag you as an anti-Israel sympathiser. The anonymity we enjoy today might become a thing of the past as the state slowly extends its feelers onto us.

European police are already advocating that European cars have systems which will allow the police to remotely stop your car in case they need to, a system which will detect the speed limit of the smart road you’re driving on and not allow you to drive faster than that, a GPS tracker, etc. This all might seem great at first, but it has many problems. For law-abiding citizens under a benevolent government, these systems equate to convenience. But if this government changes to one not as inclined to benevolence for some reason or the other, these very same rules will give the state an overwhelming advantage over ordinary citizens. Cars being used in protests might be tracked and remotely stopped, their occupants trapped inside until arrest. In countries such as India, where a politician’s convoy makes regular traffic stop, this privilege might be abused by anyone with a shred of power.

It sounds dystopian and pessimistic. It should, for the future I’m suggesting is bleak. The founding fathers of the United States included a provision for self-defence, in order for the population to keep the government in check. However, the founding fathers, who existed before Asimov or the steam engine, could simply not have realised that the next great war would be fought with not guns and tanks, but with information and crunching capacity.

Advertisements

Customizing the Arch Desktop – Without a DE

One of the most fun things you can do in Linux is customize the way it functions and looks. And if you’re on Arch Linux, this is encouraged. Outrageous configurations are the norm, and if you tell someone that all you have installed on your laptop is tmux and a prayer, no one bats an eyelash. Chances are the next comment is going to be, “Been there, done that.” (I actually have been there and done that. It’s fun, you should try it out.)

The last time I posted about Arch, I posted about getting a stable and infinitely sexy XFCE config running. Since then, I decided to go DE-hopping, and ended up using Cinnamon for around 2 months and KDE for a few weeks. That brought me to a very important question. What exactly constitutes a DE?

A fully functional DE
A fully functional DE

The building blocks of a DE

A DE such as KDE has so many threads interweaved into its fabric that untangling them would take me a few days. There are daemons to tell programmes what time zone I’m in, for heaven’s sake. The others are all relatively simpler, but usually, you can break down a DE (after removing its bells and whistles) into the following:

  • (Roughly speaking) A DE init system
  • A Window Manager (with a compositor, if your DE is any good. I’m looking at you, XFCE.)
  • A panel (multiple, if you like) with a system tray, a menu-type launcher, optional quick launch, task manager, clock, etc.
  • A file manager
  • A terminal emulator
  • A dbus notification server
  • A quick launch/search program
  • Weird services I wasn’t able to understand, but which presumably serve some purpose
  • Weird services I do understand which serve no purpose (viz. Akonadi, Nepomuk, the time zone daemon in KDE)
  • A control panel for all these items

How much of it do you really need?

Not as much as you usually use, that much I can tell you. Actually, answering this question requires you to ask yourself a very basic and simple question. What do you want your DE to do?

A good DE tries to get out of your way
A good DE tries to get out of your way

For me, the answer was plain and simple. I want it to be there when I need it, to be perfectly suited to my workflow, to provide no distractions and to display the needed amount of information for me to have both peace of mind and the ability to work. In short, I want my DE to get out of my way.

All this time, I’d been trying to do that with XFCE, Cinnamon and KDE. To be fair to both XFCE and Cinnamon, they weren’t exactly in my face all the time. They were both joys to work with. However, I had a few weird problems in Cinnamon regarding my phone (I couldn’t browse it at all) and I didn’t really like gnome-terminal. I could have replaced it, but that’s what the DE wants you to use.

XFCE was almost perfect. I almost rue leaving it to go DE-shopping. However, in my quest to find a DE with the perfect blend of features and performance, I decided to leave it behind. (I haven’t tried LXDE yet. Maybe that should be my next target?)

Going to a WM

That, ladies and gentlemen, was my solution. Let’s throw away all this DE crap and go over to a WM! Sounds fun, right? Well, let me be the first to tell you that it was. UI customization is what I love, and starting with a fresh Arch install got my blood pumping. Mind you, though, that I did not mindlessly install base. Several useful components were deliberately left out (like cronie), so if there’s anyone who’s trying to follow my footsteps, I would recommend that you either simply install base and base-devel and be done with it, or head over to LFS and get down and dirty once, ’cause that will teach you a lot more than Arch or even Gentoo.

I installed my base system, got netctl working and happily added Bohoomil’s infinality repos to my pacman.conf. Now what? X server, of course. I took care to install the bare minimum. To tell you what I mean by that, my memory usage after my bare minimum install, connecting to the net and getting a pptp client running (I was going through a VPN) was near around 108 MB. Which is nothing to sneeze at. I use zsh, which is slightly heavier than bash, and I use it extensively. So you’re probably going to get better stats than me if you use bash.

I wanted to keep my work environment clean and slim. Why, you might ask. Why try something like that on a system with so much memory to spare? Well, quite simply this. I want as much memory available for the applications I use. So that when Firefox runs on a laptop with 4 gigs RAM, I don’t open Htop to see that my system has started swapping (it never came to that, but on KDE, it was routine to see 3450/3820MB used).

I decided on Openbox. Why? It’s very light, it’s minimalistic, and it gets out of your way. It allows for endless customization, and plays ball by being toolkit agnostic (not that I care, but it’s a nice point nonetheless).

Because Openbox can look extremely good
Because Openbox can look extremely good

Of course, Openbox by itself doesn’t give you everything you need. Compositing, for one, is simply not there. Many people will tell me they do not need it, but I prefer and use translucent terminals. I also like seeing shadows, windows fading in and out, and a hint of translucency here and there. Maybe Kwin is overkill, but something lighter? I decided to use compton.

I spent a lot of time searching for a good panel. I decided on tint2 in the end. It is quite light, supports all I need from a panel and is insanely customizable. I took the tint2-svn package from the AUR, for it has the ability to add launchers (for which I added custom .desktop files).

For my terminal emulator, I decided on rxvt-unicode-256colors. Not only is it very light, it is flexible and can be configured using your .Xresources file. Perl extensions can extend it to work exactly like the terminal of your choice. Which is good, for you’re definitely going to add just those pieces of cruft you do need.

With urxvt and pcmanfm
With urxvt and pcmanfm

For a file manager, I decided on pcmanfm. However, I did not install gvfs (for automounting) or the like. The whole point of pcmanfm was to make sure that the file manager is light and gets the job done. To replace the functionality of gvfs, I decided to use udisks (not udisks2) with udiskie.

Strictly speaking, udisks isn’t really needed. In fact, if you believe Ignorant Guru (search him up if you don’t know who he is), anything Red Hat is evil. He is the author of a very flexible (albeit visually cluttered) file manager called spacefm. He has written his own tool called udevil in response to both udisks and udisks2. You can use udevil and devmon instead of udisks and udiskie. However, I remember reading the words of an Arch dev who called Ignorant Guru’s views on udisks out of touch, which made me come back to it.

Udiskie is a small tool which makes it easy to mount/unmount devices from your system tray. Is it needed? Not really. I had it just in case I wanted to work with devices outside the file manager. I’m now thinking of adding a few keyboard shortcuts to Openbox to mount/unmount things and remove udiskie completely. I could always open pcmanfm if I wanted to work with multiple pen drives at once.

For knowing my network status at a glance, I have netmon sitting in my tray. It doesn’t really do much, just shows a nice icon which can tell me the status of my network at a glance. Do I need it? No. But is it good for peace of mind? Yes.

For a volume icon, I use volumeicon. It gets the job done, and doesn’t require pulseaudio. I need no more. If I need better control over my audio, I’ll open alsamixer.

My conky is compiled with lua support enabled. This allows me to easily add translucency using a little script I lifted off someone (who lifted it off londonali).

I use feh to set my wallpaper, and gmrun as a quick program launch.

The fruits of this labour?

Well, apart from feeling incredibly self-satisfied, I guess the real fun is in knowing that after I log onto my own, so called, “desktop environment”, I use around half the memory my XFCE used to use (XFCE – 440 Megabytes at startup, I use around 218-220 Megabytes at startup). I don’t have a file manager running in daemon mode all the time to manage my desktop (ala all desktop environments), everything is extremely snappy, all configuration is done using human-readable config files I understand (I wrote them, after all) and there is no extra package on my system.

The applications I use on a laptop configured thusly are Firefox, MPD, VLC, Skype, Calibre, etc. I don’t use Libreoffice (LaTeX FTW), and I am all the happier for it. I’d love to use mpv on this instead of VLC, but mpv skips frames, for some reason, which annoys me. I have a thing about videos. They must be perfect, else I’m going to crib about them. VLC is good, so I don’t complain. Much.

A deeper question is, is it worth it? In the long run? Well, I can’t say. My laptop’s got no battery left (I’ve abused it thoroughly in the 3.5 years I’ve had it), and it runs wholly on AC power. However, judging by the way my fans whir, I’d say yes. ‘Cause I used to have a jet engine on my lap with KDE, and now I have a sleeping baby.

At times it gets up and wails, but it mostly sleeps soundly.

Adding bling to Arch: Desktop Environments

This post is divided into two parts. The first part deals with my views on the various desktop environments available to all Linux users. The second part deals with the way I configured my own graphical environment the way I like it on Arch Linux (what else?). This post is a successor to my previous post about Arch.

Desktop Environments

I’ve tried out many desktop environments over the three years I’ve spent on Linux now. I started out on Gnome 2, moved on to KDE and dabbled in everything from XFCE to OpenBox in between. I’m not hardcore enough for Xmonad or Ratpoison, though I might shift once I get my own multi-monitor setup. Running a tiling WM on a 14-inch laptop screen makes no sense to me.

What follows are my feelings on my experiences with various DEs. Do understand that all I wish to present are my own experiences and views. It is not my intention to start flame wars or hurt anyone’s choice of DEs (which I know are made after careful deliberation).

If you wish to simply read my tutorial on creating a beautiful desktop using XFCE, do skip this (rather long) section.

Gnome 3

A very typical Gnome Shell screenshot
A very typical Gnome Shell screenshot

Gnome 3 is one of the newer entrants to the DE segment. I chanced upon it in some version of Fedora, I remember. I’d seen some screenshots of Gnome 3.0 at that time and was damn excited about actually getting it working on my PC. And so, like a cow being happily led to slaughter, I installed Fedora (and hence Gnome 3) on my system. I was very thrilled with the concept initially. I didn’t particularly have a very defined workflow at the time, so I thought it to be pretty great. However, small things began to irk me after a while.

You had to press Alt and then hit the requisite menu item in order to shutdown. There was nothing like a minimize button. The concept of dynamically changing workspaces was good, but it could have been better. It could have been made more flexible. The only way to cycle between running applications was Alt+Tab, I seem to remember. While the concept of focusing on one task at a time does make sense, one cannot do serious work with it, I feel.

It was Gnome 3 on Fedora which prompted me to move to Arch in the first place. Around a year later, I decided to revisit it briefly, this time on Arch. After installing it, however, I found that Gnome was not very themable. The reason? Updates break themes. I also found out there was no way of replacing Mutter.

Gnome 3 has felt very beta-ish to me. These things (themes breaking, for instance) are expected in betas, but not when you have point changes. And especially not in every point change. There are themes which are separately certified to work with Gnome 3.4, 3.6 and 3.8. I’ve heard of developers complaining about needing to redesign themes for every new point release. If a DE doesn’t respect the community behind it (as seems to be the case with Gnome), then it doesn’t deserve my time.

KDE

My old KDE config
My old KDE config

KDE has been my favourite for a long time now. Infinitely customizable with a large community behind it and an app collection second only to Gnome (I think), KDE stands out as the DE for someone who wants an insane level of customization as well as good integration. I liked Nepomuk (in 4.10, at least), I love Cantata (I use MPD, so no Amarok), Okular, Yakuake etc. KDE was like a wet dream come true for me.

The downsides? The bloat. People have argued that the KDE bloat has reduced from the KDE 3 days. And I’m sure they’re right. But it’s still heavier than it has any right to be. KDE takes longer to start than any other DE I’ve tried and there’s more lag while opening KDE applications than there is on, say, XFCE.

I stuck with KDE for a long time. It was just too easy to configure and had a lot of apps integrated well with the interface. However, I started getting irked by the bugs in the Notification daemon used by KDE. At times unread notifications would linger and it would bother me until I didn’t manually dismiss them. And when Telepathy notifications began piling up there, I just gave up.

The default KDE icons are also weirdly ugly. I would generally try to change them, but in KDE 4.11, changing the default system tray icons required deleting a few files from some random folder in /usr/share which would get repopulated every time the package supplying them would get updated. That bothered me more than I care to admit.

The dearth of good quality QT themes also forced me to consider alternatives. The default Oxygen theme, while very clean, is not precisely to my taste.

I still stayed with KDE for the longest I ever stuck to any one DE. I think the developers are going in the right direction with it and despite the huge number of bugs in their releases, I would recommend it to any customization freak.

Unity

A very typical Ubuntu 13.04 desktop
A very typical Ubuntu 13.04 desktop

Unity has to be experienced on Ubuntu to really work on it properly, or so my friends told me. And hence began my distro-hopping this summer. My KDE had started giving me all sorts of crap and I was really annoyed, so out went Arch, and in came Ubuntu.

Bang out of the box was a pretty awesome interface. Unity seemed to be a step in the right direction for me. It was fast, without lag and seemed to get the job done without being in-my-face. I loved the way things just seemed to work without any problem (but that’s a post for another day). It was also configured a lot like I usually want out of the box. That’s a big plus in my book, though it might not be in someone else’s.

The biggest plus, however, in my opinion, are the indicator applets. Simply amazing. No other words for it. They hook up to everything you can imagine and deliver the best possible integration I have ever seen with things like music, the network, Twitter, etc.

However, problems did start cropping up, and because I do not know if they are Unity problems or Ubuntu problems, I’m going to list the ones I found obstructive to my workflow. The first was Unity’s nature of crashing frequently. I don’t know if the release I had (13.04) was unstable compared to the ones Canonical normally releases, but it had me foaming at the mouth at times. I’ve lost more time than I can think of simply troubleshooting packages.

Second was its tendency of freezing up. I would be working on Chrome or FIrefox and it would simply randomly freeze up int he middle of opening a new tab. It would either take an hour to unfreeze or I would have to reboot.

Third was the complete non-customizability. I mean come on. I like changing my wallpaper and all, but for just how long am I going to continue doing that? I’m a customization freak (that’s putting it mildly) and I hate keeping the same theme for the rest of eternity. Maybe I just looked in the wrong places (most probably the case), but I couldn’t really find many good Unity themes. Unity seemed unchangeable. I grew very very bored of it. When the crashes got frustrating, I decided to switch distros.

I might have tried installing Unity on Arch. However, getting all things Canonical on my laptop didn’t seem the best course of action for me to take.

Cinnamon

The Cinnamon default desktop
The default Cinnamon desktop

Cinnamon was experienced on – you guessed it – Linux Mint. I got Linux Mint Nadia, installed it and ran it for a while. My experience? Brilliant. Cinnamon is a really great DE. It’s built for speed, aweomeness and oomph. I loved everything, from the indicator icons to the applications menu. I might have continued living on Mint forever had the lure of Pacman, systemd and everything Arch not brought me back.

The only problem I could see in Cinnamon was that it could not be configured to support mac-style global menus. While I’m over that stage of my life now, at that time anything which did not support them was a deal-breaker for me. Also, I don’t like the one-panel style which Cinnamon was so keen on promoting.

There’s probably nothing else to share. Cinnamon and Mint worked like a charm until I decided I wanted to get back on Arch. But I wasn’t over Cinnamon yet. Cinnamon on Arch seemed like a dream come true.

Alas, it was not to be. When I installed it, it kept crashing on my system. Turns out I needed the proprietary Catalyst drivers to run it properly. I bid a tearful goodbye to Cinnamon, knowing my system’s never going to run the proprietary Catalyst drivers as long as Arch still runs on it.

Pantheon

Pantheon on Elementary
Pantheon on Elementary

To be fair to every other DE out there, I haven’t installed Elementary and run Pantheon on it. But I have a friend who has, and I’ve used it quite a bit. My only impression of Pantheon is that it has the potential to blow away absolutely anyone who ever tries every DE in the world.

It is light, it is fully functional, there is no lag, and it is beautiful. Simply beautiful. Elementary has been created by designers for normal people, and it shows. There are thoughtful touches everywhere. From the fonts used on the labels to the spacing between toolbar icons, everything has been configured to mesh together nicely and present a cohesive, unified front to the user. The overall look is mind-blowing.

The worst bit about it? Pantheon is built to work on Elementary, which is based on Ubuntu 12.04. Sheesh. I’d have to downgrade my Arch to the Stone Age in order to use it. I’m not gonna do that!

However, the Elementary devs are Gods among Linux UX professionals, I must say. Their creations, especially the addition of the Granite libraries to everything seems to make their programs integrate flawlessly into the interface. Use Pantheon with the apps made for it (namely Noise, Midori, Maya, etc.) and you will experience computing Nirvana. And unlike Unity, Pantheon makes you want to try it out the way the devs want you to. That’s quite an achievement.

Razor-Qt

Sabayon with Razor-Qt
Sabayon with Razor-Qt

Razor-Qt is a pretty awesome desktop environment, methinks. I used it instead of LXDE because their futures seem to be converging and turning to Qt. Frankly, Razor-qt is a pretty sparse DE. It doesn’t even bundle its own File Manager, but rather provides a set of recommendations.

I didn’t spend much time with it, but I found out that while it does allow one to customize the hell out of it, there’s not many options out there for something like Razor-Qt because the community hasn’t adopted it the way they have the other DEs I’ve mentioned previously. This led me to move to the DE which holds my heart currently. XFCE.

XFCE

My current Arch Linux desktop
My week-old XFCE on Arch Linux desktop

This is my current DE. I’ve been on XFCE for around a month now, and I must say, once you start customizing it, XFCE can be made into pretty much anything you wish it to. It is probably less flexible than KDE in this respect, but being GTK, it has a bit more love from the community.

Okay, that’s discrimination, but that’s the way these things function, I guess.

XFCE has Thunar, which is pretty decent (piss-poor after Dolphin with all its bling and KIO-slaves, though) and xfce4-terminal (Konsole FTW!). While they might seem inferior out of the box, customization is the name of the game. And of course, one can use as many alternatives as one likes.

XFCE does not provide you access to Unity indicator applets the way Cinnamon and Pantheon do, nor does it support global menus the way Unity and KDE do.

What it does provide you is a brilliant lightweight DE with insane customizability options and a tonne of GTK love. It doesn’t break themes like Gnome does after every update, nor does it attract the same level of hate KDE seems to wherever it goes. It’s not as sparse as Razor-Qt, and given the right options, it can be made to look almost as good as Pantheon (or so I believe).

The most serious drawback of XFCE has is that it’s based on GTK2. GTK2, while a pretty amazing toolkit, has reached the limits of its awesomeness. I also understand that shifting to GTK with the current state of its development and its rate of change will force the XFCE devs to simply spend time needlessly on porting XFCE to new minor versions of GTK.

The second, and one more immediately rectifiable is the built-in XFWM compositor. To say that it’s crap is an understatement. It is plain horrible and it makes everything you have running tear violently. I have never been more glad that I found out about Compton. If you wish, you can probably replace XFWM with something like kwin-standalone-git which will provide all the compositing you need without having to mess around with Compton.

However, XFCE is fast, zippy and very lightweight. And hence, it is the ideal choice of DEs for someone like me. People may agree, they might disagree.

The XFCE Desktop Tutorial

This tutorial aims to help you turn your desktop from this:

A very standard XFCE desktop
A very standard XFCE desktop

To this:

My current desktop!!
My current desktop!!

Pre-requisites

  1. A proper installation of Arch Linux with a working X-Server
  2. All the requisite drivers
  3. The package group xfce4 available in the official repos
  4. The packages compton-git (AUR), cairo-dock, cairo-dock-plugins, terminus-font

Recommended packages

  1. ttf-google-fonts-hg or ttf-google-fonts-git from t he AUR will provide the fonts I like using. You can use something like dejavu-sans if you wish.
  2. fontconfig,freetype2,cairo}-infinality-ultimate. In this case, it would be a better idea for these packages to be downloaded from Bohoomil’s custom repo (Instructions)
  3. networkmanager is simply very hassle-free. If you wish to use netctl, be my guest. However, do remember that there is no way to get a status icon int he system tray for netctl You can use netmon-git to get a systray icon for netctl if you wish. However, I have not tested this out yet, so I would appreciate feedback.
  4. mpd, ncmpcpp, xfmpc, mpdris2-git, xfce4-soundmenu-plugin are packages which I use to listen to and control my Music. You can use Clementine or Noise if you wish. However, the soundmenu plugin will only work for players with MPRIS2 support, so do keep that in mind while selecting your player.

The actual configuration

My configuration file for Compton (~/.config/compton.conf) may be got from here. Most of it has been sourced from the Arch Wiki with a few changes here and there as I’ve seen fit.

Compton is used for basic compositing as the built in XFWM compositor is pretty bad. Your ~/.xinitrc should contain:

compton --config ~/.config/compton.conf & 
startxfce4

Once you have xfce up and running, create a basic, empty panel at the top with the following settings:

xfce-panel-properties-3 xfce-panel-properties-2 xfce-panel-properties-1The first separator after the applications menu should have the expand option checked. All of them should be transparent.

Now download the compass icon theme from here and put it in your ~/.icons folder. Install the xfwm-axiom-theme, moka-gtk-theme, gtk-theme-numix-holo-git and awoken-icons packages from the AUR. Install xfce4-notifyd if it’s not already installed.

Go to XFCE settings and change your Window Manager theme to axiom, your GTK theme to moka, your icon theme to Compass and your notifications theme to Numix Holo. Change the default font to Arimo and the proportional font to Terminus or Inconsolata. Go to ~/.icons/Compass/index.theme and change the line:

Inherits=

to

Inherits=AwOkenWhite

Start Cairo Dock using the command cairo-dock -o. This starts Cairo Dock using the OpenGL backend which is faster than Xrender. Right click cairo dock and add launchers as you see fit. Change the icons to Compass in the appearance tab. Change the dock theme to Tux_n_Tosh. Before applying, do make sure that the checkboxes Use new theme’s launchers and Use new themes behavior are unchecked.

Now open Thunar and press Ctrl+M once to hide the menubar once and forever. If you want it back, Ctrl+M is still there.

And voila! There you have it! A wonderful XFCE desktop which does all you want while looking good.

Fun with Linux: Starting out

This blogpost is going to be much more technically oriented than any I’ve ever published before. It’s aimed at a geekier audience than what I normally cater to, so please do not bash me for it. It discusses filesystems and zsh. The next post in this series will talk about configuring a graphical environment.

Before going further into this blogpost, you should understand that none of what I write here is gospel, you’re free to reinterpret it as and when you please. Also, most of what I’ve written is the work of people better and far more experienced than I. All I’ve done is tweak their methods a bit for my own satisfaction. Their names are far too many for me to recount, and I honestly don’t know them all.

Distro of choice

Arch Linux

Why Arch? Well, there are many, many reasons. But the ones most important are:

  • It’s highly customizable
  • Pacman and the AUR
  • It doesn’t assume anything about the user
  • I’m very comfortable with it

Arch Linux follows the KISS philosophy. This allows one to see the internals of the OS and tinker around as one pleases. You can customize Arch to be anything. It can become a remote-controlled seedbox, a production server, a heavy-duty workstation or any thing else you can dream of.

Arch Linux is also noted for being one of the first distros to support new technologies as and when they come out (viz. python3, systemd etc.). This allows Archers to be ahead of the curve when it comes to adoption of new technologies (At times very far ahead. Elementary OS still ships with Linux 3.2.0 as default while Arch is on 3.11.1).

The Arch community is also a very active group of guys. They’ve created one of the most feature-filled and complete wikis available in Linux-land, they’re very active on the IRC and the devs are very approachable. The reason I mention this is because I’ve run into my fair share of problems on Arch, and I’ve found everything I need within the community itself.

Installation

Okay, the beginners’ guide pretty much walks you through the installation. There isn’t anything much you’d want to configure in your installation except your partition layout and the packages you wish to install.

I formatted my whole disk and used all of it for Linux. Why? Just. I don’t particularly have any Windows-specific work. My partition layout is as follows:

$ lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk 
├─sda1   8:1    0   256M  0 part /boot
├─sda2   8:2    0     4G  0 part [SWAP]
├─sda3   8:3    0    28G  0 part /
├─sda4   8:4    0     8G  0 part /var
├─sda5   8:5    0 421.5G  0 part /home
├─sda6   8:6    0  1007K  0 part 
└─sda7   8:7    0     4G  0 part /var/cache/pacman/pkg
sr0     11:0    1  1024M  0 rom

I’ve made separate directories for home, boot and var and my package cache in addition to a GPT partition, root and a Swap partition. This is because I formatted all these using different filesystems.

  1. /dev/sda1 – ext2: Ext2 is generally considered a good choice for boot since it’s fast and stable. It however, does not have journalling support. That shouldn’t be much of a problem, of course, seeing that you’re not going to be writing much to /boot anyway.
  2. /dev/sda2 – SWAP: I made this partition a swap partition simply in case I wish to compile anything major. Swap partitions are recommended over swap files for a few reasons.
  3. /dev/sda3 – ext4: The root partition was formatted with ext4 because btrfs does not have an fsck utility. Until btrfs gets a reliable fsck program with the same capabilities as any other mature fsck program, I don’t wish to use it for my root. Till then, ext4 is the best general purpose file system you can get.
  4. /dev/sda4 – reiserfs: ReiserFS is considered very good for small files. /var is supposed to contain many small files, hence I decided to format it with ReiserFS. I’m considering shifting to Reiser4, however, I’ll have to patch my kernel for it. I’m also not sure just how good Reiser4 is compared to ReiserFS.
  5. /dev/sda5 – btrfs: Most people would consider their data to be more important than the system they’re storing it on. I do too. I’ve already cited the lack of a reliable and fully-featured fsck program as the barrier to my usage of btrfs. However, that’s not to say that btrfs does not have any error-tolerance built-in. It does. The “recovery” mount option does allow you to recover your data in case of any problems. The reason I have no problems with formatting my /home as btrfs is that I can always unmount it, re-mount it with the recovery option and then get all my lost data back. That’s not particularly easy with the root partition.
  6. /dev/sda6 – BIOS boot partition: This 1007K partition is required by BIOS systems using GPT. Don’t let the partition number fool you. It’s located at the beginning of the disk.
  7. /dev/sda7 – jfs: The /var/cache/pacman/pkg mount point is not normally seen in most Linux systems, or for that matter even most Arch systems. The reasons I keep it separate is to preserve my package cache in the laziest way possible in case I have to reinstall and to improve pacman performance. Jfs is another general purpose file system developed by IBM. It’s supposedly very fast and extremely light on resources. It also has a few issues with fragmentation Ext4 does not seem to suffer from. I used this because I wanted a lighter filesystem for my pacman cache. I would have used XFS (it’s good for larger files), but apparently it’s not very good for home systems.

I got all my filesystem information from here and here. For those who ask why I used GPT, it’s because it’s next-gen. The MBR is old. Even Windows is shifting away from it.

When using pacstrap, I’d recommend pulling in vim, elinks, networkmanager (or connman) and zsh as well. While nano is a perfectly serviceable editor, I’ve always preferred vim. Sure, the learning curve is steeper, but it’s vim. Along with emacs, it’s probably the oldest editor out there people still use (I’m leaving out sed for very obvious reasons). If you have no experience with it, I’d recommend running vimtutor on the command line to learn the basics.

I recommend zsh over bash for those new to the command line. While it is very important to learn bash (do learn it, btw), zsh is simply more convenient and easier to use for day-to-day usage. My .zshrc looks like this now:

# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory autocd extendedglob nomatch notify
unsetopt beep
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/home/vader/.zshrc'

autoload -Uz compinit
compinit
# End of lines added by compinstall

# Prompt
autoload -U promptinit colors
promptinit && colors

PROMPT="[%{$fg[green]%}%n %{$fg[cyan]%}%~%{$reset_color%}]%# "
RPROMPT="[Last Exit: %?]"

# Command not found hook
source /usr/share/doc/pkgfile/command-not-found.zsh

# Autocompletion options
setopt completealiases
zstyle ':completion:*' menu select
zstyle ':completion:*' use-cache on
zstyle ':completion:*' cache-path ~/.zsh/cache
zstyle ':completion:*:*:kill:*' menu yes select
zstyle ':completion:*:kill:*'   force-list always

# Ignore duplicate history lines
setopt HIST_IGNORE_DUPS

# Keys and stuff

typeset -A key

key[Home]=${terminfo[khome]}

key[End]=${terminfo[kend]}
key[Insert]=${terminfo[kich1]}
key[Delete]=${terminfo[kdch1]}
key[Up]=${terminfo[kcuu1]}
key[Down]=${terminfo[kcud1]}
key[Left]=${terminfo[kcub1]}
key[Right]=${terminfo[kcuf1]}
key[PageUp]=${terminfo[kpp]}
key[PageDown]=${terminfo[knp]}

# setup key accordingly
[[ -n "${key[Home]}"     ]]  && bindkey  "${key[Home]}"     beginning-of-line
[[ -n "${key[End]}"      ]]  && bindkey  "${key[End]}"      end-of-line
[[ -n "${key[Insert]}"   ]]  && bindkey  "${key[Insert]}"   overwrite-mode
[[ -n "${key[Delete]}"   ]]  && bindkey  "${key[Delete]}"   delete-char
[[ -n "${key[Up]}"       ]]  && bindkey  "${key[Up]}"       up-line-or-history
[[ -n "${key[Down]}"     ]]  && bindkey  "${key[Down]}"     down-line-or-history
[[ -n "${key[Left]}"     ]]  && bindkey  "${key[Left]}"     backward-char
[[ -n "${key[Right]}"    ]]  && bindkey  "${key[Right]}"    forward-char
[[ -n "${key[PageUp]}"   ]]  && bindkey  "${key[PageUp]}"   beginning-of-buffer-or-history
[[ -n "${key[PageDown]}" ]]  && bindkey  "${key[PageDown]}" end-of-buffer-or-history
#
# # Finally, make sure the terminal is in application mode, when zle is
# # active. Only then are the values from $terminfo valid.
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then
	function zle-line-init () {
		printf '%s' "${terminfo[smkx]}"
	}
	function zle-line-finish () {
		printf '%s' "${terminfo[rmkx]}"
	}
	zle -N zle-line-init
	zle -N zle-line-finish
fi

# Aliases which look good
alias ls='ls --color=auto'
eval $(dircolors -b)		# Not an alias, but helps with less
alias grep='grep --color=auto'
alias blah='echo'
alias sudo='sudo '

# Time-saving random aliases

alias cower='cower --color=auto --target=/home/vader/Builds --verbose'
alias youtube-official='youtube-dl --continue --username [snipped] --password [snipped] --max-quality mp4 --output "/home/vader/Youtube Downloads/%(title)s.%(ext)s"'
alias youtube-playlist='youtube-dl --continue --username [snipped] --password [snipped] --max-quality mp4 --output "/home/vader/Youtube Downloads/%(playlist)s/%(autonumber)s-%(title)s.%(ext)s"'
alias amv='youtube-dl --continue --username [snipped] --password [snipped] --max-quality mp4 --output "/home/vader/Youtube Downloads/AMVs/%(title)s.%(ext)s"'
alias theatre-arts='youtube-dl --continue --username [snipped] --password [snipped] --max-quality mp4 --output "/home/vader/Youtube Downloads/Theatre Arts/%(title)s.%(ext)s"'
alias dcpp='tmux attach-session -t dcpp'

# Colored less
export LESS=-R
export LESS_TERMCAP_me=$(printf '\e[0m')
export LESS_TERMCAP_se=$(printf '\e[0m')
export LESS_TERMCAP_ue=$(printf '\e[0m')
export LESS_TERMCAP_mb=$(printf '\e[1;32m')
export LESS_TERMCAP_md=$(printf '\e[1;34m')
export LESS_TERMCAP_us=$(printf '\e[1;32m')
export LESS_TERMCAP_so=$(printf '\e[1;44;1m')

# Coloured man pages
man() {
    env LESS_TERMCAP_mb=$(printf "\e[1;31m") \
	LESS_TERMCAP_md=$(printf "\e[1;31m") \
	LESS_TERMCAP_me=$(printf "\e[0m") \
	LESS_TERMCAP_se=$(printf "\e[0m") \
	LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
	LESS_TERMCAP_ue=$(printf "\e[0m") \
	LESS_TERMCAP_us=$(printf "\e[1;32m") \
	man "$@"
}

A large portion of my .zshrc is youtube-dl aliases (I download lots of AMVs). Most of my .zshrc is not original, I’ve copied it from various sources, primarily the Arch Wiki. Do learn to utilize the power of the shell, for that is the true meaning of Linux mastery.

In the next part of this series, I’ll talk about configuring a DE to look something like this:

My current Arch Linux desktop
My current Arch Linux desktop

The government’s playing with my privacy; so what do I do?

It seems as if this dystopian nightmare forced upon us will never end. Everyday seems to bring up a new story of some random government spying on us. Starting with the US spying on the world to Britain possessing a system worse than the US all the way down to India building the capability to crunch through the mountains of data produced by its citizens, it’s amply clear that our data is not safe in the hands of those we trust to safeguard it. Google, Apple, Facebook, Microsoft; no wait, especially Microsoft have confessed to helping the government to our data. While Google and Facebook are still trying to do justice to their customers, Microsoft has been going beyond the call of duty at the behest of government agencies and providing them with information about bugs in its software which have not been patched in order to help them tap computers halfway around the world.

How does it affect you?

In all honesty? It doesn’t. Most of us aren’t journalists who need to keep our sources confident or Jihadis planning high-profile attacks on US towers of commerce. We’re mostly ordinary people who use our mail for the bare minimum. We receive newsletters, spam, a long mail from a girlfriend far away, a few photos… Nothing of consequence. (If you do use a Gmail account for sensitive mails, then you really need to get your head examined. Google states that it reads your mails in its terms of service.)

bigbrotherSocial networks are in the same ballpark. The photos we upload on Facebook are the ones we want our friends to see. Or rather, that’s the logic behind it. But honestly, how many of us would call all our Facebook friends close friends? We have a few hundred (if not a few thousand) friends on Facebook and it would be folly to claim that we know each of them equally well. It would be greater folly to say that showing my holiday pictures to that girl I met in a country far far away in a small conference (who I’ve never spoken to since) is any different from showing them to a stranger. Most of our Facebook friends are virtual strangers to us. We breeze past their status updates without caring about their contents.

Twitter is said to be the company most protective of its users’ data. That’s quite ironic, because none of your data on Twitter is private, except perhaps your password. However, I doubt most people have any problems with their government reading their tweets.

Let’s face it. The data we put on Facebook and Twitter can’t be helped. Those two companies could secretly be helping the slave trade and we wouldn’t leave them. We’re bound to each other now.

However, mail is a different story. I like to believe that my email account is for my own eyes only. No matter how trivial my mails, I still like the feeling of having a private mailbox and knowing that if I write something as embarrassing as a love letter, then the only people who will read that mail will be myself and the lady I intend it for. If Google wants to read it and send us ads based on my writings, I sigh and grumble to myself, but it’s okay. Google’s providing me that service for free, I guess I do owe them that advertising money. I’ve made my peace with it, knowing that every service rendered has a price.

However, my government, on the other hand, is a whole new ballgame.

Courtesy Aprill Brandon
Courtesy Aprill Brandon
  1. I pay my taxes
  2. They rule in my name (as well as that of a billion other Indians)
  3. They are the protectors of my rights
  4. Manmohan Singh isn’t man enough to read my writings. Rahul Gandhi even less so.

I pay the government its dues. I expect it to be able to protect me without reading my private correspondence.

Patching your holes

There’s not many ways in which you can protect yourself from the government’s snoopers. However, the one you should be teaching the next generation is to:

Learn programming and not be afraid of the shell and ssh, for they are your best friends in this brave new world.

This one piece of advice shall save your inbox from many. While we all depend on Google, Microsoft and Yahoo, it would be much more expedient to simply remove the middleman from the equation, rent some server space, install CentOS (or Arch if you’re feeling extremely lucky), install OwnCloud and a mail server, purchase a domain and point it towards your own new mail server! This seems like a good place to do a PhD in the art. I’d suggest a simpler guide, but unfortunately it seems that all roads lead to this one. While it may seem a very big deal and pretty hard, for any privacy freak out there, it’s amazingly good. Once you have your own email server set up, you can encrypt your email to deny people from reading it. It’s also a good idea to understand the concepts behind PGP and GPG.

If at any time, you feel that this is too much, remember this quote by Ben Franklin, one of the Founding Fathers of the USA:

Those who would give up essential liberty to purchase a little temporary safety deserve neither liberty nor safety.

I just got Google Drive. In fact, I received the email verification around an hour ago. I’ll be comparing it to DropBox, of which I’m a regular user, and write a piece tomorrow or day after. One thing which already puts me off is the lack of native apps for iOS devices and Linux. Hopefully they’ll fill these holes soon.