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.

.. and why you should consider it, or, “…and how to be more efficient”.

I’m an avid tasker and a fan of the GTD methodology, but when I use tools that have lots (and lots!) of features I tend to slip up easily and do silly things.  An example is adding a repeating task to my task list.  A repeating task? Why is this an issue?


Google Tasks: Simple.
Too simple, for some.

I simplify this slightly, but in David Allen’s approach to task management, anything that is time-related should be put into a calendar.  Therefore, if I am allowed to set up a repeating task, this means I need to do something with a certain regularity, which further implies I must actually do it at some point in order for it to warrant the repetition which I have ascribed to it.

In ToodleDo and other “expert” task managers, the ability to manage tasks has advanced to the point where you can essentially control your calendar through your task manager.  This approach really suits some people but, to me, this essentially is the tasks-first, time-second approach.  It is truly a GTD-esque system and I have had a love/dislike affair with it for several years.  I have never “hated” ToodleDo – it’s a great system, but isn’t as integral with my working environment as I would like.

Why move?

To me, tasks should be lean and mean.  I don’t really want to spend my time managing them – I want to be doing them.  And various factors always weigh in that can be managed outside of my task list.  I become less efficient if I start duplicating events into tasks.Part of me loathes the traditional “Weekly Review” of the GTD system.  I have a daily review and the most important things are always the ones that get done – it’s a self-managing approach which I’m happy with and doesn’t require over-thinking.  Removing the opportunity to over-manage tasks is A Good ThingTM in my book.  All I want to do is store my tasks somewhere and interact with them quickly.  Using Tasks in Google will accomplish this.

Yes, but what about contexts, projects (folders), statuses & goals?!

GTDers rejoice! Toodle-
Do lets you live the dream!
In defiance of pure GTD-ism, here are my views on these three aspects:
  • Context
    In GTD, the context of a task is, broadly, how, when or where you might do it.  What I kept finding about my contexts, as I was setting them, were that they kept resembling more basic primary situations.  For example, I started with “shopping”, “online”, “errands”, “home”, “phone” and “work”.  Except, when I started looking more closely, these contexts could be whittled down – and needed to be, in order not to conflict with my Projects/Folders.”Errands” and “shopping”.. well, I would generally be out and about for both of these, so why not make them simply “out-and-about”?  This would mitigate the risk of not running an errand while out shopping.  Phone calls would typically be work-related, but not always – so I would either make them during work or in personal time.  Realising this, I started to see that all of my activities would be split, broadly, between work and personal time.  Therefore, if I was working, I would want to make work phone calls.  At home, I would want to catch up with my friends online.With always-connected capability (phone, internet, 3G, etc) my contexts eventually became two things: work or personal.  That’s it.  With a Google Apps for Business account (work) and a personal GMail account (personal), I can separate my work and personal tasks completely.
  • Projects/Folders
    My Folders (“Projects” in GTD parlance) in ToodleDo would typically resemble the types of task I needed to manage.  You could argue that this is the wrong way to manage tasks, and instead use Tags for this purpose.  While true, Tags are amorphous while Folders are structured and, in ToodleDo, Folders resemble the only way to aggregate tasks into suitably-managed “blocks”.My Folders are things like “cases” (support), “customer/project”, “finance”, “phonecalls” and “systems”.  These are unlikely to change as they closely match my general daily activities.  Google’s Tasks can accommodate this with top-level lists.  Within each list, I can have a task (with indented sub-tasks) which allows enough manageability without overcrowding my senses with due-dates, contexts and estimated duration.
  • Status
    This is a real easy one and probably the one thing I disagree with GTD about.  The overall status of my tasks is logical: either incomplete, or complete.  If I am waiting on somebody, I will already know this.  If I am doing my task, I will probably know this too!But what about if I wish to do my task “someday“?  Well, shocking as it may sound, but that’s how I view all my tasks.  They are things to be done, sooner rather than later, but someday is the best I can plan for.  And this is what it’s all about: planning effectively.  Therefore, to have a status of “planning” seems idiotic: unless I’m actually doing a thing, I’ll probably planning to do a thing!This is the key:  the status of a task in GTD could be mistaken for the status of a person – you.  If my status changes, that might mean my ability to do that task is deferred.  That doesn’t mean I won’t do it, or that the task somehow becomes like me and is also unable to do anything until another time (such as when I am well, or back from a holiday, etc).
  • Goals
    …. I include here as a passing reference.  One aspect of goal-setting is the ability in ToodleDo to track progress on tasks relative to goals set.  In this regard, Google’s Tasks is clearly inferior.  But managing goals can exist outside the context of a task management application and, I argue, it should.  If goals are important, one’s whole life should be managed into achieving them.

They said it couldn’t be done.

Well, actually, they didn’t really say that.  I did.  But it’s true – it couldn’t be done, easily, until now.

Here’s what you need:

  • A ToodleDo account (www.toodledo.com)
  • An Astrid account (www.astrid.com)
  • A GMail or Google Apps for Business account (www.gmail.com)
  • A smartphone capable of running Astrid’s mobile app, installed from your device’s play/app store.*

* I have only used this on Android 4.1 and have set up both of my Google accounts as sync accounts on my phone.  As always, your mileage may vary.

Here is the order of my approach – no warranties offered, it just worked for me:
  • Install the Astrid app on your smartphone.
  1. In the app, navigate to Settings   (see pic to the right)
  2. Select Sync & backup
  3. Click on Synchronize now
  4. Authorize the log-in using your destination Google account
  • Create or Log-in to your astrid account using your desktop web browser, as astrid.com
  • Still in the Astrid app on your phone, go back to the Sync & backup settings and select Astrid.comensure that you can log in using your astrid.com account credentials.
  • Run a sync on the phone (menu > Sync Now) – this will sync your two task lists (Astrid and Google).
  • Now, log in to ToodleDo in your desktop browser and navigate to Tools > Import / Export / Backup and select CSV Import / Export.  Choose to Export all incomplete tasks.    You can also export all completed tasks if you want, but there’s no point syncing them (IMHO).
  • Back at Astrid.com in your desktop browser, click on your “name menu” at the top-right of the page, then Import Tasks. (see above-right screenshot)
  • In the next page, use the drop-down to select ToodleDo.
  • Import your CSV backup of incomplete tasks from ToodleDo – this may take a couple of minutes.  Be patient!  NOTE: I saw a javascript error/alert when doing this, but my tasks still imported ok.
  • Back on the phone, tap “Sync now” again.
  • Voila!  Your original tasks are now in Google Tasks!

Working alone can be tiresome.  If you are your own boss, it can be pretty gruelling to keep tabs of your schedule, stay on top of development plans, keep up communications with friends, family, business contacts and your wider network.

Here are five tips that I find help me enormously on days where I work alone.

1. Structure your day

Decide on a routine and stick to it and don’t be tempted to “just do this” when it means overshooting your alloted time

2. Be mindful of your caffeine intake

It is very easy to keep piling up biscuits and gulping down pints of coffee, but this can have a deleterious effect on concentration and productivity

3. Get outside!

As simple as it sounds, taking just 30 minutes away from your screen at lunchtime can make the second half of your day as productive as the first

4. Speak to people

Being totally isolated and not having the benefit of human interaction can make the brain lethargic.  Stimulation by interaction – whether a phone call, or video chat, can help minimise this

5. Decide on your end time

If you are the type of person who likes to knock off 30 mins early, see if you can discipline yourself  to complete “on time”.  Or, if you tend to overshoot and work longer than you should, be firm.  Make your deadline real and stick to it.

I find that these simple rules help maintain a clear mind during both busy and less intense periods.

facebook engancha
facebook engancha (Photo credit: Wikipedia)

Oh dear.

Many bloggers and commentors have read Mark Cuban‘s recent blog about Facebook‘s edgerank story sorting algorithm.  One could argue that at the level of Cuban’s business, small problems become big problems quickly.  But, on Facebook as in most walks of life, being “large” does have some advantages.

One advantage is Facebook’s Page Insights.  Let’s take the smallest business.  In Facebook terms, it’s this:

  • a one person profile with no friends
  • one page owned/managed by that person with several likes
If you want to build up a following quickly, you need to build up some Likes.  Be Liked.  Or, at least, look like you’re liked.  You probably get the idea.  This is marketing, after all.
So, how about running a competition?  Provide an incentive for someone to come and “Like” you.  How about asking current customers (those who, presumably, like you anyway) to submit a review and hit “Like”.  Great.  
Except it’s not great, really.  To use Facebook’s Page Insights, you need 30 Likes.  Yes, it’s not a tall ask, but why?  The problems with Facebook for small business start with this innocent enough little idiom.  No, there should not be a 30-Like threshold to see who Like’d you.  There should be 1.
Facebook’s habit of making it hard to access and understand your own data, or data relating to you, stems from the misguided notion that building up more visible momentum in your brand’s page means you’re more like to find Facebook “sticky”, and consequently more important (vital, even) for the success of your on-line marketing.
Does Google Analytics insist that you have over 30 visitors per month to your site before it can be bothered to report this back?  
Enhanced by Zemanta

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.