#fotomontag #4

Jeden Montag ein Foto. Der #fotomontag.

Diese Aufnahme stammt vom Göstinger Ruinenberg und zeigt das Nordportal des Plabutschtunnels (Pyhrn Autobahn, A9). Das Foto wurde an der Stelle aufgenommen, an der Anna von Gösting in den Tod gestürzt sein soll. Dies tat sie, nachdem ihre Liebe im Zweikampf mit einem anderen Ritter erschlagen wurde.

Ausblick Jungfernsprung

Ausblick Jungfernsprung

Hast du eine Meinung zum Foto? Ja? Dann lass sie mich doch bitte wissen und bewerte es in den Kommentaren.

Virtuelle Maschinen auf externer HDD betreiben

In Ubuntu-Box zur Softwareentwicklung gesucht habe ich das Intel NUC Kit dem Apple Mini gegenübergestellt. Ziel war es, eine günstige Box für die Softwareentwicklung mit Ubuntu zusammen zu stellen bzw. Feedback zu erhalten. Das kam dann auch via Twitter und Facebook recht flott.

In der Argumentation ging es sehr schnell in die Richtung, aus der ich eigentlich kam: In Richtung VMs. Aber genau da lag ja eigentlich mein Problem.

Die Geschichte

Meine VMs habe ich aus Gründen des Speicherplatzes und der Portabilität auf einer externen Festplatte liegen. Ich setze dazu eine Samsung 840 Series Basic ein, die mit entsprechendem Gehäuse am USB 3.0-Anschluss hängt. Das sollte eigentlich genug Power liefern. Entsprechende Messungen zeigten auch ganz gute Werte.

VM installiert und gleich während des ersten Bootens war die Platte weg, sie lief, wurde mit Strom versorgt, aber das System kannte sie nicht mehr. Erst nach einem Neustart war sie wieder verfügbar. Zusätzlich kam es zu Schreibfehlern bzw. wurde mir angezeigt, Daten wären geschrieben worden, wurden sie teilweise nicht. Zuerst dachte ich, dass die HDD defekt wäre. Tests auf anderen Geräten zeigten, dass sie OK sein sollte. Nächster Verdacht war mein USB-Anschluss, aber andere Platten und Devices laufen einwandfrei darauf. Blieb also nur mehr das Gehäuse. Insgesamt habe ich schlussendlich 3 Gehäuse getestet und mit keinem war das zufriedenstellend. Daher vor einigen Tagen die oben verlinkte Post.

Der Zufall

Kurz nach den Gesprächen habe ich dann über die Samsung Portable SSD T1 gelesen. Was ich da las hat mir ganz gut gefallen und so habe ich im lokalen Geschäft meines Vertrauens zugeschlagen und habe das erste und zugleich letzte Gerät des Stores gekauft :)

Hier ein paar Bilder der Samsung Portable SSD T1 250GB:

Samsung Portable SSD T1 Bild 1

Samsung Portable SSD T1 Bild 1

Samsung Portable SSD T1 Bild 2

Samsung Portable SSD T1 Bild 2

Samsung Portable SSD T1 Bild 3

Samsung Portable SSD T1 Bild 3

Samsung Portable SSD T1 Bild 4

Samsung Portable SSD T1 Bild 4

Es läuft

Nun habe ich das Szenario damit nochmals getestet und siehe da, alles funktioniert einwandfrei. Die 840er hat ein Zuhause im Laptop meiner Frau gefunden und läuft dort wie geschmiert. Ich denke so kann ich wieder einige Zeit ordentlich arbeiten und habe zudem eine Menge Geld gespart.

Hier noch der Vergleich zwischen meiner aktuellen, internen SSD und der Samsung Portable SSD T1:

Samsung 830-Series 256 GB (intern)

Samsung 830-Series 256 GB (intern)

Performance Samsung Portable SSD T1

Performance Samsung Portable SSD T1

Von Samsung wird eine eigene Software mitgeliefert. Mit dieser wird die SSD quasi installiert. Die Messung danach brachte bessere Werte, allerdings war das Alignment nicht korrekt, was zu einer kürzeren Lebensdauer der Festplatte führt. Das habe ich geändert, dafür sind die Werte für 4K-64Thrd eingebrochen:

Performance Samsung Portable SSD T1 - Falsches Alignment

Performance Samsung Portable SSD T1 – Falsches Alignment

Nichts desto trotz sieht das nicht so schlecht aus und funktioniert bis dato auch ganz gut. Hoffentlich bleibt das auch so.

Das Product Backlog ist unschuldig

In vielen Diskussionen wird dem Product Backlog eine böse Rolle zugeschrieben und es mehr oder weniger verdammt. Damit macht man es sich – aus meiner Sicht – auch etwas zu einfach. Ich glaube nicht an die “Schuld” des Backlogs, sondern vielmehr an den falschen Umgang damit. In diesem Beitrag möchte ich typische Probleme aufführen und bereinigen helfen.

Backlog != Strategie

In einem Unternehmen oder hinsichtlich eines einzelnen Produktes/Kunden sind Entscheidungen zu treffen und festzulegen. Das kann niemals aufgrund einiger Stories, Wünsche und Ideen eines Backlogs funktionieren. Zu jedem Produkt bestehen (hoffentlich) Visionen und Ziele, die zu erreichen sind. Das Backlog selbst sollte hier nur die Schritte in naher Zukunft dahin, nicht das Rahmenwerk festlegen. Ein Blick über den Tellerrand hinaus ist wichtig.

Das Backlog sollte die Strategie widerspiegeln, nicht umgekehrt.

Platz für Ideen schaffen

Lange Listen haben die Angewohnheit immer länger zu werden. Wird anfangs noch abgearbeitet wird das gerne weniger wenn immer mehr hinzugefügt wird. Das frustiert und man verliert die Lust. Noch schlimmer wird es, wenn eine Grundordnung innerhalb der Liste fehlt.

Eine höhere Chance auf Abarbeitung besteht bei der Verwendung von mehreren Listen für unterschiedliche Anforderungen. Normalerweise gibt es einen Ablauf, einen Prozess, der kann ja abgebildet werden. D.h. ein Eintrag muss dann durch unterschiedliche Listen (Idee, Entwurf, Grooming, …) durch, bis er schlussendlich im Backlog landet. Damit sieht man auch gut, in welchem Status ein Punkt gerade ist, wie weit er schon getrieben wurde. Über Tools wie Atlassian Jira lässt sich dergleichen gut abdecken.

Wird nicht gemacht? Löschen!

Es ist nicht einfach mit Dingen abzuschließen. Oft wurde in Konzepte, Definitionen, Ideen etc. viel Zeit investiert, eventuell auch von einem selbst. Möglicherweise ist einem der Punkt wichtig und will ihn daher noch nicht ganz abhaken, sondern zu einem späteren Zeitpunkt erneut vorbringen. Gerne wird er daher noch im Backlog belassen, selbst wenn es einen gemeinschaftlichen Beschluss gibt, dass die Story nicht durchgeführt wird.

Ballast abwerfen vermindert Frustration und fördert Produktivität.

Eine derartige Story ist aus dem Backlog zu entfernen. Ich empfehle eine generelle Löschung, da daraus gerne eine Liste von nicht ausgeführten Stories entsteht mit der dann auch wieder etwas getan werden muss. Das mausert sich zu einer Last und dies blockiert.

Ist nicht wichtig? Löschen!

Ein Punkt wurde bereits das x-te Mal nach unten geschoben. Immer ist etwas anderes wichtiger. Seit mehreren Sprints schon. Was sagt uns das? Diese Anforderung ist einfach nicht wichtig genug. Besteht die Chance, dass sie auch in den kommenden Sprints geschoben wird, dann ist eine Umsetzung mehr als unrealistisch. Besonders gut zeigt sich das, wenn sich das Team bereits über diese Anforderung lustig macht.

Was nicht wichtig ist, muss weg.

Es ist allen (und vordergründig dem Backlog) geholfen, den Punkt zu entfernen. Sollte das darin enthaltene irgendwann wichtig werden, kommt dies ans Tageslicht und gelangt zur Umsetzung.

Zähneputzen!

Wie man sich jeden Tag die Zähne putzen muss, um spätere Zahn- und Kieferprobleme zu vermeiden, ist es auch mit einem Backlog. Es will regelmäßig gepflegt werden. Die Pflege endet jedoch nicht bei der Priorisierung der Punkte:

  • Bestehende Informationen wollen aktualisiert werden, wenn sich etwas ändert. Nichts ist schlimmer, als in einem der Meetings herauszufinden, dass die Informationen nicht aktuell sind und sofort hektisch begonnen wird, diese auf den aktuellen Stand zu bringen.
  • Verwaltung der Status, Zuführung der Punkte/Stories in die richtigen Gremien (siehe Grooming, Estimation, etc.)
  • Aufarbeitung der Kommunikation, klären von offenen Fragen (z.B. Kommentare etc.)
  • Konsolidierung der vorhandenen Einträge

Bei Änderungen ist darauf zu achten, dass diese nachvollziehbar sind und die Story erneut zumindest in eine Estimation geht – manches Mal kann es auch zurück ins Grooming gehen, je nachdem.

Das Backlog ist kein Archiv, es ist vielmehr die Arbeitsstätte des Product Owners.

Fazit

Das Backlog beschreibt die umzusetzenden Punkte/Stories durch das Entwicklungsteam. Gerne wird es jedoch als Sammelsurium für alle möglichen Anforderungen und Ideen verwendet. Damit verstopft es im Laufe der Zeit wie ein Siphon der nicht gereinigt wird. Eigene Listen für Ideen, Vorschläge und “Work in Progress” helfen hier weiter. So wie der Product Owner das Backlog nicht als Archiv zu sehen hat, ist es legitim, dass das Entwicklungsteam den Product Owner auf Missstände im Product Backlog hinweist.

Wie sind deine Erfahrungen mit Product Backlogs?

Link-o-licious #8

In der achten Ausgabe von Link-o-licious habe ich zahlreiche Beiträge zum Thema Softwareentwicklung unter Linux mit Node.js, WebStorm etc.

WebStorm

Node.js

MongoDB

#fotomontag #3

Jeden Montag ein Foto. Der #fotomontag.

Mit zahlreichen Kollegen aus dem Knipserklub sind wir am 10. Jänner hinauf auf den Fürstenstand am Plabutsch und haben den Sonnenaufgang an diesem Tag festgehalten. Für mich war das der erste Sonnenaufgang, den ich bewusst fotografierte. Anfangs hatte ich recht große Probleme mit der Schärfe, habe das dann zwar so einigermaßen hin bekommen, bin aber mit den Ergebnissen nicht ganz zufrieden. Jedenfalls habe ich viel für den nächsten Versuch gelernt.

Und hier nun eines der vielen Fotos die ich gemacht habe:

Sonnenaufgang Graz/Schlossberg (Plabutsch)

Sonnenaufgang Graz/Schlossberg (Plabutsch)

Hast du eine Meinung zum Foto? Ja? Dann lass sie mich doch bitte wissen und bewerte es in den Kommentaren.

Ubuntu-Box zur Softwareentwicklung gesucht

Ich habe schon lange keinen Desktop mehr. Ein Dell XPS 13 reichte bis dato vollkommen. Darauf ist Windows 8.1 installiert und alles was ich halt so an Tools und Entwicklungsumgebung benötige. Ubuntu und Fedora laufen in virtuellen Maschinen. Das geht mir mittlerweile tierisch auf den Nerv und daher möchte ich für die Entwicklung unter Linux eine eigenständige Hardware.

Nun will ich aber kein zweites Laptop. Genausowenig möchte ich mir einen richtig fetten Desktop hinstellen. Also musste eine Recherche her. Das sind die Anforderungen:

  • Mini-PC, soll wirklich wenig Platz benötigen
  • Passable Hardware damit ich Projekte auf diesem Technologie-Stack umsetzen kann
  • Ich will keine Unmengen für die Hardware ausgeben, Schmerzgrenze € 700
  • Soll nicht hässlich sein

Nach einer ersten Recherche habe ich zwei Kandidaten gefunden.

Inzwischen habe ich diese Idee wieder verworfen und eine weit günstigere Lösung gefunden, die für mich nun auch so funktioniert. Weiter zum Beitrag.

Mini-PC – Intel® NUC-Kit D54250WYK

Das Intel NUC-Kit D54250WYK hat folgende Daten:

  • Intel® Core™ i5-4250U Prozessor der vierten Generation (verlötet) mit Aktivkühler
  • Intel® HD-Grafik 5000
  • Zwei SO-DIMM-Steckplätze für max. 16 GB 1600/1333-MHz-1,35-V-DDR3L-Speicher
  • Ein Mini Displayport 1.2 und 1.4a
  • 4 USB 3.0, 2 USB 2.0
  • Intel® Gigabit-Ethernet-Controller
  • HDMI

Hier das RAM-Maximimum ausschöpfen und eine SSD hinein, das könnte durchaus was werden. Blank kann man das Gerät zum aktuellen Zeitpunkt mit knapp über 300 Euro bekommen. Preislich wäre ich damit ziemlich gut im Rennen.

Und so sieht das aus:

NUC-Kit D54250WYK Rückansicht

NUC-Kit D54250WYK Rückansicht

NUC-Kit D54250WYK Vorderansicht

NUC-Kit D54250WYK Vorderansicht

Last but not least ein sehr interessanter Artikel zu NUC und Linux.

Mac mini

Die Alternative zum NUC-Kit wäre wohl ein Mac mini. Bei Apple schlägt natürlich gleich der Preis volle Kanne rein, deswegen geht sich da wohl nur das kleinste Modell aus. Um etwas RAM zu haben, muss man tief in die Tasche greifen, denn beim Mac mini 2014 kann der Speicher nicht getauscht werden. Aber die Festplatte lässt sich tauschen.

Und das wäre das Setup:

  • 1,4 GHz Dual-Core Intel Core i5 (Turbo Boost bis zu 2,7 GHz)
  • 8 GB LPDDR3 SDRAM mit 1600 MHz
  • 500 GB Serial-ATA-Festplatte mit 5400 U/Min.
  • Intel HD Graphics 5000
  • 4 USB 3.0
  • HDMI
  • Bluetooth 4.0
  • Gigabit Ethernet
  • 802.11ac WLAN

Die Kosten liegen hier bei € 599 (zum Zeitpunkt des Beitrages). Eine SSD würde hier noch hinzukommen, womit die Kosten knapp über 700 Euro liegen würden, wenn ich eine 250er nehme.

Mac mini 2014

Mac mini 2014

Aktueller Stand der Dinge

Die Hardware-Beschaffung eilt nicht. Ein wenig halte ich schon noch via VM durch. Auf Dauer ist das aber nichts für mich. Insgesamt zieht es mich aktuell mehr in Richtung Intel NUC-Kit. Zwar scheint hier die schwächere CPU an der Arbeit zu sein, dafür kann ich 16GB RAM hinein packen. Für die Gewissheit ob diese Rechnung aufgeht, werde ich mir noch einige Benchmark-Ergebnisse ansehen.

Hast du einen Tipp für mich? Bitte hinterlasse mir einen Kommentar!

Spam-Kommentare in WordPress ohne Timeout löschen

Bei aktiviertem Kommentar-System in WordPress dauert es nicht lange und hunderte, wenn nicht tausende Spam-Kommentare werden täglich abgegeben. Zur Spam-Erkennung gibt es einige Anbieter/Möglichkeiten, wie beispielsweise Akismet oder Antispam Bee. Offensichtliche Spam-Kommentare werden als Spam markiert und in einer eigenen Liste ausgewiesen.

Über die Schaltfläche Empty Spam kann die gesamte Liste gelöscht werden, das kann aber mitunter sehr lange dauern. Das Resultat ist häufig ein Timeout und eine sehr negativ auffallende Performance der Website.

Wer direkten Zugriff auf die Datenbank hat, kann ausgewiesene Spam-Kommentare so löschen:

delete from wp_comments WHERE comment_approved ="1";

Ist kein direkter Zugriff vorhanden, oder möchte man lieber ein Plugin für diese Arbeit, dann empfiehlt sich die Installation des Plugins Batch Comment Spam Deletion. Wie es der Name schon sagt, werden die Kommentare nun in Blöcken gelöscht (voreingestellt sind 200 Spam-Kommentare pro Ausführung). Dadurch werden Timeouts vermieden und der Server wird geschont.

Nachfolgend ist die Seite während der Ausführung der Batches ersichtlich. Es erfolgt ein automatisches Redirect auf die Kommentar-Seite, wenn alle Spam-Kommentare gelöscht wurden.

Batch Comment Spam Deletion Plugin für WordPress

Batch Comment Spam Deletion Plugin für WordPress

Das Plugin wird übrigens auf GitHub gepflegt.

Die meisten Plugins bieten auch die Möglichkeit, Spam-Kommentare sofort zu löschen. Wer die als Spam markierten Kommentare nicht sichtet, um etwaige false positives zu finden, sollte diese Möglichkeit ins Auge fassen.

Technologiewahl für mein Projekt

Vor einigen Tagen habe ich um eure Meinung gebeten und wollte wissen, welche Technologien ihr einsetzen würdet. Viele Antworten habe ich erhalten und möchte in diesem Beitrag meine Entscheidung bekannt geben und diese auch etwas ausführen.

Hier nochmals die Anforderungen, die ich im verlinkten Beitrag definiert hatte:

  • Angedacht sind Apps für iOS, Android und Windows Phone (Benachrichtigungen sind wichtig; Zugriff auf Kamera, Mikrofon etc. wird nicht benötigt)
  • Zugriff via Web soll ebenfalls möglich sein
  • Daten werden über APIs von Drittanbietern abgegriffen
  • Eigene API für Einstellungen, Daten etc.
  • Riesige Datenmengen sind anfangs nicht zu erwarten

Aus meinen Gedanken und den vielen erhaltenden Antworten habe ich mich nun für die Technologien/Frameworks/Libraries etc. entschieden, die ich einsetzen möchte. Vermutlich bin ich zu einer Entscheidung gelangt, die so einige wohl nicht erwartet haben.

Backend

Am Backend werden sich auf jeden Fall REST-Services befinden. Umsetzen wollte ich diese anfangs mit Go, wollte dann aber gemäß dem Motto “Schuster bleib bei deinen Leisten” weiter auf .NET setzen. Aber auch das habe ich verworfen. So wird am Backend Node.js eingesetzt werden. Erste Erfahrungen damit habe ich durch das eine oder andere Projekt damit bereits sammeln können.

Von Azure, Amazon AWS und Co. bin ich wieder abgekommen, da ich mich (im Moment) zu sehr an diese Services binden würde. Das mag irgendwann eine Option sein, gestartet wird jedoch ohne.

Als DBMS werde ich anfangs – so wie es aussieht – MySQL einsetzen.

Warum habe ich .NET verworfen?

Ich mag .NET und auch das Ökosystem. Aber irgendwie bin ich mit der Idee zu .NET zu greifen nicht ganz warm geworden. Wenn dann hätte ich zu ASP.NET 5 gegriffen, aber das ist noch nicht weit genug fortgeschritten, um ein Projekt möglichst flott produktiv zu bekommen. Davon abgesehen ist das Thema Hosting hierbei nicht einfacher. Aber das bedeutet ja nicht, dass es nicht vielleicht doch bei einem anderen Projekt eine Chance bekommt.

Frontend

Für mobile Endgeräte werde ich Ionic und Apache Cordova einsetzen. Damit kann ich meine Ziele wohl sehr schnell umsetzen und kann zudem Erfahrung mit den genannten Frameworks sammeln. Dass hier AngularJS mit von der Partie ist, ist natürlich positiv, da ich damit ganz gute Erfahrungen habe.

Begründung

Mir wird es zunehmend egal, auf welcher Plattform ich mich bewege. Sie muss mir zusagen und das was ich machen möchte schnell und zuverlässig erledigen. Das kann sich dann schon auch einmal (kurzfristig) ändern. Daher möchte ich eine Entwicklungsumgebung, die auf jeder Plattform ohne Probleme laufen kann. Mit dem gewählten Stack bringe ich in gewissen Bereichen Erfahrung mit, habe aber auch sehr viel zu lernen (warum ich das schlussendlich auch mache).

Ich bin auf jeden Fall schon gespannt, wohin die Reise tatsächlich gehen wird.

Zum Schluss noch ein dickes Dankeschön an alle die mir (egal über welchen Kanal) Feedback gegeben haben.

Danke Community!

#fotomontag #2

Jeden Montag ein Foto. Der #fotomontag.

Vor einigen Tagen wollte ich eigentlich in die Innenstadt von Graz um meinen neuen Graufilter zu testen. Wie es der Zufall so wollte, hatte ich meine Geldtasche vergessen und konnte daher nirgends parken. Da es unbedingt ein Foto von der Mur sein sollte, fuhr ich also nach Norden, denn da kannte ich einen Zugang zur Mur und eine Parkmöglichkeit.

Was ich jedoch nicht wusste, dort versteckt sich hinter Büschen und Bäumen das Laufkraftwerk Weinzödl. Das nachfolgende Foto ist dann aber doch ohne Graufilter.

Laufkraftwerk Weinzödl

Laufkraftwerk Weinzödl

Hast du eine Meinung zum Foto? Ja? Dann lass sie mich doch bitte wissen und bewerte es in den Kommentaren.

Schneller verkaufen durch bessere Produktfotos

Wenn ich alte Gadgets gegen neue austausche, verkaufe ich die alten gerne im Internet. Da ich auf meine Geräte wirklich gut aufpasse und Geräte mit Macken erst gar nicht anbiete, bekommt ein Käufer ein tolles Gerät zu einem guten Preis. Meist gibt es jedoch viele ähnliche Angebote und die Qualität der Anzeige entscheidet über den schnellen Verkaufserfolg. Die Produktfotos sorgen für den ersten Eindruck. Wer hier die besseren Fotos hat, gewinnt. Doch wie besser machen?

Das Produkt qualitativ hochwertig präsentieren

Stichtwort Freistellung: Klassische Produktfotos, wie wir sie in diversen Shops sehen, stellen das Produkt frei. Es wird also nur das Produkt angezeigt, es fehlen alle störenden Elemente.

Ein Großteil der Fotos auf privaten Verkaufsplattformen zeigen die halbe Wohnung, aber kaum das zu verkaufende Objekt. Derartige Bilder motivieren mich nicht, die Anzeige näher zu betrachten.

Zusätzlich wird für eine optimale Ausleuchtung gesorgt. Hierzu werden gerne Lichtwürfel verwendet. Sie bieten eine schattenfreie Ausleuchtung des jeweiligen Objektes. Lichtwürfel gibt es in unterschiedlichen Größen (und Preisen) zu kaufen, beispielsweise von FotoCube (diese werden immer wieder mal empfohlen, ich selbst habe aber (noch) keine Erfahrung damit).

Lichtwürfel für wenig Geld selber bauen

Wer hierfür kein (oder wenig) Geld ausgeben möchte, der kann sich so einen Lichtwürfel auch selbst bauen.

Ganz einfach lässt sich ein Lichtwürfel mit Styropor bauen:

www.youtube.com/watch?v=EnSyKx7_cqE

Und hier eine alternative Variante:

www.youtube.com/watch?v=OyxzC5kqbyw

Hilfreiche Artikel lassen sich auch im schwedischen Möbelhaus zahlreich finden.

Auch mit günstigen Kameras können tolle Produktfotos geschossen werden. Probiere also lieber einen Fotowürfel aus, bevor du dir eine neue Kamera zulegst.

Die gekauften Varianten haben wohl den Vorteil, dass sie sich besser zusammenlegen und somit besser transportieren lassen (bzw. häufiger). Wer lediglich zu Hause einige Fotos für den Verkauf seiner alten Gadgets machen möchte, dem dürfte ein selbst gebauter Lichtwürfel genügen.

© 2015 Norbert Eder

Theme by Anders NorenUp ↑