Blog

  • Bitte braucht nicht mehr unseren Browser

    Herrlich, was Heise hier mal wieder schreibt.

    Auch den einfachsten Weg, sich sofort vor Angriffen durch die IE-Lücke zu schützen, verschweigt Microsoft seinen Kunden weiterhin – nämlich den Einsatz eines alternativen Webbrowsers wie Firefox oder Google Chrome.

    Ja klar. Warum eigentlich hat Microsoft nicht schon vor Jahren ihren Usern gesagt, dass sie sich doch lieber nach einem alternativen Browser umschauen sollen. Das wäre doch eine schöne Einleitung für eine Microsoft Keynote:

    Liebe treue IE Anhänger: Da wir leider bisher keinen vernünftigen Browser entwickeln konnten und Chrome und Firefox viel sicherer und besser sind, bitten wir alle auf Chrome oder Firefox umzusteigen. Dann hätten sie sich wahrscheinlich auch die ganzen Bussgelder der EU sparen können und der ganzen Web Industrie wäre es auch einfacher gegangen, da das Geld für coole neue Features und nicht für IE Optimierung ausgegeben werden kann.

    Daher an dieser Stelle: Liebe IE Nutzer: Schaut euch doch bitte nach einem alternativen Browser um.

  • Sicherheit

    Es ist gerade einiges los in der Twitterwelt: Das Bundesamt empfiehlt auf IE zu verzichten und gleichzeit ist da ein Blogpost von Kevin Burke wo er eine Sicherheitslücke von Virgin Mobile publik macht. Dazu kommt ein Artikel von Dan Goodin wo es in aller tiefe um Sicherheit geht.

    https://twitter.com/luckow/status/247767723206119424

    https://twitter.com/chx/status/247930176732794882

    Why passwords have never been weaker—and crackers have never been stronge by Dan Goodin. Sehr ermunternd, was er da am Schluss schreibt:

    The whole password-cracking scene has changed drastically in the last couple years," said Weir, the Florida State University post-doctoral student. "You can look online and you can generally find passwords for just about everyone at some point. I've found my own username and passwords on several different sites. If you think every single website you have an account on is secure and has never been hacked, you're a much more optimistic person than I am.

    Schlussendlich bleibt wohl nicht viel mehr übrig als zu hoffen, dass es nicht mich trifft. Und natürlich: Ganz sicher auf IE verzichten, schön brav die Systeme aktuell zu halten und lange Passwörter wählen.

    Und für mich als Entwickler: Sicherheit von Anfang an einbeziehen!

    PS: Und jedes mal, wenn ich "gezwungenerweise" den Internet Explorer (v8) öffne, treten schon die ersten Angstschweiss Perlen auf die Stirne. Vielleicht sollten sich grosse Firmen mal Gedanken über die Browsersicherheit machen anstatt darüber nachzudenken, ob externe Dienste wie Basecamp sicher sind.

  • Tags und Branches in Git

    Git ist für mich nachwievor ein kleines Wunderkästchen. So langsam taste ich mich heran. Der nächste Schritt ist jetzt Tags & Branches. Hier eine super Erklärung von stackoverflow:

    A tag represents a version of a particular branch at a moment in time. A branch represents a separate thread of development that may run concurrently with other development efforts on the same code base. Changes to a branch may eventually be merged back into another branch to unify them.

    Usually you'll tag a particular version so that you can recreate it, e.g., this is the version we shipped to XYZ Corp. A branch is more of a strategy to provide on-going updates on a particular version of the code while continuing to do development on it. You'll make a branch of the delivered version, continue development on the main line, but make bug fixes to the branch that represents the delivered version. Eventually, you'll merge these bug fixes back into the main line. Often you'll use both branching and tagging together. You'll have various tags that may apply both to the main line and it's branches marking particular versions (those delivered to customers, for instance) along each branch that you may want to recreate — for delivery, bug diagnosis, etc.

    It's actually more complicated than this — or as complicated as you want to make it — but these examples should give you an idea of the differences.

    Und dann gibts auf nvie.com noch eine wunderschöne Grafik und schon ist eigentlich alles klar. Der Beitrag ist sehr empfehlenswert!

    Und dann wäre hier noch eine kleine Übersicht, über die wichtigsten Git Befehle: http://www.siteground.com/tutorials/git/commands.htm

    Und hier noch gleich ein schöner Artikel um mit dem ganzen Branching Zeugs anzufangen.

    Und hier noch ein paar Code Schnippsel/Beispiel, welche ich sonst wahrscheinlich wieder suchen werde:

    Ein lokalen Branch ins entfernte Repository pushen: Origin = remote, development = der lokale Branch

    git push origin development

     

  • Verschlüsselte Daten in der Cloud

    Mittlerweile ist wohl die Web Wolke (Cloud) bei jedem angekommen, ob sie jetzt weiss oder schwarz ist sei mal dahingestellt. Dienste sind zahlreich:

    • Dropbox
    • GDrive
    • Flickr
    • Instagram
    • Wuala
    -> Hier geht es prinzipiell um Wolkenspeicher (Cloud Storage). Dann gibt es die andere Seite Software as a Service (SaaS):
    • Gmail
    • Basecamp
    • Facebook
    • SBB Fahrplan
    Überall werden Daten generiert und online an einem fremden Ort abgespeichert (mal abgesehen vom Fahrplan… ausser ich kaufe mir Online ein Ticket).
    Für Cloud Storage ist es eigentlich (oder sollte es) selbstverständlich. Die Files müssen verschlüsselt abgelegt werden (Wuala macht das sehr gut -> Files werdem auf dem Client verschlüsselt).
    Wie sieht es jedoch mit Saas aus? Für den User wäre das natürlich bezüglich privatsphäre eine super Sache. Für den Anbieter jedoch weniger:
    • Mehr Rechenleistung
    • Daten können nicht mehr analysiert werden um daraus Werbung zu generieren.
    Beispiel Basecamp. Daten werden verschlüsselt abgespeichert. Für den Privaten mag das wenig Relevanz haben, für grosse Firmen mit einer Paranoiden IT Security ist das jedoch ein KO Kriterium. All die vielen nützlichen kleinen Webhelferleins da draussen haben somit wenig Chance. Schade.
     
    Stellt sich natürlich die Frage, muss sich die Corporate IT Security anpassen oder die Dienstleister? Was ist deine Meinung?
  • Apps brauchen kein Zielpublikum

    Apps brauchen kein Zielpublikum. Die App ist im Appstore, Zielpublikum sind daher IOS User. Als Projektmanager jetzt loszurennen wäre fatal.

    Doch gerade heute wieder erlebt. Eine Projektidee war vorhanden, doch fehlte das Projektziel. Bei näherem hinschauen stellte sich heraus, dass Projektziel und Projektinhalt überhaupt nicht zusammenpassen.

    Aber egal, hauptsache wir haben eine App.

    Zum Glück nicht. Zuerst wird jetzt Ziel definiert und dann gehts an den Inhalt. Vorher etwas zu machen wäre reine Spekulation.

  • Tschüss Digg

    Noch vor einigen Jahren war Digg der Inbegriff von Social News. Die glamourösen Zeiten sind vorbei: Verdrängt von Facebook Twitter und co. Vor dem berüchtigten Digg Effekt muss sich wohl keiner mehr fürchten (die Probleme habe ich eh nie gehabt).

    Es ist ein stetiges kommen und gehen in der Web Welt…. fressen und gefressen werden. So wurde Digg für lächerliche 500'000 gekauft (wurde es noch vor ein paar Jahren auf 60'000'000 geschätzt). Totaler Hype. Facebook soll angeblich 90'000'000'000 $ wert sein??? und in 10 Jahren? 900'000'000'000 oder eher 9'000'000?

    Sehr passend (via Meedia):

    Hat ein Start-up schnell eine hohe Bewertung erreicht, steigt der Druck auf die Gründer, einen Exit zu suchen. Es sei denn, man kann sich sicher sein, einen wirklich kopiersicheren Dienst anzubieten, der seine Mitarbeiter und Nutzer so begeistert, dass sie totsicher bei der Stange bleiben.

     Und, wann ist Facebook dran?

  • Google Analytics Dashboard

    Hier eine kleine Peek Preview auf das Executive Google Analytics Dashboard. Ziel: Die Daten z.B. in einem Intranet zugänglich machen. Dadurch sehen die Mitarbeiter auch gleich, wie es denn um die Seite eigentlich steht.

    Mal schauen, was ich damit weiter machen werde. Noch ein kurzer technischer Einschub: Zend Framework und Twitter Bootstrap. Keine Datenbank notwendig.

    Würde mich über Feedback freuen. Demo kommt bald.

  • F wie Freiheit oder Framework. Was ein CMS nicht kann

    Es ist schon spät. Mal wieder hat es mich gepackt und ich finde ich habe mich selber an Genialität übertroffen (mehr dazu ist bald in meinem Portfolio zu sehen)… und vielleicht ist das nur meine eigene Müdigkeit und Arroganz. Die Kunst der Programmierung hat mich voll im Griff. Der Engineering Teil. Die Schönheit von Codezeilen. Irgendwie können diese Bits und Bytes eine gewisse Ästhetik haben. Als CMS Entwickler geht das irgendwie ein bisschen verloren… Ein CMS Entwickler muss sich sein Gebilde umzingelt von Mauern erbauen, während dem ein Framework Entwickler sich den Platz für sein Schloss frei aussuchen kann. Und wenn ich Sharepoint noch als Vergleich hinzunehme: Da muss sich der Entwickler in einem Mäusegängekomplex etwas zurecht bauen.

    Drupal, WordPress, TYPO3 und Co.

    Lange war ich als Drupal Entwickler unterwegs. Ein super System. Architektur ist mehr oder weniger strikt vorgegeben. Es gibt Konventionen und Regeln, die eingehalten werden müssen. Bestehende Funktionen und Module werden übernommen und entweder wird der Code oder die Anforderung/der Prozess angepasst. Genau da liegt der Haken: Das CMS Korsett. So wie es vorgesehen ist, so muss es gemacht werden. Basta. Ob das drum rum gebraucht wird oder nicht ist egal, es gehört halt zum System.

    F wie Freiheit oder Framework

    Nachdem ich eine Miniapplikation bestehend aus ein paar Files geschrieben habe, musste ich mir doch eingestehen, dass die Architektur nicht wirklich durch Genialität glänzen konnte. Ein langes Stück Code, von Markup und includes durchsetzt. So, wie es halt jeder am Anfang mal gemacht hat. Nun, bin ich aber nicht am Anfang, sondern kann doch auf einige Jahre Entwicklung zurückblicken. 

    Ich habe mir ernsthaft überlegt, Drupal dazu zu verwenden -> nein. Overkill. Fat Free PHP. Genial und schnell, aber was wenn doch mal mehr aus der Applikation wird? Ein scheuer Gedanke ans Zend Framework. Ein Biest. Doku ist … gewöhnungsbedürftig. Aber mächtig. Ein bisschen zögerlich war ich schon.

    Als langjähriger CMSler war ich am Anfang sichtlich überforder mit dermassen viel Freiheit. Dazu kommt noch, dass hier alles in Objekten ist (was zumindest bei Drupal nicht der Fall ist). Ist diese Funktion eher im Controller oder in der View anzusiedeln, oder vielleicht doch in einem Model? Und wenn ich jetzt ein Menu aus einem File parse, ist das jetzt etwa in der View anzusiedeln, oder wäre das doch eher ein Model?

    Fragen, die ich mir lange nicht gestellt habe, da ein Menu immer aus der Datenbank kam. Nie hätte ich mir Gedanken gemacht, dass ein Menu aus einem CSV File kommen könnte. Mag nicht für jedes Usecase geeignet sein, aber für meine Applikation ist es eine super Lösung.

    Ich musste zeitweisen sogar Billie Joe Armstrong verstummen lassen, um mich voll und ganz zu konzentrieren. Wahrscheinlich hätte eine kleine Zeichnung alles vereinfacht. Nun gut… zu guter letzt habe ich jetzt eine ultraperformante Applikation und viel Freude am Entwickeln.

    Framework oder CMS

    Die Frage lässt sich wohl sehr einfach beantworten. … in Realität wohl doch nicht. CMS für Inhaltssachen, Framework für Funktions-/ Applikationssachen. Insofern, wäre es sicher spannend, wenn sich Drupal in Richtung Small Core entwickeln würde. Stellt sich hier nur die Frage, gibt es Drupal ohne Nodesystem?

    Was ist deine Meinung dazu? CMS vergewaltigen oder mit einem Framework selber bauen.

    PS: Soeben ist Billie Joe Armstrong verstummt und für mich ist es Zeit schlafen zu gehen.

  • Partition in VirtualBox Headless verändern – Tutorial

    Hier eine kurze Anleitung, wie man die Partition auf einer Virtualbox VM verändern kann.

    Zuerst muss die VM runtergefahren werden. Meine VM heisst Fileserver:

    VBoxManage controlvm Fileserver poweroff

    Jetzt vergrössern wir unser virtuelle Disk. Und setzen sie auf 150 GB -> vorher war sie nur 100 GB.

    VBoxManage modifyhd Fileserver/Fileserver.vdi --resize 150000

    So, jetzt können wir die VM wieder starten. Jetzt müssen wir im OS in meinem Fall Debian noch sagen, dass es von dem neu verfügbaren Platz auch Gebrauch machen soll.

    Dazu brauchen wir am Besten das Tool GParted. Die Version runterladen und unter /home/rapsli/isos speichern. Jetzt sagen wir unserer VM, dass sie nicht normal starten soll, sondern von dem GParted ISO:

    VBoxManage storageattach "Fileserver" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/rapsli/isos/gparted-live-0.12.1-5.iso

    Jetzt starten wir die VM wieder. 

    VBoxHeadless --startvm Fileserver

    Dabei sollte eine Nachricht kommen, die in etwa wie folgt ausschaut:

    VRDE server is listening on port 3389.

    Jetzt wechseln wir auf ein System mit einem Desktop und machen eine remote Desktopverbindung zum HOST System:

    rdesktop 192.168.178.27:3389

    Da können wir jetzt sehen, wie die VM aufstartet. Irgendwann kommen ein paar Prompts. Sollte eigentlich klar sein, wenn alles durch ist, dann sollte ein GParted Linux erscheinen. Dort können jetzt bequem die Partitionen bearbeitet werden.

    Wenn alles vorbei ist, GParted Live wieder runterfahren, und das ISO wieder rausnehmen.

    VBoxManage storageattach Fileserver --storagectl "IDE Controller" --port 1 --device 0 --medium none

    So, jetzt können wir die VM wieder starten und die Partition sollte jetzt grösser sein. Sobald die VM gestartet ist, via SSH auf die VM "Fileserver" verbinden und überprüfen:

    df -h

    /dev/sda3 135G 49G 80G 39% /share/daten

  • Automount Disk in Ubuntu 12

    Ganz einfach:

    ls -al /dev/disk/by-uuid/

    Dann sollte der Output etwa wie folgt sein:

    drwxr-xr-x 2 root root 140 Jul 9 2012 .
    drwxr-xr-x 6 root root 120 Jul 9 2012 ..
    lrwxrwxrwx 1 root root 10 Jul 9 17:16 01CC8ACBFF5B9D10 -> ../../sda5
    lrwxrwxrwx 1 root root 10 Jul 9 17:16 1388b3c6-2383-48fc-96f4-3a0bf911de51 -> ../../sda6
    lrwxrwxrwx 1 root root 10 Jul 9 17:16 68e5a4d8-9f39-479b-ae24-920b30664608 -> ../../sda3
    lrwxrwxrwx 1 root root 10 Jul 9 17:16 7696FD1396FCD499 -> ../../sda2
    lrwxrwxrwx 1 root root 10 Jul 9 17:16 FCF6EA8FF6EA498A -> ../../sda1

     Jetzt ist der Trick, die richtige Partition zu finden. Ich habe es einfach mit Trial & Error gemacht. Der Befehl dazu ist:

    /usr/bin/udisks --mount /dev/disk/by-uuid/FCF6EA8FF6EA498A

    Dann sollte der Fileexplorer aufgehen. Falls es die falsche Partition war, einfach eine andere probieren. Falls das ganze automatisch beim Aufstarten geschehen soll, einfach diesen Befehl bei den Startprogrammen hinzufügen und schon klappts.