Mit ‘Technikzeugs’ getaggte Artikel

Non Blocking JavaScript

JavaScript ist toll. Ja. Und ist heute aus der Webentwicklung nicht mehr wegzudenken. Allerdings hat Javascript einen kleinen Schwachpunkt: Es gibt keine Nebenläufigkeit. JavaScript wird linear ausgeführt*.

Will man beispielsweise länger dauernde Operationen in JavaScript realisieren, gerät man schnell an den Punkt, dass der Browser nicht reagiert, blockiert, träge wird. Eine Lösung dies zu umgehen gibt es: Die Algorithmen dahingehend ändern, nur kleine Teile des Problems auf einmal zu berechnen.

(weiterlesen…)

PHP5: Keine Ausnahmen bei den Exceptions

PHP gehört zu Sprachen, die einen unglaublich schlechten Ruf genießen. Dieser Ruf gründet sich hauptsächlich auf die teilweise sehr pragmatisch implementierten Konzepte in Version 4 der Sprache. PHP 5 war für alle die eine größere Codebasis pflegen ein echter Sprung nach vorne. Und jetzt, fünf Jahre nach Veröffentlich von PHP 5, haben selbst die faulsten konservativsten Systemadministratoren Updates installiert und man kann als Hacker endlich davon bei der täglichen Arbeit profitieren. Zum Beispiel, bei der Fehlerbehandlung.
Das Problem ist so alt wie die Programmierung: Was mache ich mit Fehlern? Also keinen logischen Fehlern, sondern nicht vorhersagbare Seiteneffekte Fehler die entstehen, weil eine Datei nicht schreibbar ist, ein Server nicht erreichbar oder weil der Drucker schlicht lichterloh in Flammen steht?

(weiterlesen…)

Go-Lang: Und alle so Yeah. Alex Sneak Peek in eine unfertige Sprache

Programmieren, so meinen die Google-Ingenieure, sei viel zu schwierig. Also sind sie hingegangen und haben ein interessantes soziologisches technisches Experiment gestartet: Mit Googles Hebel eine Programmiersprache in freier Wildnis zu entwerfen: Go-Lang.

Denn wenn selbst eine Hardwarebude wie Apple daher kommt und anfängt die Urgroßmutter C um neue Sprachfeatures zu erweitern, kann es ja nicht angehen, dass die Damen und Herren bei Google zurückstehen. Mit Versprechungen halten die Go-Macher nicht gerade hinter dem Berg: Einfaches Programmieren, schneller Code, einfach umzusetzende Nebenläufigkeit, Spaß soll es auch noch machen und dass es Open Source ist versteht sich ja von selbst. Dann muss es ja wohl gut sein, oder?

Oder? Oder!?

Nein, gut ist anders. Viel und ganz anders. So begrüßenswert der Versuch auch sein mag, eine fixe Sprache mit eingebautem Garbage Collector zu etablieren … die Konzepte wirken nicht eigenständig oder gar wie aus einem Guss. Mehr wie die Hochzeitsszene aus der Dreigroschenoper, mit einer Braut wie aus einem Tim-Burton-Film. Etwas Neues, etwas Gebrauchtes und etwas Blaues. Und mit Zombies.

Man glaubt es kaum: Google verzichtet auf LLVM und stampft stattdessen eine eigene Toolchain aus dem Boden. Der 6g-Compiler ist trotzdem ziemlich fix und mit den Fehlermeldungen kann man arbeiten. Effizienter Compilerbau ist keine Kleinigkeit, gerade wenn man die Sprachfeatures nicht mal halbwegs spezifiziert hat. Hut ab Google, Yeah!

Die Features und Konzepte sind dann aber schon weniger Yeah!: Keine Typehierachie, dafür aber Interfaces, das Modulkonzept ist eine wilde Mischung aus Java und Python, keine Exceptions, Unicode-Unterstützung nur über zusätzliche Module (wtf?!), kein sauberes Asserting (hey, by design *hust*) und  von dem Versprechen der einfachen Nebenläufigkeit ist man noch Lichtjahre entfernt.

Egal. Hey, jeder Hacker sollte wenigstens einmal in seinem Leben eine Programmiersprache entwickelt haben. Das geht schon in Ordnung, auch wenn das Ergebnis wirkt wie eine Chimäre aus C, C++, Erlang, Python und Scala.

Wirklich interessant ist aber wie die Community reagiert. Bis heute morgen sind etwa 600 Mails aufgeschlagen, Interesse ist also da. Neben der - nachvollziehbaren - Forderung nach Exceptions und sonstigem technischem Zuckerguss, fragen Leute (ernsthaft!), ob Go nicht die richtige Sprache für die Umsetzung ihrer Business-Transaktionen sei. Immerhin stamme sie ja von Google, da müsse das ja gut sein.Oder, ob nicht jemand Lust hätte, ein MVC-Framework zu schreiben, denn Go sei ganz toll und alles was man bräuchte wäre ein bisschen Code um in Gang zu kommen. Oder, ob jemand nicht einen MySQL-Treiber schreiben wollte, den bräuchte nämlich jemand. Dringend!

Kleine Projekte, kleine Sorgen – große Projekte, große Sorgen. Immerhin haben sie ein süßes Maskottchen.

logo-153x55

Your Operating System is not supported.

Gestern erhielt ich meine Einladung zu Ubuntu One – einem Dienst der Dateien über Rechnergrenzen hinweg synchron halten will. Wer viel mit (vielen) Dateien hantiert und diese dann auch auf mehreren System bearbeiten will, kennt das Problem: Wie bekomme ich unterschiedlichen Versionen in den Griff? USB-Sticks vergisst man (ich zumindest), Dateien über SCP oder FTP zu verteilen ist (mir) zu mühsam und aus dem Alter, mir selbst eMails mit Dateianhängen zu schicken bin ich definitiv raus (das ist so 2003).

Im Moment nutze ich Dropbox um genau dieses Problem zu beseitigen. Dropbox integriert sich nahtlos auf Dateisystemebene: Alle Dateien eines Verzeichnisses werden auf Änderungen überwacht und nur die Änderungen werden an einen zentralen Server übertragen. Wird in einer hundert MiB große Datei ein Byte geändert, geht genau dieses eine Byte über die Leitung (plus ein bisschen Overhead). Alle Clients synchronisieren sich selbstständig mit dem Server.

Der enorme Vorteil: Es funktioniert Out-of-the-box auf allen drei wichtigen Plattformen: Windows, Linux und Mac (und läuft sogar mit ein bisschen Bastelei unter *BSD, aber die sind Bastelei gewohnt).

Die Sache wäre so schön, gäbe es da nicht einen Haken: Dropbox ist Closed-Source.

Die Jungs von getdropbox.com machen einen netten Eindruck, keine Frage, sind bestimmt Kumpeltypen, ich würde mit denen Crossgolf spielen und so. Aber ich würde schon gerne einmal sehen, was da mit meinen Dateien genau passiert.

Da kam mir die Einladung zu Ubtuntu One gerade recht. Sache geritzt, dachte ich mir: Gleiches Funktionsprinzip wie Dropbox, Open-Source-Client, mit meinen Gebühren unterstütze ich ein tolles Projekt und brauche mich nicht mehr zu ärgern.

Aber Pustekuchen!

An dieser Stelle der Hinweis: Das hier ist kein Rant. Ich will den Ubuntu-Entwicklern gar nicht ihre Arbeit madig machen (Jungs, ihr macht einen tollen Job!). Aber welcher Teufel hat euch denn geritten in eine Public Beta zu gehen und nur Clients für Ubuntu anzubieten? Denkt ihr wirklich, es gäbe da draußen nur noch Ubuntu Boxen?

Diese Plattformbeschränkungen nerven (gewaltig!) und waren jahrelang einer der berechtigten Hauptkritikpunkte an Microsoft aus der Open-Source-Szene.

Ich brauche meine Daten überall wo ich bin. Und nicht nur dort, wo ein Ubuntu verfügbar ist.

Jetzt könnte ich hingehen und mir selbst einen Client schreiben. Oder den Source-Code nehmen und ihn porten (so wie ich es sehe ein bis zwei Tage Arbeit, Python rocks, nur ganz wenige Showstopper). Aber … will ich das wirklich? Das ist nicht Ubuntu-Style, echt nicht. Ubuntu-Style ist One-Click, Erdtöne und freundliche Icons.

Ehrlich: Alternative Systeme haben nur dann eine Chance, wenn sie selbst zum Ziel haben, sich überflüssig zu machen, unsichtbar zu sein. Erfolg wird durch Austauschbarkeit definiert. Insellösungen, gekappselt und isoliert von anderen Systemen mögen zu DOS-Zeiten funktioniert haben. Aber heute? Selbst Microsoft hat das mittlerweile erkannt. Jetzt war das doch ein Rant. Snark.