Ubuntu images on Docker.io
When trying to install node.js into the default official Ubuntu image on Docker the other day I hit a dependency issue. Node.js needs rlwrap[1], and rlwrap is in the universe repository, which it turns out isn’t part of /etc/apt/sources.list for the 12.04 image:
deb http://archive.ubuntu.com/ubuntu precise main
Things worked using the ubuntu:quantal (== ununtu:12.10) image because that has an expanded sources.list that includes universe and multiverse – a much larger selection of available packages:
deb http://archive.ubuntu.com/ubuntu quantal main universe multiverse
It’s a total mystery to me why that difference should be there.
This specific issue can be fixed with a one line addition to the Dockerfile that adds the universe repository[2]:
RUN sed -i s/main/'main universe'/ /etc/apt/sources.list
I took a look at the stackbrew/ubuntu images, which it turns out have a much more complete and consistent set of sources.list (for all 4 versions that are presently available: 12.04, 12.10, 13.04 and 13.10):
deb http://archive.ubuntu.com/ubuntu version main universe deb http://archive.ubuntu.com/ubuntu version-updates main universe deb http://archive.ubuntu.com/ubuntu version-security main universe
Unfortunately this causes bad things to happen if you run ‘apt-get update && apt-get upgrade -y’:
dpkg: dependency problems prevent configuration of initramfs-tools: initramfs-tools depends on udev (>= 147~-5); however: Package udev is not configured yet. dpkg: error processing initramfs-tools (--configure): dependency problems - leaving unconfigured
There’s really no need for initramfs stuff within a container – so the broader sources.list is causing the container to attempt to do unnatural things.
Conclusion
Dependency management in the current crop of Ubuntu images at hand for Docker.io is a bit of a mess at the moment. It’s not hard to straighten things out, but things that superficially look like they’re doing the right thing can come with unintended consequences that don’t fit well with the containerised approach.
Notes
[1] Here’s the error message:
Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: nodejs : Depends: rlwrap but it is not installable
[2] Make sure there’s an ‘apt-get update’ afterwards
Filed under: Docker | Leave a Comment
Tags: 12.04, 12.10, Docker, Docker.io, Dockerfile, main, node, node.js, precise, quantal, rlwrap, sed, sources.list, Ubuntu, universe
Node-RED on Docker
Docker is going into the next release of CohesiveFT’s VNS3 cloud networking appliance as a substrate for application network services such as proxy, reverse proxy, load balancing, content caching and intrusion detection. I’ve been spending some time getting familiar with how Docker does things.
Since I’ve also been spending some time on Node-RED recently I thought I’d bring the two activities together as a demo application.
Following in the footsteps of the SSH example I was able to use Oskar Hane’s guide to creating a Node.js Docker.io image and then add in Node-RED[1]. This gave me something that I could run, but not something that was particularly repeatable or malleable.
Having read through Troy Howard’s excellent Where are my Docker images stored? I then set about encoding the steps I’d followed into a Dockerfile:
FROM ubuntu:quantal RUN apt-get update RUN apt-get upgrade -y RUN apt-get install python-software-properties python g++ make -y RUN apt-get install software-properties-common wget unzip -y RUN add-apt-repository ppa:chris-lea/node.js -y RUN apt-get update RUN apt-get install nodejs -y RUN wget https://github.com/node-red/node-red/archive/0.5.0.zip RUN unzip 0.5.0.zip -d /opt RUN cd /opt/node-red-0.5.0 && npm install --production RUN rm 0.5.0.zip
I broke my normal habit of only using Ubuntu LTS builds here as for some peculiar reason rlwrap, which is needed for Node.js, doesn’t seem to install properly on the Ubuntu 12.04 Docker image.
The nice thing about the way the Dockerfile works is that when things break you don’t have to repeat the preceding steps. Docker just uses its image cache. This makes testing much less painful than in other environments as the cost of making mistakes becomes pretty minimal. This is the key to the power of Docker, and particularly the Dockerfile – the incremental friction between hacking away at the command line and developing a DevOps script has become tiny. It really makes it easy to create something that’s repeatable rather than something that’s disposable.
I also found out that context isn’t preserved from one run command to the next, which is why lines 11 and 12 are like that rather than a more (interactively) natural:
cd /opt unzip ../0.5.0.zip cd node-red-0.5.0 npm install --production
Once the Dockerfile built correctly with:
sudo docker build -t cpswan/node-red-0.5.0 .
I could then launch an instance with:
sudo docker run -d -p 1880:1880 cpswan/node-red-0.5.0 \ /usr/bin/node /opt/node-red-0.5.0/red.js
and bring it up in my browser by navigating to http://host_ip:1880
I’ve uploaded the resulting image cpswan/node-red-0.5.0 to the public index if you just want to run it rather than making it.
Note
[1] Perhaps this wasn’t the Docker way to do things. Searching the Docker public image repository turns up an image christened ‘dun‘ Docker, Ubuntu, Node (though it is a few point releases behind on node.js).
Filed under: code, CohesiveFT, Docker | 2 Comments
Tags: Docker, Docker.io, Dockerfile, image, index, node, Node-RED, node.js, repository
OpenWRT on TP-Link TL-WR2543ND
If you want to dive straight into install instructions then head over to the TP-Link TL-WR2543ND article on the OpenWRT Wiki.

Why?
When my son smashed the screen on my iPad 2 I think he also damaged the WiFi antenna. I had to be just about be sitting on top of a 2.4Ghz hotspot to get any 802.11g/n signal. 5GHz seemed OK though, so rather than getting the iPad repaired again I thought it would be easier/cheaper to get an access point that supported 802.11a.
I didn’t really want a router, but standalone dual band access points don’t seem to be a thing, so I went for the TL-WR2543ND as it was pretty cheap on Amazon (£40.77 when I got it, now £37.99 on Amazon.co.uk [1]).
When the router arrived it was a bit of a disappointment. Firstly I thought that dual band would mean both bands at once (it doesn’t), and secondly there was no obvious way to get it working nicely on my usual home network subnet. I had to treat the home network as the WAN, and then have another subnet for devices connected to the router.
Having done some other upgrades to the home network I wanted a 5 port gigabit switch in the lounge, and it would be handy to have the 5Ghz access point there too. I just needed some way to liberate the WAN port on the router, and there was no way to do that with stock firmware.
OpenWRT
OpenWRT is an open source firmware platform for routers. I’ve previously used in on an older TP-Link device that I had in the lounge, and installation onto the TL-WR2543ND was a breeze.
Using the web interface from a laptop connected to one of the wired LAN ports I ran through initial configuration:
- Enabled SSH, disabled password login and installed a key
- Set up WiFi
- Removed dnsmasq to avoid clashes with the DHCP/DNS elsewhere on the network
- Gave the LAN interface a static IP on my usual subnet
Almost there…
I now had a router with a 4 port switch and 5GHz WiFi, but I needed that extra port. At this point I tried bridging the LAN (eth0.1) and WAN (eth0.2) interfaces. I thought I had it working (stuff plugged into the WAN port was pingable from elsewhere on the network), but on power cycling no traffic passed on the switch, and I couldn’t connect to the web or SSH interfaces.
Disaster :(
Recovery
Now the stuff about serial port recovery from the install instructions came into its own. I’d stupidly locked myself out of the device, and I needed a way back in. Luckily it was pretty easy to solder a few header pins into the right place, and the FTDI adaptor that I got for my Nanode let me connect a serial terminal. I was back into the Linux shell[2], and a bit of hacking at /etc/config/network to remove the bridge had me back in over the network.
What actually worked
Having got myself back in (and made a backup of a working network config in case I messed it up again) I tried unsuccessfully to make bridging work. Even when I managed to do this in a way that didn’t lock me out of the router it seemed to cause ARP floods. I was doing the software equivalent of plugging a cable into two ports of the same device.
The correct approach was to disable VLAN functionality in the Network->Switch menu (I also deleted VLAN 2 and set port 0 to untagged on VLAN 1).
This does the trick because the WAN port is/was just a different VLAN on the same switch as the LAN ports, so if I want them all to work together then naturally I just treat them as part of the same VLAN (by not having any distinct VLANs at all).
Conclusion
I’ve now got what I want – a 5 port switch with attached 5GHz access point, rather than what I bought – a dual band WiFi router. Less is more.
Notes:
[1] I was going to put in an Amazon.com link for US readers, but it seems to have been discontinued.
[2] There was no need to reinstall the firmware
Filed under: howto, technology | 2 Comments
Tags: 2.4GHz, 5GHz, 802.11a, firmware, gigabit, OpenWRT, router, serial, switch, TL-WR2543ND, TP-Link
Pi Lite with Node-RED
This was trivially easy, but it’s a nice example of how simple integration is now becoming due to the strength of various open source communities.
Pi-LITE
The Pi Lite is an array of lots of LEDs (126 in a 9×14 matrix to be exact). I bought a pair of them during the initial Kickstarter campaign. It has its own micro controller, and is accessed via a serial port[1], which means it’s pretty easy to get messages onto it from most languages and frameworks.
Node-RED
Node-RED is a visual integration tool that runs on node.js. It’s very easy to get it going on a Pi using Raspbian:
# First install node.js wget http://node-arm.herokuapp.com/node_latest_armhf.deb sudo dpkg -i node_latest_armhf.deb # Make sure we have git sudo apt-get install -y git-core # Install Node-RED git clone https://github.com/node-red/node-red.git cd node-red npm install --production # Install serialport package npm install serialport #Start Node-RED node red.js
Once up and running browse to http://pi_ip:1880 and wire together a ‘Hello World’ example with an inject input (with a Paylod of ‘Hello World’) and a serial output (configured for /dev/ttyAMA0 at 9600 baud):
Now clicking on the button on the Hello World injector results in Hello World scrolling across the Pi Lite in large friendly letters :)
Once that’s running then it’s easy to substitute messages coming from tweets, MQTT queues or whatever else and feed them onto the matrix.
Note
[1] Since the GPIO serial port is normally set up for logging and console access it’s necessary to do some reconfiguration before using the Pi Lite.
Filed under: Raspberry Pi | 1 Comment
Tags: node, Node-RED, node.js, PI, Pi-Lite, Raspberry Pi, raspbian, RPi, serial, serialport, ttyAMA0
Chromebook sales have been a big deal over the past year. This of course leads to the naysayers asking why they aren’t showing up in web logs everywhere? I think the answer is pretty straightforward… Chromebook users are likely much the same as cheap tablet users – so they’ll be mostly using them for gmail, Facebook and other very mainstream sites (that don’t tend to share their traffic data). Of course there will be a bit of casual off piste surfing , but that’s mostly showing up in the noise of the long tail.
The folk speculating about this should look in the mirror. Not literally. Macs are a tiny proportion of notebook sales, but account for a decent amount of web traffic . Conclusion: Mac users surf more than others. It’s a similarly skewed story for the iPad in the tablet world – it’s share of units sold is diminishing, but it’s share of the web remains very strong.
There are some consequences here – a mass audience that just isn’t showing up in many places, and a niche (more affluent) audience that gets around more. So the Google and Facebook engineers need to think about the Chromebook masses, but not (yet) so much everybody else.
For what it’s worth the Samsung ARM Chromebook I bought a year ago has got incrementally better over the past 12 months. With the SSH and RDP niggles gone it now does pretty much everything that I expected of it. It doesn’t get a ton of use since I picked up my Lenovo X230, but it’s the machine I reach for when I’m still in bed and need something with a keyboard.
Filed under: technology | Leave a Comment
Tags: Chromebook
I spent yesterday at the excellent ThingMonk hack day. Whilst everybody else was playing with Arduinos, Node and Johnny5 I decided to have a play with Node-RED on the BeagleBone Black I’d brought along. The eventual outcome was something that turned an LED on or off every time somebody tweeted ‘Thingmonk’. Our host James Governor tried to tweet a picture of it (which got stuck on his phone).
The flow started with a Twitter parser connected to a MQQT topic running on RabbitMQ running on my next door neighbour’s laptop (thanks Mark). I then had Node-RED subscribed to the topic on Mark’s broker feeding into a function to toggle an LED attached to the P8_13 GPIO pin on the board.
It all looks pretty simple now, but I had some fun getting going.
Getting online
I’d brought the BeagleBone with me because I could get it up and running with a single USB cable attached to my laptop. In order to get stuff installed on it I had to share my laptop WiFi with the BeagleBone network connection, turn off my firewalls, and make a few incantations on the BeagleBone:
route add default gw 192.168.7.1 echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
It’s also a good idea to make sure that the date and time are correct:
ntpdate pool.ntp.org
Node-RED
The project has specific instructions for the BeagleBone Black, but that’s not the complete story. I had to refer back to the installation guide, because I’d missed the crucial step of:
cd node-red npm install --production
I also edited settings.js to enable bonescript by commenting out one line and uncommenting another:
//functionGlobalContext: { }
functionGlobalContext: { bonescript:require('bonescript') }
//functionGlobalContext: { arduino:require('duino') }
}
I could then start it up with:
node red.js
Here’s the code that flips the LED when a tweet is received[1]:
var pin = "P8_13" var b = context.global.bonescript; context.state = context.state || b.LOW; b.pinMode(pin, b.OUTPUT); (context.state == b.LOW) ? context.state = b.HIGH : context.state = b.LOW; b.digitalWrite(pin, context.state); return msg;
Mosquitto
Everything was fine with Mark’s MQTT until the power cut. No WiFi meant no connectivity to his laptop. I decided to install my own MQTT broker… Mosquitto is packaged for Debian (and Ubuntu), so if I was running that it would be simple to install, but I was running Angstrom to get bonescript etc. to go with Node-RED. So I had to install Mosquitto from source[2]:
opkg install python-pip tcp-wrappers \ python-dev python-setuptools coreutils \ libxslt libxslt-dev packagegroup-core-buildessential wget http://mosquitto.org/files/source/mosquitto-1.2.3.tar.gz tar -xvf mosquitto-1.2.3.tar.gz cd mosquitto-1.2.3 make make install cp /etc/mosquitto/mosquitto.conf.example /etc/mosquitto/mosquitto.conf adduser mosquitto
You’ll probably want to visit the Mosquitto downloads page to make sure you’re getting the latest version (it was 1.2.2 when I did this yesterday).
Notes
[1] Node-RED has a Twitter input element that I could have used, but I couldn’t get authentication to work (and spent no time trying to fix it), and part of the fun of a hack day is joining projects together.
[2] Thanks to Bruce Holmes for pointing me in the right direction here. It looks like pkggroup-core-buildessential became packagegroup-core-buildessential at some stage.
Filed under: BeagleBone | 9 Comments
Tags: Angstrom, BeagleBone Black, Mosquitto, MQTT, Node-RED, node.js
Bitcoin – the Satoshi limit
The smallest presently supported subdivision of a bitcoin is 0.00000001, known as a Satoshi. This unit could also be called 0.01 µBTC or 10 nBTC (if there was such a thing as nano Bitcoin[1]).
The Satoshi limit[2] happens when the smallest unit of Bitcoin equals the smallest unit of currency that we’re happy to use for everyday transactions. This reasonably falls in the range of 1¢ to $1.
So what happens if a Satoshi is worth 5¢ (a log midrange value for the reasonable range)?
A 5¢ Satoshi implies that all 21 million BTC would have a total value of 5¢ * 21000000 / 0.00000001 = $105 Trillion. At that valuation a single BTC would be worth $5m
$105T is in the same order of magnitude as all world total liquid assets, and an order of magnitude more than all of the gold ever mined (which has been used by one analyst already as a model for Bitcoin value).
It looks like whoever designed this ‘weapon which exploits greed and social engineering to astonishing effect‘ got their sums right.
Notes
[1] There’s no reason why the Bitcoin protocol couldn’t be subsequently modified to deal with smaller subdivisions, but the Satoshi is what we have for the time being.
[2] I have my brother to thank for this observation.
Filed under: Bitcoin | Leave a Comment
Tags: Bitcoin, BTC, Satoshi, value
Classes of tablet
A few years ago I found myself saying ‘with the iPad everyone flys first class’. My thinking at the time was that Apple had levelled the playing field by creating a device that delivered the same excellent user experience whether you were the CEO of a global company, a regular user, or a kid who’d sold a kidney to buy one.
At the time there was a great deal of attention being paid to iPad’s in the boardroom and C-suite, but the point was that there was bottom up demand for tablets in the workplace, not just top down. This was brought home to me one day whilst I was waiting to meet some vendors – I was checking emails on my iPad 2, and the tea lady was telling me how she’d queued up to get an iPad 2 from the Oxford Street Apple Store on the UK launch day.
In light of my recent posts about abandoning Apple and what people are doing with cheap tablets I thought it would be worth taking a look at the tablet class system…
First Class – iPads
The iPad is still the first class option, and despite my personal reservations regarding iOS 7 it’s still much loved for the user experience it delivers.
With the top end model still below $1000[1], and an entry level of $299 I think it’s still an egalitarian first class – you’d do well to buy first class flights to anywhere for that sort of money.
Business Class – Nexus etc.
I’d consider most of the top brand Android tablets in amongst this group, though there’s not much out there that meaningfully adds to what’s in the Nexus lineup – perhaps the Galaxy Notes. The Kindle Fire range probably belongs here too, though I haven’t had the hands on time to confirm that to myself. One feature that I would call out here is the option to have 3G/LTE connectivity.
When you fly business class you get all the important things of first class – lie flat beds for a good sleep on those night flights, priority boarding etc. What’s missing are the ephemera of luxury, and the price tag that goes along with that.
Tablets like the Nexus get the job done[2], they’re just not priced or marketed as luxury items.
Premium economy
There is an emergent bunch of tablets that are presently around the £119 price point that lack some of the sophistication of the Nexus etc. (e.g. no 3G/LTE option), but that are still pretty decent for regular day to day use. The Tesco Hudl looks like a good example, and I’m sure there’s similar stuff popping off the lines of a multitude of Far East manufacturers.
Economy
This is the land of the £99 (and below) tablet. They can all ostensibly do the same stuff as any other tablet – run apps, browse the web, play music, read ebooks, watch videos. They just do a terrible job of it because the hardware bill of materials has been pared to the minimum – beyond sensible compromises on user experience versus cost. Poor screens and laggy user interfaces are the cramped legroom of the tablet world. The Argos MyTablet provides a perfect example of everything that’s wrong here.
Updates
12 Nov 2013 – Joe asked ‘iPad mini?’ I replied ‘lumped in with the iPad. Consider screen size to be something like flight distance => iPad mini is 1st class short haul’. I probably should have figure out the screen size to flight distance comparison sooner, but it helps refine the model.
Notes
[1] I briefly got my hands on an iPad Air last week at London Cloudcamp, and it’s everything that I expected it to be, which is mostly pretty good. I can’t say I like the new smart cover – the dimensions just feel wrong having moved from a 4 fold design to 3 folds to adapt to the new narrower body.
[2] I’d argue that my Nexus 7 is better for my day to day workflows than my iPad. My HDMI adapter arrived today from China, which means I now have the ability to watch videos on hotel TVs – and it’s even smaller (and thus more convenient for travel) than the old iPad one.
Filed under: technology | Leave a Comment
Tags: class, iPad, Nexus, tablet
This is Fred Wilson’s question, but I’m repeating it because it’s an interesting one, and because I think I have answers beyond glorified remote controls and recipe books.
Like Fred I was also intrigued by Ben Evan’s post ‘iPads, price and self-selection‘. Also in common with Fred I really like the Nexus 7 – both new and old[1]. I bought a bunch of last year’s model for various family members, and recently got a 2013 LTE one for myself.

Here’s what I see the Nexus 7s that I bought for other people being used for:
- Kindle
- Gmail
- Some very light browsing
- Games when the kids get hold of them
Superficially that looks like a similar list to my own use:
- Feed.ly
- Gmail
- Casual gaming
- Browsing
- Watching videos
- Kindle
Looking at the lists one might argue that the tablets are used for much the same things, but if you were watching over our shoulders things would be very different.
I use my Nexus 7 online for hours every day – it’s a great device for curation [2] – a device for the 10% [3]. The digital footprints that I’m leaving with it will be at least as large as those I previously left with my iPad. I watch videos when I’m travelling, and I read books on Kindle when I’ve exhausted myself of online content, or just want to disconnect for a while.
My wife uses her Nexus 7 mostly for Kindle. Her digital footprints from it are likely very shallow. The other Nexus 7s in the family get used even less, their digital footprints are virtually non existent.
I think this explains the massive disparity between Android tablet sales, and Android’s share of page impressions across the web. People who’ve been buying Android tablets don’t use them online as much as iPad users, even the relatively high end ones like the Nexus 7.

I think cost comes into play a little here – if you’re using a tool a lot then you’ll buy a good tool. I happen to think that a 2013 Nexus 7 LTE is just as good (perhaps even better) for my own use cases than the equivalent iPad mini, so the price delta (which is almost all margin to Apple) isn’t justified for me. So Ben’s right in part – premium buyers self select in (even if the premium may no longer be deserved or necessary [4]).
There is however something else going on here. If the iPad is a device for the 10%, and cheap Android tablets are a device for the 90% then there’s a very skewed distribution of online engagement. The 90% don’t just consume – they consume a lot less than those who curate, and they in turn consume a lot less than those who create.
So the short answer to ‘What Are People Doing On All Those Cheap Tablets?’ feels to me like ‘very little – certainly a lot less than what you’re doing with your iPad’.
Notes:
[1] I’ve heard from some friends that they tried the original Nexus 7 and didn’t get on with it. My own (somewhat superficial) experiences were all good, but I didn’t have my own and work it hard. I’ve since read that there was a problem with the storage early on (since corrected) that caused major performance issues for heavy users. There were also reports of WiFi issues. To those who were put off I’d say try again (after updating to latest firmware etc.) and certainly give the 2013 model a go.
[2] It was Fred that brought my attention to the 90/9/1 rule ‘Out of 100 people, 1% will create the content, 10% will curate the content, and the other 90% will simply consume it.’
[3] I’m writing this post on my laptop rather than a tablet because even with Swype, speech recognition or a bluetooth keyboard tablets are *much* less effective for creative work.
[4] Though the Nexus 7 is still a premium device. The $349 I paid may be less than $629 for an equivalent iPad Mini, but it’s still a whole lot more than the cheap devices that are now knocking around.
Filed under: technology | 2 Comments
Tags: android, demographics, iPad, tablet
Abandoning Apple
I’ve been a happy iPhone and iPad user for a couple of years, but the time has come to move on. It’s not that I dislike Apple stuff, I just don’t think it’s the best for my needs, and certainly isn’t worth the premium. That said, I’m not very convinced by iOS7, or OS X Mavericks for that matter.
Desktop
The new Mac Pro looks awesome – an object of pure techlust the likes of which I’ve hardly seen since the NeXT cube days. But I last bought a new desktop somewhere in the middle of the last decade.
Laptop
If Apple made an MacBook Air that took 16GB of RAM I’d have bought one already. The 8GB limitation pushed me to getting a Lenovo X230, which I’m very happy with (and was about $500 less than the equivalent MBA – and doesn’t make me carry a little bag of video adaptors).
Phone
I ended up choosing the Samsung Galaxy S4 mini over an iPhone 5 – the dual SIM version was just the icing on the cake. Cost wasn’t a significant factor in the decision, but £335 is a whole lot better than £709 for a 64GB 5s.
Tablet
My iPad hasn’t seen much use since I got a Nexus 7 LTE, and I left it at home when I was on holiday last week, and again for a business trip this week. I think cost was more of a factor here – the Nexus 7 LTE is $349 whilst an equivalent iPad mini is $629.
What I’m missing
I bought the TomTom apps for iOS some time ago, and it’s been great to get free upgrades over the years. I’ve yet to buy a new offline GPS app (like TomTom or maybe Sygic) for Android, so I’m still taking my old iPhone4 with me on trips where I need a GPS.
I had the HDMI adaptor for my iPad (that also worked with my iPhone 4), which was useful for watching shows on hotel room and holiday rental TVs (though I’d note that the HDMI adaptor for newer iPads that use the Lightning connector aren’t really adaptors, but rather mini network attached streaming devices – that actually reduce the quality of the output). I’ve yet to get a Slimport adaptor for the Nexus 7, and I probably won’t bother getting the slightly different sort of adaptor the S4 mini needs.
What I’m not missing
A whole bunch of crappy games that my kids downloaded.
A whole bunch more games that I downloaded.
How my world is better
Swype – probably the best 69p I ever spent. It totally baffles me that Apple blocks this kind of awesome UI improvement from its environment.
I don’t have to use iTunes any more (e.g. to get videos onto my tablet before a trip).
I have enough storage on my phone for all of my MP3s and everything else.
I can share links to stuff on pinboard.in without having to jump through hoops (because of an open plugin architecture for such things).
Conclusion
Leaving behind the iOS world for Android has involved little pain, and a good amount of joy. Maybe I’d be just as happy with newer Apple gear, but I’d be somewhat poorer and I’d be missing out on a bunch of stuff.
Lastly, I should answer Fred Wilson’s question ‘What Are People Doing On All Those Cheap Tablets?‘ – for me it’s exactly the same as what I was doing with my expensive tablet – Feed.ly, Twitter, watching videos, Kindle, Facebook and some casual gaming. Perhaps more on that in another post – I think people who do a lot with their tablets are willing to spend more on them, but if a heavy user like me can be happy with a cheaper device then the landscape is changing.
Filed under: technology | 2 Comments
Tags: android, Galaxy, iOS, iPad, iphone, Nexus 7, S4 mini, Samsung, Swype


