The KDE - Gnome Challenge: org-mode

In this post, i'm going to digress a bit to comment a bit about what i've been working on most recently. A few days ago, Michel Salim posted to Fedora Planet that he was having some success implementing GTD in his life using org-mode. Lately, i've been doing exactly the same thing. In the coming posts, i'm going to start integrating more bits on org-mode and emacs into the desktop.

Last weekend, i took the time out to work on a really old idea i had been batting around for a while. I've reworked my xmonad config completely so that it no longer functions like a traditional static desktop with a static set of workspaces. The desktop now is a context based stack, where you shuffle in contexts when needed. When in a certain context, the right programs are available at your fingertips, and distractions relevant to other contexts are hidden. I've been slowly integrating this into working with the same contexts that i use in GTD.

Ironically, due to "getting things done", i've been piling on more and more tasks that have piled up in the past few years, that i simply haven't gotten the time to start getting around to. Using a different organization system for my todo lists has motivated me to get a start on them, including this desktop concept. So when it comes to getting things done, like this blog series, it's been getting tricky fitting it in. Hopefully i'll get together a batch of blog posts soon, and i can continue publishing regularly.

Why i quit facebook

For those of you who perhaps just follow along Fedora Planet, or just don't do these sorts of things, quite a number of Fedora contributors all hang out on facebook. Between some of the more 'youthfully exuberant' contributors, we have a bit of the usual banter going on. Many of you followed along with my year of Monty Python quotes in my status, and some of you have probably tried to make Ryan Rix lose the game once or thrice. So some of you probably noticed that i deleted my facebook account a couple of weeks ago.

I refrained from commenting on it too much online, because it wasn't so much of a privacy issue as a social experiment on myself. If you go online (and you already are, i assume) you'll see pundits arguing against facebook for reasons ranging from how much of a waste of time it is, to how creepy it is to give random faceless company all this information to all the privacy concerns that go with a central network with poor security and designed to distribute rather than secure information. This was not the reason why i quit; i felt like facebook was taking the place of better things in my life. So, i gave it a couple of weeks to see how things changed, and to comment on it without the accusations of "you only left because you're a paranoid privacy freak".

If you compare how people communicated before Facebook came around and what people consider communication today, things have clearly changed. I'm not talking about the 140 character limits twitter imposes either. My facebook network had some several hundred people in it, many of whom i met randomly, and decided to keep very loose contact with. Instead of making a point to see them now and then, i got more and more focused to commenting and sharing random activities via the platform. When you consider how much mental overhead a single sarcastic facebook comment or post can take up, you have thirty light conversations all running in the background, and they come in via a torrential feed that bombards you with new messages all the time, it gets pretty hectic. It is nice to be able to interact with people you wouldn't otherwise get a chance to stay in contact with so easily, but that's the crux of the problem. All this mental overhead takes time away from staying in touch with the people closer to you. It's also much harder to shut off the flow when it becomes a habit. If i have things to do at home, as long as i don't nip over to the pub for a few beers, i won't be distracted by a constant flow of social information. But when i have a facebook account, it's habit to walk past my laptop, open up a new tab and kill another ten minutes replying to comments. Then when i try to talk to my family or close friends, i don't have the energy left to make a real conversation out of, especially one that doesn't resemble these shallow facebook conversations.

Now that i've gone for two weeks without a facebook account, somehow my life is more bearable. I reckon i'm still easy to find; i still have an and linkedin, and a simple duckduckgo (or google if you're still using that) of my name will tell you pretty much everything you need to know to get in contact with me. But now i have time to actually take things off my todo list, and i can be social without a guilty conscious that i've forgotten to do something, or i'm missing out on a conversation elsewhere.

If you're wondering if you should just never log in anymore or if you should go through the trouble to delete your account, take this into account. If the privacy does bother you at all, you might argue "Facebook has all your information anyways". But consider this, if you delete your account, they won't get any new information, and over time, the info they have on you becomes less and less valuable. I recommend deleting it, if you want to go down that route.

The KDE - Gnome Challenge: feh

A bit delayed, but following with the thread you've probably decided that you would like to see something else besides the default wallpaper. In a traditional desktop environment, there is a program that has the responsibility of drawing the desktop, in KDE it's a very complex plasma, and in gnome it's a window provided by nautilus that runs on top of the desktop. Since we don't actually need much from a desktop per se, all we need to do is draw on the 'root window' which is the X Windows System way of saying 'desktop'.

To do so, we need to add a small command to your .xsession file. First install the program feh with yum install feh -y if it's not already installed. Feh is also a decent program for viewing images too, which is why i'm using it.

To have feh draw your desktop background, just add the following command to your .xsession file, before the line for xmonad (or which ever window manager you choose):

feh --bg-scale /path/to/wallpaper

It's really not more complicated than that.

Somethings you might want to explore, if you like that sort of thing is that there are a number of programs that can all draw to the root window. It's possible to use them to draw pictures, tile multiple pictures together, create a slideshow, or even draw video or goofy animations that follow the cursor. If you find something cool, be sure to leave a comment or blog it too.

Duck Duck Google^WGoose!

Lately i've been taking a bit of time in my life to look at using other services than Google. Even if you still trust Google 100%, and don't get me wrong, i don't have anything against Google personally (well... not much), it's been a good experience. One of the hardest things to get away from though is Google's search. It's very easy to get in a habit of using it. It's everywhere, even on my phone. Google's worked very hard to make their search results very good. Even so, there's another search engine i've found that i quite like, Duck Duck Go.

Duck Duck Go is quite simple. It has a very clean layout, similar to the early days in Google, and it focuses on giving you some quick 'zero-click' meaning at the very top of the page. It also tries to sort links into topics that make sense to a human mind. More importantly, it's entirely anonymous, saves (almost) no private data, and is entirely accessible through SSL. (I've even provided the SSL link above.) This means that no one in between you and Duck Duck Go needs to know that you're looking for a new job, not even your current boss.

In 1997 when Google was started, it was fundamentally expensive for most people to start up a search engine that would provide meaningful results. Back in those prehistoric days powerful computers were expensive and so was the bandwidth. Nowadays, the chip in my phone is powerful enough to run a search engine, never mind the computer in my lap or my desktop at work. It's become much easier to democratise search; anyone can do it. In the days of Web 2.0, where anyone can put up a web page, Gabriel Weinberg, the creator of Duck Duck Go, wrote up a detailed blog post on how he uses commodity open source tools to put it together. You don't have to be a Google Engineer to do it.

Duck Duck Go is a pretty cool search engine to try out. It can be integrated into Firefox too, so you don't even know you're using it until you start searching. It's fast, it's simple, it provides you with good privacy from the start and is actually useful. It's even got a cool duck as a logo.

The KDE - Gnome Challenge: xinit and slock

Continuing the theme from before, i would like to explain how to get started setting up your 'just give me what i need' desktop. Keep in mind that this will only cover a part of getting started, so if you need a fully working desktop and you're not able to figure it all out, you might want to wait a few days until everything's lined up. I'll put together a summary so anyone can get started.

So you want to make up a minimalist desktop. The rule is to use only what you need, nothing more. You also need something to glue it together. I've written before about using xmonad to be precisely that glue. I am assuming you are going to use xmonad, you know how to open up a terminal, use it to start up other programs and can go back to your classic desktop later if you want. We'll also cover one other necessary feature, locking the screen. Obviously you don't want to leave your machine vulnerable while playing around.

The first thing to do is to set up xinit. This will start up a shell script located in ~/.xsession and when the shell script ends, it will stop the graphical environment and logout. In order to make this work, open up a terminal and do the following.

Warning: This will destroy any prexisting file you have located at ~/.xsession, so back it up if you want to first.

sudo yum install xorg-x11-xinit-session xmonad slock -y
echo > ~/.xsession << EOS

chmod +x ~/.xsession

When you log out, you will see a new desktop option called User Session. Log in using that option. The login dialog will go away, and you'll most likely be left with the default background from the login manager. Don't expect any borders or pretty things to happen yet. We will set them up later. Remember, all that's running is xmonad, nothing else. Once xmonad stops, your session ends and you are logged out. That's it.

In order to call up programs, open up a terminal with <Alt>-t. From there, you can open up any other application using it's name. To log out, press <Alt>-q. At the bottom of this post will be a couple of links to xmonad's documentation for reference.

If you need to lock your screen, open a new terminal and run slock at the prompt. Your screen will blank, just type in your password, hit enter, and you can continue working. To suspend your machine, say a laptop, the command pm-suspend will do exactly that. If you want to suspend and lock the screen, the handy snippet pm-suspend; slock at the prompt will suspend and then lock the screen. We will come back to making this easier in a following post.

I've had some criticsm about having to write up your own .xsession file and doing everything by hand. Many of the arguments run along the lines of 'i use this panel, this media player, this browser, this widget, this toolkit, and it does everything for me automatically, so you'll have to pry it out of my cold dead hands'. If this is the case, i encourage you to continue using your tools of choice for the betterment of society. However, if you're left wondering why your computer uses 1GB of memory after logging in, and why there's a mysql instance running in the background that you didn't put there yourself, and all you want to do is get programs up and running and working, then doing this by hand is a very rewarding experience. Were it easier to get a useful minimalist experience without this trouble, life might be better, but we're not yet there.

If you need documentation, check out the following links.

Happy Hacking!