Anemic Domain Models

February 13th, 2010 by Leandro Del Teso

A post by Martin Fowler that talks about a very common and used way of defining the domain layer and service layer in an application.

Mic not working with C-Media soundcard and Ubuntu Karmic 9.10

February 4th, 2010 by Leandro Del Teso

The problem was that this on-board sound card is surround and, when in surround mode, the mic mini-plug input becomes Center /LFE output.

I fixed it this way:

1) Open “alsamixer”
2) Go to “Mic-In Mode” bar
3) Check that in “Item” (top-left corner), it reads “Mic-In Mode [Mic-In]”
4) If not (probably “Mic-In Mode [Center/LFE Output]“) hit up/down arrow keys until “Mic-In Mode [Mic-In]” is selected.
5) Check that mic is not muted. Go to “Mic” bar and check that it is not muted “Mic [Off]“. If it is, hit M key, you’ll get “Mic” only.

That should be it.

Some quality reading…

January 26th, 2010 by Leandro Del Teso

Thanks, Jorge!

Bubble Translate: An excellent extension for Google Chrome

December 10th, 2009 by Leandro Del Teso

This extension provides of a really simple an elegant way of translating web pages to your language. It uses services to translate, and the way it does it is simply excellent!. Just keep Ctrl key pressed while selecting the text you want to translate and it will display the translation in a bubble in-line.

Also it provides a menu to select the translation of the entire web-page or to open a form (like the one in for real-time translation.

Highly reccomendable.

You can found the extension here:

And Google Chrome, here:

Installing ImageMagick from source in Ubuntu

December 7th, 2009 by Leandro Del Teso
Start by removing any old versions previously installed via apt-get:
sudo apt-get remove imagemagick

Then update apt-get and install some supporting packages:

sudo apt-get update
sudo apt-get install libperl-dev gcc libjpeg62-dev libbz2-dev libtiff4-dev libwmf-dev libz-dev
libpng12-dev libx11-dev libxt-dev libxext-dev libxml2-dev libfreetype6-dev liblcms1-dev
libexif-dev perl libjasper-dev libltdl3-dev graphviz gs-gpl pkg-config

Use wget to grab the source from

Once the source is downloaded, uncompress it:

cdtar xvfz ImageMagick.tar.gz

Now configure and make:

cd ImageMagick-6.5.0-0
sudo make
sudo make install

To avoid an error such as:

convert: error while loading shared libraries: cannot open shared object file: No such file or directory

Add the following line to ~/.bashrc:

export LD_LIBRARY_PATH=/usr/local/lib
sudo ldconfig

You can confirm the install and available formats with:

identify -list format


Listening to from Ubuntu

November 18th, 2009 by Leandro Del Teso

A friend reccommended me player for Ubuntu.

Simply run:

sudo apt-get install lastfm

That’s it, it works flawlessly and it consumes about 10-12KiB/s of your bandwitdh. Pretty cool, right? Now configure it with your account details and enjoy Radios on your Linux box.

App installers for Java

November 11th, 2009 by Leandro Del Teso

IzPack is a one-stop solution for packaging, distributing and deploying applications.

It is fully cross-platform and generates a single installer. As such, it is an alternative to native solutions such as platform-specific installers and package managers.

IzPack-generated installers only require a Java virtual machine to run.

Further on:

5 days of Apache Wicket

October 28th, 2009 by Leandro Del Teso

5 days of Wicket!


2 amazing books I am reading rigth now

October 3rd, 2009 by Leandro Del Teso

These are 2 amazing books I am reading right now.

  • Head First Design Patterns
  • Wicket In Action

I post here the Amazon links, feel free to use them.


Turn off Eclipse's tooltips

September 21st, 2009 by Leandro Del Teso

Go to:

Window > Preferences > Java > Editors > Hovers

and disable Combined Hover.


Remember Goto statement?

September 3rd, 2009 by Leandro Del Teso

One programmer in anger says to the second programmer:
- “Go to Hell!”

The second programmer replies, in obvious repulsion:
- “Ugh, you used goto!”


Playing Tales of Monkey Island

August 13th, 2009 by Leandro Del Teso

I’m currently playing the new MI game: Telltale Games’ Tales of Monkey Island Chapter 1: Launch of the Screaming Narwhal.

So far, so good. I really like it. I am happy. :D

Non Relational DB: The (near?) future of databases.

July 25th, 2009 by Leandro Del Teso


“Neo4j is a graph database. It is an embedded, disk-based, fully transactional Java persistence engine that stores data structured in graphs rather than in tables. A graph (mathematical lingo for a network) is a flexible data structure that allows a more agile and rapid style of development.
Neo4j has been in commercial development for 8 years and in production for over 5 years. It is a mature and robust graph database[...]
In addition, Neo4j includes the usual database features: ACID transactions, durable persistence, concurrency control, transaction recovery, and everything else you’d expect from an enterprise-strength database.[...]“


“MongoDB is a high-performance, open source, schema-free document-oriented database.[...]
When we describe MongoDB as “document oriented”, we mean it’s in the class of databases for which the primary storage unit is a collection – possibly structured – of data, most likely as key/value pairs.”


“Hypertable is an open source project based on published best practices and our own experience in solving large-scale data-intensive tasks. Our goal is to bring the benefits of new levels of both performance and scale to many data-driven businesses who are currently limited by previous-generation platforms.”


“Unlike a relational database, Dynamo is a distributed storage system. Like a relational database it is stores information to be retrieved, but it does not break the data into tables. Instead all objects are stored and looked up via a key.”

Extra info:

Enable "public_html" for users in Ubuntu for Apache2

July 14th, 2009 by Leandro Del Teso

To enable the “public_html” folder for users in Ubuntu using Apache2, you only have to follow 3 steps. These are:

  1. Add the Apache2 userdir module: In Ubuntu, this functionality comes as a default module for Apache2. If you don’t have it enabled, just enter sudo a2enmod userdir in a console. This command will add and/or enable the module.
  2. Create the public_html directory: Create the public_html directory in the users home Enter mkdir /home/a_user/public_html in a console.
  3. Restart Apache2: restart Apache2 so that the changes take effect. Enter sudo /etc/init.d/apache2 force-reload in a console.

After Apache2 finishes restarting, you will be able to access the user’s public_html directory entering the address as follows in a web browser (I.E. Firefox :D) http://localhost/~a_user


Subversion (SVN) with WebSVN, DAV and Apache2 under Ubuntu

July 4th, 2009 by Leandro Del Teso

Install Subversion:

Use the following command to install Subversion and the Apache2 module:

sudo apt-get install subversion libapache2-svn

Create a repository:

Use the following command to create a repository:

sudo svnadmin create /var/svn/new-project/

Add permission to the directory for the Apache user only:

chmod -R 775 /var/svn/new-project

chown -R www-data:www-data /var/svn/new-project

Configure Apache

Open /etc/apache2/mods-available/dav_svn.conf and add a new “virtual directory”:

<location /svn>
DAV svn

SVNParentPath /var/svn

AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd

AuthzSVNAccessFile /etc/apache2/dav_svn.authz

Require valid-user


Create the users password file. Use the following command the first time only, the -c parameter will create AND override the file if it exists:

htpasswd2 -c /etc/apache2/dav_svn.passwd username

To add other users or change password use:

htpasswd2 -m /etc/apache2/dav_svn.passwd username

In /etc/apache2/dav_svn.authz, add the users permissions



Finally, restart Apache so that the changes take effect:

apache2ctl restart

Upgrading Ekiga Softphone version in Ubuntu

June 19th, 2009 by Leandro Del Teso

Ubuntu (specially 8.10 Intrepid Ibex) comes with a very old version of Ekiga Softphone. In order to solve this we have a personal site at Launchpad, the PPA for Troels Liebe Bentsen.

Just follow the instructions described in this page: at the bottom of the page under the title “Ubuntu”.

Beware to use the information found at the PPA for Troels Liebe Bentsen page. That is:

1) the repository information for your Ubuntu version (for Intrepid use: deb intrepid main & deb-src intrepid main)

2) the repository signature found here.

Eclipse 3.4 Show and Hide Breadcrumbs

June 18th, 2009 by Leandro Del Teso

Eclipse 3.4 Ganymede comes with a very handy Breadcrumbs Navigator which creates a breadcrumb above the source code editor. To open it, right click on the Java Editor and choose “Show in Breadcrumb”. Or simply toggle this navigator with the toolbar button:

eclipse breadcrumb Eclipse 3.4 Show and Hide Breadcrumbs
For those of you who are unaware of what breadcrumbs do, it is navigation aid used in user interfaces. The term breadcrumbs comes from the trail of breadcrumbs left by Hansel and Gretal in the famous fairytale. It is a method for users to keep track of their locations in programs or documents.

Monkey Island is back!

June 8th, 2009 by Leandro Del Teso

Today is one of the happiest days of my (digital) life. I found out two really great news on the net. After 20 years from the premier of the game, Monkey Island is back! Not just with one game but with six!

First of all, LucasArts is re-launching “The Secret Of Monkey Island”, the first game of the saga with a completely new look. Check it out:

You can find more info at:

Secondly, the company Telltale Games is launching a completely new 5-chapter game based on Monkey Island. It will debut July 7. Check it out at:

This is probably my favourite game of all time. This game was my entry-point to the computers world. And, probably, the reason I became a software developer. I always wanted to develop games, but my professional life took me in another direction. However I don’t loose my hopes on starting developing games sometime in the future! (Maybe when I retired. Hehe)

Interesting way of defining Java exceptions

May 28th, 2009 by Leandro Del Teso
ArithmeticException You are trying to use your computer to solve a mathematical problem that you cannot solve yourself. Read up on your arithmetics and try again.
ArrayIndexOutOfBoundsException See IndexOutOfBoundsException. The difference is that this exception refers to more than one finger.
ArrayStoreException You have used all your arrays and need to buy more from the array store.
ClassCastException You need to stay in the class or caste you were born into. Java will not accept dailits acting as kshatriyas or noblemen pretending to be working class. Note the spelling mistake (of caste) that was introduced in Java 1.0 and has not been corrected for backwards compatability reasons.
ClassNotFoundException You seem to have invented your own class. There are also caste systems that are not yet implemented in Java, most notibly the balinese caste system. For example, if you are a wesia, use the indian counterpart vaishya.
CloneNotSupportedException You are a clone. Find the original you, tell him what you want to do and then kill yourself.
IllegalAccessException You are a burgler that are running a Java program during a burglery. Please finish stealing the computer, leave the premises and try again.
IllegalArgumentException You have tried to protest against a previous exception.
IllegalMonitorStateException Please turn your computer screen back on.
IllegalStateException You come from a state that is not yet recognized by the UN, possibly Kurdistan or Palestine. Get a real citizenship, recompile your java code and try again.
IllegalThreadStateException One of the screws in your computer is threaded the wrong way. Please contact your hardware vendor.
IndexOutOfBoundsException You have put your index finger in an unacceptable place. Reposition it and try again.
InstantiationException Not everything can happen instantly. Please be more patient.
InterruptedException Tell your colleagues, room-mates etc. to leave you alone while you are working.
NegativeArraySizeException You have created an array with negative size. This can cause information to be lost and in the long run the Universe will be destroyed. Be happy that Java noticed what you were doing and DON’T DO IT AGAIN.
NoSuchFieldException You are trying to have a picknick on a field that does not exist. You can also get this exception if you try to visit an airfield that in fact does exist, but has been classified as top-secret. I’d give you examples, but then I’d have to kill you.
NoSuchMethodException Don’t use that method! Please, do things like we have always done.
NullPointerException You do not own a dog. Get one, for example a brittany spaniel, and try again.
NumberFormatException You are using outdated units of measurement, for example inches or pints. Convert to SI. There is a known bug that causes this exception to be thrown if you are very short or tall.
RuntimeException You cannot run fast enough, possibly due to obesity. Turn off your computer and go out and get some exercise.
SecurityException You have been deemed a threat to nationaly security. Please sit still and wait for the authorities to come and get you.
StringIndexOutOfBoundsException Your panties have shiften out of place. Adjust them and try again. You can also get this exception if you are not wearing any panties at all.
UnsupportedOperationException You are trying to have an operation that for some reason, ethical or otherwise, is not supported by Java. Examples of this include unneeded amputations, for example circumcisions. Please stop abusing your body and do not remove pieces of you child, damn it!

See more at:

SVN back-up and restore

May 22nd, 2009 by Leandro Del Teso

To back-up my SVN repository, I have the following script:

DATE=`date +%d-%m-%Y`
rm -f *.svndump
rm -f *.bz2
for repo in $(ls -d */)
filename=`basename $repo | cut -d\. -f1`
svnadmin dump $repo > $SVNDIR/$filename.svndump
tar -cvz -f $SVNDIR/$TARNAME *.svndump
cp $TARNAME /home/yo/svn_dump

Basically, it iterates thru all my repositories in SVNDIR and dumps them (the back up process itself) with svadmin dump.... After that it tars and compress the *.svndump files in one single file TARNAME and then copies it to its final destination /home/yo/svn_dump from where I grab the tar.bz2 files and burn them in a DVD or whatever.

I also have a cron job as follows:

0 0 * * 7 /home/yo/bin/scripts/ >/dev/null 2>&1

which runs the script above once a week.

To restore a svn dump file I have to:
1) Untar the tar.bz2 back up file.
2) With the result I run: svnadmin load /path/to/reponame < filename.svndump
3) Set the correct permissions to the restored repositories. This is needed if you restore the back-up in a different path or computer.

That's pretty much what I do. My source code is safe in several different places (I'm a little bit paranoid, I know...)