Due to licensing issues, Linux distributions don't ship Oracle Java packages anymore. In many cases, that doesn't matter since you can just use OpenJDK. But if you do need Oracle's JDK, Debian packages are a bit more convenient than handling tarballs because they integrate nicely with the rest of the …
read moreManaging Docker Container Updates
When running a Debian/Ubuntu-based server, it's relatively easy to figure out whether updates need to be installed. Tools based on apt work very well in this regard and even offer advanced features like unattended updates. Not so with services running in Docker containers.
When working with Docker, you typically …
read moreConverting Images to ASCII Art
I've been playing with Docker a lot lately. Docker is a tool for creating lightweight virtual environments based on Linux containers. They are extremely useful for running services, but you can also use them for running one-off tasks that you don't want to run on the host system directly. Since …
read moreMaven: Discovering Dependency Conflicts
Among other things, Maven's dependency plugin displays the result of Maven's dependency resolution mechanism. The output of the dependency:tree goal makes it easy to see where transitive dependencies come from. This week I discovered that recent versions of the plugin also support a verbose flag that lists conflicts and …
read moreTesting equals() with Guava
I've long held the opinion that Guava belongs on every Java classpath because its design and the quality of its implementation surpass other comparable utility libraries (and sometimes even the JDK). Guava's testlib is pretty cool, too, even though it's not as widely known.
Most things in testlib are useful …
read moreEnabling Hibernate Support in Ubuntu 14.04 LTS
In this article, I'll show you how to enable hibernate support in Ubuntu 14.04 ("Trusty Tahr") by making a "Hibernate" menu entry appear in Unity's global system pulldown menu. The Ubuntu developers disabled this a couple of years ago because hibernate didn't work reliably on all systems - proceed at …
read moreGoogle Music
My Nexus 4 and 7 devices don't ship with an old school MP3 player anymore. After trying lots and lots of players (all of which I didn't like), I ended up with Google Music, which is pre-installed on all Nexus devices. While its queue handling takes some getting used to …
read moreRemote-Controlling a Sonos Device Using Python
I couple of months ago I bought a Sonos Play:1, a pretty cool wireless speaker that comes with free controller apps for major platforms (Android, Windows etc.). To give the speaker access to my music collection, I hooked up a USB drive to my home router and shared the …
read moreA Template for Python Unix Utilities, Revisited
A long time ago, I posted a simple template for writing text-processing Unix utilities in Python. Since we're not in 2009 anymore, I figured it's time to port it to Python 3.
Differences between the old 2.5 compatible version is the use of argparse instead of optparse (which is …
read moreQuick Tip #6: Triggering Actions on File Close
Sometimes it's useful to trigger an action after a file is closed. Suppose you started a lengthy download on your notebook and you want to suspend it as soon as the download is done. There are several ways to achieve this.
If you started the download using a web browser …
read more