Category Archives: GNU/Linux

Live Desktop Streaming via DLNA on GNU/Linux

TWiT and the Ubuntu terminal on a TV set via DLNA

Many modern TVs (and set-top boxes, gaming consoles, etc.) support DLNA streaming. Suppose you have a PC that stores all your music, downloaded podcasts, video podcasts, photos, and so on. You can run some DLNA media server software on your PC and stream your entire media collection to your TV over your home network. No more carrying around USB sticks, it’s all in your home cloud.

On GNU/Linux, I am using MediaTomb as my DLNA server. It’s nothing fancy (it’s a file server, after all), and it just works.

Okay, this takes care of media files stored on your PC. But can we do more? Is it possible to stream a live capture of your desktop to the TV?

Let’s say you’re watching a Flash video in your browser, and there’s no way to download the video file. Or, you’re watching a live event being streamed via Flash or whatever. It would be kinda cool to be able to stream that to your TV via DLNA. And it’s possible—not trivial, mind you, but I’ve seen it working at least once…

Continue reading Live Desktop Streaming via DLNA on GNU/Linux

Building Debug Versions from Source Packages

To build a debug version of exactly the package that is installed in your Debian-based GNU/Linux distribution (tested on Ubuntu 10.10):

apt-get source rhythmbox

This does not require “root” access. It will simply download the source package to the current working directory.

To build the package, you might need developer libraries of dependency packages:

sudo apt-get build-dep rhythmbox

To configure the package so that it builds a debug version that does not replace the installed package, I used:

./autogen.sh --prefix=/home/devel/rhythmbox-0.13.1/install CFLAGS="-g -O0"

All that is left to do is run make:

make -j 4
make -j 4 install

Stitching Panoramas With Hugin and Some GIMP Post-Processing

Here’s how I created the panoramas that I posted to my GUADEC 2010 photo album (on Flickr and on Picasa).

I used the Hugin panorama photo stitcher and did some post-processing using GIMP. Hugin should be available in the repositories of your GNU/Linux distro, and it’s dead simple to use.

These are four pictures I took at the intersection of Grote Halstraat, Hoogstraat, and Gravenstraat in The Hague with a camera phone. I made sure that the pictures have enough overlap. (The Hugin tutorial recommends 20% to 30% overlap.)

Continue reading Stitching Panoramas With Hugin and Some GIMP Post-Processing

GNU Automake By Example

Originally published: June 1, 2005

Table of Contents

  1. Abstract
  2. A Minimal Project
  3. Editing Automake-based Projects with KDevelop
  4. Adding Doxygen Support
  5. A More Complex Example
  6. Topics Not Covered
  7. Links

Abstract

This article presents several simple Automake/Autoconf-based projects. I assume that you know what Automake, Autoconf, and configure are, and that you know how to install a software package from sources (i.e., you know how to invoke "configure & make & make install"). (If you don’t, you can still follow the instructions to create a very small project to play around with.) This article does not contain lengthy explanations or detailed background information. Rather, I present a few examples that (hopefully) get the ideas across.

Some of the topics for which examples are presented:

  • Doxygen support
  • Multiple subdirectories
  • Flex/Bison support
  • Libtool Convenience libraries
  • KDevelop Automake Manager

Continue reading GNU Automake By Example

Building SWIG Python Extensions on GNU/Linux

Originally published: May 27, 2005

Table of Contents

  1. Abstract
  2. Building Manually on the Command Line
  3. Adding SWIG to Autoconf
  4. Adding SWIG to Automake
  5. An Example Project

Abstract

In the article Python Extensions In C++ Using SWIG, I describe how to extend Python with C++ code. That article also contains instructions for building SWIG extension DLLs on Windows. This article contains instructions for using GNU Automake and Autoconf to build SWIG extensions as shared objects on GNU/Linux.

Continue reading Building SWIG Python Extensions on GNU/Linux