Devmania 2014 – Derp in Trouble

Die Devmania ist eine Veranstaltung in Mainz, auf der sich Spieleentwickler aus ganz Deutschland treffen, um in einem Overnight-Contest gegeneinander anzutreren und zu einem bestimmten Thema ein Spiel zu entwickeln. Dieses Jahr war das Thema Memes. Nils und ich haben mit unserem Projekt Derp in Trouble den dritten Platz belegt. Das Spiel könnt ihr hier herunterladen, ein kurzes Video gibt es am Ende des Posts. Zwar ist der Umfang mit einem einzelnen Level recht gering, dafür sind aber sämtliche Inhalte in etwa 12 Stunden entstanden. Einzige Ausnahme ist der Soundtrack, für den mal wieder ein Dank an Ruben geht 🙂

Pencil – Kostenloses Tool zum Erstellen von Mock-Ups

Mock-Ups sind ein unerlässliches Planungsinstrument wenn es darum geht, Prototypen von Views einer Anwendung zu erstellen, sei es nun für mobile Geräte, Desktop- oder Web-Anwendungen. Vor einigen Jahren wurde ein Tool Namens Balsamiq vorgestellt, dass diesen Bereich ungemein belebte. Auch die Entwickler bemerkten den User-Ansturm recht schnell und setzten den Preis für Balsamiq mit 79$ sehr hoch an, sodass ich und viele meiner Kollegen sich entscheiden mussten das Tool entweder zu kaufen, oder sich eine Alternative zu suchen.

Lange Zeit tat sich nichts auf dem Freeware-Markt doch heute in einer Schulung habe ich Pencil entdeckt. Pencil bietet ein Baukastensystem für oben genannte Anwendungstypen wobei die Komponenten, z.B. für Android-Apps, exakt so aussehen, wie man es von seinem Smartphone kennt. So kann man sich leicht ansehnliche Muster zusammenklicken, die die Entwickeler bei der Umsetzung der Anforderungen an eine Applikation unterstützen. Freunde von Balsamiq können ebenso auf das gewohnte Sketchy-Style zugreifen.

Java Fehler – Archive for required library could not be read or is not a valid ZIP file

Arbeitet man mit einem Team an einem Java-Projekt, dass Maven nutzt, kann es vorkommen, dass bestimmte Abhängigkeiten referenziert werden, ohne, dass sie auf der Platte vorhanden sind. Eclipse (oder das entsprechende Maven-Plugin) tendiert in dem Fall dazu die Fehlermeldung Archive for required library could not be read or is not a valid ZIP file auszugeben. Dies geschieht auf Basis der Annahme, dass die referenzierten Bibliotheken nicht vorliegen.

Um dieses Problem zu lösen, müssen Sie lediglich alle Ordner in Ihrem Maven-Repository löschen, dieses befindet sich bei mir (Ich verwende das Maven-Plugin für Eclipse) im Ordner C:\Users\padmalcom\.m2\repository. Starten Sie im Anschluss Eclipse neu und Maven wird die benötigten Dependencies beim nächsten Start nachladen. Unter Umständen ist es nötig, dass Sie über einen Rechtsklick auf das betroffene Projekt die Option Maven -> Update Project… auswählen. Der Fehler sollte dann im Regelfall verschwunden sein.

[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=”https://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" };
 
}