>

instant-thinking.de

just enough to get you started and leave you confused

Disqus verlor 17,5 Millionen Nutzerdaten - In 2012

| Kommentare

Auf diesem bescheidenen Blog werden die Kommentare über Disqus ermöglicht. Der Dienst steht in einer Basisvariante1 kostenlos zur Verfügung und verrichtet in aller Regel ausgesprochen zuverlässig seinen Dienst.

Nun vermeldete das Unternehmen am 5. Oktober 2017 in einem Blogpost, dass bereits 20122 ein Snapshot der Userdatenbank mit 17,5 Millionen Einträgen abhanden gekommen ist.

Das ist natürlich doof.

Mehr dazu ist im Detail und deutschsprachig bei Tante Heise nachzulesen. Es läuft aber darauf hinaus, dass damals Benutzernamen, E-Mail-Adressen, Passwörter sowie der Zeitpunkt der Anmeldung und des letzten Logins aus der Userdatenbank stiften gingen.

Die Passwörter waren nicht im Klartext sonder als SHA1-Hash mit Salt gespeichert. Das ist wesentlich besser aber heutzutage auch nicht gerade gut

Die Empfehlung für mich und jeden anderen Disqus-User der bereits 2012 dabei war lautet also3:

  • Das Passwort bei Disqus ändern4.
  • Sollte dasselbe Passwort auch anderswo eingesetzt sein5, so sollte es anderswo schnellstens ebenfalls geändert werden.

Die Empfehlung für mich und jeden anderen Disqus-Embed-Betreiber lautet nun wohl mal so langsam:

  • Disqus durch ein anderes Kommentarsystem ersetzen. Isso böte sich hier vermutlich an6.

Damit hätte ich mich dann auch eines weiteren externen, zentralisierten Dienstes entledigt und das ist ja auch oft eine sehr gute Sache. Ich halte euch in dieser Sache auf dem laufenden…

(via: Schockwellenreiter)

  1. Und mehr benötige ich hier eigentlich auch nicht…

  2. Ja, das ist, Stand jetzt, fünf Jahre her…

  3. Wie eigentlich fast immer in solchen Fällen…

  4. Disqus forciert das bei allen betroffenen Usern von sich aus…

  5. Das ist eine Sehr Schlechte Idee™…

  6. Und befindet sich auch schon seit November 2013 in meinen Bookmarks

QuickLinks vom 09. Juli bis zum 16. September

| Kommentare

Meine pinboard.in-Links vom 09. Juli bis zum 16. September:

  • YAHM - Skripte zur Einrichtung der Homematic CCU2 Oberfläche in einem LXC Container unter Debian basierten Distribution auf ARM-Basis (x86 experimentell).
  • RaspberryMatic - is a lightweight, Linux/buildroot-based distribution for running a HomeMatic CCU on embedded devices like the RaspberryPi…
  • GitUp - is a bet to invent a new Git interaction model that lets engineers of all levels work quickly, safely, and without headaches. It’s unlike any other Git client out there from the way it’s built (it interacts directly with the Git database on disk), to the way it works (you manipulate the repository graph instead of manipulating commits).
  • mycli - is a command line interface for MySQL, MariaDB, and Percona with auto-completion and syntax highlighting.
  • Rclone - is rsync for cloud storage. Rclone is a command line program to sync files and directories to and from Google Drive, Amazon Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Cloudfiles, Google Cloud Storage, Yandex Files, SFTP and the local filesystem
  • veraPDF - is an open source PDF/A validator supported by the PDF industry and funded by the European Union’s PREFORMA project. veraPDF software will validate all PDF/A parts & conformance levels. Users can define further checks in order to enforce institutional policy
  • Magnet - keeps your workspace organized. Activated by dragging, customizable keyboard shortcuts or via menu bar, Magnet declutters your screen by snapping windows into organized tiles.
  • Etcher - is a cross-platform, open source, easy-to-use tool for writing images to SD cards and USB sticks.
  • Blink.sh - is the pro terminal for iOS. Mosh & SSH support. Lightning fast emulator, fully configurable.
  • Stringer - is a beautiful app that helps you rediscover your music collection. Start a String to shuffle your stuff. When you hear something you like, step to the side and add some more. It’s fast and easy. It works with your iTunes content and the music you’ve uploaded to iTunes Match.

Schulkind Linus

| Kommentare

Gestern wurde der Sohn eingeschult. Nach fünf Jahren im Kindergarten war er auch wirklich1 bereit für den nächsten Lebensabschnitt.

Der allererste Schultag hätte ruhig ein bisschen freundlicheres Wetter vertragen können. Allerdings konnte auch Nieselregen bei 16 Grad den Sohn nicht von guter Laune abhalten.

Jetzt liegen zunächst einmal vier Jahre Grundschule vor ihm. Ich kann mir vorstellen, dass die anfängliche Freude ihn nicht die ganze Zeit tragen wird, aber dann sind wir ja auch mit dabei.

Lieber Linus, wir alle freuen uns mit dir auf die Schulzeit. Bestimmt wirst du sie genauso toll meistern, wie auch schon deine Zeit als Kindergartenkind.

Stay hungry. Stay foolish.

  1. Wirklich, wirklich

Gone fishing

| Kommentare

Wir sind dann mal ein bisschen mit dem Zug und dann ein bisschen mehr mit dem Schiff fahren. Damit besuchen wir in den nächsten sieben Tagen auf der Metropolenroute die Städte:

Haltet uns die Daumen, dass auf der Reise alles gut klappt.

Bis dahin, ahoi, be good, take care.

(Headerbild via: kees torn unter CC BY-SA 2.0)

  1. Vielleicht haben wir ja sogar Zeit einen Blick auf den CSD zu werfen…

Oakley - Kundenservice wie er sein sollte

| Kommentare

Das wird hier dann doch langsam eine erfreuliche Reihe mit dem Kundenservice wie er sein sollte…

In mein Gesicht passen Sonnenbrillen meiner Meinung nach oftmals nicht so richtig gut rein. Sonnenbrillen sind aber wichtig, insbesondere wenn der Evil Day Star die Sonne am Himmel steht kann ich es mit Kontaktlinsen und Sonnenbrille immer noch am besten aushalten. Vor vielen Jahren habe ich dann die Oakley Minute 1.0 für mich entdeckt und über die Zeit vier verschiedene Exemplare erworben. Dunkelblau, Schwarz, Hellblau und noch einmal Schwarz weil die erste leider mal verschütt gegangen ist. Die Brillen waren nicht billig1, halten sich aber auch schon alle deutlich über 10 Jahre in meinem Besitz und sind mir wirklich sehr ans Herz Gewachsen.

Und da es diese Brillen heute nicht mehr neu zu kaufen gibt2, muss man halt auch schon mal einen Bügel wieder zusammenkleben, hilft ja alles nichts…

Was aber nach all den Jahren doch zu wünschen übrig lässt, sind die Earsocks genannten Gummiüberzüge der Bügel. Insbesondere die weißen Ohrensocken an der hellblauen Brille waren nicht mehr so richtig schön anzusehen.

Die Teile will man dann aber auch wirklich nicht gebraucht kaufen. Daher habe ich einfach mal den Oakley-Support kontaktiert um nach Ersatzteilen zu fragen. Eben genau die Earsocks und zwei dunkelblaue Ersatzbügel wollte ich nachträglich käuflich erwerben.

Einen Tag später war schon die Antwort da:

Sehr geehrter Herr Wegner,

vielen Dank für Ihre Email.

Wir haben eine neue Bestellung (Bestellnr.: 12345678) für die neuen Ear Socks (Bügelenden) kostenlos aufgegeben.

Sie sollen es mit UPS in ca. 4-5 Werktagen erhalten:

Bezüdlich der ganzen Bügel haben wir es überprüft und leider müssen wir Ihnen mitteilen, dass wir keine mehr auf Lager haben, obwohl wir uns bemühen, Ersatzteile für die Reparatur unserer Auslaufmodelle so lange wie möglich anbieten zu können.

Allerdings freuen wir uns Ihnen mitzuteilen, dass Sie Anspruch auf eine Ermäßigung von 30% bei Ihrem nächsten Einkauf auf
www.oakley.com haben.

Falls Sie interessiert sind, werden wir Ihnen einen Promo-Code zusenden.

Vielen Dank.

Entschuldigen Sie uns die Unannehmlichkeiten

Mit freundlichen Grüßen,

MARCEL
OAKLEY EUROPE CUSTOMER CARE

Irre nett, oder? Dass die Ersatzteile irgendwann nicht mehr verfügbar sind kann ich einsehen. Und den angebotenen Promo-Code werde ich sicher auch in Anspruch nehmen…

Wie angekündigt brachte der UPS-Mann ein paar Tage später dann auch schon die frischen Earsocks vorbei. Kostenlos, gratis und ohne Versandkosten. Nur, weil man vor Jahren mal eine Sonnenbrille gekauft hat.

Das Aufziehen der neuen Socken auf die Bügel war dann3 eine Sache von Minuten. Und seitdem kann ich meine hellblaue Lieblingslaufsonnenbrille wieder mit auf die Piste nehmen. Schaut wieder aus wie neu und macht schnell.

In diesem Sinne gibt es also auch in der Firma Oakley einen Hersteller, der zwar relativ hochpreisige Produkte anbietet dafür aber auch nach Jahren und Jahrzehnten hervorragenden Kundenservice bietet. Color me impressed.

Vielen Dank von einem zufriedenen Kunden an Marcel und das restliche Team des Oakley-Supports.

  1. Und werden auch heute noch gebraucht um die 100 € herum gehandelt…

  2. Die 2.0er Minute ist ja so neumodischer Kram und ich bin mittlerweile in einem Alter, in dem man rasch #krückstockgefuchtel hashtagged…

  3. Mit ein bisschen Spülmittel auf den Bügeln…

QuickLinks vom 02. Juni bis zum 06. Juli

| Kommentare

Meine pinboard.in-Links vom 02. Juni bis zum 06. Juli:

  • KeyCastr - is an open-source keystroke visualizer.
  • bookmark-archiver - saves an archived copy of all websites you star. Outputs browsable html archives of each site, a PDF, a screenshot, and a link to a copy on archive.org, all indexed in a nice html file.
  • Vimmy - is very neato Vim-ness for Safari. Finally.
  • The Tectonic Typesetting System - is a modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive. For those new to it, TeX is a programming language that you use to create typeset documents rather than computer software. TeX is quite archaic in some ways, but it’s still the tool of choice for documents that require precision typography or ones that involve lots of mathematical equations, which makes it especially important in the sciences. Tectonic converts TeX files into PDF files.
  • Recoll - finds keywords inside documents as well as file names. Recoll will index an MS-Word document stored as an attachment to an e-mail message inside a Thunderbird folder archived in a Zip file (and more…). It will also help you search for it with a friendly and powerful interface, and let you open a copy of a PDF at the right page with two clicks. There is little that will remain hidden on your disk.
  • Alfred-Workflow - is a Python helper library for Alfred 2 and 3 workflow authors. Alfred workflows typically take user input, fetch data from the Web or elsewhere, filter them and display results to the user. Alfred-Workflow takes care of a lot of the details for you, allowing you to concentrate your efforts on your workflow’s functionality.
  • Apparix - allows fast command-line file system navigation by bookmarking directories and jumping to a bookmark directly, supported by tab completion.
  • Headspace - is the cool new 3D mind-mapping and outlining tool from Flat Black Films. It runs on iOS, including iPhone, iPod Touch, and iPad. You use it to construct hierarchical lists in a 3-D space and link between them.  Use it to get perspective on your ideas, game information, random thoughts, etc.  It’s like computer UI from the future, man.
  • hget - is a CLI and an API to convert HTML into plain text. Can be used to fetch a site’s HTML version and convert it into plain text, or to deliver plain text versions of your site dynamically.
  • ttygif - converts a ttyrec file into gif files.

QuickLinks vom 28. Februar bis zum 02. Juni

| Kommentare

Meine pinboard.in-Links vom 28. Februar bis zum 02. Juni:

  • Timetrap - is a simple command line time tracker written in ruby. It provides an easy to use command line interface for tracking what you spend your time on.
  • diff2html - generates pretty HTML diffs from unified and git diff outputs resulting in better diffs and unmatched reviews.
  • TaskJuggler - is a modern and powerful, Free and Open Source Software project management tool. Its new approach to project planning and tracking is more flexible and superior to the commonly used Gantt chart editing tools. TaskJuggler is project management software for serious project managers. It covers the complete spectrum of project management tasks from the first idea to the completion of the project. It assists you during project scoping, resource assignment, cost and revenue planning, risk and communication management.
  • Docutils - is an open-source text processing system for processing plaintext documentation into useful formats, such as HTML, LaTeX, man-pages, open-document or XML. It includes reStructuredText, the easy to read, easy to use, what-you-see-is-what-you-get plaintext markup language.
  • Duplicati - is a free backup software for Windows, macOS and Linux to store encrypted backups online. Duplicati works with standard protocols like FTP, SSH, WebDAV as well as popular cloud services. Backup files and folders with strong AES-256 encryption. Save space with incremental backups and data deduplication. Run backups on any machine through the web-based interface or via command line interface.
  • BorgBackup - (short: Borg) is a deduplicating backup program. Optionally, it supports compression and authenticated encryption. The main goal of Borg is to provide an efficient and secure way to backup data. The data deduplication technique used makes Borg suitable for daily backups since only changes are stored. The authenticated encryption technique makes it suitable for backups to not fully trusted targets.
  • MiniZinc - is a free and open-source constraint modeling language. You can use MiniZinc to model constraint satisfaction and optimization problems in a high-level, solver-independent way, taking advantage of a large library of pre-defined constraints. Your model is then compiled into FlatZinc, a solver input language that is understood by a wide range of solvers.
  • Deft - is an Emacs mode for quickly browsing, filtering, and editing directories of plain text notes, inspired by Notational Velocity. It was designed for increased productivity when writing and taking notes by making it fast and simple to find the right file at the right time and by automating many of the usual tasks such as creating new files and saving files.
  • diff-so-fancy - Good-lookin’ diffs. Actually… nah… The best-lookin’ diffs. 🎉
  • Upspin - is an experimental project to build a framework for naming and sharing files and other data securely, uniformly, and globally: a global name system of sorts.

Hochzeitstag

| Kommentare

Heute vor sieben1 Jahren haben Kathi und ich geheiratet.

Ich wünsche der besten Ehefrau der Welt und mir eine wundervolle Kupferhochzeit2 und freue mich auf das nächste Jahr im aufregenden Hafen der Ehe.

  1. SIEBEN!

  2. Es gibt wirklich wunderliche Listen im Internet…

3

| Kommentare

Heute vor drei Jahren kam Nina auf die Welt. Und da so ein zweites Kind unfassbarerweise immer noch schneller groß wird als das erste, kann ich auch gar nicht so recht sagen, wo die Zeit geblieben ist.

Tochterkind, du hast deinen eigenen Kopf mit deinen eigenen Vorstellungen und das ist auch ganz genau richtig so. Dazu hast du im letzten Jahr auch deine eigene Brille bekommen. Für noch mehr Durchblick in den kommenden Zeiten. Mit drei Jahren wird das alles sicher noch mal interessanter mit dir werden.

Allesalles Liebe zu deinem dritten Geburtstag, rock on.

Octopress und Piwik

| Kommentare

Nachdem ich im letzten Post berichtet hatte, wie man ein Piwik auf Uberspace installiert1 geht es nun darum, eine Website2 mit dem notwendigen Piwik-Tracking-Code auszustatten.

Websites tracken mit Piwik

Diesen kann man manuell in der Piwik-Administration zusammenklicken und dann manuell auf allen zu trackenden Seiten einfügen aber das kann ja niemand wollen.

Daher sammelt die Piwik-Integrations-Site Links zu Plugins für mehr als 65 verschiedene Systeme, die dann automatisch dafür sorgen dass der Tracking-Code auf allen Seiten erscheint. Da sind sehr große und bekannte Systeme dabei wie Wordpress, Typo3 und Drupal. Auch etwas exotischere Kandidaten wie Hudson/Jenkins und GetSimple sind verfügbar.

Da werden also viele Leute sehr schnell glücklich werden.

Nun geht es hier in erster Linie eben um meine Seite und die wird immer noch mit einem antiken Octopress betrieben und das ist auf der Integrations-Site von Piwik nicht verzeichnet.

octopress-piwik auf GitHub

Der erste Google-Treffer für “piwik octopress” liefert dann auch einen guten Startpunkt: Das GitHub-Repo octpress-piwik von jcbedier. Der letzte Commit stammt aus dem Jahr 2014 aber grundsätzlich ist hier schon alles notwendige drin.

Über die Ansicht des Netzwerks des Repos habe ich dann den Fork des Users paskal gefunden, der den allgemeinen Teil des Tracking-Codes Ende November auf den aktuellen Stand gebracht hat.

OpenSource at work… Man muss es einfach lieben.

Installation und Konfiguration von octopress-piwik

Genau diesen Stand der Dinge habe ich dann auch wie folgt für instant-thinking.de verwendet.

Piwik-Variablen in _config.yml einfügen

Als erstes werden die erforderlichen Werte für die Site in der zentralen Octopress-Konfigurationsdatei _config.yml eingesetzt.

_config.yml
1
2
3
# Piwik
piwik_url: piwik.instant-thinking.de
piwik_siteid: 1

Die piwik_url ist einfach die Website, auf der euer Piwik läuft und die piwik_siteid ist die durch Piwik vergebene Nummer der Website.

Piwik-Code inkludieren

Als nächstes wird die Stelle für den Einbau des Tracking-Codes bestimmt. Das geschieht hier in der after_footer.html, die durch Octopress in allen Posts inkludiert wird. Direkt nach dem Disqus-Plugin folgt hier nun das Piwik-Plugin in der Zeile 2:

source/_includes/after_footer.html
1
2
3
{% include disqus.html %}
{% include piwik_analytics.html %}
{% include custom/after_footer.html %}

Was jetzt noch fehlt ist die Datei mit dem Tracking-Code an sich. Daher muss nun die piwik_analytics.html aus dem Repo auch im Verzeichnis source/_includes/ zum liegen kommen.

Und das war es dann auch schon. Ein rake generate weiter wird der Tracking-Code an der passenden Stelle eingebaut. Im Safari-Web-Inspector schaut das dann so aus:

Fortan wird der Code also mit jedem Seitenaufruf auf instant-thinking.de ausgeführt und zählt den Besuch. Klasse!

Production vs. Development

Immer wenn ich gerade einen Post schreibe, diesen aber noch nicht veröffentlich habe, benutze ich die Octopress Vorschau-Funktion um mir den aktuellen Stand direkt neben meinem Editor im Browser anzuschauen. Im Moment schaut das genau so aus:

Das ist super, ich mag das sehr so zu schreiben.

Das Problem ist, dass jeder Aufruf der Vorschau nun auch den Piwik-Code aufruft und dieser die Statistiken für instant-thinking.de mit Einträgen füttert die zu einem Post gehören, den es noch gar nicht wirklich gibt. Dass ich damit außerdem den uninteressantesten Besucher der Welt3 überproportional häufig in die Zahlen bekomme ist natürlich auch nicht gut.

Was also her muss ist eine Differenzierung zwischen der produktiven Website im Internet und dem lokalen Vorschaumodus.

Ich nahm eigentlich an, dass das ein gelöstes Problem sein müsste aber es scheint doch nicht ganz einfach zu sein

Also dachte ich mir, bevor ich mit Piwik-Plugins und der entsprechenden Config rumhantiere wäre es doch eigentlich eine gute Idee, das Problem direkter anzugehen.

Octopress ist ja im Prinzip Jekyll und Jekyll kann ein Jekyll environment spezifizieren, welches dann in Liquid-Tags abgefragt werden kann.

So weit so gut, nur ist mein Jekyll halt antik4 und kennt diese Option nicht. Unter der Auflistung von jekyll --help habe ich aber die Option --url [URL] Set custom site.url gefunden. Die ist weniger elegant, lässt sich aber in Kombination mit rake für den hier vorliegenden Zweck im Prinzip genauso verwenden wie das fancy environment.

Den Aufruf von jekyll in dem preview-Task in meinem Rakefile habe ich daher um die Option --url 'http://localhost:4000' ergänzt. Der diff des Tasks schaut so aus:

Preview Task aus Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
desc "preview the site in a web browser"
task :preview do
  raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
  puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}"
  system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css")
-  jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll --auto")
+  jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll --auto --url 'http://localhost:4000'")
  compassPid = Process.spawn("compass watch")
  rackupPid = Process.spawn("rackup --port #{server_port}")

  trap("INT") {
    [jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
    exit 0
  }

  [jekyllPid, compassPid, rackupPid].each { |pid| Process.wait(pid) }
end

Den Piwik-Code in der piwik_analytics.html habe ich dann in eine weitere if-Bedingung5 gewickelt die ihn nur dann inkludiert, wenn die site.url nicht http://localhost:4000 ist:

source/_includes/piwik_analytics.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% if site.piwik_url %}
{% if site.url != "http://localhost:4000" %}
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//{{ site.piwik_url }}/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '{{ site.piwik_siteid }}']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<noscript><p><img src="//{{ site.piwik_url }}/piwik.php?idsite={{ site.piwik_siteid }}" style="border:0;" alt="" /></p></noscript>
<!-- End Piwik Code -->
{% endif %}
{% endif %}

Das ganze klappte so verblüffend gut, dass ich das Plugin-Repo auf Github forkte und die beiden Vorgänger mit Pull requests bedachte.

Das führte nach dem Merge zu einem interessanten Network-Graph und außerdem dazu, dass im octpress-piwik Haupt-Repo von jcbedier nun der aktuelle Piwik-Code enthalten ist und meine kleine Erweiterung für alle geneigten Octopress-User nutzbar ist.

  1. Durchaus lesenswert, ohne ein fertig installiertes Piwik macht dieser Post hier auch keinen sonderlich großen Sinn, macht er nicht?

  2. Diese Website hier um genau zu sein…

  3. nämlich mich…

  4. Die Version hier ist 0.11.0, aktuell ist 3.4.2. Räusper

  5. Ein if and if-Konstrukt scheint es in Liquid nicht zu geben…