• Client-Side Processing of Images with JavaScript Before Uploading

    The title’s quite silly unfortunately, but I was recently doing some experimentation with uploading images to CouchDB directly from a browser. I needed to scale the images before storage, and since I was talking directly to the CouchDB service without any kind of in-between API services or server-side scripts, needed a way to achieve this purely on the client.

    Thanks to modern APIs available in browsers, combined with a Canvas, it’s actually reasonably simple to process a user-selected image prior to uploading it to the server without the need for any third-party libraries or scripts.

    Continue reading...

  • PS3 Sixaxis with Bluetooth on Debian Sid

    Continuing to tweak my Kodi setup, I thought it would be fun to attempt connecting a PS3 Sixaxis controller to it, since the HTPC I’m using has built-in bluetooth.

    Contrary to what most of the internet seems to say on the subject for Debian/Ubuntu systems, which seems to involve third-party tools and sometimes compiling things, I found the process much simpler on a modern system.

    Continue reading...

  • Lirc 0.9.4 and Kodi on Debian Sid

    This is a small follow-on on from the Kodi on Debian Sid guide I did earlier this year to get lirc (IR remote support) working once more, following an upgrade to version 0.9.4, which changes how the lirc services and configuration work (shakes fist at systemd).

    After upgrading and following all the instructions in /usr/share/doc/lirc/README.Debian.gz, I was left with the problem of Kodi not responding to any remote input at all.

    Firstly, I had to re-source my remote’s configuration (mceusb) from the lirc git repository. Place the *.lircd.conf file from there into /etc/lirc/lircd.conf.d/ and remove/rename other .lircd.conf files already in that directory.

    Now, running irw and pressing some buttons on your remote should show you the button pressed and the configuration used.

    Next up, Kodi fails to connect to the IR device. There are two trivial but non-obvious solutions:

    Firstly, without changing any of the default configuration generated by the migration process outlined in the lirc README file, simply change your Kodi starup command as follows:

    kodi --lircdev /var/run/lirc/lircd
    

    Alternatively, you may change the lirc configutation, to put the device file back where Kodi expects it:

    # in /etc/lirc/lirc_options.conf:
    output = /dev/lircd
    

    Then end result should be you happily continuing with your life.

  • Sydney Photos

    I recently spent some time in Australia, specifically Sydney and Melbourne, and took a bunch of photos from a few parks and interesting places in Sydney (unfortunately I was pretty ill and didn’t get out very far in Melbourne).

    I really enjoyed the number of parks and amount of greenery around the city centres.

    All the Sydney images are up here.

  • Eclipse

    Today’s solar eclipse, as viewed from Johannesburg, South Africa, through the lense of a Canon SX50 at 50x optical zoom, through some eclipse viewing eyeware from the 90s.

  • Kodi and Steam on Debian Sid

    I recently went through the process of reinstalling the media PC connected to my TV, which I use to run Kodi for movies and TV, and Steam in Big Picture mode, which allows me to stream Windows-only games from my desktop to the couch.

    I thought it would be useful to describe my setup and the process to achieve it, in case anyone else is interested in creating their own custom Kodi/Debian/Steam builds.

    Continue reading...

  • Out of Eve 3.0 released

    After almost exactly two years since the last release of Out of Eve, here is version 3.0.

    As may be noted from the release note, the main goal of this release is to catch everything up with the current state of EVE, it’s API, and the static data dump.

    Along the way some new stuff was also added an improved, like the new menu system which allows access to all your characters, so there’s no need to switch between them and then view detail pages, and the introduction of memcached caching, which stores and retrieves entities loaded from the static database dump, reducing page load times and database accesses (a single page load may result in hundreds of individual MySQL queries).

    I’m rather pleased with this release, and it seems a lot more solid than most before.

    I’ve also got the public Out of Eve website back up, now featuring HTTPS courtesy of Letsencrypt, at last.

  • Lightweight Lightbox

    It seems surprisingly difficult to find a simple lightbox implementation which doesn’t rely on jQuery. I wanted something simple for this site, but did not want to have to re-do any HTML, so came up with a basic JavaScript and CSS solution.

    This also turned out to be a useful lesson in “modern” jQuery-less DOM manipulation. I found 10 Tips for Writing JavaScript without jQuery quite useful in this regard.

    For the Lightbox/pop-up itself, the Pure CSS Lightbox by Gregory Schier served as an excellent reference and starting point.

    Continue reading...

  • Image Halftone Processor

    More a curiosity than an actual useful project, I just had an Idea I wanted to try out, and this is the result.

    This Java application (or library, if you want to include it in your own project) simply takes a source image, a couple of optional parameters, and outputs a new image with a halftone- like effect.

    Briefly, works by stepping through the pixels of the source image at an interval defined by the dot size specified, samples the brightness of that pixel, and draws a circle onto the destination image, scaled according to the source pixel brightness.

    For reference, take a look at the java.awt Graphics2D, Image and BufferenImage classes. It’s really nice to half a whole bunch of image processing and drawing capabilities available within the standard library, rather than needing to rely on external things (as I recently discovered to be the case with Ruby - pretty much all image processing is done via an ImageMagick dependency).

    The source, documentation and a download are available from the image-halftone GitHub project page.

  • Website update

    Yup. It looks different. For the first time in over 11 years, this website is not being built dynamically by PHP scripts.

    I’ve jumped on the static site generation bandwagon, and after taking a look at several options (primarily Hugo and Nikola), and decided to settle on Jekyll. At the end of the day the easiest to install and get started with won, basically (which I found amusing for a Ruby project, for some reason).

    There are a couple of reasons for wanting to change. Primarily, it seems every second day I read about some new Wordpress exploit wiping out sites left right and centre. It’s just another point of admin to update things all the time, which I could do without. Additionally, I’m tired of bots smashing into the admin login page all day. While it doesn’t really impact me all that much, it’s just something that bothers me.

    The myriad plugins “required” to manage comment spam, the aforementioned login attempts, galleries, links, etc. all provide their own potential security issues, and all need to be regularly updated (assuming their authors didn’t abandon them years ago).

    Finally, I wanted to do some custom design (yes, I’m not fantastic at it), but the thought of building mixed HTML and PHP templates for Wordpress horrifies me.

    For the conversion, I used the Jekyll Wordpress migration process, which resulted in a bit of a mess, followed by conversion from HTML to Markdown using Pandoc, which did an excellent job. Over several days I had to clean up and reformat most pages, rebuild the galleries, redesign everything, etc., but I feel the result is worth it.

    The full source code (plugins, config, assets, posts etc) are available in GitHub if anyone wants to steal anything.