Thursday, August 2, 2012

Lenovo Ideapad K1 - Icecream Sandwich options

Well, this is a change.

Lenovo finally came out with the long sought after Icecream Sandwich update for their K1 tablet last week, and what appeared at first to be a major disappointment turned out to contain a major, and extremely positive, surprise.

Let's quickly get the negatives out of the way. You are very, very, very, unlikely to want their official update. Their official update is missing the Google Play Store. This wasn't originally the plan, and Lenovo intended to include it, but found their plans to get an ICS update out there quickly resulted in a version of Android that wasn't compliant with Google's standards.

Fortunately, while Google is strict about official, commercial, versions of Android and the Google Play Store, they're more forgiving when it comes to open source, third party, distributions. And that kinda brings me onto the good point: Lenovo released the source code to their version of Icecream Sandwich - and opened the bootloader while they were at it.

Essentially, the K1 is now an open tablet. And already the number of versions of ICS has blossomed from one limited version to FIVE rather good versions. And it seems probable that, thanks to Lenovo's decision to work with, rather than against, the Open Source Android community, the K1 may be one of the first tablets out there with Jellybean.

Most of the work is down to a programmer called Kreg Hanning, a regular on Lenovo's forums as well as a contributor to Rootzwiki and XDA Developers. He's done an awesome job analyzing the Lenovo code and combining it with the Google software and official Android releases, and produced four new versions of Android ICS. These are:

  • A simple distribution of the official Lenovo build but with the Google Play Store added.
  • A version of the above with "root" access for users needing advanced functionality.
  • A version of AOSP - Google's official open source distribution of Android - with the ClockworkMod recovery (I'm simplifying it a little, but essentially CWM is an OS update mechanism ) and Lenovo's drivers.
  • A version of the above with "root" access for users needing advanced functionality.
And Kreg Hanning's also working on a Jellybean port.

You can get the first two here, and the others here. All four can be installed using either Windows or GNU/Linux and come with the necessary tools to do so.

There are some problems you probably need to be aware of. On my version, at least, camera access seems to be dodgy. And most users are having problems with many apps on the Google Play store - including apps that worked fine under Honeycomb - being marked as "incompatible" with the various ICS distributions. Interestingly, it seems to be an entirely different set of apps - the versions derived from the official Lenovo distribution will not run Google Maps, and the versions derived from AOSP will not run Google Play Music, and none of them will run Chrome.

So... which one do you want to run? Well, it's fairly easy:

  • If you're reliant on your existing apps, wait. There's no rush and there really are problems with the compatibility thing.
  • If you want to make the jump, and you know what root is, enough to know to reject it if an app asks for it for no reason, get the AOSP version with root. Otherwise get the AOSP version without it.
Why the AOSP version? Well:
  • All five versions will wipe your tablet. Completely. None of your old apps or data will survive. However, ClockworkMod Recovery in the AOSP versions will ensure you at least keep your data (and sometimes, if rarely, your apps) between updates in the future.
  • The AOSP versions seem to be slightly more compatible with apps in the Google Play Store.
I'll keep writing about this here if nobody objects... ;-)

Killing a project

One of the nerdy things I'm fairly interested in is computer security, and I've been banging on about the need to get people to understand, and in the case of Ubuntu, implement domain management as part of an overall security system for IPv6 networks. The reason is fairly easy to explain: it's an established model that is going to become extremely necessary when every computer can "see" every other computer. You're going to need to implement IPSec - encrypted connections between identifiable computers - in that environment, and without a domain system, IPSec is hard.

One of the projects I was working on was a "Download, install, and forget about it" system I called "On my 6". The idea was that you'd be able to install a simple tool on each PC that would do the hard work of configuring and setting up the security aspect, and use a common login system across all the computers you use.

There were, however, one or two problems with the approach:
  • My personal favorite was that it was a "security in the cloud" system, which seemed inherently... well, just wrong! I mean, I trust me, but why would a stranger do so? And while I could see people using it anyway there was always reasons to be concerned anyway. If a law enforcement group, or goodness help me, one of the more extreme copyright holder rights enforcement organizations, came at me with a warrant to force me to help them hack into someone's system, could I say no?
  • A more traditional problem: feature creep. Do we limit this "common logon" to just letting users use network shares on each other's PCs? Or do we, say, add email, and instant messaging, and voice over IP, and...? It's a more legitimate question than you might at first think - all those features do require authentication, they're all cases where computers need to identify one another and the users of those computers.
  • Explaining it - the marketing of the site needed to explain how this would actually be helpful. I can see how it's helpful, but unless you're using it it probably looks like nerdy mumbo-jumbo, and probably makes it look more complicated than not using it, even though, actually, the idea is to make things less complicated.
Microsoft's Windows 8 appears to have features that pretty much seal On My 6's fate - the operating system already comes with the ability to log in to a PC via a cloud based identity. Either they've implemented, for the most popular OS on the planet, the system I was working on, or they've made it very difficult for me to do so in a way that doesn't make things even more confusing, but either way I think they've killed it!

So... time to think of something else.

Saturday, July 21, 2012

Galaxy Nexus with Jellybean

I've been hesitant to recommend the phone I have for a fairly major reason which I'll come to in a moment, but I'm going to give a cautious thumbs up to it now that I've updated my Galaxy Nexus to Jellybean (Android 4.1.)

Here's the deal. The Galaxy Nexus is a "pure" Google phone, which means that it runs a version of Android that gives you what Google considers to be an ideal Android experience, or at least as close as possible as Google can manage.

The GN is a deceptively simple device with three buttons - Volume up/down, and Power on/off - together with the touchscreen itself. There's a headphone jack, and a micro USB port (that can also serve as an HDMI out.) The screen is a totally beautiful 720p (1280x720) affair with excellent color resolution, and there's front and back cameras. 

Why only three buttons? Well, since 3.0, Android tried to move to a buttonless user interface. The functions of the older Home, Back, and Menu keys has been moved to icons that are semi-permanently on-screen. I'm not sure whether this is a great idea in practice, but Google probably wants to simplify the hardware Android runs on, and improve the look and feel of Android devices at the same time. Me, I personally would like to see a hardware "End call" button, so reducing the number of buttons seems like a retrograde step, but the buttons being removed aren't that important.

Jellybean? Love it. While the jump from Honeycomb to ICS wasn't as dramatic as I'd read it would be, ICS to Jellybean is a huge step. It's much faster (or at least slicker), there's some great new functionality, such as Google Now, which attempts to provide constant relevant information (from weather forecasts to driving directions and times) without the user needing to ask for it. The Notifications bar is much more useful, providing more information (such as summaries of received emails) than simply one line notification counts.

The camera UI has been completely revamped and it now feels much more intuitive and much less clumsy than previous UIs. The GN was already good when it came to taking pictures, they're almost instant. You can easily take a lot of photos in quick succession, almost by accident, and you can swipe left to get the photo you just took. It's easier to see the improvement if you use the phone than it is to understand from the description!

Essentially the impression I get is that real thought went into Jellybean from the point of view of asking "How can we make this more helpful" rather than a simple "Let's add a feature that'll be hidden in some app somewhere" approach as might have been done in the past.

So... what are the downsides? Well, I have one big one, and two smaller problems.

Minor problem: No SD card slot. None. All the memory is on the phone. If you reset the phone, you wipe the "SD card" equivalent (something that doesn't happen on a phone with a removable card.)

Less minor, important to about 50% of the population: No keyboard. I'm sorry, but while on-screen keyboards are becoming excellent, there are still times I find myself pining for a real pull out thing, one where if you press a key, that's the key that'll register, not the one next to it, and not one that some software keyboard thinks you meant to type.

Really important: OK, here it is, the big reason I didn't want to recommend this phone at first, and still the issue that makes me wary of giving it a full recommendation: the battery is awful. Utterly abysmal. How bad is it? Try TEN HOURS with moderate usage. Not over the top usage. Just, say, 15 minutes of calls, the web for ten minutes during lunch, and occasionally checking emails or text messages.

It's terrible. Reportedly when one Google exec was questioned about the battery, he admitted to carrying a spare. Why, Google, would you bless this design when you know damn well that the battery life is this bad?

My solution to this is to buy a new battery. I bought the QCell Samsung Galaxy Nexus GSM i9250 3850mAh Extended Battery (sponsored link) which means the phone can last just over a day with moderate usage without running out of juice. Amazon lists a range of extended life batteries, all I can tell you about this one is that it works. It does, however, require its own battery cover, which adds a small bulge to the back of the phone.

Even this battery didn't quite last the day when my daughter was born. After a lot of calls and quite a few photos, the battery was close to dead by early evening. Fortunately I took a charger...

So, a qualified thumbs up. The battery thing is important. Get a long life one when you order the phone. Otherwise you'll probably hate it.

Thursday, July 5, 2012

Lenovo Ideapad K1 Ice Cream Sandwich update

Update: 3rd August:

I've put together an article explaining what's available now here.

Update: 30th July

Lenovo has finally released ICS:
  • The update does not include the Google Android app suite. Most importantly it lacks Google Play Store.
  • Lenovo is providing full source. They know the update isn't what they'd want it to be, and they're helping third party developers fix the issues by doing this.
  • Lenovo is highlighting a third party modification of the official release that does include the missing Google apps in their forums. This can be installed under Windows or GNU/Linux.

Original post follows:

I've written a few times about the K1 tablet, and I thought it worth updating the blog on the Ice Cream Sandwich situation with regard to that tablet.

Lenovo has said on several occasions, starting last year, that the K1 would be updated to ICS, and many buyers bought the tablet expecting that update. The K1 ships with Honeycomb, which is best described as a beta for ICS, rather than a finished, polished, version of Android.

The latest news is this. After promising an ICS for the middle of last month (June 2012), the update has stalled for a variety of reasons. According to a Lenovo customer service representative who's proven largely reliable on this, the situation is this:
  • Lenovo still intends to produce the update
  • Lenovo was apparently unaware that it wouldn't be able to bundle the critical Google tools (access to the Market/Google Play, etc) unless it obeyed certain restrictions, which weren't in the original plan. Because this is important, Lenovo is delaying the update until the issue is resolved.
  • The update will be "bare bones". This means Lenovo's customizations will not be bundled, and nor will the free apps. This might actually be a selling point for most Android users.
  • The update, as proposed, will require connecting the tablet to a PC running Windows. No method to update the tablet on a Mac, Ubuntu PC, or on its own, will be provided.
  • There is no ETA at this point.
In the mean time, unsupported third party ports of the alphas of CyanogenMod 9 are available. There are issues with the hardware support in this version of ICS, and it appears development has stalled because of the expectation that Lenovo is going to come out with an official ICS update "real soon now".

Tuesday, June 19, 2012

On the Surface, a good idea from Microsoft

Microsoft has announced a new tablet, the Surface. It's a powerful 10" tablet that will run Windows RT - a combination of Windows 8 and Office, recompiled to run on the ARM CPU, a processor used in most tablets.

What makes it interesting right now is that Microsoft has given it dual surface input. The usual touchscreen has been augmented by a touch sensitive panel in the lid, which unlike glass has a certain amount of tactile feedback. The panel can be used as a keyboard, amongst other things.

A lot of commentary has focussed on why Microsoft would want to produce its own tablet. My thought is that this type of innovation is exactly why. Until I bought a case with a keyboard for my Lenovo K1, for example, I hated using my tablet, and considered it a toy. Right now, it's still a toy, but solely because the software available isn't terribly good.

Without Microsoft actually coming out and saying "This is how we think a tablet should work", the reality is that Windows RT would be pre-installed on a lot of iPad type devices. Users would hate it - the touted copy of Office feature would be horrible to use on a touchscreen, and the "tablet side" of RT wouldn't be enough to sell the system against something like the iPad or a generic ICS Android device.

I haven't used the Surface, but I look forward to trying it out. If Surface is designed properly, and if Microsoft can get the marketing right, they may well have the world's first compelling tablet.

Thursday, June 14, 2012

Apple's hissy fit: probably a bad thing

The take-home for a lot of commentators after Apple's recent WWDC was that Steve Job's threat to "go thermonuclear" against Google has finally come to pass. Aside from the sniping against Apple's competitors, the Apple has announced a replacement for the Google Maps app. Siri is being positioned as an actual search engine, rather than a user interface, and Tim Cook has made a number of comments disparaging the mobile web, as opposed to the use of apps.

For the Apple faithful, this makes sense. The story goes that Eric Schmidt, then Google CEO and Apple board member, stole the plans for the iPhone and came up with Android as a way to compete with Apple. Android phones, this version of history states, are nothing more than bad clones of the iPhone.

This is, of course, utter bunk. Google was working on Android long before the iPhone was developed (remember the iPhone wasn't originally intended to be a phone.) The iPhone wasn't some new invention made in complete isolation, but built upon the ideas and concepts that PDAs and smartphones had implemented long before it came on the scene. What the iPhone introduced was, essentially, an optimized user interface that required the use of a finger rather than buttons or a stylus, and that was it. And while Google merged that concept (though not the implementation of that concept) with its existing Android project - until then, heavily Blackberry influenced, there's really nothing else in Android that owes anything to the design of the iPhone.

Moreover, Google helped build the iPhone, which originally came with Google's Maps and Youtube apps, amongst others.

But leaving this aside, there are good reasons for both companies to distrust one another. Google has more reasons, indeed, to mistrust Apple than vice-versa, given Apple's control over the iPhone is much stronger than Google's control over Android. If Apple wants to release apps for Android, it is free to do so. Google requires Apple's permission to release apps for iOS, and has had problems getting some perfectly normal apps released - such as the years it took to get approval for a Google Voice app for iPhones.

The question here though is does this make sense? Is it really in Apple's best interests to try to kill Google? Would it be in Google's best interests to try to kill Apple?

We've been here before. A CEO hand picked by Steve Jobs takes over Apple, and continues Jobs's antagonism towards a company that Jobs feels stole Apple's technology. That CEO oversees legal action against parties allied to this nemesis, and Apple's products seem to be aimed at beating the nemesis, rather than being what customers actually want. And while Apple has done a good job in attracting high quality developers to its platform, the nemesis is providing a far more open, relaxed, product that is available to everyone.

The nemesis in this case was Microsoft. The technology was the WIMP GUI (nevermind that Microsoft's Windows was never remotely similar to Mac OS, but then again Android isn't remotely like iOS) The CEO was John Sculley.

I just don't see this ending well, especially not for Apple. The antagonism doesn't seem to have any basis in anything anyone has actually done. The two companies are more natural allies than enemies. Working together they can, as they've done in the past, do great things.

Friday, May 25, 2012

Oracle and Google: Control over inventions has limits

Has it really been two years?

The verdicts are in: After Google used some Java-related standards (the language, and some APIs) in the Android operating system, Oracle has been told that Google did very little wrong, and so Oracle doesn't get to demand royalties from Google. Insofar as Google did violate intellectual property laws, well, the violations were extremely minor, mostly unintentional, and may not have even been illegal in the first place.

So where does that leave Java? Answer: stronger than ever. Definitely stronger than if Oracle had won.

Oracle appears to have bought Sun not because it sees value in Java, but because despite seeing Java as having very little long term future, it believes it has a window of time to milk the platform for all its worth. Filing a lawsuit against a company that's using some concepts and standards originating in Java makes little or no sense if you want Java to grow and want to reap the benefits of it growing. Sun, at the time, while unhappy Google wasn't adopting the entire platform, were happier to see Google adopt what they did than to have Google reluctantly adopt one of Java's competitors, such as .NET.

And it's not hard to see why. Take the C programming language.

C originated on Unix. A C purist would have argued, in the early seventies, that "C" is only "C" with certain libraries and possibly even the Unix API. But C was ported to platforms like CP/M, and later everything from MS DOS to AmigaOS, usually with only a subset of the standard C libraries. The result was massive popularity of the language, and arguably this, more than anything else, lead the way towards Unix's eventual popularity, in the form of its close clones like GNU/Linux and Mac OS X.

Given what Sun was trying to achieve, it's hard to see how Android could have damaged Java in the long run. Android has made legions of new Java programmers, who are as at home programming weather apps for Android as they are programming data processing front-ends for JEE applications. They use, for the most part, the same developer tools, and produce libraries capable of running under both platforms.

Indeed, without the lawsuit, it's not impossible to envisage a relatively near future in which Android phones end up coming with the full Java stack. Because developers demand it.

Android's pushing of Java technologies is happening in a context where Java is facing stiff competition as an enterprise technology platform. By the time of Android's first release, .NET was showing serious advantages over Java. .NET has a high degree of language agnosticism, which has proven important in environments that have large amounts of existing business logic code written in VB or worse.

Why then is Oracle suing? Why will they almost certainly appeal this verdict?

Because Oracle didn't buy Java to incubate it, to make it a popular platform that can compete with .NET and eventually become the platform of choice for developers everywhere. Oracle bought Java because they apparently saw an opportunity to make a lot of money in lawsuits, and to temporarily obtain royalties from the diminishing number of companies licensing JME.

I'm glad it looks like Oracle have failed. I'm hoping that a clear ruling in favor of Google will strengthen Java. Because Oracle winning can only kill Java, both by making it too toxic for third parties to touch, and by limiting the platform to one industry that, quite honestly, in the absence of third party and developer support, has way too many incentives to switch to Java's competitors.

Tuesday, April 10, 2012

T-Mobile and the AT&T fall out

During the last year, T-Mobile made a number of changes to the way its run in order to make it more appealing to its suitor, AT&T. Fortunately, the AT&T deal went south, but T-Mobile still seems to be making the same mistakes.

  • Customer service is getting worse. And T-Mobile is using the opportunity to cut customer service jobs, instead of improving the service.
  • Plans are truly awful. With the removal of EMP, and the laughable creation of "Value plans" (contract plans that are cheaper than T-Mobile's regular plans, but in a dynamic industry absolutely guaranteed to be uncompetitive), T-Mobile has nothing that distinguishes themselves from other carriers except temporary price advantages.
  • Prepaid service whose plans are designed to appeal to contract customers, but whose services are awful.

What I'd like to see is T-Mobile undo some of the damage. But when the original AT&T take-over announcement occurred, for the first time in nearly a decade I started to look at other carriers. My wife and I will probably switch away within the year, and I'm not overly happy about losing that old friend that Voicestream was.

Monday, March 26, 2012

Tip of the morning: Amazon Cloud Drive and Android

If you've tried downloading anything from Amazon Cloud Drive that isn't an MP3, onto your Android device, you've probably been pretty annoyed at the experience. On the default browser (and other shells around it like Dolphin) you can't select individual files, and the list scrolls when you attempt to click (well, touch) individual links.

Neither Opera Mini nor Opera Mobile work either - you get a bizarre page that tells you you need Flash to upload files, that doesn't let you navigate from it. And you get it even if you've enabled Flash.

So... what's the solution? Firefox. ACD seems to work fine with Firefox for Android. Just be aware that Firefox doesn't work under half the Android phones out there because it's been compiled for a specific CPU architecture, but if you have a phone or tablet capable of running Firefox, you can use that.

(If you use Firefox as your desktop browser, you'll be interested to know it syncs very nicely with the mobile version. A neat trick is that you can load a page you have on your desktop onto your tablet just by selecting the tab from your tablet. Very nice for that "Hey honey, take a look at what I saw on the web" moments.)

If you're using a Kindle Fire, you can download Firefox directly from this link.

Sunday, March 25, 2012

Save Lenovo

I've been using Thinkpads since the late 1990s, and only recently, and reluctantly, switched to a different laptop maker for my main home laptop. They were solid, had beautiful designs, were well spec'd and had the perfect pointing devices.

But when I started Harritronics a couple of years ago, I found out the hard way that Lenovo isn't running as it should be. Attempting to cancel an order that Lenovo was planning to send late (and hadn't yet bothered to put in the system), it in the end took me guessing the email address of the COO of Lenovo to actually get anything solved. And a few months ago, I bought a Lenovo K1, their 10" Honeycomb tablet, and have, to be quite honest, not been impressed.

But what's bothering me isn't the tablet, which has a number of iPadisms that I could do without, but the horror stories I'm reading on Lenovo's own forums, about K1 users trying to get answers - any answers - about the previously promised upgrade to Ice Cream Sandwich for that tablet, and their experiences.

Take this complaint. The customer reports calling Lenovo customer support and being transferred from department to department, until finally being told (variously) that it was the store's problem, that it was Google's problem, and, finally, that no upgrade will ever happen if the device hasn't already got the operating system.

Unfortunately, I know what the problem is from my own experiences. Lenovo's customer support is a separate organization (probably a third party), and that organization is completely dysfunctional. It is either unable, or unwilling, to actually communicate with Lenovo-proper to resolve customer problems outside of a small set of pre-scripted scenarios.

A cynic would probably argue that this is intentional, that Lenovo wants to save money by avoiding having to support its own products. This is, however, highly unlikely. All businesses that want to keep and grow their businesses are painfully aware that bad stories travel, and particularly in the computer industry, where upsetting the wrong customer might result in the loss of entire corporate contracts some time down the line, it would be astonishingly short sighted for this to be deliberate Lenovo policy. Ask many in business and they'll tell you that a good experience will win three new customers, but a bad one will lose nine.

I dearly hope Lenovo gets into gear on this. They own the part of IBM that produced (and still does, to a certain extent) the best PCs ever made. But poor customer support means that nobody in their right mind can recommend them at this point.

The example of Lenovo's customer's problems getting answers on the K1 tablet with ICS should be a wake up call because it's an obvious question, that is obviously going to be asked, and yet their customer service department is incapable of answering it. Any of the following may be true:

  • Lenovo is still experimenting with ICS on the K1, and wants to ensure it works effectively before deciding whether or not to release a supported version. (or the short version "We currently are unable to state for definite a version of ICS will be available for the K1, but will notify you as soon as we can.")
  • Lenovo has made the decision not to release ICS.
  • Lenovo intends to release ICS on 1st April.
And any of the above can be communicated to customers. That their customer support is unable to communicate the correct answer from the above demonstrates, clearly, the lack of any sane communications going on between Lenovo and its customer support organization.

I doubt anyone from Lenovo is reading this blog, let alone anyone in a position to do something about it, but I hope, somehow, that something gets done.

Friday, March 23, 2012

Horse thieves and the Copyright Posse

I don't need a horse, and wouldn't benefit from having one. And had I lived the life of a surf in the Middle Ages, I wouldn't have needed a horse then either.

But had I lived in the Wild West, I would have an entirely different attitude. I would need a horse, and I would be very angry with any entity that denied me one. To deny me a horse in 1880's rural Oregon would be to deprive me of the ability to make a living. I would be unable to farm my land, bring food to market, or bring food back home. I would be unable to escape in the event of an emergency. I would be unable to call upon a doctor.

Such was the necessity of having a horse in those times, the law recognized the taking of a horse as being a crime as severe and terrible as murder itself. Horse thieves were not merely frowned upon, they were killed.

And likewise, the law wouldn't, generally deprive someone of their horse, as a punishment or anything else, especially for a crime considered by most people as minor.

I mention this because I want to illustrate the fact that while certain items are, at certain times, luxuries, they're not always. The telephone was once a luxury item owned by the rich, few people would consider one a luxury today. And fewer still would have considered a phone a luxury ten years ago. To be deprived of telephone access would handicap the ability of the victim the ability to call for help, to look for work, to be in contact with their employer, and to access essential services they rely upon.

Today, the same thing could be said about the Internet. It is becoming harder and harder for people to be a part of our functioning society without Internet access. Those who have Internet access unquestionably have an advantage over those who don't. And if it is possible to live without it today, it will become less and less possible as time goes on, as businesses and other parts of society ignore the unconnected and focus on the efficiencies they can extract through this awesome network.

Which is why I think laws that propose disconnecting Internet users who violate copyright laws are ridiculous. It's not that I disagree with copyright law, far from it, but I think as time goes on, you're turning the content industry, and a government working for it, into modern day horse thieves. You're proposing depriving people of their ability to function within a society over such acts as making available a broadcast television show to people on the Internet.

You don't have to create an underclass of former copyright abusers to punish copyright abuse.

Thursday, February 2, 2012

Tables, css, and correct layout

Did some brand-name-search-product-ing (you know I was going to write Googling, but that would be a violation of trademark law!) this morning because I was curious to know if the lack of "colspan" in CSS had been dealt with lately, and I came across a thread where people repeated a rather tired and dubious claim about the wisdom of using tables to lay out a webpage.

OK, so here's the deal. Back when people created documents in wordprocessors rather than HTML, the issue of "How do I do something that requires some complex formatting" would come up periodically. For older systems, you'd use tabs and margins to layout text, but that would have its own problems, not least that the wordprocessor's ability to automatically lay out text (for example, overflow text onto new lines) would be compromised. When tables were implemented, they became the de-facto way to style complex layouts. By creating a grid, and merging cells, and moving the boundaries around, you could get pretty much anything you want that didn't involve overlapping text.

And the same is true of HTML. Early HTML users jumped on tables as soon as they became available and used them for laying out text.

The problem here is that HTML is a "mark-up" language. It's supposed to contain content, with tags describing the context and meaning of the content. And thus the very serious people who define web standards expressed their displeasure at HTML's tables being used like this. Why? Well, because a table is supposed to be... a table. It's a list of related items, using columns or rows to delineate attributes of common entities. And that's just not what you're doing when you use a table to, say, put a menu on the left hand side of the document, a "related links" section  on the right, and whatever the user is reading in the center, because none of those relate to one another, and therefore, this is bad practice.

The very serious people came up with "CSS" and stylesheets as a way to solve the layout issues. Used properly, you'd only ever use HTML tables to relate content; page layout would be defined by using CSS to move things around.

So far, so good, and when people tell you "Tables bad", they're usually referring to the above principle. Now, that said, (almost) everyone agrees that the logic that table layouts use happens to be a very good way to lay out content. In some circumstances, it's extremely difficult not to achieve a particular effect using tables.

Even the very serious people agree with this, which is why CSS also has tables. I don't mean allows you to style HTML tables, I mean CSS lets you say "When you see these elements, style them as a table." You do this using the "display" attribute, which can be "table", "inline-table" (handy!), "table-row" and "table-cell".

So, the point I'm trying to make here is that if someone tells you "It's bad practice to use tables" when you propose them to solve a layout problem, you need to slap them and say "No, it's bad practice to mark up layout using the HTML table tag. It's perfectly fine to style something as a table if you need to lay out content according to some kind of grid."

Unfortunately, this brings us back to our original point. There's no colspan equivalent in CSS. As I've said before, I wouldn't have designed CSS the way it's designed, but... the nearest thing there is to a workaround is that for one instance - where you need a single colspan=entire-row, you can style the element in that row as "display: table-caption", but it's kinda ugly and only works for a limited set of circumstances.

Which is a shame, because colspans (and rowspans) are part of what makes table layout logic a great way to lay out content.

Tuesday, January 31, 2012

VOIPo experiences

Mentioned in this review


(Paid link)
  • VOIPo provides voice over IP services at an extremely low cost.
  • If you have a broadband Internet connection, you use VOIPo to replace your home phone service
  • VOIPo's competitors include Vonage and Ooma
  • VOIPo works with your existing phone system.
  • Be aware that VOIPo's low rates generally require a two year subscription, paid in advance.
As regular readers will know, I'm interested in voice over IP and have spent a little while setting up an Asterisk system at home. Voice-over-IP (VoIP) is usually advertised as a way to cut down your phone bill, but I think that's a little misleading. VoIP provides a different way of making and receiving calls, which can be much more flexible than the simple two-wire set-up most of us are used to. While the fee paid to your VoIP provider is usually lower than that you'd pay to a wireline phone company, the service requires you have a good, high quality, broadband Internet connection - and as DSL typically requires an associated wireless phone service, and cable operators typically offer bundled phone service for a low cost, it's not entirely clear you'll save as much money as you'd think.

I'm using Asterisk with two VoIP systems. One is Google Talk and Google Voice. When combined, the two together provide a decent enough voice calls system for both incoming and outgoing calls, but there are some caveats:
  • If you want to use Google Voice as a VoIP system, you either need to make your calls on a regular desktop or laptop computer, or you need to install an Asterisk PBX and buy the necessary equipment to interface your regular phones with that PBX. This is because the service is only available via a protocol that's oriented towards instant messaging, rather than the popular SIP standard supported by regular VoIP devices.
  • Google are providing a VoIP interface, via Google Talk, to Google Voice for free right now as a favor, but it's not clear the service will continue to be available. Google makes money only from international calls and advertising on the service, and you only see the advertising if you go to Google's related websites.
  • Google does not, currently, support porting your existing landline numbers to Google Voice.
  • Asterisk and Google Talk/Voice do work together, but the configuration is "interesting" and the defaults often result in rather annoying side-effects, such as having your contacts removed from Google Talk.
The other VoIP system I'm using is VOIPo. Let's talk about them.
openoffice web app
(Disclaimer - there's a sponsored link on this page, but as you can see from my other reviews, that doesn't mean I'm going to whitewash the product if I don't think it's any good.)

VOIPo is a division of HostGator, a web hosting company that's been around for longer than I remember. They offer both residential and business VOIPo systems, and from what I can figure out, the only difference between the two are the names. VOIPo uses the industry standard SIP protocol, and uses the simplest form, essentially requiring voice calls be entirely uncompressed.

The core product comprises of a basic VoIP adapter, which is sent to your home, and a collection of basic calling features designed around a single number. Details of the hardware differ, but core features common to all of them are two phone jacks, which can work independently, and a set of network ports that can be configured either to sit between your network and the outside world (VOIPo recommend this in their instructions - I don't!), or on your network if you open the appropriate ports on your router (my recommended configuration.) The adapter is locked to VOIPo.

A "monthly" fee (paid bi-annually) covers the cost of the service and gives you:
  • Unlimited calls within the US
  • From what I can work out, "Unlimited" simultaneous calls - although VOIPo only promise two, so they may cut it to two if you abuse the system.
  • 60 minutes of calls to some international numbers each month. Some destinations, notably caller-pays mobile phones, are not included, however.
  • A large collection of calling features (call waiting, call forwarding, etc.)
Voicemail is also included, and takes the form of audio files that are emailed to an email address of your choice. And there's a web interface that also provides access to voicemail, as well as core calling features. So, for example, if your home internet connection is down, you can log in via your smartphone and update the call forwarding services.

Because VoIP is flaky, at best, with faxes, VOIPo provides a fax gateway for sending faxes. Receiving faxes requires a subscription to a separate service. The gateway is web based and requires you upload PDFs of the documents you want to send. Needless to say, you can forget about using a modem with the service.

Pricing is extremely good - somewhere between $120 and $200 every two years.

That's the core product. Now, as noted above, I'm using VOIPo with Asterisk (originally 1.4, now 1.8.) There are some caveats that need to be mentioned up-front on this.

  • VOIPo explicitly allows what's called "BYOD" (Bring Your Own Device) on their service. VOIPo publish the settings to use on their website, which I'll cover in a moment. You may read elsewhere that VOIPo does not do this. That's false, and based upon the fact that initially VOIPo did forbid BYOD on their systems, apparently for support reasons.
  • You have to enable BYOD for your account via the web interface.
  • You cannot use BYOD if you haven't already set up the supplied adapter at least once and successfully configured everything.
  • You cannot get customer support unless you have the supplied adapter set up and are using that instead of BYOD - which makes sense, it's not entirely fair to expect a support rep to understand why your service is down if you're using some obscure bit of software they've never heard of.
  • You cannot make international calls. Not even your free 60 minutes.
I've used VOIPo BYOD with both a Siemens Gigaset A580IP and Asterisk and can confirm it works without problems.


Initially the only problem with VOIPo was a lack of any kind of phone service during the period between VOIPo contacting AT&T to port our number, and us receiving the VOIPo adapter. This meant a weekend without home phone service, although we were able to log in and redirect the number to our cellphones.

Thus far reliability has been mostly good.  Early on we did have a few issues with incoming calls being redirected to the other numbers, seemingly at random. This may have been a number portability issue, or it might have been something deeper, but this problems resolved themselves within a couple of months and I'm reluctant to make too many assumptions on the basis of that problem. Reliability since has been fairly solid.

Voice quality is good. I did notice that the volume was considerably higher using VOIPo than with AT&T, which is not a bad thing as it's easier to understand what people are saying when you can hear them! But some people may consider it annoying. Overall, voice quality seems on a par with a good cellphone on a good network in a good coverage area. There's the occasional glitch, but the voice quality is certainly good enough.

There are three ways in which I've used the VOIPo system. The first is via the supplied adapter, which in our case was the Grandstream HT502. This arrived about a week after we ordered the service. I disconnected the AT&T phone service lines outside of our home, and plugged the HT502 into the wall, which meant all of the phones already hooked up worked with the new service.

VOIPo recommends plugging in your router into the adapter, and the adapter into your cable or DSL modem. When I did this, my elaborate, beautifully crafted, Internet system with IPv6 and incoming servers and all kinds of good stuff broke, because the adapter makes no attempt to appear transparent and does its own NAT thing. Rather than try to get this to work, I instead disconnected the HT502, plugged it in to my network as just another device, and configured my regular router to forward the appropriate ports to the adapter. This worked without problems.

Wanting to use the two-line feature in a useful way, I then bought the above mentioned Gigaset, and enabled the BYOD functionality on our device. This again worked without problems, and my personal opinion is that if you're just looking for a good cordless phone system to make the best use of your VOIPo service, the Gigaset is probably the best way to  do it.

Finally... Asterisk. Again, no problems as long as you remember a few important tips:
  • You need to convert all numbers to ten digit US phone numbers
  • You need to ensure only aLaw and uLaw codecs are supported
  • To keep everything compatible, you need to tell Asterisk to route all calls through it, rather than forward them.
Here's some useful configuration file extracts to get you started:

From sip.conf:

register => 772xxxxxxx:xxxxxxxx@voipo



callerid=Living Room <101>

From extensions.conf:

include => external
include => homeextensions

exten => _NXXXXXX!,1,GoTo(voipo,772${EXTEN},1)
exten => 123,1,GoTo(voipo,${EXTEN},1)
exten => _N11,1,GoTo(voipo,${EXTEN},1)
exten => _1NXXXXXXXXX!,1,GoTo(voipo,${EXTEN:1},1)
exten => _+1NXXXXXXXXX!,1,GoTo(voipo,${EXTEN:2},1)
exten => _+NX.,1,GoTo(gvoice,${EXTEN},1)
exten => _011XX.,1,GoTo(gvoice,+${EXTEN:3},1)

exten => _X.,1,NoOp(Routing via VOIPO)
exten => _X.,n,Playback(connecting)
exten => _X.,n,Dial(SIP/${EXTEN}@voipo,99,TK)
exten => h,1,NoOp(Call ended)
exten => h,2,Hangup

exten => _+X.,1,NoOp(Routing via Google Voice)
exten => _+X.,n,Dial(gtalk/harritronics/${EXTEN},99,TK)
exten => h,1,NoOp(Call ended)
exten => h,2,Hangup

exten => _10X!,1,NoOp("Extension called")
exten => _11X!,1,NoOp("Extension called")
exten => _[a-z].,1,NoOp("Extension called by name")
exten => _[a-z0-9].,2,Goto(homeextensions-map,${EXTEN},1)

exten => 100,1,Goto(incoming|s|1)
exten => 101,1,Goto(homeextensions,livingrm,1)
include => regexten
exten => _[a-z].,2,Dial(SIP/${EXTEN}, 20, tk)
exten => s,1,NoOp(Call from VoIP ${CALLERID(name)} ${CALLERID(number)})
exten => s,n,Dial(SIP/livingrm, 30, tk)
exten => s,n,NoOp(Call timeout)

The key thing to notice in the extensions.conf is the [external] section which turns a locally dialed number into either a ten digit number for VOIPO, or which routes calls out via Google Voice if the numbers are international.


I have no problems recommending VOIPo to others. Here's a quick summary of the issues you need to consider:
  • The core service, using the supplied adapter, is a good replacement for regular phone service, especially if you have a cellphone you can use as a back-up. Reliability is good - the service is rarely unavailable. Call quality is good.
  • It is worth using the BYOD option. I do recommend the Gigaset mentioned above. It's a good DECT system that supports the major features of VOIPO out of the box. The Gigaset includes a regular phone port too, so you can connect it to VOIPO's supplied adapter for international calls.
  • Remember: faxes are problematic. Modem calls are out of the question. You may have devices with modems that you're unaware of, such as in your home alarm system.
  • If you get your broadband connection via DSL, you may have problems porting your number. Talk to your DSL provider first before going ahead.
  • I shouldn't have to say it, but your phone service will be as reliable as your Internet service. Ten years ago I'd have recommended against switching, wholesale, to VoIP, but right now, with everyone having a cellphone, and Internet access much more stable than previously, that's no longer true.

Monday, January 23, 2012

On the SOPA box: Copyrights, copylefts, and copywrongs

I don't usually politicize on this blog, it's generally counter productive, but the recent fight in Congress and on the Internet concerning the "SOPA" (Stop Online Piracy Act) law means the tech industry is in the spotlight, and I wanted to make some comments.

SOPA was proposed as the latest law updating copyright for the digital age, a process that really started with the DMCA. The DMCA had good and bad elements to it. The good was that it recognized that there was a distinction between services and users of those services, and it sought to ensure that companies that provided online services weren't penalized because some of their users violated copyright laws. The bad was a somewhat draconian law that made it illegal to "bypass an access control" - put simply, if you make your own DVD or Blu-ray disc player, you can end up in a Federal prison for up to four years. Why? Because DVDs and Blu-ray discs contain an "Access Control" system preventing the discs from being used in any way the studios don't like. In order to play the content, you need to bypass that access control. Which, if you're not authorized, is illegal.

Neither side was entirely happy with the DMCA, with the content industry feeling that it couldn't easily target services that existed specifically to help copyright violators, and the tech industry really not being happy with the "access control" system. The DMCA was also specifically a US law, and the content industry couldn't use it to go after copyright violators outside of the US.

SOPA is an attempt to address the copyright holder's issues with the DMCA. With major Internet infrastructure in the US, including ICANN, SOPA proposed methods to allow copyright holders to cut off access and funds to foreign organizations that promoted copyright abuses. The tech industry had two major problems with SOPA:

  • The law was clearly easy to abuse. While the DMCA had protected websites that in good faith hosted comments by users that violated copyrights, SOPA made it possible to shut down websites with very little oversight. For example, if I were to describe how to get hold of copyrighted material without authorization on, say, the Guardian Newspaper's forums, it would be increasingly easy for copyright holders to have the entire Guardian website removed from the Internet, the more people who posted such material.
  • The law proposed the use of technologies that would undermine Internet reliability. Specifically, the law proposed that DNS and IP routing tables within the US be changed to block foreign websites. These would leave the Internet with competing configurations in different parts of the world, and as businesses attempt to evade blocks, which would be inevitable, these configurations would have a major impact on the Internet's general reliability.
The Internet is not a single entity, and neither is the tech industry. Different entities had different concerns. Many tech titans are sympathetic to copyright holders, being copyright holders themselves, or simply seeing value in the protection copyright provides to content creators. But there's also a strong movement against copyright, at least, in its present form. Opponents of the status quo in copyright argue:
  • Copyright terms seem excessive. Few, if any, businesses plan for a product still paying for itself twenty years into the future, yet the copyright terms applied to, say, the movies released this coming Friday will not expire in your or my lifetime. Even 30 year mortgages are expected to pay for themselves within 20 years! (Compound interest, sayeth Einstein, is the most powerful force in the universe...)
  • Creatives build upon an existing body of creative work, and cannot avoid doing so if they want to create material that reflects and fits within our culture. The prevention of a vibrant public domain is damaging to creative freedom.
  • While many copyright infringers do so to save money, many are simply seeking content not available to them in other ways. In some cases, copyrighted material is too expensive, but in other cases, movies, TV shows, and (to a lesser degree today) music simply cannot be obtained via legal channels in a form the infringer finds suitable, if at all. The movie and TV industries, in particular, are extremely bad at making their content available to buy in the first place.
Because copyright law is going in the wrong direction, with copyright terms extended rather than cut, virtually any law that shores up copyrights will attract increasing opposition. 

My view is this: SOPA is the wrong approach, regardless of whether you believe copyright laws are not lax enough, or strict enough. The law put service providers in an awkward position that would have ended many legitimate online forums. The technical measures proposed by SOPA were colossally
stupid and would have caused massive disruption to the Internet.

The content industry may find it worth looking at the example of the music industry to see where its issues with piracy might be solved. The music industry went back and forth on a number of strategies, many of which were damaging to its reputation, before finally licencing its music to a variety of companies. Right now, you can listen to whatever you want whenever you want by getting a low cost subscription to Rhapsody. Or you can buy individual tracks from Amazon, Google Music, Apple, or a variety of other companies, in a format that will work on virtually any modern digital music player. And the pricing is fairly decent. Music piracy is clearly down - very few people, in my experience, talk about using P2P to download music any more. Online discussions of music almost always lead to links to an MP3 store. While piracy exists, it's very much the exception, not the rule.

Both the music industry and music lovers have benefited from this arrangement. The music industry is now getting more from MP3 sales than it is from sales of CDs - albeit the latter sales are down due to a combination of (now declining) piracy and lack of interest in physical plastic discs.  And music lovers are now finding that virtually anything they're interested in is a click away - if it isn't today, it will be soon, with around twenty million tracks already available.

How does the movie industry, for example, go forward from here? Well, the most obvious is to start cooperating with services like Netflix and Amazon and make as much material available online as possible. Traditionally, even when the movie industry has made content available to online services, those services have had a relatively poor selection available, with DRM making buying content - as opposed to just renting it - fairly undesirable.

Ironically, the industry had a chance to fix this in 2007-2008 when HD DVD and Blu-ray disc were battling it out. HD DVD started, right from the beginning, with a standardized framework that was intended to be the foundation of a standardized online digital downloads system. HD DVD wasn't DRM free, but the standardization it offered was at least was a step in the right direction. Large chunks of the movie industry chose Blu-ray disc instead, believing that BD's stricter DRM meant it was more likely to help fight piracy, and because those studios wouldn't budge, HD DVD went the way of the dinosaur, and piracy continued to blossom.

Ultimately you can't kill piracy, but it's false to argue you can't compete with free. If you sell it, they will buy. If you make content available in a legal form that's easy to obtain, people will use legal means to get it. Nobody wants to scour an obscure forum for hours on end to find a movie or TV show they're interested in, and most of us actually like supporting the content we enjoy.

The legislation we need today is legislation that legitimizes copyright by liberalizing it. And the right approach to killing piracy is to actually sell your content to those who want it.