Archiv für August, 2007

Facebook Applikationen - ist das in Deutschland (schon) ein Thema?

Ich hab mir gerade ein Video angeschaut von einer Facebook Entwickler Konferenz in Palo Alto. Für alle die sich für das Thema “Facebook Plattform” interessieren, gibt es hier einige sehr praktische Informationen, wie man erfolgreiche Applikationen auf Facebook erstellt.

Ich beobachte das Thema “Facebook Applikationen” schon einige Zeit und war anfangs sehr kritisch. Inzwischen bin ich allerdings der Auffassung, das die “Integration” bzw. “Integriertheit” von Sozialen Applikationen und Services wirklich das nächste große Ding ist. Ich würde heute sogar Leuten, die ein Social Network starten wollen, raten auf jeden Fall zweigleisig zu fahren und ihre Software Architektur darauf auszulegen “standalone” und in Facebook “integriert” lauffähig zu sein. Der Markt für Social Networks ist schwierig genug, wie kann man da noch eine große Anzahl von Leuten für sich begeistern?

Ein Social Network technisch auf die Beine zu stellen, ist nicht die große Herausforderung, sondern das Aufbauen einer wirklichen “Community” an Usern. Die Größenordnung von Facebook als Ganzes wird man wohl kaum erreichen können und schon gar nicht als kleines Startup oder als Einzelentwickler. Als Facebook Applikationsentwickler dagegen kann man mit wenig Aufwand viel erreichen und auf die Möglichkeiten eines riesigen Social Networks zurückgreifen.

Ist das in Deutschland ein Thema? Hab mal gegoogelt und nur eine Handvoll Facebook Apps gefunden, die mir eher wie ein “Proof of Concept” aussahen (Qype, Jimdo etc.)…?

Mehrere Ruby Versionen auf einem Rechner

Meine Ruby (on Rails) Entwicklung mache ich hauptsächlich unter OSX. Da das von Apple mitgelieferte “Ruby” oft Probleme gemacht hat, bin ich anfangs auf DarwinPorts bzw. MacPorts ausgewichen. Dort habe ich mir mittels “port install ruby” die aktuelle Ruby Version installiert. Und danach habe ich alle Ruby Gem’s “händisch” installiert, was soweit auch immer funktioniert hat.

Um den Ablauf bzw. diese Installation auch auf anderen Maschinen reproduzieren zu können, habe ich dann dafür ein Bash Skript geschrieben. In ersten Skript wird die Umgebung automatisiert eingerichtet (für OSX mit “port”, unter Ubuntu mit “apt-get”… also subversion, mysql, image magick etc.) und im zweiten Skript die Ruby spezifische Installation inklusive einem selbstkompilierten Ruby und aller Ruby Gem’s.

Wenn man allerdings mehrere Rails Anwendungen entwickelt, die auf verschiedenen Produktionssystemen mit unterschiedlichen Ruby Versionen betrieben werden, war der Ansatz nicht mehr flexibel genug. Teilweise gab es kleinere Unterschiede zwischen den Ruby Versionen. Lokal lief es, aber im Produktionssystem nicht… Danach bin ich dazu übergegangen, das Bash Skript entsprechend anzupassen die derzeit gängigen Ruby Versionen (1.8.4, 1.8.5 und 1.8.6) automatisiert in Unterordnern zu installieren und nur noch bei Symlink auf die jeweils benötigte Ruby Version zu verweisen. Die Ruby Versionen sind dann auch in meinem Homeverzeichnis unter “bin”, so dass ich beim “gem” Befehl kein “sudo” einsetzen muss. Je nach Anwendung kann man dann bequem den Symlink umswitchen und hat alle benötigten Ruby Gem’s zur Verfügung.

Naja, nicht spektakulär, aber doch praktisch… ;)

Swiftiply

Ich hab gestern ein bisschen mit Swiftiply rumgespielt. Swiftiply ist ein Clustering Proxy für Webapplikationen. Das besondere daran ist, dass Swiftiply kein Wissen von seinen Backends hat und vor allem keine Konfiguration von diesen benötigt. D.h. wenn ein Backend (wie z.B Mongrel) startet, meldet es sich dynamisch an einem (der möglichen) Swiftiply’s Backend Ports an und wird somit dem Cluster zugewiesen. Swiftiply kann mehrere Domains und Anwendungen über verschiedene Backend Ports verwalten.

Das Konzept findet ich sehr spannend. Bei einem überschaubaren Cluster macht das Ganze vielleicht noch keinen Sinn, aber sobald man Lastspitzen durch das dynamische Hinzufügen von Application (Cluster-) Nodes abfangen will (z.B. mit Amazon EC2) macht das Ganze viel Sinn und praktisch keinen Aufwand in der Systemadministration. Und vor allem benötigt es keine händischen Konfigurationsanpassungen und Neustarts.

Swiftiply funktioniert bestens mit Ruby und Rails und bietet eine angepasste Version von Mongrel an, die sich beim Starten automatisch mit dem Swiftiply Proxy verbinden.

So könnte eine ganz simple Swiftiply Konfiguration aussehen:
cluster_address: localhost
cluster_port: 80
daemonize: true
epoll: true
epoll_descriptors: 20000
map:
- incoming:
- meine-domain.de
outgoing: 127.0.0.1:30000
default: true
docroot: /var/apps/meine_app/public

So startet man 3 Swiftiply Mongrel Instanzen für seine Anwendung:
swiftiply_mongrel_rails -h 127.0.0.1 -p 30000 -n 3

Blog 2.0?

Dieses Wordpress Blog habe ich nun schon vor einigen Wochen neu eingerichtet und merkwürdiger Weise bisher noch keinen brauchbaren Blogpost zustande gebracht. Im Gegensatz zu meinem früheren Blog, der in englisch war und hauptsächlich Entwicklungsthemen und Code Beispiele beinhaltet hat, möchte ich nun ein etwas persönlicheres Blog führen.

Da ich mich beruflich hauptsächlich als Software Entwickler sehe, möchte ich natürlich gerne auch über meine Lieblingsprogrammiersprachen berichten, aber nicht nur. Ein weiteres Thema sind meine Web und Startup Projekte und meine Meinung zur derzeitigen Entwicklung in der Internet Szene. Wobei ich mich allerdings hauptsächlich für die Silicon Valley Techszene interessiere.

Ein weiterer Bereich ist das Podcasting und die Podcasting Szene. Auch in diesem Fall interessiere ich mich hauptsächlich für die amerikanische und englische Szene. Im Bereich Podcasting arbeite ich derzeit auch an einem Webprojekt, über das ich sicherlich schon bald berichten werde…

So, das soll es erstmal gewesen sein. Aller Anfang ist schwer, aber ich hoffe, dass ich ab jetzt regelmäßig Beiträge schreiben werde…