Quite simply, I am very happy to be back in Emacs-land.

There I was, thinking that the web-based task managers, to-do lists, etc
were “all that”. Well, ok, I do feel that some are pretty good, as you can tell from
my tag cloud on this blog. But nothing ever felt like it was native to
me, this keyboard and this computer.

I wanted to put tasks on a computer to Screenshot - 100413 - 10:55:20make them easier to manage.  Putting them on a web site didn’t do that, and I don’t think it ever
really will for me. So I’m back in the saddle with orgmode and boy, am I loving this again. It’s amazing how the keystrokes just come back to
you.

Here’s my list of software in Emacs (at  present):

  • mu4e, for E-mail
  • orgmode, for task/calendar management
    mobileorg, for portability
  • weblogger, for blogging (duh)

For coding, I’m also using:

.. plus some other fontification and syntax colouring plugins.

Truly forgot what a joy it is to use this environment, although it does
take a little work setting up.

A simple one, this. Firstly, get to where rhythmbox stores its data:

# cd ~/.local/share/rhythmbox

Then, do this:

# grep podcast-feed rhythmdb.xml -A 5 | grep location | sed -e 's/<location>//' | sed -e 's/<\/location>//'

You should end up with a list of URLs which your podcast feeds are served from.

This is a blog post for personal interest and probably not of much amusement to others.

My work machine has a fresh install of the (soon-to-be released) Debian version 7 (codename “Wheezy”). There are a couple of modifications I’ve had to make to the installed software to get things working as desired.

Firstly, I’ve read really good things about mu4e – the “maildir-utils for emacs” email client.  (Just for clarity, the author of maildir-utils has abbreviated its name to mu.)  mu4e provides an interface to your email in emacs which is fast and efficient.  I like things that are fast and efficient.

I installed debian’s standard mu and mu4e packages, but found that mu (the wheezy-based package) was not indexing all of my email. Firing up mu4e within emacs then trying to browse the ~/Maildir/INBOX – and being told there were no messages – raised some suspicions!  So I removed that package and installed from source instead and, now, indexing works much better.

how to do this

Basically, it’s pretty simple.  Just:

# apt-get remove mu4e

This will replace maildir-utils (0.9.8) and mu4e.  Then download the mu-0.9.9.5 source (list of mu releases) and follow compilation and installation instructions from its install page.

On Debian, this will result in you installing mu and mu4e to /usr/local/share instead of the default installation point, /usr/share.  To enable the use of /usr/local/share/emacs/site-packages/mu4e/ from within your standard emacs23 install, just create a symlink pointing to it from /usr/share/emacs/site-packages/ :

# ln -s /usr/local/share/emacs/site-packages/mu4e/ .

The software replacements are:

  •  with mu (0.9.9.5) from the  package

other modifications

(Edit) I also installed gnu tramp for Emacs from source, but the reasons why I originally did this now escape me, as tramp has been part of Emacs for a while.

unrelated issues

I have found a worrisome issue in wheezy.  When I attach an eSATA drive to my ThinkPad (T420) and copy lots of data – e.g. GBs of photos – to my ~/Pictures, I get some kind of kernel panic/X error.  I’m still investigating this at present.

I will attempt to keep this list updated as I continue getting this set-up just as I want it 🙂

[ EDIT 10 April 2012 10:00 ]

Grabbing the currently stable, newest kernel source (ver 3.8.6) and compiling it in the debian way has seemingly fixed this crashing/locking issue.

I was recently asked to explain the difference between setting permissions on a directory to either 755 or 751.
In 751 mode, a user who isn’t the owner and isn’t in the group assigned to that directory can still execute anything within that directory, provided they know the name of the executable file.  They are unable to browse the contents of that directory to find the name.  Therefore, 751 is inherently more secure than 755.

The funky, geeky bit

For reference, each number of 7 5 1 is an octal representation of the number of permission bits set on the file/folder.  There are 3 bits per field.  
Taking the 7, from 751, this means all bits are set to 1.  This is how it works (think of it like a lookup table):
meaning:     r   w   x    (read, write, execute)
bit value:   4   2   1    (< - this is  the octal lookup bit)
bit set to:  1   1   1    == 4 + 2 + 1 == 7.
If you take the value 5, then this is how that’s set in the bit fields:
bit set to:  1   0   1      == 4 + 0 + 1 == 5.
Remember, there are three fields!  So each field – the “owner”, “group” and “others” fields – contains the sum of permission bits set for that field.  The “751” is actually a nice, easy way to see permissions.  The actual permissions set in a 751 situation are, in binary “nibbles”, 0111, 0101 and 0001. 

Demo – try it yourself!

As root, set up a test dir in /tmp/ called test, with 751 perms.  Then create a file within that called hello.sh which simply outputs “hello” on the command line when executed.  To achieve that, simply do this (as root, remember):

# mkdir /tmp/test

# touch /tmp/test/hello.sh

# chmod +x /tmp/test/hello.sh

Then edit /tmp/test/hello.sh and put these two lines in:
#!/bin/sh

echo Hello
/tmp/test is owned by root (rwx / 7) , has the root group (r-x / 5) and the "world" just has execute (--x / 1).  When using your own user account, trying to do a ls /tmp/test - should tell you that permission was denied.  

However, you should be able to do /tmp/test/hello.sh which outputs "Hello" as expected.  

If you bump that world permission to r-x / 5, you would be able to see that file because ls has the necessary permission to read the directory contents.

As a Debian user, you may choose to adopt the distro-managed rebuild of the world’s greatest web browser.  But, by doing so, you may not be able to use G+.  Don’t worry, the answer is at hand.

Visit the Firefox add-on page for User Agent Switcher:

https://addons.mozilla.org/en-US/firefox/addon/useragentswitcher/

Install the add-on and restart your browser.

Now, go to Tools > User Agent Switcher > User Agent Switcher > Options…

Add a new User Agent, call it Firefox 11.

Add the following text in the fields:

  • Description: Firefox 11
  • User Agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20100101 Firefox/11.0
  • App Code Name: Mozilla
  • App Name: Netscape
  • App Version: 5.0 (X11
  • Platform: Linux i686

If you’re running an amd64 build, plonk that in the Platform field instead (it’ll probably already be populated).

Make sure there is no reference to Iceweasel in the User Agent field.

Make sure this user agent is active, and then browse to Google+.

Have fun! 🙂

Minimalism & Debian

Less is more, as the saying goes.

While I love using Fedora in my daily work, sometimes when I want to relax I find using an alternative distribution is good therapy.  Fedora is fabulous with its GNOME Shell finery, but occasionally I hanker for something simpler and more lightweight.  It’s also good to see how the other half lives 🙂

So, I decided to put Debian on my netbook.  With no GUI.  Everything I do on it must be by the command line, including web research.  Compared to Fedora, Debian‘s system requirements are practically non-existent, which is especially good if you want your system to still run nice and quick.

First steps…

  1. Firstly, I had of course to grab the distribution.  I’m not over-fussed about running cutting edge stuff on this machine.  For me, the most important thing is a low-maintenance base where I don’ t need to think much about the distribution changing every 6 months.

    I visited the Debian Mirror List and grabbed a NetInst CD image.

  2. Next off, I plugged in the USB CD/DVD drive and installed the software, making sure I didn’t overwrite my XP partition.  Well, you need a reminder every so often how awful life used to be.. 😉
  3. I won’t go into the installation process here – there’s plenty of documentation elsewhere which covers that.  So, once installed, I really wanted to keep the installed software as trim as possible.  That is, with one or two exceptions…
     
  1. Firstly, I have tried and tried it again but I just can’t/don’t/won’t do vi, vim or anything similar.  It’s just not my bag.  It’s emacs for me.  I also want to keep my mail inside emacs, so it’s goodbye to mutt – even if it does suck less, apparently 😉
  2. Also, Exim4.  The servers I manage don’t use it (generally it’s Postfix or QMail) and I already have a tiny smattering of Sendmail knowledge – so I have no desire to pick up on this.  I’m sure it’s a fine MTA and undoubtedly there are many technical reasons why I should keep it on my netbook… but even so, no thanks.

    Therefore, my software changes are:

    $ sudo aptitude remove exim4 exim4-base exim4-config exim4-daemon-light vi mutt

    $ sudo aptitude install emacs w3m-el sendmail

  • So far so good.  However, I was still stuck with a chunky 80×25 character screen when booting up, which is real ugly.  Through much searching and grub configuration editing, I found that my answer was actually to install the intel video package.

    $ sudo aptitude install xserver-xorg-video-intel

    You’re on to a winner here, because Debian Squeeze is already set up for Kernel Mode Setting.  In other words, as soon as your system starts booting up, the video drivers get loaded and the optimal video mode is enabled (or, at least, that’s the intention).

    Whether or not it’s worth specifying screenmode in grub is open for debate.  FWIW, I put this in /etc/default/grub:

    GRUB_GFXMODE=1024x600
    GRUB_GFXPAYLOAD=1024x600x16

    … And in /etc/grub.d/40_custom:

    set gfxpayload=1024x600x16

    Then, I simply updated grub with the new config:

    $ sudo update-grub

    Please note that this step relates to my Intel-based netbook.  Yours may vary.

  • The only significant piece of the puzzle remaining was to get wireless sorted out and connect to my server:

    $ sudo aptitude install wireless-tools iw wpasupplicant autofs nfs-common

    ** PLEASE NOTE: this step assumes your wireless network device doesn’t require firmware or that you already have the firmware installed in /lib/firmware. **

    Once done, you need to uncomment the /net line in /etc/auto.master and restart autofs:

    $ service restart autofs

    If you want to refer to server by hostname and are not running a DNS server, add the hostname to /etc/hosts (somewhere below the localhost lines):

    111.222.333.444      myserver.mydomain.com  myserver

    At this point, assuming all went well, you can cd to /net/ in either the shell or a file manager such as nautilus (if running a GUI).

    So, this takes care of a basic local network configuration, but we still need to actually get connected to it on wifi.  So, there is, in my /etc/network/interfaces:

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface
    allow-hotplug eth0
    iface eth0 inet dhcp

    # Wireless
    auto wlan0
    iface wlan_mynet inet dhcp
    wpa_ssid my-network-ssid
    wpa-psk  my-network-key

    Once done, save this file and change the permissions for extra security:

    $ sudo chmod 0600 /etc/network/interfaces

    – and connect up, like this:

    $ sudo ifup wlan0=wlan_mynet

  • Voila!  With luck, maybe a little patience, and possibly an extra step or two (which you can hopefully figure out, if needed) these are the key set up steps which will make your netbook/laptop nice and lean, and perhaps more fun to play with.

    Next time, I’ll go through a few tools I use for ‘net stuff.

    *Getting into Getting Things GNOME!*

    (Edit: this is an old draft, now published for testing purposes)

    This is the beginning of what I hope will become a multi-part journal of my adventure into contributing free software.  I thought I’d share my education, FWIW! 🙂

    Part 1: Read The Flipping Manual(s)!

    As a user of a great amount of free software, I often wondered what was involved in producing it.  I was aware of the basic process – or at least I thought, but not really much of the details.

    Here’s how I kinda reckoned the basic process works:

    My take on the basic process of Free/Open Source software projects

    1. Some people (usually one person) would start a project off, following their interest in some way.
    2. He/She would set up somewhere for software code to live (a repository) which would be available to anyone to download.  This, the source of the project’s code, would be what’s often referred to as “upstream”.  It’s where the goodness flows from.
    3. Other people interested in this software could also join up and contribute changes to the code.
    4. At some point, someone involved with a distributor/vendor like Red Hat or Debian would “notice” the project and be interested in packaging up the software.
    5. The upstream software would get duly packaged up and released into the distributor’s/vendor’s “downstream” repository.  Users could then install and use it at-will.

    This only really covers the basic of software creation though.  What about bugs?  Even the best software has the odd bug or two.  What happens then?

    There are two main places for bugs to be recorded:

    1. On a downstream bug reporting/management system.
    2. On an upstream bug reporting/management system.

    Typically, users of the distributor’s packaged version of the software will report bugs with it on the distributor’s (downstream) system.  Why not on the upstream one?  Mainly because a distro (distribution) will contain an older version of the software that may, upstream, now be fixed of that bug.

    When a distro user reports a bug, he/she is reporting against the distribution’s version of that software, not against that software in general.

    Doesn’t this create a duplication of bug reports?

    In a nutshell, yes.  But it’s better that the same bug is reported twice, than not at all.  Quite often duplicates relating to the same issue are recorded, even on the same system.  They are simply marked as such, with one bug record being the “master”, to which the others are link for reference.

    Getting involved upstream

    The project I chose to get involved with is Getting Things Gnome! – a Getting Things Done-inspired task manager application for the GNOME desktop.

    My motivations to get involved were:

    • I like the GTD methodology – it helps bring focus and organisation to my working day;
    • I want to learn how to program in Python – a well respected and widely utilised programming language;
    • I want to see the gtg tool develop so I can use it more effectively; and
    • I want to contribute something back to the free/open source software community.

     

    Expressing (and progressing) an interest

    The first thing to do was to express my interest with a project leader.  From doing this, I received very supportive and constructive emails relating to ways in which I could contribute which suited both the project and me.  (a hat-tip to Izidor Matušov for enormous support and coaching in the early days).

    Secondly, after receiving such great support, the thing I soon realised is that the responsibility to check things out really rests with me.  I want to be involved, so I should be the person reading the mailing list posts, reading related blog posts, reading the web site, reading the manual for hackers… You get the idea.  If you’re considering joining a software project, you need to read a lot to learn what it’s all about!

    Finally, be prepared.  Prepare your computer to work in the best way possible.  Prepare your mind to be opened up to learning new programming techniques.  And prepare your attitude – you will be rewarded and pleasantly surprised by the capability and maturity of others who are already contributing to the project.

    Getting involved in free/open source software is educating, inspiring, liberating and, most importantly … (I hope he doesn’t mind me stealing this line from his first email), “Don’t forget, hacking opensource should be about having fun!”

    And it is.

    It takes a long time to ditch those applications with which you’re intimately familiar.

    It starts, quite often, with your Office Suite.  No, I’m not talking about desk and chair, but rather Microsoft Office.  Excel is an excellent spreadsheet tool, there’s no doubt of that.  But quite often, people like to work differently to the prescribed “norm”, and Libre Office allows just that.  It’s not the only open source office suite, of course: there’s also KOffice, the Abiword/Gnumeric combiniation and so on.

    Recently I’ve ditched other proprietary applications which I have worked with for years.  Why?  Well, for one I believe that switching applications is good, because it challenges you to think differently.  You have to learn new ways of doing old things, and this can help you think of new, better things to do.

    Secondly, you get no love with proprietary applications.  Time and again, you pay your money and end up getting no support.  So, really, what is the point?  I’m not just talking about Microsoft, either; many proprietary software vendors are only able to make a profit by re-packaging open source software and selling access to it from within a proprietary system. Parallels, I’m thinking of you here.

    The only way to beat companies is to not buy their products. It’s this simple.  Here are the ways I have ditched proprietary software:

    • Operating System: was Microsoft Windows XP, is now Fedora (16, currently)
    • Email:  was Microsoft Outlook, is now Mozilla Thunderbird
    • Office: was Microsoft Office, is now Libre Office
    • Web Browser: was always Firefox 😉
    • ..the list goes on…

    Here’s the deal:

    1)You have no time and you want to try the latest Fedora release because it looks pretty darn good.
    2) You accept the default disk partitioning scheme which the kind people at Red Hat / Fedora project set up for you, because they only have your best interests at heart, right?
    3) While using this cutting-edge release, something nasty happens like, ooh, perhaps a sound driver locks up the entire system and you have to hard-reset the machine (that is, switch it off by the power switch because nothing responds to input).

    What next? If, like me (on one occassion) you try to boot up the machine and get no further than the recovery console, you’d feel a bit aggravated. But there is an alternative – do a disk check. You may have read my verbose coverage for How to do a disk check in Linux before. This takes it one step further – how to check your logical volume when it’s encrypted and formatted using the latest ext4 filesystem.

    Instead of the method used before, this time I booted from a Live CD. You can find one to download at the Fedora project. Ensure that this CD matches the release of the version you are trying to recover. In this case, that’s Fedora 10.
    Once you have booted the offending machine up with the Live CD, open up a terminal by pointing to Applications > System Tools > Terminal. Once in the terminal window, just type:

    # su

    …to become the root user. This is essential to using all the disk tools.
    You may be tempted to check for volume groups first:

    # vgscan

    .. but this would return nothing.
    What’s happening here is that the Volume Group, located on that partition, is itself encrypted. Once unlocked, you can then gain access to both of the Logical Volumes – the swap volume and the root (/) volume.
    To unlock the encrypted Volume Group, first you need to establish which partition it resides on:

    # fdisk /dev/sda
    The number of cylinders for this disk is set to 12161.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:
    1) software that runs at boot time (e.g., old versions of LILO)
    2) booting and partitioning software from other OSs
    (e.g., DOS FDISK, OS/2 FDISK)

    Hit p to print the partitions on your primary disk:

    Command (m for help): p
    Disk /dev/sda: 100.0 GB, 100030242816 bytes
    255 heads, 63 sectors/track, 12161 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0xb07eb07e

    Device     Boot  Start End    Blocks   Id System
    /dev/sda1    *       1 5377 43190721 7 HPFS/NTFS
    /dev/sda2         5378 5402    200812+ 83 Linux
    /dev/sda3         5403 12161 54291667+ 8e Linux LVM

    So the partiton of type “Linux LVM” (Logical Volume Managed) is the baby we’re after.
    To unlock the encrypted Volume Group, use the following:

    # cryptsetup luksOpen /dev/sda3 mydisk


    This sets up the encryption/decryption kernel subroutines to allow access to device /dev/sda3, mapped to a device node called “mydisk” in /dev/mapper/ . We’ll not actually need to use this device node, but it could be handy to know if you needed to perform further diagnostics.
    You will be prompted to enter the encryption key which is stored in one of eight “slots” on the disk. If the key you enter matches a key in any slot, your disk will become unlocked. Assuming that it is, you can then scan once again for Volume Groups:

    # vgscan
    Reading all physical volumes. This may take a while...
    Found volume group "VolGroup00" using metadata type lvm2


    Now we’re getting somewhere. Let’s activate the VG and display the LVs (Logical Volumes) it contains:

    # vgchange -a y
    2 logical volume(s) in volume group "VolGroup00" now active
    # lvdisplay
    --- Logical volume ---
    LV Name /dev/VolGroup00/LogVol00
    VG Name VolGroup00
    LV UUID RE7t2h-nIy9-dWZ9-xt26-Fgq4-gFd8-34E3f2
    LV Write Access read/write
    LV Status available
    # open 0
    LV Size 47.81 GB
    Current LE 1530
    Segments 1
    Allocation inherit
    Read ahead sectors auto
    - currently set to 256
    Block device 253:3

    --- Logical volume ---
    LV Name /dev/VolGroup00/LogVol01
    VG Name VolGroup00
    LV UUID B7XJzD-9sS0-3iHx-AWBE-W9qN-TvRb-vCdYZF
    LV Write Access read/write
    LV Status available
    # open 0
    LV Size 3.91 GB
    Current LE 125
    Segments 1
    Allocation inherit
    Read ahead sectors auto
    - currently set to 256
    Block device 253:4

    We can deduce from the sizes of these two volumes that the first of the two is the root (/) volume, and the second is the swap volume.
    As the purpose is to FIX the filesystem on it, which may have become corrupt through the hard-reset performed earlier, we do not want to mount this volume. Instead, as we now have a device node for this activated volume, at /dev/VolGroup00/LogVol00, we can simply perform a disk check straight on it.
    To check which extn file system checking tools are on the system, you can tab-complete at the command line:

    # fsck. (hit tab)
    fsck.cramfs fsck.ext3 fsck.ext4dev fsck.vfat
    fsck.ext2 fsck.ext4 fsck.msdos


    As this was formatted an ext4 volume, that’s what we use:

    # fsck.ext4 /dev/VolGroup00/LogVol00
    esfsck 1.41.3 (12-Oct-2008)
    /dev/VolGroup00/LogVol00: recovering journal
    Clearing orphaned inode 730 (uid=0, gid=500, mode=0100600, size 2263160)
    Clearing orphaned inode 187182 (uid=500, gid=500, mode=0100600, size 4096)

    ... and so on until ...
    /dev/VolGroup00/LogVol00: clean, 190926/3137536 files, 2016683/12533760 blocks

    Now there are two more steps to perform: de-activate the volume group, and lock the encryption of the drive.

    # vgchange -a n
    0 logical volume(s) in volume group "VolGroup00" now active
    # cryptsetup luksClose mydisk

    The second command returns nothing, which means it did not error (the disk is now encrypted and not writable-to without unlocking again).
    I hope that helps someone with a sense for adventure but not enough time on their hands for when things go somewhat awry!