I read 14 books in 2018:
I read 34 books in 2017:
I maintain a howtos folder where I put text files about things I've managed to do, or failed to do, on my computer. I thought it would be fun to turn the list of files into a human-readable list to give an idea of what I've done over the last 20 years or so of working with computers. It might even be a useful thing for recruiters to look at, so they know I'm telling the truth when I say I can probably cope with most programming/computing tasks. (Not that I'm looking for a new job right now.)
aapt compile agata report alfresco ant without java archlinux rpi asp.net on linux atom text editor personalisation audio file fixing audio file trim bash commands bazaar ng bind install cmp jboss cobol compilers config dell laptop cron jobs db clustering dbg install ddwrt on tplink TL-WR740N-v4 dns servers dosemu on ubuntu breezy dvd ripping and video encoding eclipse elearning fastcgi ruby fedora 11 audio setup fedora personal setup firefox plugins first router netgear 2004 flex2 git replay commits gnome shell extensions grip config haxe install horde and imp icoya importing outlook install breezy install edgy install fedora iptables java install fedora java unit testing jboss joomla ecommerce install jruby rails kino lamp hardening lighttpd live cd ubuntu ltsp hw requirements mail by telnet mail server postfix dovecot and fetchmail mambo install merb and datamapper mongrel clustering moodle install moodle scalability mplayer install win32 codecs on fedora nas fun plug openbsd on virtualbox openbsd on vmware open dns servers openreports opensurveypilot oscommerce overview phpbb db structure php compilation php with iis playonlinux install plone quakejs build rasbian rpi raspberry pi setup realplayer ripping report generators ruby intro ruby on rails from source ruby on rails migrations ruby on rails tutorial ruby on rails with xampp and fastcgi on ubuntu hoary running dos games running dos on linux soft phones spamassassin and postfix squid minimal setup squirrelmail ssl self signed certificate subversion supercollider surveys and data analysis svn apache trac tortoisesvn eclipse svn on site5 symfony2 tinyerp tomcat install tortoisesvn trac umbraco on docker vim commands webmin install windows on linux xampp addon xdebug xampp zaurus usb connect zencart and authorize.net
I read 27 books in 2016:
I've recently rebuilt an old laptop to use Fedora 24, installing the MATE desktop rather than using GNOME 3 (I really can't get to grips with it, and want my desktop to look like Windows circa 1996).
This all works really nicely, but Pluma, the default text editor in MATE, insists on showing you the most-recently used files in its file chooser. It took me ages to figure out how to fix this, so I'm posting it here now I've worked it out, for future reference.
Change the settings for the file chooser to open at the user's current working directory by running this on the command line:
dconf write /org/gtk/settings/file-chooser/startup-mode \"cwd\"
If you want to permanently disable recent files altogether, edit (or create) the file ~/.config/gtk-3.0/settings.ini with this content:
[Settings] gtk-recent-files-enabled=0
I've finally given up on the idea of making my blog a "social" site, and have turned off comments. The amount of spam I was getting on every article was absolutely ridiculous and took about 2 hours to clean up every time I got round to doing it.
I've now cleaned up all the spam (apologies if I removed any legitimate comments that anyone actually cared about). From now on will be turning off comments for every blog post and article (not many, given that I rarely update my blog these days).
Anyone who really want to get in touch with me can track me down via @townxelliot on Twitter.
I read 19 books in 2015:
I read 67 books in 2014:
I read 36 books in 2013. Here's the list:
I had a Galaxy S2 for a couple of years, which was a brilliant phone. It's Android, so you are spoilt for choice as far as apps go: my main use of the device was for multimedia, watching Netflix, iPlayer, stuff on my NAS drive (via BubbleUPnp, the best Android UPnP client, by the way), Sky Go (it's one of a handful of compatible devices), listening to music and radio shows. Using the excellent SwiftKey virtual keyboard, typing was fast and easy, so I also used it for personal email, Twitter, Facebook etc. The camera was great; so good that I'd stopped using our digital camera in favour of the S2.
But problems started a few months back. The microSD card somehow got corrupted, so I lost a load of photos. The USB port (or the system's detection of it) got flaky, so sometimes it continued to behave as if it was charging, even when unplugged. I couldn't reliably connect the USB to download files from it. I couldn't update the operating system, so more and more apps were becoming incompatible.
Eventually I realised I was going to need a new phone, contract-free (I use giffgaff). Because I like a challenge, and I work in open source, and some of my friends and old colleagues work on it, and because it uses HTML5 for its whole UI, I went for a SIM-free ZTE Open running Firefox OS (£60 on eBay).
On paper, Firefox OS sounds like a great concept: fully open source, most of the userland apps in HTML5, extensive web APIs for third party developers to interact with system services. However, my disappointment on first trying the phone was almost palpable. In fact, my first impressions were so very bad that I contemplated selling it on eBay within about an hour of unwrapping it. I was going to write a thorough review explaining why, but then this Phones Show video summed it up. As a phone, this device is barely adequate, for all the reasons explained there. I'll summarise the salient points:
Within a few days of purchasing it, I realised it just wasn't going to do for general day-to-day use. I actually forked out for a very cheap (£50) Android (Jelly Bean) tablet from Amazon (I think I should have spent a bit more money, as the web browsing on it is a bit crap, but games and multimedia work fine; the screen is only adequate; and the system clock drifts incessantly, which is irritating).
Having said all this, the good points of the ZTE Open are:
It's also worth bearing in mind the context for the device. It's not a "first world smart phone", more a "developing markets first smart phone". In that context, it's great. I imagine even having internet access on a phone would be a massive boon in some countries (I remember how exciting it was when I got my first hand-me-down HTC phone a few years ago). Data usage monitoring is key in countries where phone companies are still developing infrastructure, and contracts are likely to be capped.
And, this isn't the end of the story from my point of view. Once I got over the initial disappointment of how incomplete, inadequate and substandard this device is as a phone, and ordered an Android tablet to take up the slack, the "pressure" was off the ZTE Open. I could lower my expectations because I didn't need it to be anything more than a phone. Any functionality on top of that was a bonus. With this new (more realistic) perspective, I could more easily see the possibilities. Here was a phone which I could develop apps for, using my existing skills and toolchain, without having to run cumbersome SDKs and emulators (I have tried Android development in the past, but it's not really my thing).
Recently, I've been downloading radio shows and podcasts, and listening to them while walking around, after dropping the kids off at school, picking them up, shopping etc. Firefox OS has a music player, which is OK though basic. But this app, like most other music apps, is focused on playing music: generally short pieces of audio that you might listen to in one sitting, from start to finish. By contrast, listening to radio shows is more like watching a film on Netflix or reading a book on a Kindle: you might listen to the first half hour, then switch it off, then go back to it later.
Most music apps don't cope with this use case, where you "pick up" an audio file for a while then set it down, so you can come back later. The main feature you need for this is to track progress through an audio file and persist it, so a user can return to the same point they reached earlier. (The way Netflix and Kindle do for movies and books respectively.) On top of this, I also wanted a music player that showed me the full title and album for a track without truncating it or scrolling it leisurely into view; group by album as the default (as the album for a podcast or radio series tends to be the important thing, rather than the artist). Other desirables features: a slider for scrubbing through a track, while being able to see where you are in it (the Firefox OS Music app isn't great for this); and skip buttons to jump over chunks at the start of an audio file (where they tend to put introductions and adverts). I also wanted standard music app features, like being able to quickly go back to the last thing I listened to. And I didn't want loads of other features that I rarely use or care about, like playlists and album cover art.
I started a project called Marconi, an audio player focused on audio rather than music. My first step was ripping some code out of the Firefox OS Music app for decoding the ID3 tags out of mp3 files (the beauty of open source, though it would be nice if audio tag reading was a service...). I then wrote a wrapper round the Firefox OS deviceStorage API, so I could read audio files from the phone's hard drive and get their metadata. Initially, I just had a very simple list view of the files as an HTML file.
Next, for testing, I installed and setup adb (Android Debug Bridge) and the Firefox OS simulator (as documented on the Mozilla developer network). Shortly, I got Marconi running in the simulator (once I'd recognised this bug was holding me up).
After that, it took me a while to figure out the steps I needed to be able to push stuff to the phone. For those of you who might be similarly struggling (it was the main barrier for me), on Fedora Linux the steps are:
SUBSYSTEM=="usb",ATTR{idVendor}=="19d2",MODE="0666",GROUP="plugdev"sudo udevadm control --reload-rules. It all gets a bit vague here, but I just checked and this seems to work.adb devices and ensure you see a line like "roamer2 device". If you get "Insufficient permissions", restart adb with your fingers crossed and/or a prayer on your lips and try again.One other thing which wasn't very clear from the docs: you will need a manifest file, called something like manifest.webapp (the .webapp is important) to be able to load your app into the simulator. It's explained in detail on the Mozilla developer site.
I continued developing the app, which uses Bootstrap 3 for most of the UI (I'm not 100% sold on it, but it's quite lightweight and looks pretty good), jQuery UI for the slider (it's the best HTML5 slider in my opinion), some media player code I wrote on a previous project (which wraps HTML5 <audio>), localStorage to persist progress data, and Stapes for event handling and the model layer. There are a couple of screenshots below.

Notes: the screen on the left is scrolled up a bit so you can see the progress bars for two files; the buttons are positioned so I can reach them with a thumb when holding the phone with one hand; the slider updates the progress text at the top as you slide, and you can slide it to reach right to the start or end of a track - difficult to do precisely with the default Firefox OS Music app; progress bars on the home screen update in real time as you're listening to a track; the top-right notes button takes you back to the "last played"/"currently playing" track.
Finally, after quite a bit of work, I have an app which does what I want, for now. It won't scale to thousands of files, only copes with mp3s, doesn't do playlists or album art; but it is optimised for me: it remembers what I listened to last, it tracks my progress through audio files, it shows me full album and track titles, and it has BIG UI elements and fonts which I can easily see and press while I'm walking around. Yes, it's fairly ugly, the proportions are all wrong, it's not perfect by any means, but it suits me very nicely.
The moral of this story is that while Firefox OS is terrible as a end-user phone in 2013 (well, about as good as the phone I had 10 years ago), it is great as a platform for experimenting with HTML5 web apps in a real mobile environment. I don't think of my ZTE Open as a phone so much; more as a custom media player which I wrote myself, with the phone functionality as a bonus. Which is a rewarding feeling to have.