Calendar interface in Nextcloud

The problem with purism

At heart, I’m a Linux guy.  For many tasks, I use Emacs (a popular editor among some developers due to its extensibility), with Orgmode as my primary means of managing tasks, recording time, jotting down notes and, at times, trying to manage my calendar.

But there were several problems with this. Firstly, the only mobile client to sync Orgmode files with reasonable reliability, was MobileOrg.  Sadly, this project has been discontinued for a while, and to my knowledge it hasn’t yet seen a superior successor.  In addition, Orgmode is a great calendar within Emacs, but it’s not so strong outside. And while MobileOrg was “ok”, it didn’t present information in a convenient, easily-interpreted way.

In short, having a text-only, Linux/Android-only solution, was awkward.

The compromising advantage

Part of the appeal of Orgmode and MobileOrg was being able to keep all data within one’s own infrastructure.  As one of MobileOrg’s features is to “sync files from an SSH server”, and Emacs has TRAMP for accessing network locations, this made it possible to get each end talking with the other, and the synchronisation was generally reliable.

But in some ways, using Emacs, Orgmode and MobileOrg – to achieve data security and ultimate privacy – is arguably a case of the tail wagging the dog.  Was this the only private-data solution? Probably not. Was it the most convenient?  Was Orgmode the right tool for many of life’s repeatable, short-lived events? Definitely not.

image of org-mode
org-mode in action: showing a list of links

Despite trying to use only free, libre & open source software to address this requirement, around 2016 it started becoming clear that simpler solutions existed – albeit involving proprietary software of some kind.  Certain diehards might scoff that, if some software only exists in proprietary form, it’s inherently evil and you must build a free/libre version. But such ideals are rarely achievable when your needs as a new parent and business owner outweigh most others.

As I pondered my motives, it became clear to me that controlling my data was more important to me than controlling the tools.

The next move

For years on Android, I used CalDav and CardDav syncing tools, which were proprietary plugins that presented calendar and contact “providers” to the OS.  These worked great, but finding equivalent staples on Linux was somewhat harder.  The time had arrived when I needed desktop access to calendar, task and contact management, that wasn’t based in an Office365 tenancy.

The right move here was to set up Nextcloud. On my small personal hosting box at DigitalOcean [discount referral link], I set up a virtual server to run Nextcloud.  Nextcloud provides calendar, tasks and contact databases that are conveniently accessible through CardDav & CalDav.

As I had to work on a Mac in order to test websites in Safari (which accounted for at least 9% of traffic, and often more), it was useful to have syncing of this data there too.  And this, unlike some of my earlier grumpiness with all things Mac, was actually a pleasant surprise: macOS actually had great support for CalDav and CardDav.

Conclusion

Account set-up in iOS
Setting up access to other services is a cinch in iOS.

Do I get the solution I need? Yes. Does it sync well? Yes. Am I happier? Yes.

Not only that, but the downside of Orgmode syncing was that it worked best if restricted to two-way communications. If you added a third or fourth client and tried syncing between all of them, it would quickly become a clusterfunk.

Is Apple the enemy?  Well, probably. But better the devil you know, sometimes. Due to the ease of synchronisation with tasks, contacts and calendar in macOS, I slowly warmed up to the idea of replacing my ageing Samsung Galaxy Note 4 with an iPhone. So I did.  And arguably, for this requirement, it was a good choice.

Does this mean I’m no longer a Linux guy? Oh no, not at all. I still have my ThinkPad T420S, which was a side-grade replacement for my chunky T420. I use it every day in my work as a Senior Systems Administrator, for one of the UK’s top universities. I still use Emacs and Orgmode as a daily driver for tasks and coding.

But at home, my wife and I share a calendar and contact list across Android and iOS, thanks to the support of industry standard protocols.

Controlling where the data is has served us pretty well.

Using Debian Wheezy, I found that trying to use Evolution as my task source for hamster-applet was not working.

I enabled Evolution as my source for tasks in Hamster. When executing hamster-time-tracker from the CLI, an error would appear in my terminal:

** (Time Tracker:14088): WARNING **: Failed to open calendar (type 1): Authentication required

I first thought that the problem was with hamster, that it was an outdated version. So I downloaded the source from github, re-built it and installed it on my system (after removing the old hamster). This didn’t help. But, as I had the source handy, I thought I’d take a look.

In the hamster-master/src/hamster directory is a file called external.py and, in that, this:

try:
import evolution
from evolution import ecal
except:
evolution = None

So, I know I have found the right area to start investigating this issue further.

For python applications to interface to Evolution, which is written in C, some interfacing software is required. This is installed generally in the form of the package “python-evolution” (http://packages.debian.org/wheezy/python-evolution). As shown at the top of that page, the source for this binary package is gnome-python-desktop (http://packages.debian.org/source/wheezy/gnome-python-desktop).

The next step was to search for the source package responsible for interfacing to Evolution’s calendar. I soon found this. From the Packages Debian page (packages.debian.org) you would click the Developer Information (PTS) link (http://packages.qa.debian.org/gnome-python-desktop). Once there, on the right hand side, click browse source code (http://sources.debian.net/src/gnome-python-desktop/2.32.0%2Bdfsg-3). You end up at a page listing folders containing source files. Simply click into evolution and then click on evo-calendar.c (http://sources.debian.net/src/gnome-python-desktop/2.32.0%2Bdfsg-3/evolution/evo-calendar.c).

I don’t profess to know programming in C, or even how to read much of it really, but you learn by doing – so let’s give it a go. Around lines 24-34, we see the declaration of what I believe is a structure:

#include “evo-calendar.h”

ECal *
evo_cal_source_open_source(const char *uri, ECalSourceType type)
{
ESourceList *sources = NULL;
ESource *source = NULL;
ECal *cal = NULL;
GError *gerror = NULL;

g_debug(“Opening calendar source uri: %s\n”, uri);

This looks like what we need – some code that is trying to open the calendar. It’s also including the header file, evo-calendar.h, which we may need to look at in a sec. So, the main purpose of this code is to open a calendar:

if (strcmp(uri, “default”)) {
if (!e_cal_get_sources(&sources, type, &gerror)) {
g_warning(“Unable to get sources for calendar (type %u): %s”,
type, gerror && gerror->message ? gerror->message : “None”);
g_clear_error(&gerror);
return NULL;
}

source = evo_environment_find_source(sources, uri);
if (!source) {
g_warning(“Unable to find source for calendar (type %u)”, type);
return NULL;
}

cal = e_cal_new(source, type);
if(!cal) {
g_warning(“Failed to create new calendar (type %u)”, type);
return NULL;
}

if(!e_cal_open(cal, FALSE, &gerror)) {
g_warning(“Failed to open calendar (type %u): %s”,
type, gerror && gerror->message? gerror->message : “None”);
g_object_unref(cal);
g_clear_error(&gerror);
return NULL;
}
} else {
if (!e_cal_open_default (&cal, type, NULL, NULL, &gerror)) {
g_warning(“Failed to open default calendar: %s”,
gerror && gerror->message ? gerror->message : “None”);
g_clear_error(&gerror);
return NULL;
}
}

return cal;

If you read closely, you’ll see that we have an IF statement, followed immediately by another IF statement:

if (strcmp(uri, “default”)) {
if (!e_cal_get_sources(&sources, type, &gerror)) {
g_warning(“Unable to get sources for calendar (type %u): %s”,

strcmp may be a string-compare function. Regardless, because of our error message in the terminal, cited previously, it’s fair to say that this strcmp is returning a TRUE. In other words, a basic test is conducted based on the URI that is being passed in to this function, and an error is being returned.

The error returned, “Failed to open calendar”, is a string within the C source code in this same file, at around line 57:

if(!e_cal_open(cal, FALSE, &gerror)) {
g_warning(“Failed to open calendar (type %u): %s”,
type, gerror && gerror->message? gerror->message : “None”);
g_object_unref(cal);
g_clear_error(&gerror);
return NULL;
}

This is the error message we are seeing! The (type %u) bit after the message is probably the return code (a general rule is that if the return code is 0, everything is ok, and any valyue other than 0 means there’s a problem)  and the  : %s bit is the string returned from the function trying to open the calendar, giving a reason why.

So, to reiterate our error message:

** (Time Tracker:14088): WARNING **: Failed to open calendar (type 1): Authentication required

The function e_cal_open() is returning this error code.  To understand this function more, and what’s happening in this code, we need to look at the source for this function and also understand what data we’re passing to it.

Firstly, our call to the function is this:

e_cal_open(cal, FALSE, &gerror)

We can come back to what we’re passing to this function in a moment.  Firstly, though, where is the e_cal_open function?  We need to find out how it works!

Remember earlier that our file evo-calendar.c has an “include” pointing to the file evo-calendar.h?  Well, that means “grab the file evo-calendar.h and make its resources available to me”.  Within evo-calendar.h, there is no e_cal_open() function, but there are other includes, including one pointing to libecal/e-cal.h.

On debian, lib-ecal is another package installed along with Evolution.  So, finding the file e-cal.h is as simple as using find or locate.  On my system, the complete path to the file is /usr/include/evolution-data-server-3.4/libecal/e-cal.h. Hurrah – let’s go searching that C for e_cal_open:

$ grep -i e_cal_open /usr/include/evolution-data-server-3.4/libecal/e-cal.h

gboolean e_cal_open (ECal *ecal, gboolean only_if_exists, GError **error);
void e_cal_open_async (ECal *ecal, gboolean only_if_exists);
gboolean    e_cal_open_default (ECal **ecal, ECalSourceType type, ECalAuthFunc func, gpointer data, GError **error);

The first one is the one we’re interested in at present: e_cal_open.

[ Sorry.  This is an incomplete post, published for completeness instead of binned.]

Spot the difference!
Given fair test conditions, everyone knows wired network connections are faster than wireless, right?  How about when your wired connection crawls along at 1/5 of the speed of your wireless connection?  What’s happening?Below are two CAT 5e Ethernet cables, of the type you’d typically use to connect a router to a modem, or perhaps your PC directly into your router instead of using WiFi.  You might connect up other network-capable devices in your home too, such as a PVR/HDR, Blu-ray player and even your TV.  In doing so, you may pick up an old Cat 5 cable “you had spare” to do the job.

Beware, that not all Cat5e is the same!
If you look closely below, you’ll see that the lower, grey cable is type 568A, whereas the upper, black cable is568B.  Ethernet cables come as UTP or STP (Unshielded or Shielded Twisted Pair), meaning that each pair of conductors (wires) inside the outer sheathing are twisted together.  This helps cancel noise and improve transmission.

The difference between A and B is in the way these twisted pairs are paired up.  If your router has N-Way negotiation on its network connections, it should be able to work around using the two different types of cable.  But on my router, with N-Way negotiation, this didn’t appear to be the case.

Testing this using speedtest.net with cable type A, I got a paltry 5Mb/s down and 4Mb/s up.  Over wireless, I got 20Mb/s down and 17Mb/up.  It turned out that my router can’t handle type A cables very well.  Using a type B, I got 44Mb/s down and 18Mb/s up.  More like it!

So the next time your network is running slowly, check your cabling.  Even if it’s a well-known brand (my type Acable is a Belkin Cat5e), it may be causing a drop in performance which is easily, and cheaply, corrected.
H/t +Bob Beattie 
#networking   #speedtest   #cat5e  

Show less

1

.. 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.

*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.

ThinkPad T420.  Shiny and new.

It is with incredible reserve that I discuss my new Lenovo ThinkPad T420, such is my excitement.  As a natural born geek, software developer and sysadmin, there is something about a ThinkPad which is “just right”.

The lure of a ThinkPad is unquestionable.  It’s the promise of your best bit of code ever.  It’s the idea that it’ll be with you for years; your faithful companion.  It’s the reassurance of industry-leading build quality and top-spec engineering, using high quality components.  But it’s more than that too.  It’s an identity, a bit like that of Apple users – but thankfully in more self-respecting way.  You have a ThinkPad, you join an elite.  It’s everything you want.

You want this so badly that it comes as a bit of a surprise when all is not quite what it seems.

Branded accessories – one of those indulgences.

Better the devil?

As Lenovo only offer such spiffing hardware bundled with a throwaway operating system, you must suffer the wasted hours and ridiculous horseplay that ensues from such choices being made for you.  We are all too familiar with this scenario… so, I’ll continue!

Here is my experience, abridged:

  • Unbox, connect battery, plug in power, switch on.  It switches itself off.  And then back on – phew! 
  • Windows 7 starts up and completes its install process.  You are prompted to answer a few questions along the way:

  • Do you wish to use Norton to protect your PC?  I choose No.  
  • It prompts again: “Are you really, really sure you don’t want to use Norton???”.  I really, really confirm that yes, I don’t want to use Norton, thanks all the same.  
  • Further into the installer, you are prompted to accept the Windows EULA (end user licence agreement).  At the same point, you are also prompted to accept the Lenovo warranty terms.  You cannot proceed if you choose only one.  I imagine that this is another Microsoft “initiative”, a bit like Restricted Boot, which attempts to force people (through fear, usually) into sticking with Windows.
  • Finally, it finishes setting up Win7 and loads up the desktop.  On the offchance that there is a warranty issue, I decide to make a backup using Windows Backup.  Unbelievably, the Windows partition (C drive) contains 26.39GB of data.  WHAT??!!  This is a freshly installed operating system.  How on earth can it consist of so much… bloat?!  There is also a system partition (1.6GB, of which 900MB or so is used) and a Lenovo recovery partition (17GB, of which 9GB is used).  So, I have 36GB of disk space used up for a fresh install of Win7, plus some Lenovo utilities and Google Chrome (installed by default – the only good software choice made by Lenovo so far).   Hesitantly, I begin the backup process to Verbatim DVD+R discs.
  • 3 hours later, now on the 4th disc, the back-up process fails.  The error given is unspecific.  I now have a collection of 4 shiny new drinks coasters.
  • I dig into the Lenovo software and find that I can install “Rescue and Recovery” software, presumably from the Lenovo recovery partition into Win7.  I install it, which takes about 4-5 mins on this core i7 2640 machine.
  • Oh, wait a sec, what’s that?  Some pop-up just appeared above the clock in the right hand corner.  Something about Norton doing something, was that?  Oh, it’s gone.  So, despite being really, really clear that I did NOT want Norton installed on my machine, er, there it is.  Installed on my machine.  Poor Lenovo, poor.  And it gets better.
  • Creating recovery media fails.  Classic.
  • I fire up R and R and find the option: Create Recovery Media.  This looks more promising.  I fire it up, stick in a DVD+R (still have 6 left, hopefully that’s enough..).  It starts off, “extracting files”.  And then stops, and fails.  Apparently, in this instance, I may be able to expect Lenovo to ship me out some recovery CDs.






  • Not to be

    So far, any reasonable, sane person would not feel very confident using Win7 on this machine.  The dream probably wouldn’t be shattered, but clearly the software configuration is dysfunctional, ignoring user preferences and showing some worrying reliability issues out of the box.

    Luckily, being part of an elite means that you don’t follow the masses.  The throwaway software, bundled with the machine, is designed for people who don’t, won’t or can’t think.  It’s also designed for those who blythely accept it, probably “because it’s safer”.  Well, luckily for Windows users it must be a lot safer now that Norton is installed, regardless of your wishes!  Phew!

    To be

    Fedora 16 live CD, running on this T420.

    The alternative, as always, is to not accept what you are given.  Instead, seek a better solution that you can feel confident in.  For this ThinkPad T420, the better solution is GNU/Linux, Fedora 16 flavour.

    Here is how easy Fedora is:

    • You download a live CD, burn it to disc and restart the computer.
    • The CD boots up into a “live desktop” (this doesn’t affect any data on the hard drive).
    • From the live desktop, you run software (e.g. Firefox) as if it were installed on your computer.  On the ThinkPad, all hardware is automatically recognised and usable immediately.
    • From the live desktop, you have the option to install this software to your hard disc.  How refreshing: choice.

    But don’t take my word for it, try it yourself.

    If, that is, you have the mind to.

    this week (wk 10)

    work

    • General
      •  Quick wins 🙂
    • CRM
      • System:
        • Complete populating Products/Quotes system
        • Complete virtual inventory
        • Remove email contacts (& from TB Address Book)
        • Fix web2lead form
      • Sales
        • compile charity list
        • Marketing/Intro letter to local .org.uk’s (in progress)
      • Configure e-mail marketing; send communications
    • Systems:
      • Update shared accounts to new limits
      • Update server software to latest stable
    • Projects
      • Ri**
        • Admin panel tasks
          • test – scripting
          • release
        • Checkout/PSP testing
      • Cl**
        • Complete template & get sign-off
        • Build site
      • Fa**
        • Convert template to CSS & hand back for approval
      • Wa**
        • Complete visual design, do CSS
    • [recurring] Organise
      • networking group:
        • training
        • social events
        • 1-2-1s
        • f/up referrals
        • changes to web site
        • contact prospective visitors
      • sales leads / prospects / meetings for next week
      • week in view
      • finances
        • Q1 administration

    life

    misc

    • Fix bike
    • Buy bike lock & lights
    • More stretching

    last week (wk 9)

    work

    • General
      • XHTML/CSS template conversion
      • CRM meeting with client
      • Hosting project planning
      • Transfer notes to TD
    • CRM
      • System:
      • Sales
        • compile charity list
        • Marketing/Intro letter to local .org.uk’s (in progress)
      • Install for customer
      • Configure e-mail marketing; send communications
    • Systems:
      • Update shared accounts to new limits
      • Update server software to latest stable
    • PHP
      • Admin panel tasks
        • test – scripting
        • release
      • Checkout/PSP testing 
      • IE6 layout compatibility testing
    • [recurring] Organise
      • networking group:
        • training
        • social events
        • 1-2-1s
        • f/up referrals
        • changes to web site
        • arrange visitors
      • sales leads / prospects / meetings for next week
      • week in view
      • finances

    life

    misc

    • Fix bike
    • Buy bike lock & lights
    • Order car tyres
    • Meal at friends
    • Birthday curry
    • Other birthday drinks

    this week (wk 9)

    work

    • General
    • XHTML/CSS template conversion
    • CRM meeting with client
    • Hosting project planning
    • Transfer notes to TD
  • CRM
    • System: 
  • Sales
    • compile charity list
    • Marketing/Intro letter to local .org.uk’s (in progress)
  • Install for customer
  • Configure e-mail marketing; send communications
  • Systems:
    • Update shared accounts to new limits
    • Update server software to latest stable
  • PHP 
    • Admin panel tasks
    • test – scripting
    • release
  • Checkout/PSP testing 
  • IE6 layout compatibility testing
  • [recurring] Organise
    • networking group:
    • training
    • social events
    • 1-2-1s 
    • f/up referrals
    • changes to web site
    • arrange visitors
  • sales leads / prospects / meetings for next week
  • week in view
  • finances
  • life

    misc

    • Fix bike
    • Buy bike lock & lights
    • Order car tyres
    • Meal at friends
    • Birthday curry
    • Other birthday drinks

    last week (wk 8)

    work

    • General
    • compile charity list
    • mail merge & post out to charities
  • CRM
    • System: 
  • Sales
    • Marketing/Intro letter to local .org.uk’s (in progress)
  • Install for customer
  • Configure e-mail marketing; send communications
  • Systems:
    • Update shared accounts to new limits
  • PHP 
    • Admin panel tasks
    • test – scripting
    • release
  • Checkout testing
  • [recurring] Organise
    • networking group training 
    • changes to web site
    • arrange visitors
    • sales leads / prospects / meetings for next week  

    life

    misc

    • Fix bike
    • Fix bed

    this week (wk 8)

    work

    • General
    • compile charity list
    • mail merge & post out to charities
  • CRM
    • System: 
  • Sales
    • Marketing/Intro letter to local .org.uk’s (in progress)
  • Install for customer
  • Configure e-mail marketing; send communications
  • Systems:
    • Update shared accounts to new limits
  • PHP 
    • Admin panel tasks
    • test – scripting
    • release
  • Checkout testing
  • [recurring] Organise
    • networking group training 
    • changes to web site
    • arrange visitors
    • sales leads / prospects / meetings for next week  

    life

    misc

    • Fix bike
    • Fix bed

    last week (wk 7)

    work

    • General
  • CRM
    • System: 
  • Sales
    • Marketing/Intro letter to local .org.uk’s (in progress)
  • Systems:
    • Update shared accounts to new limits
    • Check and update VS disk space
  • PHP 
    • Admin panel tasks
    • build – complete eCommerce
    • test
    • release
  • Checkout testing
  • [recurring] Organise
    • networking group training 
    • changes to web site
    • arrange visitors
    • sales leads / prospects / meetings for next week  

    life

    misc