Kategorie: Uncategorized

  • Es ist vollbracht – Anmeldung ist raus

    Lange dauert es nicht mehr (genau gesagt noch 24 Tage) und jetzt endlich habe ich mich durchgerungen, die Anmeldung für die 100km abzuschicken. Seit 6 Monaten trainiere ich nun mehr oder weniger regelmässig (in den letzten Wochen zum Glück doch regelmässig). Wenn ich auf eine kleine Runde gehen, dann sind das 10 km, wenn ich auf eine Grosse gehe, dann 30-40km (wobei ich leider einfach zu wenig Zeit für die grossen Runden habe und diese daher doch eher spärlich ausgefallen sind). Auf dem Programm steht noch eine 45-50 km Runde und dann sicher nochmals eine 30 km Etappe und das muss dann reichen (neben den zahlreichen kleinen, die natürlich noch folgenden).

    Langsam aber sicher bin ich bereit dafür und will es hinter mich bringen. Ich will es erleben und schauen, ob ich es packen kann oder nicht. Eine Laufstrategie habe ich parat, der Körper ist mehr oder weniger auch parat, der Kopf denke ich auch… es fehlt lediglich noch der Tag bzw. die Nacht der Nächte.

    Rückblickend kann ich schon jetzt sagen, dass es eine ausgezeichnet Erfahrung war. Fokusiert auf ein Ziel hinzuarbeiten und gewisse andere Dinge einfach zu vergessen bzw. in den Hintergrund rücken lassen, bzw. diesem einen Ziel unterzuordnen.

    Einige denken ich wäre verrückt andere bringen Bewunderung entgegen. Warum ich so etwas mache? Ich weiss es auch nicht. Einen Beweis erbringen? Das Ego stärken? Das Erlebnis geniessen? Aussergewöhnlich sein? Neugierde was mit dem Körper auf so einer langen Distanz passiert? Genau kann ich es auch nicht sagen, aber es wird wahrscheinlich eine gesunde Mischung von allem sein.

  • Simple PM – Einfaches MultiPM Tool

    Seit einiger Zeit bin ich als Projektmanager für Web Projekte zuständig. Als App Geek habe ich bereits diverse Programme/Apps ausprobiert und war eigentlich bisher noch nie wirklich zufrieden (wer gleich direkt zu meiner Idee will):

    MS Project

    Sorry, aber einmal muss man es probiert haben. Für kleine/agile Web Projekte vollkommen unbrauchbar und von der Usability her eine Katastrophe. Vielleicht mag es an der veralteten Version liegen (Office 2003, huch ist bereits 10 Jahre alt), aber glücklich werde ich damit nicht. Nach 1-2 Stunden habe ich zwar einen schönen Plan mit allen Tasks und kann sogar noch Ressourcen verbuchen, aber nützen tut es mir herzlich wenig und der administrative Aufwand übersteigt bei weitem den Nutzen. Zudem ist der Plan spätestens nach 4 Wochen veraltet und stimmt hinten und vorne nicht.

    Basecamp

    Hurra. Ich bin ein Basecamp Fan. Geniales Tool und mit der neuen Version noch viel genialer geworden: Erfüllt. Nur leider: In jeder grösseren Firma will das Management alle paar Wochen einen Report vorliegen haben, wo über den Fortschritt und Risken rapportiert wird. Soll ich den CEO auf Basecamp schicken? Wohl eher nicht. Daher: Für die tägliche Arbeit sofort, fürs eigentlich Tracking des Projekts leider nicht… muss es auch nicht.

    Diverse Todolists (Asana, rememberthemilk oder Google Keep)

    Ich kann sie schon gar nicht mehr zählen, so viele Tools habe ich hier schon ausprobiert. Aktuell bin ich gerade bei Google Keep, einfach weil es so Simple ist und daher entsprechend flexibel. Andere wiederum sind super komplex und lassen keine Wünsche offen, sei es Kommentare, Tasks anderen Leuten zuordnen, Reminder und wiederkehrende Tasks. Alles ist möglich. Aber auch das will ich nicht: Ich will nicht jeden einzelnen Task tracken und ich will auch keine Kollaboration, sondern lediglich für mich den Fortschritt über wichtige Tasks haben und dazu noch über mehrere Projekte.

    Projekt Management Suits (ApolloHQ, Zoho usw.)

    Eigentlich könnte ich an dieser Stelle auf meinen Kommentar zu Basecamp verweisen. Irgendwie finde ich jedoch, dass sich Basecamp von den anderen abhebt. In den meisten Fällen können diese anderen all das, was Basecamp auch kann und dazu noch viel mehr und gerade da liegt der Haken. Sie können zu viel, wodurch das Arbeiten zu umständlich wird. Um schnell und einfach einen Überblick zu haben werden diese dann unbrauchbar, um als Team zu kollaborieren denkbar -> wobei ich doch Basecamp bevorzuge.

    Excel

    Ja, auch das habe ich gemacht und das in diversen Formen. Ich muss sagen, dass es für meine Anforderungen wohl am Besten geeignet ist, da die Einarbeitungszeit gleich Null ist und ich mir mit ein paar Formeln und Funktionen schnell das gewünschte Sheet zusammenklicken kann. Daraus ist dann auch die Idee entstanden, daraus eine Web App zu machen.

    Simple PM

    Mal die Screenshots hiere

    Idee ist die folgende. Es gibt eine Overview, dort werden alle Projekte und ihre Milestone geliestet. Zusätzlich dazu den Projektfortschritt in %.

    Dann gibt es die Projektdetailansicht. Hier werden die Milestone aufgelistet und zu jedem Milestone können Tasks hinzugefügt werden. Ein Task hat zusätzlich noch einen Prozentwert über den aktuellen Status (dieser wird manuell gesetzt) und er kann mit einer Farbe markiert werden (grün, gelb, rot). Der Milestone erhält zusätzlich einen Durchschnittswert über den aktuellen Fortschritt, sowie einen Soll Fortschritt, falls der Projektfortschritt linea verläuft (dies entspricht sicher nicht der Realität, aber gibt einen Anhaltspunkt).

    Zusätzlich gibt es noch ein Feld, um Risiken und Issues zu notieren.

    Wichtig: Editieren muss einfach und schnell funktionieren, analog zu Excel, will heissen keine umständlichen Buttons zu klicken, sondern lediglich anklicken und schon editierts.

    Dein Feedback

    Habe ich etwa eine App verpasst? Gibt es bereits genau das? Habe ich etwas wichtiges ausgelassen? Irgend eine Denklücke? Irgend etwas, was ich nicht vergessen darf? Danke für dein Feedback.

  • Anfängerwissen für Node.js

    Da die ganze Node Welt noch sehr neu ist, hier eine kleine Sammlung, damit ich es nicht jedes Mal neu Googlen muss. Diese Liste wird wahrscheinlich stetig wachsen. Es lohnt sicher also sicher, hier immer mal wieder vorbeizuschauen.

    Nützliche Module

    NVM: Versions Manager für Node. Erlaubt es bestimmte Versionen von Node zu installieren und zu verwenden.

    Smog: Ein einfacher GUI client für MongoDB in Node.js geschrieben.

    nodemon: Startet den Nodeserver jedes mal neu auf, sobald eine Datei geändert hat. Macht das Entwickeln ein bisschen weniger aufwendig.

    Express: Ein einfaches Web Framework. Bisher habe ich noch nicht sehr viel davon gebraucht, aber für den Anfänger ist vor allem die Middleware und das Routing sehr nützlich.

    Node Unit: Ein einfach Unit testing Framework.

    Gute Tutorials

    Blog rolling with mongoDB, Express and Node.js. Erklärt simpel und einfach wie Node.js, express und mongodb zusammenspielen, ohne dabei andere Module/Bibliotheken zu verwenden. (Scheint viel einfacher zu sein: Node.js and MongoDB – Getting started with Mongojs)

    Code School: Real-time Web with Node.js. Muss ich zuerst noch durchführen, sieht aber sehr unterhaltsam und informativ aus.

    Authentication, Middleware, Express. Ein sehr einfaches Beispiel, wie sich eine Authentifizierung mit Node.js und Express umsetzen lässt.

    nginx und Node.js. Stackoverflow Diskussion mit ein paar nützlichen Links, wie nginx konfiguriert werden muss, damit es gut mit Node.js zustammen spielt.

    Mini Wissen

    call/apply

    function.apply(object, arguments);
    //e.g. peter.agePlusOne.apply(fritz, ['Hurra']);
    

    peter wäre in dem Fall ein Objekt mit einer Methode agePlusOne. Ich brauche die Methode agePlusOne von peter, setze jedoch den Scope von "this" auf fritz. Das stellt sicher, dass sich this nicht auf peter bezieht und dadurch sein Alter um 1 erhöht wird. Zusätzlich kann ich noch ein Array von Parametern der Methode agePlusOne übergeben.

    Installation von nvm

    nvm ermöglicht es, mehrere Nodeversionen parallel laufen zu lassen. Wenn nvm und node installiert ist, muss noch folgender Eintrage gemacht werden:

    nano ~/.bashrc
    
    // ganz unten noch folgende Zeile anfügen
    . ~/.nvm/nvm.sh
    nvm use 0.10.17
    

    Nützliche Funktionen

    Anzahl an Funktionsparameter

    var invokee1 = function(err, callback) {
        // cant change this function
        callback();
    };
    console.log(invokee1.length);
    
    //Resultat = 2 -> length = die Anzahl an Funktionsparameter
    

     

  • Cloudflare – Webseitenladezeit in 10 Minuten zum Nulltarif optimieren

    Schneller, sicherer, einfacher. Gilt überall und wenn es um die Ladezeiten der Webseite geht erst recht. Über Twitter erreichen mich immer wieder irgendwelche Opimierungstweets und was alles getan werden muss, damit die Seite noch schneller lädt. Die Liste sind dann irgendwie wie folgt aus:

    • Javascript, CSS, HTML minimieren
    • Bilder, Text komprimieren
    • Browser Caching einschalten
    • Sprits verwenden
    • und noch mehr

    Dabei geht es doch viel einfacher: Cloudflare dazwischen schalten. Cloudflare agiert als Proxy/CDN. Einrichten erfolgt kinderleicht:

    Cloudflare installieren

    Installieren ist eigentlich viel zu hoch gegriffen, konfigurieren trifft es doch schon besser:

    1. Auf Cloudflare registrieren
    2. Neue Webseite hinzufügen, e.g. rapsli.ch. Danach analysiert Cloudflare die DNS Situation.
    3. Jetzt lediglich die bestehenden DNS Einträge anpassen -> bei mir musste ich das via switch.ch machen
    4. Warten bis die DNS Änderungen greifen.

    Jeder Zugriff erfolgt jetzt zuerst via Cloudflare, falls etwas im Cache ist, dann wirds ausgeliefert und kommt gar nicht mehr zum eigenen Server, ansonsten wird eine Anfrage an den Server gemacht.

    Auf meiner kleinen EC2 Instanz ist die durchschnittliche CPU Belastung um fast 50% zurückgegangen.

    http://www.youtube.com/watch?v=0XZOecsbnKo

  • Sind PHP, Java und .Net am Sterben?

     

    Mal wieder ein bisschen mit Google Trends gespielt. Scheint als wären die grossen Programmiersprachen am Sterben… oder aber die Leute wissen bereits alles dazu und müssen daher nicht mehr danach googeln.

    Neue Trends aktuell sind sicher Node.js (und wahrscheinlich noch andere):

    Im Vergleich zu den Grossen noch verschwindend klein, aber doch mal ein guter Start. Auf jeden Fall spannend zu sehen, wie das in 2 Jahren ausschaut… der neue Überflieger oder es gibt bereits den nächsten grossen Star.

    Ich habe aktuell viel mit Javascript gearbeitet und finde mich so langsam aber sicher ein bisschen damit zurecht. Noch fühlen sich die Konzepte für Objekte komisch an (wahrscheinlich bin ich hier einfach Java gebrandmarkt), aber so langsam aber sicher nähere ich mich da an. Es stellt sich jetzt die Frage PHP den Rücken zu kehren und serverseitig auch mit Javascript zu arbeiten oder weiter auf PHP zu setzen? Die Benchmarks für Node.js sind seeehr vielversprechend…

    Stellt sich halt die Frage, ob das lediglich ein Trend ist, der bald wieder verschwindet, oder ob Node.js eine ernst zu nehmende Plattform wird? Dann wiederum ist gut zu wissen, dass Javascript so schnell nicht verschwinden wird bzw. vermehrt Verbreitung (Firefox OS z.B.)

  • Die langen Qualen

    Die letzten Wochen habe ich fleissig meine Kilometer abgespult. Zwar nicht ganz so viele, wie ich eigentlich wollte, aber auch nicht so schlecht. Heute war dann mal wieder ein langer dran: 30km und 300 Höhenmeter. Die ersten 10 Kilometer scheinen viel zu lang, doch dann wirds langsam besser. Das Tempo von Anfang an niedrig, damit es auch bis zum Schluss noch passt.

    Der Aare entlang, über schöne Felder, die Sonne lacht ins Gesicht es ist nicht zu warm und nicht zu kalt, einfach gerade ideal. Bei Kilometer 20 wünsche ich mir einen Verpflegungsposten. Die Flüssigkeit in meinem kleinen Fläschchen neigt sich langsam aber sicher zuende. Die paar Balisto und die Banane reichen vollkommen aus.

    Nach ein mehr als 3 Stunden komme ich an. Die Beine spüre ich doch ein bisschen, es ist jedoch eine grosse Erleichterung festzustellen, dass der letzte Kilometer der schnellste war. Gute Zeiteinteilung, es hätte als auch noch mehr drin gelegen.

    Noch genau 2 Monate trennen mich und die Nacht der Nächte. 100km sind lang: die heutige Runde mal 3 und dann noch die 10 km Ehrenrunde. Egal, es muss einfach reichen: Training macht viel aus und der Rest muss der Kopf gut machen… dann auf die nächste paar Kilometer.

  • HTML5 = Open Source ist gut fürs Web

    Letzte Woche habe ich den Artikel "Jede HTML5 App ist Open Source" geschrieben. Das Internet ist offen und frei und soll dies auch bleiben und HTML5 ist ein grosser Schub dafür. Nicht mehr länger können Geheimnisse verborgen werden. Der Source Code kann nicht in einem Binary und auch nicht auf einem Server versteckt werden. Der Source Code liegt offen und für jedermann relativ einfach zugänglich da.

    Chance oder Problem?

    Für die einen wird dies ein grosses Problem sein, für die anderen eine grosse Chance. Es gilt die Web Welt zu umarmen und die Offenheit zu leben. Der Source Code liegt offen da, ich als Entwickler kann also problemlos Blogeinträge schreiben und Schnippsel daraus verwenden. Der Source Code kann von anderen Entwicklern analysiert und kommentiert werden. Es können Vorschläge und Patches geschrieben werden, einzig was nicht erlaubt ist, ist den Source Code 1:1 zu kopieren. Doch wo liegt da die Grenze? Wie kann bewiesen werden, dass die Idee nicht auf dem eigenen Mist gewachsen ist? Ist das das Ende von Software Patenten? Ich kann mir gut vorstellen, dass hier in Zukunft noch der eine oder andere Streit auf uns zukommen wird.

    Die eigentliche Business Logik wird je länger desto mehr an Wert verlieren, da diese für alle zugänglich ist. Wichtiger sind Faktoren wie Service, Usability, Integration mit anderen Diensten und Daten. Daten gilt es zu schützen, Usability, Integration und Service auszubauen.

    Offenheit ist der Schlüssel

    Das Web lebt von Offenheit. In Blogs und sozialen Netzwerken geben Menschen privateste Dinge offen preis. In Foren und IRC unterstützen sich oftmals Konkurrenten mit Tipps und Tricks, wie ein bestimmtes Problem zu meistern ist. News sind frei zugänglich und können verlinkt, verschickt und getauscht werden. Das Web ist eine sehr offene Kultur und vielleicht ist es auch gerade deswegen gut, dass HTML5 diese Offenheit nicht verhindert (obwohl ich sicher bin, dass sich einige Firmen daran stören und entsprechende Schranken einbauen werden).

    Die Spaghettizeiten sind vorbei

    Warum sollte ich also meinen Code verstecken? Ich kann dadurch helfen, das Web voranzutreiben und neue Ideen/Ansätze zu verbreiten. Ich muss mich jedoch auch knallhart der Realität stellen, wenn ich Mist programmiere. Software ist nicht mehr eine Blackbox, sondern eine gläserner Würfel, dem ich mich wohl oder übel stellen muss. Vorbei sind die Zeit, wo ich irgendwelchen Spaghetticode auf einem Server verstecken mit dem Gedanken: "Hauptsache es geht."

    Das mag jetzt alles sehr idealistisch klingen und ist es wahrscheinlich auch und es gibt viele, welche nicht sehr viel Freude an dieser Entwicklung haben (siehe z.B. das Leistungsschutzrecht). Auch wenn einiges nocht vernab der Realität ist, liegt doch ein Funken Wahrheit darin.

    Update 5.4.2013: DRM im HTML [Spiegel online]

    Es scheint also durchaus im Interesse einiger Leute zu sein, hier doch etwas zu tun, wenn auch ein bisschen in einer anderen Richtung.

  • Apple IOS Developer Zertifikate SOS

    Das mit diesen Apple Zertifikaten kann ganz schön verwirrend sein. Es gibt super Doku, aber die ist mir viel zu lang. Daher hier die Kurzversion für mich persönlich, wenn ich das nächste Mal wieder etwas am Basteln bin.

    Development Zertifikat

    Muss via xCode erstellt werden. Wenn es noch nicht vorhanden ist, dann wird es automatisch erzeugt. Falls bereits ein Zertifikat vorhanden ist, dann kann dieses in den Keychain Access importiert werden:

    1. Export des Zertifikates von dem Mac aus, wo das Zertifikat ursprünglich erstellt wurde.
    2. Doppelklick und schwups ist es im eigenen Schlüsselbund drin. ACHTUNG: Passwort ist hier notwendig.

    -> Wahrscheinlich das Zertifikat am Besten irgendwo speichern, damit es jederzeit auf einem anderen Mac eingesetzt werden kann.

    Provisioning Profiles

    Dann gibt es noch die Provisioning Profiles. Dieses ist notwendig, um die App auf einem iPhone ausserhalb des App Stores zu installieren. Pro App braucht es ein Provisioning Profile. Eine gute Anleitung ist hier.

    Das ist hauptsächlich für mich, aber vielleicht nützt es ja sonst noch jemandem.

  • Jede HTML5 App ist Open Source

    Um es gerade vorweg zu nehmen. Der Titel stimmt juristisch natürlich so nicht, technisch hingegen schon.
    In der Vergangenheit, sprich vor 15 Jahren, war JavaScript eine Sprache für Hacker und Spieler. Javascript aus Sicherheitsgründen zu deaktivieren war normal. Die Business Logik einer Webseite fand ausschliesslich auf dem Server statt. In den vergangenen Jahren hat sich hier einiges geändert: Kaum eine Webseite, welche nicht irgend einen Schnipsel Javascript benötigt und mit HTML5 hat sie auch noch ein hübsches Logo bekommen. Javascript ist erwachsen und salonfähig geworden.

    Flickr (http://www.flickr.com/photos/epstudios)

    Krieg der Mobilen Technologien

    In der Appszene herrscht eine wahre Technologie Schlacht. Da gibt es auf einen Seite die iOS vs Android Schlacht und damit die Java vs Objective-C und auf der anderen Seite die Native vs HTML5 Schlacht. Ich möchte hier weniger auf die Sprachschlacht eingehen sondern mir das HTML5 Camp ein bisschen genauer anschauen.

    Was ist HTML5

    Viele Laien denken immer noch, HTML5 sei eine Programmiersprache: «Wir möchten die App gerne in HTML5 geschrieben.» Falsch. HTML5 ist ein Konzept oder Framework, welches basierend auf HTML, Javascript und CSS ist. Jede dieser drei «Säulen» übernimmt einen Teil: HTML ist für die Struktur einer App zuständig, CSS für das Look and Feel und Javascript für die Logik.
    In den meisten Fällen kommt auch noch irgend eine Serversprache hinzu: PHP, Ruby, Python oder Node.js für die coolen Kids (Randbemerkung: PHP und Python sind Dinosauriere und das sieht man den Seiten auch an. Die bräuchten mal einen Designer). Via REST Interface werden so Daten vom Server geholt, verarbeitet und verteilt. Diese klassische Client Server Architektur ist wohl bekannt und daher auch sehr einfach. Interessant wäre hier eine verteilte Peer-to-Peer Architektur für eine App, doch in den meisten Fällen würde das wenig Sinn machen, bzw. würde die Komplexität massiv erhöhen.

    Entwicklung von HTML5

    HTML5 entwickelt sich rasant weiter. Chrome ist der Treiber der Szene. Wenn irgendwelche neuen Spezifikationen hinzukommen, dann sind sie sehr oft die ersten, welche sie umsetzen.
    Features, welche bereits gegeben sind, sind diverse Möglichkeiten für Offline speicher, Zugriff auf lokale Daten, GPU Unterstützung für Rendering, verschiedene Optionen, Form Element zu rendern und und und. Das Feld ist relativ unübersichtlich. Auf der Seite HTML5 Test, kannst du schauen, wie gut dein Browser HTML5 unterstützt.
    Wenn die Entwicklung so weitergeht, dann sind die APIs bald schon sehr mächtig und werden von den meisten aktuellen Browsern auch unterstützt. HTML5 Apps steht dann also nichts mehr im Weg.

    Was ist der Vorteil von HTML5

    Ich gehe hier davon aus, dass alle Geräte die benötigten HTML5 Spezifikationen unterstützen. HTML5 hat dann den riesigen Vorteil, dass es wirklich Cross Plattform Kompatibel ist. Das heisst: Ich schreibe eine App und kann diese dann sowohl auf einem Blackberry, einem Notebook und einem iPad benützen, ohne grosse Modifikationen. Wahrscheinlich wird es noch die eine oder andere Anpassung brauchen, wie wir das seit jeher kennen.
    HTML5 Apps sind also Native Browser Apps, welche halt einfach anstatt in einer VM in einem Browser laufen. Die Entwicklung geht jedoch weiter: Firefox OS Apps sind HTML5 Apps. Es ist also kein Browser notwendig, sondern die Apps laufen als solches Native im OS. Daher: Eine HTML5 App, welche ich geschrieben habe, kann ich problemlos auch gleich für Firefox OS verwenden.


    via Flickr @doctorserone

    Titanium, PhoneGap und Co.

    Dann gibt es die Hybride: Appcelerator Titanium und PhoneGap, sind die, welche ich kenne. Ohne im Detail darauf einzugehen: Die eigentlich Logik der App wird in Javascript geschrieben (ja, es sind zwei komplett unterschiedliche Technologien, aber dazu vielleicht ein anderer Post).
    Meine Vermutung hier ist, dass besonders Appcelerator Titanium eher eine mittelfristige Lösung ist. Ich kann mir gut Vorstellen, dass die in 5 Jahren nicht mehr in der aktuellen Form existieren (aber bis dahin baue ich noch darauf auf).

    HTML5 = OpenSource

    Nach dieser langen Einleitung und Ausschweifung komme ich endlich zum Punkt: HTML5 ist Open Source. Nicht Open Source als Lizenz sondern Open Source im buchstäblichen Sinn.
    Wenn ich meine App im Browser Öffne, kann ich den Source Code und mir Schnipsel oder auch den ganzen Code herauskopieren. Mit PhoneGap und Titanium sieht das ein kleines bisschen anders aus: Zuerst muss ich an die App Datei herankommen, welche im Grunde genommen lediglich ein Zip File ist. Darin versteckt sich der ganze Code, welcher komplett offen ist. Um an die App Datei zu kommen brauche ich lediglich ein «gejailbraktes» Gerät.
    Also meine streng geheime vielleicht patentierte Software kann von jedermann gelesen und kopiert werden (vergl. den riesigen Streit zwischen Google und Oracle, wegen neun Zeilen Java Code).

    Möglichkeiten zum Schutz

    Es gibt sogenannte Obfuscator. Diese verschleiern Javascript u.a. so dass es unlesbar wird. Beispiel dafür sind z.B. YUI Compressor. Hier ein kleines Beispiel, basierend auf jsobfuscate.com:

    self._isNetworkConnectionAvailable = function() {
        if (Titanium.Network.networkType === Titanium.Network.NETWORK_NONE) {
            return false;
        }
        return true;
    }
    

    Und was der Obfuscator daraus macht sieht dann wie folgt aus:

    eval(function(p,a,c,k,e,d){e=function(c){return c.toString(36)};if(!''.replace(/^/,String)){while(c--){d[c.toString(a)]=k[c]||c.toString(a)}k=[function(e){return d[e]}];e=function(){return'w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('b'+e(c)+'b','g'),k[c])}}return p}('6.4=3(){5(1.0.7===1.0.8){2 a}2 9}',11,11,'Network|Titanium|return|function|isNetworkConnectionAvailable|if|self|networkType|NETWORKNONE|true|false'.split('|'),0,{}))

    Zugegeben, das wird definitiv unleserlich, doch stellen nicht wirklich ein Problem dar. Ein Copy & Paste auf jsbeautifier und schon ist der Code wieder schön. Ich habe mal den definitiv unleserlichen Code von Gmail reinkopiert, 2 Sekunden später habe ich leserlichen Javascript Code in der Hand.

    Ist das der Weisheit letzter Schluss?

    Ich kann mir nicht vorstellen, dass HTML5 Applikationen vor dem grossen Durchbruch stehen, solange hier nicht eine Lösung gefunden wird. Solange das nicht der Fall ist, ist die einzige Möglichkeit, Code zu schützen, die Logik auf den Server zu verlagern, wo er vor unbefugtem Zugriff geschützt ist. Das wiederum führt dazu, dass ich ständig eine Online Verbindung brauche. Mag sein, dass mit den heutigen WiFi und G3 bzw. LTE Netzen, das nicht mehr so eine Sache ist, aber spätestens wenn ich im Ausland bin, bin ich froh, wenn ich eine App auch Offline verwenden kann.
    Es müsste daher eine Möglichkeit geben, Javascript Code als Bytecode abzuspeichern, welcher dann von der entsprechenden Javascript VM interpretiert werden kann. Ich bin überhaupt kein Experte auf diesem Gebiet, aber Axel von Javascript and more, ist der Meinung, dass es kaum realistisch ist, dass sich die verschiedenen Browserhersteller auf ein einheitliches Format einigen würden:

    I don’t think we could get browser vendors to agree to a common bytecode for all JavaScript virtual machines, because there is no common ground.

    Javascript zuerst in Bytecode zu kompilieren, wäre nicht mehr Javascript. Die Offenheit des Internets würde darunter leiden und es passt einfach nicht zu Javascript. Es wäre nicht mehr JavaSCRIPT, sondern JavaKOMPLIZIERT. Was würde die ganze Community rund um JSFiddle machen? Denn diese Dienste wären doch eher aufwändiger, wenn zuerst noch Bytecode erstellt werden muss.

    Und die Lösung ist?

    Mir noch unbekannt. Vielleicht kenne ich sie einfach noch nicht und sie liegt bereits da draussen irgendwo und vielleicht gibt es sie auch einfach noch nicht. Vielleicht ist es auch gar kein Problem und ich mache lediglich eines daraus?
    Vielleicht wäre eine Möglichkeit, eine App mit einem Key zu packen und zu zertifizieren. Alle Browserhersteller kennen den Key und können den somit öffnen. Wahrscheinlich könnte man sich hier etwas von der Musik und Filmindustrie abschauen, welche mit relativ wenig Erfolg solche Digital Right Management (DRM) auf ihren Tonträgern einsetzen. Und vielleicht ist auch gerade das ein Beispiel dafür, dass ein DRM sowieso nichts bringt und man es daher auch gleich lassen soll.
    Wahrscheinlich ist die Lösung ein Mix aus allen Faktoren:

    • Die Hürde so hoch wie möglich setzen, z.B. durch einen Obfuscator
    • Keine kritische Daten wie z.B. Passwörter in der App speichern
    • Hochgeheime Algorithmen auf den Server verlagern.

    Ich bin der Meinung, dass dies für gewisse Firmen nicht akzeptabel ist und daher gewisse Programme auch nicht als HTML5 App veröffentlicht werden, aber was noch nicht ist kann noch werden.

  • Passwortlänge beschränken

    Überall liest man, dass Passwörter nicht sicher sind. Ein super Artikel von Dan Goodin "Why passwords have never been weaker—and crackers have never been stronger". Nachdem ich den Artikel gelesen habe, habe ich schon beinahe angefangen mir Gedanken über mein ganzen Online Accounts zu machen. Unterdessen habe ich mich wieder mit dem Gedanken abgefunden: "Mich trifft es schon nicht".

    Twitter wurde gehackt, Evernote ist das letzte bekannte Opfer und wahrscheinlich werden in naher Zukunft weitere Opfer hinzukommen. So habe ich mir doch mal wieder die Mühe gemacht, meine Passwortstrategie zu überdenken und habe sogar angefangen, Passwörter von Diensten mal wieder zu ändern.

    Das neue Passwort muss 6 bis 16 Zeichen lang sein.

    Sorry, aber was sind das für Einschränkungen? Jeder Dienst sollte Kunden, welche längere Passwörter wählen mit Handkuss annehmen. Eigentlich sollten Kunden mit Passwort länger als 16 Zeichen einen Badge oder eine Prämie bekommen, aber nein, statt dessen, werde ich daran gehindert.

    16 Zeichen ist eine beachtliche Länge, das gibt wenn man nur grosse und kleine Buchstaben verwendet immerhin 4.1 x 10^62 Möglichkeiten = eine Zahl mit 62 Nullen = unvorstellbar hoch und via Bruteforce aktuell nicht knackbar.

    Adding a GPU card to a system undoubtedly helps, but not as much as many might imagine. An AMD Radeon 6970 still needs more than 10 days to brute force a seven-character passcode. And the wall barely budges even when significantly more powerful resources are brought to bear. Using an Amazon EC2 cloud system that combines the horsepower of more than 1,000 individual GPUs, it still takes about 10 days to brute-force an eight character password.

    Und wenn mal etwas neues kommt?

    Durch geschickte Listen wird diese Zahl jedoch drastisch nach unten reduziert, da viele Kombinationen ausgeschlossen werden können. Und was ist in 2-3 Jahren, wenn neue Technologien hinzukommen? Warum nicht schon heute hier keine Limite setzen, oder vielleicht bei 256 Zeichen?

    PS: Ach wie schön und da wurden also wieder ein paar Passwörter gestohlen: Avast in Deutschland gehackt, tausende Benutzerdaten im Netz.