Programmers' Pain
8Nov/110

Things you shouldn’t do #3: Cut 19-inch amplifiers and subwoofer crossovers in half

The coffee tables sound system in the original and installed state

The coffee tables sound system in the original and installed state

Quite some time has passed by since my last blog post about my 512 RGB LED Coffee Table project so that it's about time to give you a brief update what has happened the last ~8 weeks. Mid of September my carpenter was done with constructing the coffee table so that I could finally start to integrate all the electronic components and the needed wiring into it. Thanks again to especially Gunnar Schwinn from http://www.massivholz-moebel-schreinerei.de/ which did a great job in bringing my ideas to life and giving valuable feedback. As soon as the coffee table arrived at my place I focused on the sound system since the installation of it is rather a standalone task beside the installation of the RGB LEDs.

26Oct/110

Howto upgrade PHP on CentOS 5.x

PHP LogoCentOS 5.x comes with PHP in version 5.1.6 which is pretty old those days. There are already quite some web applications that have dropped PHP 5.1.x support which makes it impossible to install them on a CentOS 5.x installation. With the release of CentOS 5.6 additional packages called php53, php53-common, php53-ldap, etc. have been released which could replace the 5.1.6 default version of PHP if you don't have other RPM packages that depend on the original php packages. Since the php and the new php53 packages do install their resources into the same directories you can't install both of them in parallel. Instead of faking empty php packages to be able to install all php53 packages without conflicts and missing dependencies I decided to go for a third party PHP installation provided by AtomiCorp.

7Sep/111

Soldering 512 RGB Leds: Pure fun… Not!

Eight 8x8 RGB LED arrays each driven by a Rainbowduino Controller

Eight 8x8 RGB LED arrays each driven by a Rainbowduino Controller

Finally! After hours spend with fitting LEDs into reflectors, preparing cables, cutting shrink tubing pieces and soldering everything together to 8x8 LED arrays: It is done! And I'll never ever do it again this way. :) As I already stated in my first blog post about my 512 RGB LED Coffee Table project I was a bit too optimistic in the planing phase regarding the wiring effort needed to get all LEDs working.

17Aug/110

Howto waste your spare time: Build a 512 RGB LED coffee table

512 RGB LED Coffee Table

512 RGB LED Coffee Table

"Wait.. What?! Are you serious?" "Yes, I am!" "Why do you want to do that?!" That's actually a very interesting question - and it's the usual response I do get if I explain what it's about those weird pictures I post on Facebook about prototyping loudspeakers or drilling 2,560 holes into plywood boards. Also people don't quite understand why I've spent hours and hours with constructing a 3D model of a coffee table. This is a first attempt trying to explain myself why I'm spending my free time for this project since more than 6 months now.

14Aug/110

Things you shouldn’t do #2: Hack around maven-shade-plugin limitations

Shutter Shades make everyone Look like a Douche (http://cheezburger.com/Loltater/lolz/View/3648699904)The maven-shade-plugin is a handy plugin which allows you to collect all of your project dependencies - incl. transitive dependencies - and put everything together into a single, shaded jar file. I use this plugin to deliver a Java application as a single jar file containing all needed resources to simplify the application launch descriptor. But sometimes you have more than one Maven project that you want to deliver as a single jar file. And sometimes you even have a parent Maven project that contains a list of dependencies and for each of them you want to create a single jar file. This kind of project setup might lead you to the idea to call the maven-shade-plugin (multiple times) directly from command line to create your jar files which will end up with the follow error message: "You have invoked the goal directly from the command line. This is not supported. Please add the goal to the default lifecycle via an element in your POM and use "mvn package" to have it run.". If you still want to use the plugin and if you're not afraid of bloody hacks than continue reading - otherwise you have to accept this limitation since it's there for a good reason :-)

10Jul/110

Howto install cx-oracle on CentOS 5.x

Python Logo (http://www.python.org/)

Some Python scripts that I've written have to communicate with an Oracle Database. To be able to do so you have to install a Python module that implements the needed Oracle bindings against the Python Database API. Usually those modules aren't part of recent Linux distributions due to license restrictions. Since I haven't really found some easy and straight forward howto or tutorial how to install the cx-oracle Python extension module on CentOS 5.x I decided to write my own little tutorial.

22Jun/112

Offtopic #1: The Useless Machine

Useless MachineDo you sometimes have the feeling that whenever you go one step forward someone pushes you immediately back to your starting position? Someone who is so persistent that whatever you do you have no chance to get any further? A desperate battle where only one person will be the loser: You! You fell me? Yes? So than say Hello to the Useless Machine which incorporates all of this in a little black plastic box.

28Feb/110

maven-duplicate-finder-plugin: find duplicate classes in maven artefacts

Lately I was looking for a Maven plugin to solve the problem that I want a certain Maven build to fail as soon as new duplicate classes have been introduced by other developers / third party dependencies while knowing that I already have some duplicate classes that I can't get rid of right now. Basically a duplicate classes detector with the possibility to define an exclude list - that's where the maven-duplicatefinder-plugin of Ning Inc. will give you a helping hand.

9Feb/110

maven-jarsigner-plugin: sign multiple jar files

Image from the Nuvola icon theme for KDE 3.x by David Vignoni Source: http://www.icon-king.com (LGPL)

The maven-jarsigner-plugin is a pretty handy Maven plugin if you want to sign the jar file produced by your Maven artefact build. The plugins documentation does provide several examples for that use case.

But if you want to sign just some jar files in the scope of your Maven build - especially if you need to apply certain include / exclude patterns - than the documentation provides only the configuration options you have to put together to make it work. Here's an example how to sign several jar files using include / exclude patterns.

2Feb/110

Things you shouldn’t do #1: Recursive Maven Builds

Recursion - You gotta know when to stopToday I've found a new way to kill the resources of my development PC via doing recursive Maven builds. Yes, recursive! Why? Because I can and it's fun! It started with an pretty old part of a Maven build which used Python scripts to compile Java classes outside of the Maven artefact scope. Those classes are than used to launch a little helper JVM which resolves the used annotations of a class you've passed to stdin and prints the annotations class name to stdout. You know, the usual stuff you do in case the used Java decompiler doesn't support Java annotations. It all started with a Maven project which did call a Python script...