[Java EE] JSF visualization library VisualFaces

I am currently writing my master thesis on Big Data Visualization. To achive stunning visuals I decided to use d3.js which is a (nearly) perfect library to display data in an innovative and fancy way. To be able to use those diagrams easily with Java EE’s JSF 2 technology, I decided to write a tag library (which basically is a component collection) called VisualFaces to use the most impressive example diagrams with just one tag.

So instead of writing hundreds of lines of Javascript code you simply add a

 

to your xhtml page and you’ll get a wonderfull wordcloud.

To use the taglib simply put the visualfaces.jar in the WEB-INF directory of your Java EE webWordCloud project, add the namespace xmlns:j=”http://www.jofre.de/visualfaces” and then all included diagrams can be used in an instant.

I will be adding some more diagrams into the library soon. At the moment I am struggling with putting several diagrams on one site because some Javascript events like mouseoever and properties get overwritten.

The project can be downloaded from Github. To compile it, simply export it as JAR from Eclipse. Below you find a precompiled beta version.

Motion capture using Kinect and MotionBuilder

Today I finished a tiny app that uses the Microsoft Kinect to capture BVH files that contain motions for 3d models. Those files can easily be imported into Autodesk MotionBuilder and used, for example, with Autodesk Pinocchio.

Continue reading “Motion capture using Kinect and MotionBuilder”

LaTeX-Template für Microsoft Word

Für diejenigen, die gerne mit Microsoft Word arbeiten (soll’s ja geben) und sich die Einarbeitung in LaTeX für ein paar wenige wissenschaftliche Arbeiten im Leben sparen, dennoch aber das Look and Feel von LaTeX beibehalten wollen, gibt es eine recht einfache Lösung.

In diesem kurzen Post erkläre ich, wie man ein LaTeX-Template unter Word installiert, sodass das Ergebnis von einem in LaTeX geschriebenen Dokument nicht zu unterscheiden ist.

  1. Es müssen die Schriften Computer Modern und Latin Modern heruntergeladen und in das Verzeichnis C:\Windows\Fonts\ entpackt werden.
  2. Es folgt das IEEE Style-Template, das nach C:\Program Files (x86)\Microsoft Office\Office12\Bibliography\Style entpackt wird.
  3. Als letztes muss diese Formatvorlage installiert werden. Diese gilt es im Ordner C:\Program Files (x86)\Microsoft Office\Templates\1031 abzulegen.

Nun kann, über einen Doppelklick auf die Formatvorlage LaTeX.dotx, ein neues Dokument erstellt werden. Beim nächsten Start ist die Vorlage dann unter Neu -> Zuletzt verwendete Vorlagen zu finden. Das Template sieht im Einsatz  so aus. Zwar wirkt es zur Bearbeitungszeit in Word etwas merkwürdig, wird es allerdings gedruckt oder in ein PDF konvertiert, ist so schick wie man es von LaTeX gewohnt ist.

Einen Hadoop-Cluster aufsetzen

Vor einiger Zeit habe ich ein Tutorial von Michael Noll übersetzt in dem es darum ging, eine Hadoop-Instanz zu erstellen. Ein einzelner Knoten dient allerdings eher den Test- und Lernzwecken und es ist natürlich erstrebenswert einen Cluster zu erstellen durch den das verteiltarbeitende System Hadoop seine Stärken erst richtig ausspielen kann.

In diesem Tutorial übersetze ich also den zweiten Teil, der davon handelt, zwei Server zu einem Cluster zusammen zu fügen. Das PDF kann hier heruntergeladen werden:

Viel Spaß damit!

[JavaScript] Some fantastic free icons from raphaeljs.com

Today I found a fantastic set of icons published under MIT license. They were drawn by Dmitry Baranovskiy and can be found here. If you need to create infographics or any other kind of data visualization you might have faced the problem of where to find fitting icons to illustrate facts, data or captions. So thanks to Dmitry for this collection.

P.S. I wouldn’t even be able to collect ideas for 266 idividual images! 🙂

[Big Data] Visualize huge amounts of geo data using WebGL-Globe

For my Master Thesis I’m evaluating several interesting frameworks to visualize Big Data in the browser. Next to the fantastic D3.js I found WebGL quite helpful even if it is not as far developed as its 2D predecessors. Nevertheless, Google shows some impressive examples of what is possible with WebGL on their site chrome-Experiments.com. To give you a first impression on what can be done with those examples I want to show a screenshot I took that visualizes German students who study in a foreign country.
GermanStudentsInForeignCountries

Source code is not more than ~50 lines so that it can be adapted to your personal needs easily.

[Java] 100 common words in German, English and French

To exclude common words from word and tag clouds and determine them in text mining procedures it is neccessary to determine them beforehand. The following Java class will help you to find them in the languages German, English and French. Thanks to the University of Leipzig who created the collection.

Update: I added some common words to the german list that I found doing my research and removed and removed some duplicates.

package de.jofre.commonwords;
 
public class CommonWords {
 
	// By Jonas Freiknecht
 
	// Source: http://wortschatz.uni-leipzig.de/
 
	// There also exists a web service from the University of Leipzig
	// to determine common words:
	// http://wortschatz.uni-leipzig.de/axis/servlet/ServiceOverviewServlet
 
	public static boolean contains(String _str, String[] _list) {
		for (int i = 0; i < _list.length; i++) {
			if (_list[i].equalsIgnoreCase(_str)) {
				return true;
			}
		}
		return false;
	}
 
		public final static String[] COMMON_WORDS_GERMAN = { "der", "die", "und",
			"in", "den", "von", "zu", "das", "mit", "sich", "des", "auf",
			"für", "ist", "im", "dem", "nicht", "ein", "für", "eine", "als",
			"auch", "es", "an", "werden", "aus", "er", "hat", "daß", "sie",
			"nach", "wird", "bei", "einer", "du", "um", "am", "sind", "noch",
			"wie", "einem", "über", "einen", "ob", "so", "dessen", "zum", "war",
			"haben", "nur", "oder", "aber", "vor", "zur", "bis", "mehr",
			"durch", "man", "sein", "wurde", "sei", "RT", "bin", "hatte",
			"kann", "gegen", "vom", "können", "schon", "wenn", "habe", "seine",
			"Mark", "ihre", "dann", "unter", "wir", "soll", "ich", "eines",
			"ins", "Jahr", "zwei", "Jahren", "diese", "dieser", "wieder",
			"keine", "willst", "seiner", "worden", "Und", "will", "zwischen",
			"extra", "immer", "Millionen", "Ein", "was", "sagte", "ihr",
			"jetzt", "kennen", "sagen", "armer", "arme", "gerne", "kenne",
			"meine", "hoffe", "sehen", "achso", "reicht", "dabei", 
			"gehst", "alles", "selbst", "neuen", "neue", "liebe",
			"feiern", "letzte", "macht", "könnte", "keiner", "glaub", "glaube",
			"gehen", "euren", "passt", "passe", "passen", "findet",
			"eigentlich", "reden", "machen", "liebt", "halbe", "dieses",
			"finde", "sitze", "machen", "halbe", "sonst", "heute", "brauch",
			"drauf", "total", "meint", "denkt", "lässt", "hätte",
			"damals", "lange", "dachte", "wirst", "hören", "kennt",
			"bitte", "treffen", "würde", "fängt", "länger", "könnt",
			"sitzt"};
 
	public final static String[] COMMON_WORDS_ENGLISH = { "the", "of", "to",
			"and", "a", "in", "for", "is", "The", "that", "on", "said", "with",
			"be", "was", "by", "as", "are", "at", "from", "it", "has", "an",
			"have", "will", "or", "its", "he", "not", "were", "which", "this",
			"but", "can", "more", "his", "been", "would", "about", "their",
			"also", "they", "million", "had", "than", "up", "who", "In", "one",
			"you", "new", "A", "I", "other", "year", "all", "two", "S", "But",
			"It", "company", "into", "U", "Mr.", "system", "some", "when",
			"out", "last", "only", "after", "first", "time", "says", "He",
			"years", "market", "no", "over", "we", "could", "if", "people",
			"percent", "such", "This", "most", "use", "because", "any", "data",
			"there", "them", "government", "may", "software", "so", "New",
			"now", "many" };
 
	public final static String[] COMMON_WORDS_FRENCH = { "de", "la", "le",
			"et", "les", "des", "en", "un", "du", "une", "que", "est", "pour",
			"qui", "dans", "a", "par", "plus", "pas", "au", "sur", "ne", "se",
			"Le", "ce", "il", "sont", "La", "Les", "ou", "avec", "son", "Il",
			"aux", "d'un", "En", "cette", "d'une", "ont", "ses", "mais",
			"comme", "on", "tout", "nous", "sa", "Mais", "fait", "été",
			"aussi", "leur", "bien", "peut", "ces", "y", "deux", "A", "ans",
			"l", "encore", "n'est", "marché", "d", "Pour", "donc", "cours",
			"qu'il", "moins", "sans", "C'est", "Et", "si", "entre", "Un", "Ce",
			"faire", "elle", "c'est", "peu", "vous", "Une", "prix", "On",
			"dont", "lui", "également", "Dans", "effet", "pays", "cas", "De",
			"millions", "Belgique", "BEF", "mois", "leurs", "taux", "années",
			"temps", "groupe" };
 
}

Die c’t rezensiert “Spiele entwickeln mit Gamestudio A8”

In der aktuellen Ausgabe der c’t ist eine Rezension meines Buches Spiele entwickeln mit Gamestudio A8 erschienen. Dass Karl-Heinz Dahlmann dabei recht angetan war, wirkt sich wie erwartet ganz ordentlich auf das Amazon-Verkaufsranking aus. Allerdings hätte ich nicht mit einem solchen Impact gerechnet, denn die Verkaufszahlen sind dermaßen in die Höhe geschossen, dass ich fast vor Freude im Büro spontan angefangen hätte zu singen. Zwar hatte ich im Weihnachtsgeschäft schon einmal Platz 16.000 (von 6.000.000.000 Büchern auf Amazon insgesamt) erreicht, aber dass nun Platz 4.800 drin sein sollte, hätte ich nicht gedacht. Da ich gegen Abend wieder auf Platz 20.000 abgerutscht war, war dann die erste Euphorie verflogen. Als ich dann ein paar Tage später nochmal geschaut hatte, sah ich, dass sich das Buch konstant auf Platz ~4000 gehalten hatte und sogar noch einen neuen Rekord mit Platz 4.100 aufgestellt hatte. Juhu! 🙂

Zu sehen sind diese Zahlen übrigens nur auf der amazoninternen Plattform Amazon Author Central. Dort kann man sich als Autor registrieren und sich seine eigenen Bücher zuordnen lassen. Amazon holt dann vom Verlag die Bestätigung ein, dass man wirklich der Autor ist und erst dann bekommt man Zugriff auf die Daten. Ein signifikanter Unterschied zu dem Äquivalent in Amerika ist, dass man in Deutschland lediglich das Ranking einsehen kann und nicht die absoluten Verkaufszahlen. Ich gehe mal davon aus, dass das wieder so eine rechtliche Geschichte ist, die Amazon und den Autoren diese Möglichkeit nimmt. Schade ist, dass man auch nur vom Verlag einmal im Jahr eine Rückmeldung über die tatsächlichen Verkaufszahlen bekommt. Zwar wissen die Damen und Herren wieviele Exemplare sie an die Buchhandlungen rausgegeben haben, allerdings haben letztere die Möglichkeit, nicht verkaufte Bücher wieder zurückzugeben. Diese werden dann nachträglich wieder von den Verkaufszahlen abgezogen. Diese Rechnerei tut sich der Verlag dann verständlicherweise nur einmal im Jahr an. Alles nicht so einfach aber dennoch spannend! In den ersten 3 Monaten des letzten Jahres habe ich übrigens ~500 Bücher verkauft, davon etwa 50 EBooks. EBooks bringen dem Autoren übrigens etwa 3x so viel Tantiemen ein wie ein gedrucktes Exemplar. Kauft also mehr EBooks, ihr macht die Autoren damit glücklich und tut was für die Umwelt 😉

Die Grafik oben zeigt nocheinmal den Ausschnitt des Amazon-Rankings. Anfang Juni kam die c’t auf den Markt. Der Anstieg der Verkaufszahlen stellte sich noch am selben Tag ein. Vielleicht erscheint ja bald nochmal was in der Gamestar oder einem ähnlichen, spieleorientierten Magazin. Das würde unserer Community sicher noch ein bisschen helfen zu wachsen, sodass wir auf der nächsten AckCon (unserem jährlichen Entwicklertreffen) die 20 Teilnehmermarke knacken! Ich freue mich auf jedenfall sehr. Nicht nur darüber, dass ich wahrscheinlich nächstes Jahr auf den Malediven Urlaub machen kann sondern auch darüber, dass sich wirklich so viele Menschen für für ein so kreatives und schönes Hobby wie dem Entwerfen von digitalen Spielen interessieren!

[Gamestudio] BmapGS – Library for bitmap manipulations

For the TUST project I wrote a DLL for some advanced bitmap operations based on the cImg library. It contains for example functions like:

  • Blur
  • Resize
  • Mirror
  • Erode
  • Sharpen
  • Draw line, arrow, spline, triangle, rectangle, border, text

Have fun with it!

[Gamestudio] TUST – A new template library

Some friends and I started a new template library for the game development suite Gamestudio called TUST. This library is supposed to be easy to use for beginners to enable Gamestudio to be more user friendly as it was in its younger days. Furthermore, the Gamestudio community posts hundreds of great code snippets but nobody ever composed them into one package. Currently, we are working on the basics like path finding, effects, shaders and small demos.

If anybody is interested in joining us (yes, you too, students 😉 ) he/she can contact me. We need every help we can get so that we can show an eary state on the AckCon 2013 (video1, video2) in June in Bielefeld!

To show the progress we made, I want to post some pictures of the finished, customizable, procedurally generated menu system I wrote in the last days.