reverse engineered

NCurses Internet Radio Player

Since moving house last year, I’ve found myself unable to receive Saorview (Irish DVB-T) using an indoor aerial (my new house is about 10km further from the transmitter). This was previously my primary way of receiving the RTÉ Radio stations when working on my desktop. I have a high gain wideband antenna in the attic which works great, but with no neat way to get a cable to my desktop, this is unfortunately not an option. Read more →

DVB-T on Linux using DVBStreamer

I’ve tried most of the DVB streaming solutions for Linux, including VDR, MuMuDVB, DVBBlast, dvbstream, DVBStreamer, GNOME DVB Daemon. I’ve only managed to find one that does this well though, which is DVBStreamer. Getting started with DVBStreamer is pretty easy. First of all you need a DVB adapter that works with Linux. I use a USB ITE IT913x-based adapter, which works well for me. Once you have a compatible package, you need to install necessary (Debian/Ubuntu) packages: Read more →

Linux Kernel Contributor

Having used GNU/Linux systems for some time now, and having submitted patches to a fair number of open source projects, it is nice to finally get a patch accepted into the biggest open source project of them all, the Linux kernel. While I did submit a kernel patch to OpenWrt back in 2011, it is maintained as a rebased patchset, and was never upstreamed to Linus’ tree. That changed today though, when a small patch I (had forgotten I had) sent to the linux-media mailinglist back in October 2013, was just pulled by Linus Torvalds into his tree for the Linux 3. Read more →


recode is a simple program for performing conversions between many different character sets. I often use it to encode HTML and other code snippets before uploading them to the web. jmccrohan@lambda:~$ echo '<strong>Hello, World!</strong>' | recode utf8..html <strong>Hello, World!</strong> Read more →

XML reindent

XML is designed to be human-readable. However, to minimise data transfer, the indentation and newline characters are often discarded during transmission. This results in a difficult-to-read XML file such as the one below: <?xml version="1.0" encoding="ISO-8859-1"?><note><to>Tove</to><from>Jani</from> <heading>Reminder</heading><body>Don't forget me this weekend!</body></note> This XML file can be both checked for validity, and reindented using xmllint. Debian/Ubuntu users can find this as part of the libxml2-utils package. xmllint --format input.xml output.xml This results in the following, more-sane output: Read more →

MATLAB R2012a system() function

MATLAB does not integrate nicely with Linux operating systems, and instead, provides its own copies of binaries, and libraries. These libraries are often outdated, which can cause problems such as the one below. When calling external C++ compilers though the system() function, I found myself running into an eglibc error. This occurred when running MATLAB R2012a on a Debian Wheezy machine with eglibc 2.13 and gcc 4.7.1. /tmp/hello-world: /opt/matlab/bin/glnxa64/ version `GLIBCXX_3. Read more →

Irish dvb-apps scan files

My dvb-apps patches, which added initial Saorview scan files for the primary Irish DVB-T transmission sites, were accepted. They should be trickling down to the various Linux distributions soon. Read more →


Running Debian Testing means that I constantly have new packages pushed to my machine. While the majority of these changes cause no problems, occasionally there can be a few hiccups. apt-listchanges is a useful package that shows any Debian NEWS files during package upgrades. It can also be configured to show the Debian changelogs too. It cleverly displays each changelog version since the version that was previously in Testing (bear in mind that not every package version in Sid reaches Testing). Read more →

apg - Automated Password Generator

I discovered apg recently, a handy tool for generating secure passwords on the commandline. user@host:~$ apg Please enter some random data (only first 16 are significant) (eg. your old password): Ujecabhytor3 (Uj-ec-ab-hyt-or-THREE) yaxJant7 (yax-Jant-SEVEN) eewIcIkheaj9 (eew-Ic-Ik-heaj-NINE) GitAbpavhav7 (Git-Ab-pav-hav-SEVEN) GrysAcksId8 (Grys-Acks-Id-EIGHT) VurHocs1 (Vur-Hocs-ONE) You can also pass a seed to apg via the commandline for use within scripts: user@host:~$ apg -c date +%s FiWaztyt BykerWij AndyewAbFa Huoforea enyuavhew gaiwilcij Read more →