Yes, I really could not think of a better title for this. 🙂

Recently I added a new drive, connected by USB, to a test server. It was for sharing with a virtual machine running on that server.

Chain of oops

When I connected the drive to the host, I decided to create a volume group and logical volume on it. This would have been fine, were it not that I then attempted to mount this logical volume in the host, rather than the guest.  The problem, as I later discovered, was that I’d created a volume group in the host, with the same name as a volume group in the guest.  Again, this would have been fine on its own, but the chain of errors was complete when I made the following next moves:

  • Shared the physical disk with the virtual machine
  • Activated the LVM volume group on the physical disk inside the virtual machine’s operating system (debian)

To its credit, LVM seemed to handle this quite well, and (if memory serves) merged my new logical volumes into one great volume group.

Identity crisis

Switching between different “hosts” (physical host and virtual guest) to edit logical volumes is not very clever, though.  The reason is that lvm, within an operating system with drives available at certain locations, will update those drives’ metadata where each drive is a physical disk that is assigned to a volume group.

Let me put this another way:  if you have /dev/sda1, /dev/sdb1 and /dev/sdc1 all as PVs (physical volumes) that belong to a VG (volume group), then making a change to the volume group – e.g. something simple like vgrename – will affect those three physical volume’s metadata.

Now, once you have finished doing this in the physical host and start playing around with the VG in your guest’s operating system, things aren’t going to look quite right.  If you exported /dev/sdc1 from the host to the guest, the guest might:

  • recognise the device at another location, such as /dev/sdb1
  • look at it with lvm and wonder where /dev/sda1 and /dev/sdc1 are…
  • let you edit this physical volume’s metadata (using LVM tools) in such a way that you cause further problems for yourself back in the physical host, if you planed to share it back there again.

The golden rules for an easy life, so far, are:

  • Don’t share volume groups and logical volumes between hypervisors and guests.
  • You can share a physical disk to a guest, but if you intend to use a logical volume on it within the guest, create it within the guest.  And use it only within the guest.
  • If you must manage and share logical volumes from the host to the guest, use NFS.

If you have already created a nightmare of “unknown” disks and missing PVs…

It’s not too difficult to remedy a tricky situation with messed up volume groups.  If you are absolutely, positively, 100% certain that you no longer require the missing physical volumes in your VG, then there are actually only three (or four) commands you need:

# lvm vgreduce --removemissing -f <volume group name>

This attempts to remove the missing PVs from your VG and writes an up-to-date config file in /etc/lvm/backup/.  If you inspect that file you’ll see a physical_volumes { } stanza which encompasses the physical volumes now remaining in your VG.

However, pay close attention to the status attribute of each PV.   You may also see the remaining entry has:

status = ["MISSING"]

If you then attempt a

# vgchange -ay <volume group name>

you may find that the VG will not become active and this file again contains several entries, related to the missing PVs that you thought you’d just removed.  The reason for this is that the remaining PV(s) have old meta-data which hasn’t been updated by LVM when you did that lvm vgreduce, earlier.  Fear not.

Issue:

# lvm vgextend --restoremissing <volume group name> /path/to/PV

e.g. /path/to/PV might be /dev/sdb1 – you’ll need to know this, no guesses 🙂

After this, inspect the backup config file that you looked at previously.  The status should have changed from “missing” to “allocatable”.  However, the missing PVs will still be present, so let’s get rid of them:

# lvm vgreduce --removemissing -f <volume group name>

Now take one more look at that config file.  It should just contain the PVs that are present and assigned to your VG.

Try activating the VG:

# vgchange -ay <volume group name>

1 logical volume(s) in volume group "<volume group name>" now active

If you’ve got this far, you’re basically on the home straight.  Simply mount the LV on the file system and away you go!

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

Seems that my clever little spelling ideas have fallen foul of the English language yet again!

I believed that a double-S in a word (like “hiss“) always requires a soft “ssss“, whereas a single-S is harder – a bit like “szszsz“.  But no.  That would be too easy.

Take “issue” (I do, quite often – but anyway..).  You could say “i-shu” or “iss-yu“.  But what about “dissolve” (“dizz-olve“) – that conflicts with my rule, although “dissolution” (“diss-o-lu-shun“) doesn’t.

Disappear ?  Soft “ssss” – again, a conflict.  Occasion?

View from the Admiralty Buildings, Grenwich
View from the Admiralty Buildings, Greenwich (22 Mar 2015)

Despite it’s controversial history and, some might argue, “dodgy” financial underpinning, I can’t help but admire Greenwich.  It’s a part of London relatively untouched by the progress of time; where the city-at-large surrounding it has left it be, as a kind of comforting “nod” back to its imperial glory.

These days, of course, it’s not the done thing to refer to the British Empire as glorious.  Oh no, that’s far, far too politically incorrect.  Instead, we must loosely use in reference words such as “enslaving”, “pillaging”, “disempowering”  and, simply, “colonising”.

Such are the mists of time, allowing us  now to moralise on a spirit of adventure and exploration, taking for granted that the world is now known, the risk of travel is small and our collective enlightenment a “given”.

Yet I pause for thought when considering the next leap into the unknown – space, and what harvests me may assume ours to take and do with as we please.

If ever there was a time to unify people towards common goals, for the betterment of us all, now is it.

I’ve decided I need to dance more in my life.  Being a techy-programmer-web_developing-CEO-type, there is so little time anyway.  With the remainder, I usually indulge in sci-fi, walking the dog, eating… and occasionally sleeping too.  Yet, being almost an artificial intelligence by any reckoning, I can tell you that Androids are too busy to dream.

Well, this has to stop!  No more sleeping!  Only raving.  It’s essential.

A trip to Miami is essential too.  After all, you can’t be #superhuman all the time!

#trancenation

I am the first to admit that I am a product of the old guard.  What do I mean by this?  Well, when I started running a business in 2001, when the internet provided unbridled commercial opportunities and there was a scarcity of talent to develop for them, there was a certain modus operandi: keep your cards close to your chest.  Shedding this behavioural axiom feels like the equivalent of standing up naked, in front of a live TV audience, promising them you really are still going to the gym and it’s all a work in progress.  You can expect mixed reactions.

But in the last thirteen years, a lot has changed.  We have seen the meteoric rise of internet-enabled devices and the framework, especially via social networking, for people to express themselves more freely.  In fact, not just “more” freely, but FREELY, period.  With this certain stream-of-consciousness we have also seen how businesses, once the “big blue”s of this world – hidden behind glass and steel, dictating the new world order – have become much more bottom-up, and even grassroots in appearance, if not in total nature.

I would argue that smaller teams in larger businesses will become more fashionable, because they tend to get things done more efficiently.  The challenge has become less about the big wins, and more about how the small, inter-connected wins can be made to work well together.  This, after all, was the original spirit of Web 2.0 (remember that?!).  What Web 2.0 represented was the idea that instead of developing a monolithic web site or business platform which covered all functionality, you could actually interact with other sites and use them too.  And they could use you and your services/data.

This is very much the case today.  How many web sites do you visit where you can log in using credentials from another service/site? This flexibility and openness is not necessarily less secure, though some might argue against global logins – and there are good reasons to be cautious of this.

But, authentication is one of many possible services available on the web, and exploring this loosely-coupled architecture is becomming faster and easier than ever. Through a much greater spirit of discovery, we are bearing witness to an age of more open experimentation, more open discussion, and more open engagement amongst interested parties.  Clients, friends, rivals, competitors.   Finally, we can also celebrate the “failures” too.  The increasingly scientific nature of modern thinking allows egos to be left at the door, and the excitement and joy of new adventures in technology to be more fully appreciated.

Many of us are into technology because of this excitement and enlightenment, myself included.  It’s childlike and, IMHO, a desirable quality in a person.  When you accept you are but one person, you accept a universal truth shared by everyone – and in so doing, acknowledge that while your time is precious, sharing whatever you can from it is a great investment.

On that basis, I am intending to up my blogging rate ten-fold, to try to document the events of my days and weeks and the challenges I face in them.  My experiment will be to see if in doing this – i.e. openly blogging much more of what’s going on in my microbusiness, there is a positive effect on people around, the interest in my business services and, ultimately I suppose, a positive effect on me.

And I will be open about the result.  Stay tuned!

My philosophy behind this review is not just to compare the phone directly with other Android or iOS handsets, but also to focus on what it offers, independently of those other platforms.

In other words, for what this phone and OS provide, how well do they do it..?

Unboxing & initial impressions

I ordered through ZTE’s UK-based ebay site.  The phone was dispatched via the 48hr Royal Mail delivery service, which is where £5 of my £38.99 spend was allocated.  This was pleasing and does confer a certain progressive philosophy of ZTE.  It also means the handset + accessories cost only £33.99 including UK VAT (sales tax), which I find astonishing.

The packaging was robust and served its purpose.  After removing the colourful box from its mail bag, and opening it up, there I was greeted with the phone in somewhat cheapish-looking celophane.  Nevertheless, unwrapping indeed exposed the Open C as expected – not bright orange or blue, but dark and moody black – the way I like my phones!

Although I was expecting the handset to feel cheap, I was actually pleasantly surprised.  For its price, it feels very reasonable.  The materials – including the screen – naturally are plastic, but given the feel of the plastic one expects from a stock Samsung Galaxy S4 (that is, not premium!), the Open C had a feel to it more like that of a pebble, with its soft-touch almost rubberised plastic rear cover.

Size comparison: Open C vs Galaxy S4
Size comparison: Open C (left) vs Galaxy S4 (right)

Attractive design features include the recessed ear speaker, which sits snuggly atop of the screen, and the subtle, angular curvature towards the base of the phone, which meets the centred microUSB socket smoothly and seamlessly.  An iPhone 4 user I handed the device to commented on how nice in the hand it felt, and I must agree – it’s very comfortable to hold.

The compact charger and USB cable are standard fare, but the included earphones/headset are distinctly “cheap”.  In this case, you get what you pay for, but this is a minor thing.

Recessed ear speaker
The recessed ear speaker at the top of the screen is attractively styled.

Powering on

Start-up and set-up

Taking the rear cover off the phone revealed the battery compartment, SIM slot and microSD slot.  The battery was a very snug fit and the SIM slipped into the slot just fine.  The microSD card slot wasn’t quite as reassuring, and I felt the need to double-check I’d inserted the card far enough.   There are no spring-clip card slots on this phone; a clear cost-saver.  But cover back on, this was no issue, and the cover feels integral to the phone once back in place.

The software set-up feature of the phone has been well covered elsewhere, so I won’t go into that here.  One annoyance was that the phone couldn’t pick up my local time from any network I connected to, which I found unusual and slightly inconvenient.  The UI to change date and time was slightly unintuitive but the task was soon accomplished.

Boot-up and running through this “wizard” was relatively quick and the phone was ready to use within a few minutes.

Getting contacts into the phone

The ThunderSync Add-On for Thunderbird can export your addressbook as VCard files.  Although on first attempt these files were not recognised to import into the phonebook, trying again – once the phone’s set-up process had completed – yielded success.  241 VCard contacts imported perfectly.

The Import from SIM card function worked perfectly, as did the Import from Facebook feature.  I didn’t try the Import from GMail feature, as I don’t store contacts there.

Considering these features are what the phone offers, I would say that it manages these tasks reasonably well, although the out-of-the-box experience was not quite as smooth as possible.  It is a shame that CardDAV support wasn’t baked in too, but at least this is work in progress.

Managing contacts

A feature recognised by some Android users, and as a further plus, the Link Contacts feature allows you link an imported phonebook contact with a social media contact.  In addition, the Find duplicate contacts feature allows you to easily scour the phonebook and delete or merge any identified duplicate contact records, as desired.

In fairly quick time, I was up and running with all my contacts in the address book.

Importing Media

Getting music, videos and photos on to the device is painless, thanks to its straightforward USB Mass Storage support.  As an Android and Linux user, I was appalled when this transfer protocol was eschewed in favour of MTP on my Galaxy S4 – a “feature” of Jellybean+.

But back to the Open C.  Controlling whether the phone’s memory or the storage card is exposed to the USB host (i.e. the connected computer) was achieved through the settings on the phone.   Once connected, media transfers were effortless.

After disconnecting, simply opening up the Music player, Video player or Gallery displayed my media more or less as expected, although a 1080p mp4 video shot on the aforementioned S4 and transferred over, failed to materialise in the Video player’s file list.

Somewhat annoyingly, album art from transferred music also appears in the gallery, which seems a bit strange.  To make matters worse, this same album art was not visible in the Music player for the albums to which it corresponded.  Instead, I was greeted with placeholder patterns.  I’m not sure how this problem is avoided, but it’s far from perfect.

In use: the User Interface & Experience

In software development, an oft-accepted maxim is that your version 1 release is basically a proof of concept.  Version 2 is where you throw in lots of features, but version 3 is where it all starts knitting together well.

Given that this handset runs version 1.3, the FirefoxOS experience is acceptable.  It won’t set the world on fire (no pun intended), but the key features are here – some better than others.

Performance

Coming from a Galaxy S4, I was pleased with how responsive the Open C is.  On the Samsung, Touchwiz (the user interface layer on top of Android) does a wonderful job of slowing things down and adding a “treacle factor”, generally incurring an extra second or so for each major application switch.

Surprisingly, the Open C felt more nimble and less weighed-down than the S4 once I had opened 8-10 different apps on each.  Granted, the apps on the S4 are more feature-rich,  running on a more feature-rich operating system – and I do have quite a number of them.  But it’s more powerful hardware, you always pay by way of a performance penalty for complexity in software.

On the Open C, swiping across from one home screen to another was fluid and unencumbered, and opening apps was reassuringly nippy too.  Nothing felt laggy and the biggest challenge was getting used to not having a back button.

General OS Features

There have been many comparisons with Android here and elsewhere, but I would argue that this is a testament to the capability of FirefoxOS.   The Settings area provides a reasonable number of options, from power-saving, to connectivity, SIM management and security.

Unlike Android, I didn’t feel as though options we so nested to the nth degree that I couldn’t find what I needed, quickly.  This was refreshing and gave me pause for thought over just how large and burdened Android is now by its own capability.   This is, after all, a phone and Mozilla have fundamentally recognised this.

Sadly, one omission is Firefox Sync.  I was surprised that, being a FirefoxOS device, it doesn’t support Sync with Mozilla’s servers out-of-the-box.  What a shame – this will be inconvenient to some, and argues in favour of using Firefox (the browser) on Android, instead.

Another lamentable omission is a file browser.  I couldn’t see any way to browse the local file system.  Hopefully this will arrive in version 2 or beyond.

Where it does pick up the bat somewhat is with the Notes app, which seemingly offers Evernote syncing.  Although I’m not an Evernote fan, I know that many people are, and this may sway some opinions.  Along with CalDAV calendar sync, it goes some way towards being “cloud-friendly”, which is a nice touch for a browser-based OS… 😉

Hardware

The screen

The screen is where I have seen some criticism being levelled.  Let’s clear this up: having become accustomed one of the highest-resolution (441dpi), most saturated colour displays (AMOLED) on the market, I am not offended at all by the Open C’s screen.  In fact, quite the opposite.  I was surprised how well text seemed to render on it and colour saturation seems average, which in my book is actually a good thing (not too saturated or too pale).  At a claimed 233dpi, the resolution was workable, and the viewing angles from sides and from underneath were ok too.  Viewing the screen from the phone’s top, downwards, was where it all went to hell though – everything neg’d out quite quickly.

Position of Open C's microphone
The phone’s microphone positioning.  Note the capacitive home-button.  The general styling is also vaguely reminiscent of early HTC Android phones.

Sound quality

An often-overlooked area of smartphones is sound quality, via the headphone jack.  Having transferred a random selection of OGG music files, I selected John Williams’ Jurassic Park theme.  During listening I was very surprised that the Open C managed to dig up elements of a double bass (string instrument) in the performance.  By comparison, the S4 couldn’t dredge up this particular detail.

Unfortunately, the rest of the musical quality was middling at best – brass sounded honky, strings somewhat electric and the combination of these plus percussion was a bit brash and ringing.  When listening to the same track on the S4, I was greeted with a much purer, deeper soundstage with individual instruments identifiable and well placed.  Timbre on the S4 was markedly improved over the Open C and generally the listening experience was superior.  But still, it didn’t give me that low bass…

Whether the Firefox OS’s codec is sufficiently different to Android or whether this is hardware is, unfortunately, guess work.  For general listening, say on the train for an hour, the Open C will be plenty good enough.  It’s just not the last word in subtlety.

Battery life

The SIM I use for testing doesn’t have a data allowance, so I have switched off mobile data.  This will have had a positive effect on battery life, but a negative effect on a fair test.

Still, despite not using the phone as heavily as normal in that regard, during testing and initial set up the screen has been on a fair bit, with WiFi connected at all times.  I have seen nearly two days’ usage before needing its first re-charge, so that is encouraging.  I was surprised, too, that after a night on flight-mode, the battery charge level had not shifted a dime, from 66%.

One minor issue though, is that at 10% battery remaining, the phone suddenly died and got stuck in a reboot cycle.   This suggests the battery life/remaining isn’t possibly quite as accurate as it could be, although it could be argued that on its first charge, FirefoxOS hadn’t accumulated enough battery metrics to accurately predict exhaustion.

Camera

Image of back of Open C, showing camera.
The Open C’s camera

This is a tricky area to judge.  This is a £34 phone.  It’s difficult to buy a decent point-and-shoot camera for that price, so how does one judge this fairly?

The 3.2MP sensor is mounted on the back of the phone near the top, in the customary location.  There is no flash or manual/autofocus, and video recording is a rather old-school 352×288@15fps (according to GSMArena).  My testing seemed to concur with that.  Photos are stored as JPEGs, unless edited (in which case, for some reason they are then stored as PNGs), and videos as 3GP files.

In low-light settings, you can only expect average quality at best.  Still, to the naked eye, colour accuracy could have been a lot worse.

The included software does allow some recolouring to help adjust pictures, and the Aviary app is easy to download and install, for more comprehensive off-line photo editing.

Hardware Buttons

Finally, the buttons themselves.  In general use they don’t feel flimsy and give sufficient feedback.  But I do question the positioning of the volume rocker and wonder if it is on the wrong side?  I tend to be ambidextrous when using my phone – it goes to either ear indiscriminately.  I suppose the volume rocker has to be on one side – the right hand side it is!

Summary

Considering this is a £34 phone…

  • Build and general quality is better than expected
  • Setting up is straightforward – although a couple of caveats:
    • Importing VCard contacts from microSD card failed on first attempt, but then worked
    • Plugging microUSB cable into phone didn’t have that reassuring “click”, but connection seems secure enough. (NOTE: this may have been the cable I was using; another cable did seem more secure)
  • Size and thickness is very reasonable – and better than I was led to believe on some blogs/vlogs.  Phone is not too bulky and has a reassuring thickness when in the hand.
  • As a media device it’s fairly average, but as a phone which you won’t care about scratching up and little and using to the full, it’s great.   At the price, you can forget about protective cases – just chuck it in a bag or your pocket and get on with life!

Final words

Comparing to flagship smartphones is unwarranted.  It is not a flagship but an entry-level phone – so comparisons should be with Android phones at same price!

I was pleasantly surprised by the Open C.  The phone hardware, at this price, is exceptionally good value.  No, unless you’re incredibly limber it will not allow you to post selfies to Facebook (with no front-facing camera present), but is this a major thing?

Likewise, it’s a fairly “lightweight” experience all round: apps are less functional than their Android or iOS brethren, and the OS is less “tweakable”.  But as a result, it’s swift and responsive in use, and the vast majority of software included is stable and acceptable.

As an entry-level smartphone, for £34 + £5 p&p, I find it hard to fault.  If it weren’t for the stellar camera on my S4, I might consider switching to it.


 

A more in-depth review of FirefoxOS plus full specs on the Open C can be found at GSMArena.

When making my morning brew, I started pondering how to make it more interesting.  Sure, you can add flavour (and waistline) “enhancements” like cream, sugar, maybe some vanilla…  But such unimaginativeness doesn’t last long.

Image courtesy of oddee.com. You can
also buy coffee from the dark side.

What’s needed is a whole new coffee experience. 

Scouring the web for new things to do often turns up very interesting results.  For instance, there’s a whole web site dedicated to Putting Weird Things in Coffee.   Some of those weird things include cheese, meat (!) and even black pudding.  The fascination with meat is prevalent elsewhere, too. Hmm.

But you don’t need to go so far to enhance the flavour of coffee.  One simple food-enhacing staple – salt – has also been used extensively and blogged about for some time.  Clearly, it might be worth trying.

Spices, of course, have provided that added “something” to a good coffee for many years.  Adding spice instead of sugar is also a neat dietary trick for those careful watching calorie consumption.

Taking it up a level

What you put into coffee is only half of the story though.  How much caffeine you ingest daily is another thing.  Curiously, at the time of writing, 66 people “Like” this Facebook page entitled “Extreme Coffee Drinking“, which has no content and not even a picture.  As one quote says, “Coffee: do stupid things more quickly and with more energy“.

Extreme coffee drinking seems to be a sport amongst some.  It’s not merely a question of having multiple cups per day.  Whether the evidence is conclusive that lots of coffee each day can kill you, is certainly still to be debated.

Things can get a bit extreme, though.  Death Wish Coffee, as reported here, promotes extreme levels of caffeine as its USP.  A step too far?  Maybe.  But, it can hardly be contested that we love coffee, and our interest in all things joe-related, together with its growth in the West, continues unabated.  Coffee is recognised as a personal experience, so the growth of single cup products may indicate that social coffee drinking is diminishing in favour of a more insular, smart-phone focused experience.

Taking it too far?

While at university, I recall many a lovely coffee in what is now claimed to be the world’s oldest internet cafe – CB1 (Google Maps link).  I’m not sure about the validity of this claim, but there’s no disputing the charm of a good coffee shop.

But these days, though it’s not all academia, with bustling coffee shops populated by artisans, guarded closely by the intelligentsia.  Caffeine addiction and dependency/withdrawal symptoms are a real problem for some people.  Luckily, the web has many suggestions to combat this.  I suppose one could make a visit to an internet cafe and research this on his or her own…

Perhaps indulging in a caffeine kick is not the best long term policy, but it certainly starts the day well.