Linus Torvalds “invented” Git for Linux kernel development. Gource is an SCM visualization tool creating cool videos of your source code progressing. Here is how Git was developed. It is nice to see Linus Torvalds in the very beginning doing the first commits.
Simon Sinek: How great leaders inspire action
“People don’t buy WHAT you do, they buy WHY you do it.”
As far as I found out so far, innovative, successful people have one thing in common: they don’t do it for the money, they do it to change the world or for any other higher goal, but either way they know WHY they do it. I assume this is the single most important attitude for good leaders. Companies that produce with the only goal in mind to make money, often find it hard to sell their products, whereas the ones that lead the way, do so, because they know WHY they are doing it. In the end I’d say it is pretty simple: Emotions (WHY) move people, products (WHAT) don’t!
“It is those who start with WHY, that have the ability to inspire those around them or find others who inspire them.”
persistancy is key
You might know it for a long time but I just realized during the last months that, for any project or startup to be a success, persistancy is key!
The first years after I started to be interested in running a business all I had in mind were those huge companies that seemed to be there forever on one side and the small companies that became a success over night on the other side.
Although I actually knew their history, to me it felt like these huge companies such as Microsoft, McDonalds or Starbucks never went through that particulary hard startup sequence. It felt like they had skipped that part. Like children often believe their parents were born as grown-ups.
The small companies had always been way more interesting to me as they simply were the cool ones. I was able to identify with them. Those were the ones that started out of enthusiasm in small garages with limited resources. They succeeded because they were clever. They got major attention in online media such as techcrunch. And most important they had become successful over night (of course). I am thinking of Twitter, Mailchimp, basecamp or even Crogs. Those ventures didn’t seem to have any trouble nor did they need a long time to create their product. They were just there suddenly, over night.
Well, so I thought … The truth is that any venture had to go a long way before anyone was even interested in them. My favourite quote for this topic is the following:
Any successful, long lasting business went through that start. You need to persistently work on your business idea – not just one night! Tinkering around, playing with crazy concepts, thinking out of the box and then just doing it once you feel like giving it a try!
In case of a social community platform for example it might take some years to reach an extensive user base. In the beginning you might need to pay a lot for every single user.
With my assumption that you are absolutely believing into your business concept, do not think of giving up only because you didn’t reach a million users right at the first day! Be persistent and you will be successful and maybe look like an overnight success from the outside!
the missing link to success: your business idea
There are lots of books about (financial) success, some of which you will find in this blog, that teach you how to create or run a business or at least give you insights to the entrepreneurial sense. They teach you how to make use of your time more efficient or how to build up a network of important people. They teach you how to reach anything in your live you wish for. But what if you don’t know your wishes or feel like you don’t have any?!
I always knew I need to run my own business. I need to build things and I need my freedom without anyone telling me what I have to do next. Entrepreneurial spirit is running through my veins. (Uh, how I love that sentence
But strangly enough this does not at all imply that you need to have a clever business idea in your pocket! But it will make you seek one in every corner of your life and the life of others.
So something no book was able to tell me was the answer to an extremely essential question: What do I want in my life in first place and how can I change the world to the better with a business idea?!
For me the answer was in meditation. It is giving you access to your emotional side which is the factory of your wishes. Meditation balances your active and passive halves. My theory is that, as an entrepreneur, you are on the active side most of the time and rarely give enough attention to your passive side. But this way you are quite unable to get to know all your wishes!
In particular I am doing Sahaja Yoga. You can learn the most important basics in just one hour. It is based on the knowledge of Shri Mataji Nirmala Devi, a wonderful, loving and caring human being of our time.
You will find Sahaja Yoga in all countries around the world, so there is a center around your corner as well for sure! Go there to make sure you have at least tried it! But be aware that it could be a pretty strange experience the first time you go, with all those people talking strange stuff. Don’t believe anything! Try it for yourself rather! It is even for free so there is no risk included except you may become a happy and fulfilled person!
I started meditating about 2 years ago and just a few weeks later I founded OPENKITCHEN with two friends. Meditation made me understand that this was my way to go.
Kart Action filmed with a Nokia N8 and an iPhone 4
Yesterday I got to use a kart of a friend. Thanks Jochen and Markus! One of those things can reach about 100km/h. It was pretty fun to ride. The following video was taken mainly on a Nokia N8 and some scenes using an iPhone 4. It is easy to see that the Nokia N8 is taking really nice images. Make sure you watch it in 720p!
Building a case for my iPhone4 out of an old kite (Video)
Today morning I woke up with a burning desire to build something. Still lying in bed with sticky eyes, I stared at my old kite lying underneath my (as well selfmade) closet right next to my bed.
I thought “OOOOOOOH, I want an iPhone4 case made out of my old kite”. So I took that old kite apart and made something more useful out of it! Only took me 4 hours. I should build one for my MacBook too, actually.
Building my custom KITCHENPC
One week ago I found my old 17″ TFT behind a sofa while cleaning up. There is lots of technical stuff hidden in my flat I tend to forget after a while. I immediately started thinking what I could do with it in combination with all the other computer parts I have lying around, so I came up with my very customized KITCHENPC.
The system is based on an old (recycled) Asus Pundit-R and a lot of cabeling. I just took a little bit of my kitchen apart to get all the cables behind the tiles. Something I hate is cables hanging around although they could be perfectly hidden. Cables can easily kill the aura of beautifully designed devices.
While building the KITCHENPC I started dreaming of what I will be doing with it as the goal of the KITCHENPC was so far, well, let’s say unspecified. The coolest thing that came into my mind was adding touchscreen support. After searching on ebay a little while I found the right thing: 17 inch USB Panel Kit Set from eBay Seller easyworldwidetrading for only about 65€ including shipping from Hong Kong.
The panel comes with a driver CD but those are outdated. All current drivers can be obtained from eGalax. I tested it on my MacBook Pro just for curiousity and it worked fine with the Snow Leopard drivers. Installation on Ubuntu in my kitchen was straight forward as well. Running setup.sh was all that was needed.
- The PC is located behind the wall on the right. All the cables are hidden behind the tiles.
- Booting for the first time.
- The screensaver runnning a great slideshow ;)
- Asus Pundit-R
- The 4-wire touch panel add on kit.
- Mounting the USB touchkit controller inside the screen
- Plugging all the cables for the touchkit controller
- Installing the drivers on Ubuntu
Sneak Preview: Custom Java Desktop Application
This is a sneak preview of my current project which is still work in progress but about to be in its end phase in the next 2 weeks. Basically it is a Java desktop application running on Mac and Windows to setup Internet radio stations and podcasts for a special Internet radio which can be connected via USB. This product is still under development so I am not allowed to give more informations about it at the moment.
The user interface was heavily customized by the client using Photoshop and then implemented in Java Swing. This application therefore is a great example on how un-Java-like a Java application can look like. I think Java applications look awful except on a Mac where Apple took a lot of effort to make them look as native as possible. So I liked to replace most of the standard GUI widgets by customized ones a lot.
- Choose your Internet Radio Stations or Podcasts from the vTuner portal.
- Choose your preferred wireless networks and configure them.
- Set your preferred language for the application or change general settings.
theviennaproject.com – Ein Abschlussbericht
Am vergangenen Samstag war es endlich so weit, theviennaproject.com ging in Wien über die Bühne. Es war ein ereignisreicher Tag für alle Involvierten mit einer gelungenen Abschlussparty am Abend im Little Buddha. Ein wirklich gelungener Tag für alle.
Die Aufgabe der Software hinter tvp09 war das Tracking der Agenten sowie ein Messagingsystem. Das System bestand aus 4 T-Mobile G1, sowie 4 T-Mobile G2 für die Agenten, einem Server der die Daten sammelte und einem Webinterface das im Headquarter zum Einsatz kam. Sofern man Erfahrung mit Java, Eclipse und vielleicht sogar noch Embedded Systems hat kann man auf Android extrem schnell durchstarten und Applikationen schreiben.
Eines kann ich gleich vorwegnehmen: Android ist für Entwickler ein absoluter Traum. Man hat komplette Narrenfreiheit und hat auf wirklich alle Featueres kompletten Zugriff. Applikationen können parallel laufen und man kann davon ausgehen permanent über eine Internetverbindung zu verfügen. Jegliches Feature des Phones lässt sich auch nutzen: Internet, Video, Audio, Fotos, GPS, Orientation, Compass, Vibration, Notifications, OpenGL ES, Batterielevel, mir fallen garnicht alle ein. Die Liste ist nahezu unendlich. Als eines der Hauptfeature der Trackingapp hat sich tatsächlich die Überwachung der Batterielevel aller Agenthandies herausgestellt.
Und kaum lobe ich Android muss ich dem auch schon wieder entgegenreden: Android in der Version wie sie Google auf dem G1 und dem HTC MAgic herausgebracht hat ist für Endanwender eine ordentliche Challenge. Selbst die Google Entwickler selbst (siehe Google I/O Videos am Ende des Blogs) entschuldigen sich für etliche Fehler im UI. Android ist langsam, sicher nicht flüssig und bei weitem nicht Intuitiv. Wenn ich von Intuitiv rede denke ich immer an den ultimativen Kindertest. Wenn ein Kind ein iPhone in die Hände bekommt so erklärt es einem innerhalb kürzester Zeit alle Feature. Bei Android muss dann aber doch ein Erwachsener zuerst das Manual zu rate ziehen.
Ich hatte in den letzten Monaten mehrere Handys im Vergleich: G1 (HTC Dream), HTC Magic, G2 (HTC Hero) sowie iPhone 3G und 3GS. Eines steht fest, das iPhone 3GS bietet alles in extrem eleganter und überschaubarer Form. Eine runde und vollendete Sache. Das T-Mobile G2 ist das erste Android Phone daß dem schon nahe kommt. HTC hat wirklich viel am UI getüftelt und Googles Standardapplikationen ersetzt oder aufgepeppt. Nachdem bis Ende 2009 noch etwa 15 weitere Phones von 7-8 verschiedenen Herstellern herauskommen werden sehe ich noch eine positive Zukunft für Android. Ein weiterer Hype wird sicher noch durch die Android Developer Challenge 2 ausgelöst werden bei dem es um bis zu 150.000 USD Preisgeld geht für eingereichte Applikationen.

Die Spuren der Agenten. Sofern kein GPS-Signal vorhanden ist wird auf ungenauere Cell-IDs umgeschaltet. Dadurch entstehen die Sprunglinien.
Fazit: Für Entwickler ist Android extrem spannend und für Grafiker noch ein unbeschriebenes Blatt das designed gehört. Für Endanwender die gerade in die Welt der Smartphones eintauchen ist es ein extrem interessantes Phone. Hat man aber schon mal ein iPhone länger in Händen gehalten ist Android nicht mehr ganz so glamourös und man vermisst die ganzen schönen flüssigen Animationen. Als Entwickler werde ich weiterhin iPhone als auch Android verfolgen. Es bleibt spannend!
PS: Gleich nach Ende des Spiels bin ich nach mehreren Wochen wieder von meinem HTC Magic auf mein iPhone umgestiegen. Es ist einfach um so vieles schöner zu bedienen…
Google I/O 2009 – Make your Android UI Fast and Efficient
Google I/O 2009 – Writing Real-Time Games for Android
- Begrüßung der Agenten
- Nachrichten mit Fotoanhang versenden
- Die On-Screen Tastatur des G1
- Sendevorschau des angehängten Fotos
- Empfänger auswählen
- Die Spuren der Agenten. Sofern kein GPS-Signal vorhanden ist wird auf ungenauere Cell-IDs umgeschaltet. Dadurch entstehen die Sprunglinien.
- Die Agenten sind sehr genau geortet, sofern das GPS-Signal stark genug ist.
- Am Ende des Spiels waren alle Akkus komplett leer, was die roten Ringe unterstreichen. Auf der rechten Seite sieht man das Messagingsystem.
- Die Handys waren im extremen Einsatz. Permanent GPS Updates sowie alle 20 Sekunden Updates an den Server. Stresstest pur. Da gehen die Akkus schnell in die Knie.
ImageButton for Java
Creating a Button with custom background images is quite easy based on a JLabel and a MouseListener. I couldn’t find a better solution on google so I quickly came up with this solution. No need for further explanations. Just check out my Source Code. Please leave a comment in case you have a much better solution!
package at.techforce.gui;
import java.awt.AWTEventMulticaster;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
public class ImageButton extends JLabel implements MouseListener {
public final static int NORMAL = 0;
public final static int PRESSED = 1;
public final static int OVER = 2;
public final static int DISABLED = 3;
public final static int STATES = 4;
private boolean isMouseOverButton = false;
private ActionListener actionListener;
private String action_command;
private int state = NORMAL;
private ImageIcon stateImages[];
private Color textColor[];
public ImageButton(String t, ImageIcon normal, ImageIcon over, ImageIcon pressed) {
this.textColor = new Color[STATES];
setTextColor(NORMAL, Color.BLACK);
setTextColor(OVER, Color.BLUE);
setTextColor(PRESSED, Color.WHITE);
setTextColor(DISABLED, Color.GRAY);
setForeground(this.textColor[NORMAL]);
setText(t);
this.stateImages = new ImageIcon[STATES];
setImage(NORMAL, normal);
setImage(OVER, over);
setImage(PRESSED, pressed);
setOpaque(false);
addMouseListener(this);
setIcon(normal);
setVerticalTextPosition(CENTER);
setHorizontalTextPosition(CENTER);
}
public void setImage(int st, ImageIcon i) {
this.stateImages[st] = i;
}
public void setTextColor(int st, Color c) {
this.textColor[st] = c;
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
isMouseOverButton = true;
setCursor(new Cursor(Cursor.HAND_CURSOR));
state = OVER;
setIcon(stateImages[state]);
setForeground(textColor[state]);
}
public void mouseExited(MouseEvent e) {
isMouseOverButton = false;
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
state = NORMAL;
setIcon(stateImages[state]);
setForeground(textColor[state]);
}
public void mousePressed(MouseEvent e) {
state = PRESSED;
setIcon(stateImages[state]);
setForeground(textColor[state]);
}
public void mouseReleased(MouseEvent e) {
if(isMouseOverButton) {
state = OVER;
setIcon(stateImages[state]);
setForeground(textColor[state]);
processActionEvent(new ActionEvent(this, ActionEvent.ACTION_PERFORMED, action_command, e.getModifiers()));
} else {
state = NORMAL;
setIcon(stateImages[state]);
setForeground(textColor[state]);
}
}
public void addActionListener(ActionListener l) {
if (null != l)
actionListener = AWTEventMulticaster.add(actionListener, l);
}
public void removeActionListener(ActionListener l) {
if (null != l)
actionListener = AWTEventMulticaster.remove(actionListener, l);
}
public String getActionCommand() {
return action_command;
}
public void setActionCommand(String action) {
this.action_command = action;
}
protected void processActionEvent(ActionEvent e) {
if (actionListener != null)
actionListener.actionPerformed(e);
}
}




















