Linux stuff  

Whilst I've commercially developed for Linux since 1995, I've not really released any standalone Linux software. Patches have gone in to the Kernel or other software and I've created several commercial Linux-based products with my own Linux-from-scratch approach. I've had most fun with Blackfin uClinux and early ARM Linux, though embedded Debian is now a realistic platform I develop with.

Where possible, I use Debian linux mostly because its packaging tool, apt, means that maintaining the system, adding new packages and performing release upgrades is totally pain free. Right now Linux Mint is my favoured desktop-Linux variant, when UI is unavoidably required.

Debian also provides very handy package search tools. The one I use most gives you a way to find the package to install if you know the binary name you want.   Check it out:  


Mrs J was unimpressed that she couldn't print from fancy Apple devices to our behemoth HP laser printer, as it doesn't natively support AirPrint. Linux to the rescue, with a combination of CUPS, Avahi and other twiddles. Configuration wasn't completely straightforward, so I'm putting this info here as a quick rundown reference of the things I've had to do to get it working. YMMV, and I may have missed detail, but this is the basic scenario on Debian jessie:
  1. apt-get install cups cups-gutenprint python-cups magicfilter avahi-daemon
  2. Edit /etc/cups/cupsd.conf:
    • Remove 'Listen' lines and add 'Port 631' instead, to listen on all interfaces
    • Add 'ServerAlias *' to make CUPS shut up about .local names and IPV6 stuff
    • Possibly add 'Allow From' lines in the <Location> directives as suitable for your network
  3. echo "image/urf application/pdf 100" pdftoraster > /usr/share/cups/mime/airprint.convs
  4. echo "image/urf urf string(0,UNIRAST<00>)" > /usr/share/cups/mime/airprint.types
  5. /etc/init.d/cups start
  6. Browse to https://your-server:631/ and use the Administration Tab, Add Printer, and, scarily, enter your root login credentials!
  7. Follow the CUPS webpage setup for your printer. Luckily my HP5550dn was found on the LAN, known and supported. Good luck there.
  8. Share the printer
  9. mkdir /etc/airprint ; cd /etc/airprint
  10. wget -O --no-check-certificate
  11. chmod 755
  12. ./ -d /etc/avahi/services
  13. /etc/init.d/avahi-daemon restart
You may have to poke appropriate holes in your firewall. And if you print, and nothing happens at the printer, try turning off "Double-sided" in iOS when the option appears (takes about 10 seconds to appear in the dialog sometimes!)