Clean install für den Mac automatisieren

Beim Thema clean install, angeregt durch macOS development environment from scratch, habe ich nochmal ein paar lose Enden eines Git zusammengerafft, die hier auf meinem Schreibtisch noch rumlagen. Denn vor dem Konfigurieren eines neuen Mac steht das ewige Programme suchen und installieren, buh! Das geht natürlich auch einfacher…

Bei der Neuinstallation eines Rechners, in meinem Fall natürlich eines Apple Rechners, vor allem aber auch bei Neuanschaffung steht man immer vor dem zeitraubenden Problem, die Softwareumgebung, die man gewohnt ist, wieder-/herzustellen. Was hier das Einspielen aus Backups oder Migrationsassistenten an convienience bringt, geht oft dadurch verloren, dass man Leichen miterbt, die man auf dem neuen Rechner eigentlich nicht im Keller haben will. Was muss man also für ein wirkliches clean install tun?

  • Zunächst mal muss man wissen, welche Software man eigentlich nutzt. Das ist bei den großen täglich verwendeten Programmen natürlich kein Problem, aber wie hieß gleich noch dieses Colorpicker-Tool, dass man nur zweimal im Halbjahr aufruft? Vielleicht will man außerdem auch einen standardisierten Rechner für neue Kollegen bereitstellen, dann gibt es in diesem Sinne gar keine History…
  • Dann muss man die ausgewählten Programme installieren. Das kann man peu à peu machen, immer wenn man ein Tool braucht: installieren, einrichten und dann erst nutzen. Oder man macht es in einem Arbeitsgang, beide Versionen benötigen viel Zeit.
  • Schließlich müssen alle Programme konfiguriert werden, Seriennummer herausgesucht und eingegeben werden, die Arbeitsumgebung eingerichtet werden usw.

Zumindest die ersten beiden Arbeitsgänge kann man am Mac heutzutage glücklicherweise automatisieren. Die Recherche, was man denn überhaupt installieren will ist dabei natürlich ein wichtiger Punkt. Hier verlasse ich mich auf den Paketmanager Hoembrew, dessen Erweiterung Brew Bundler und die Möglichkeit den Mac Appstore via API von der Kommandozeile aus zu bedienen. Alle drei Programme gehören heutzutage auf jeden Mac. Eine Liste von mit brew installierten Systemprogrammen und Desktop-Apps, sowie der aus dem Appstore heruntergeladenen Programmen, lässt sich mit dem Bundler per brew bundler dump erstellen. Das entstandene Brewfile ist schonmal ein guter Ausgangspunkt. Sowas sieht dann so aus:

cask_args appdir: '/Applications'

tap 'caskroom/cask'
tap 'homebrew/binary'
tap 'homebrew/boneyard'
tap 'homebrew/bundle'
tap 'homebrew/core'
tap 'homebrew/versions'

brew 'mas'
brew 'wget'
brew 'youtube-dl'
brew 'zsh'
brew 'zsh-completions'
brew 'zsh-syntax-highlighting'

cask 'tower'
cask 'transmit'
cask 'vagrant'
cask 'virtualbox'

mas 'iA Writer', id: 775737590
mas 'Airmail 3', id: 918858936
Lisitng 1: Beispiel für ein Brewfile

Mithilfe von brew search und brew cask search findet man weitere Programme, die man auch händisch dieser Liste hinzufügen kann. Irgendwann hat man die Liste der ultimativen Standardprogramme und derer Abhängigkeiten zusammen. Mit einem beherzten brew bundle kann man diese dann entweder installieren oder auch allesamt installieren (oder bereits installierte updaten).

Die Installation auf einem leeren Rechner selbst kann man getrost einem Shellscript überlassen, das auch gleich die Xcode-Tools holt und am Ende oh-my-zsh installiert etc.…

#!/bin/sh
echo Install xcodeutils…
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew tap Homebrew/bundle
brew bundle
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
Listing 2: Verkürzte Version eines Installationsscripts

All das oben genannte und ein klein wenig mehr, habe ich mal in diesem Git-Repository zusammengesteckt, mit dessen Hilfe ich meinen Rechner installiert habe. Danach muss man seine Programme natürlich noch konfigurieren. Viel Spaß…

Foto: alejandroescamilla auf Unsplash.

Die Abschaffung der URL

Cool URIs don’t change“, ein Ausspruch von Tim Berners Lee, der heute das Papier nicht mehr Wert ist, auf dem er natürlich nie gedruckt wurde. Die eindeutige Adresse zu (Hypertext-) Dokumenten im Web ist ein Auslaufmodell. Das liegt einerseits daran, das es im allgegenwärtigen Konzept App kaum ansteuerbare Dokumente gibt, sondern eher Zustände. Viel einschneidender aber sind die Bemühungen der großen walled garden-Betreiber, die versuchen den Nutzer auf ihren Plattformen einzusperren und dabei ist die URL, als ein Stück Selbstbestimmung des Nutzers, sowas von im Weg.

Wer einen bestimmten Post aus der Facebook-App in die Außenwelt (wer kennt sie noch) exportieren möchte, also verlinken, muss nicht nur hinter kleinen Pfeilchen und Winkeln nach der Funktionalität suchen, sondern im äußersten Fall das Posting in Safari öffnen, um Zugriff auf die Adresse zu bekommen. Safari selbst hat natürlich auch beschlossen, keine URLs mehr in der Adresszeile mehr anzuzeigen, was angeblich dem Nutzererlebnis jener Nutzer dient, die mit dem Konzept URI nichts anzufangen wissen. Was ungefähr so ist, als wenn ich zu Hause die Hausnummer abbauen würde, weil Kleinkinder im Kindergartenalter noch keine Zahlen und Buchstaben lesen können. Hier kann man allerdings per Menü endlich die Adresse kopieren.

Ach ja, wo wir gerade unfreiwillig den mobilen Safari geöffnet haben: ich nenne ihn inzwischen gerne den Dead-End-Browser, weil er die navigatorische Sackgasse von Apple News auf dem iPhone bildet. Apple News ist in Deutschland bisher nur als Widget verfügbar, das die Originalseite im Safari öffnet. Dort endet derzeit das Nutzererlebnis. Aber auch das wird sich ändern, in den USA gibt es Apple News längst, ohne diese lästigen URLs überall, die stören ja nur. Zurück zu Facebook: dort heißt die News-Lock-In-Lösung instant articles, die schnelles Laden versprechen, gleichzeitig aber keine URL mehr haben, total überraschend. „In Safari öffnen“ um an die Adresse des Originalartikels zu kommen, findet man unter „Teilen“. Immerhin.

Noch etwas rabiater geht Google vor. Ihre als Rettung der Seitengeschwindigkeit verkaufte Mohrrübe am Stab für die Betreiber von Webseiten, abgekürzt AMP, versteckt zwar nicht die URL an sich, zeigt jedoch nicht die canonical URL eines Artikels, sondern eine eigene mit https://wwww.google.com/amp/ beginnende, danach erst die Originaladresse. AMPs werden derzeit auf Googles Suchseite als Karussell angezeigt und man verlässt diese Seite beim Aufruf nicht (siehe Adresse), stattdessen macht sich Google den Inhalt zu eigen. Es wird sogar noch eine eigene Navi angezeigt.

Das alles entwickelt sich überhaupt nicht in die Richtung, die ich mir vorgestellt habe. John Gruber fragte sich jüngst dazu

Why would I want to cede control over my pages to Google? AMP pages do load fast, but if publishers want their web pages to load fast, they can just engineer them to load fast.

Ja, warum?

Ich schalte meine AMP-Unterstützung und vor allem die Facebook IA bei nächster Gelegenheit wieder ab. Experiment zu Ende. Content gibt es bei mir in Zukunft nur noch gegen URL.

Photo by Volkan Olmez

Morgenlese XXXI

Dear Product Managers, liebe Produktmanager, so direkt wendet sich der Hackernoon-Text an die Kollegen, aus Sicht der Techies und UXler.

We are curious. Is any of our hard work really paying off for our customers and business? Is it moving the needle? It might not seem like it, but we care. When we know we’re delivering results, it is a little easier to stomach releasing mediocre work, just shipping it, accumulating debt, and jumping to the next project. Without some evidence that we’re making decent decisions, those things add up. Frankly, we stop trusting you and stop caring.

Es folgen harte Worte aus der Welt der Velocity, der Sprintpunkte und der Reviewmeetings.

Keeping us busy is not the goal. Delivering outcomes is the goal.

Haben sie schon mal einen Kaffee im ICE getrunken. Die viel gescholtene braune Suppe ist eigentlich keinen weiteren Artikel wert, außer er hat das zutreffendste Zitat zum Thema Bahnkaffee überhaupt, dann linke ich noch Mit verbranntem Kaffee ins Internet:

Haben Sie schon einmal eine Portion Sahne in den Kaffee geschüttet? Er färbt sich von Schwarz nach Schwarz!

Auch das hat einiges mit meiner Arbeits- und Lebenssituation zu tun. So wie: mein Tischnachbar betreibt die Webseite: Bundestwitter, ich nenne ihn darum auch den Bundestwitterer. Neu und farbenfroh sind sein datengetriebenen Essays, wie Wen verlinken die Bundestagsabgeordneten auf Twitter?.

SPIEGEL-Artikel werden von den MdB am häufigsten geteilt. Es folgen die Welt und der Tagesspiegel. Die taz liegt vor der Bild.

Bild: Parker Byrd auf Unsplash

Morgenlese XXX

Zur Feier der 30. Morgenlese schalten wir ein weiteres live an den sprichwörtlichen Rand des Höllenschlundes, in die USA, wo die bereits dahin siechenden Reste der amerikanischen Demokratie gerade vor unserer aller Augen Suizid begeht. Man mag ja schon morgens nicht mehr in die Twitter-Timeline schauen, wo es vor resignierten oder sarkastischen oder resigniert-sarkastischen Tweets amerikanischer Kollegen nur so wimmelt. Wer der traurigen Realität des Trumpamerica entgehen möchte, der sollte wohl alsbald ein paar Leute entfolgen und niemals dieser Morgenlese lesen.

Was ist das aber gerade aktuell für ein Skandal, der die amerikanischen Medien erfasst hat und bei dem es, auch wenn man zunächst einen anderen Eindruck davon hat, wohl nicht ausschließlich darum geht, das Donald Trump ein Kenner und Liebhaber des Natursekts ist. Glücklicherweise hat sich die New York Times die Mühe gemacht, mal aufzuschreiben, worum es eigentlich geht. Und… naja:

Mr. Trump denounced the unproven claims Wednesday as a fabrication, a Nazi-style smear concocted by “sick people.” It has further undermined his relationship with the intelligence agencies and cast a shadow over the new administration.

Derweil hielt König Trump gestern zum ersten Mal seit Monaten Hof, nein Pressekonferenz, wie man bei Politico nachlesen kann, vor einem Saal von Wohlgesonnener und Claqueure:

“It’s very familiar territory, news conferences,” said Trump, who has been more visible on Twitter than in person since Election Day, as he took the podium. His long absence was the media’s fault, he said, not his. “We stopped giving them because we’re getting quite a bit of inaccurate news,” he said, before calling Buzzfeed, the website that published the full 35-page unverified dossier of allegations against Trump, a “failing pile of garbage.”

Den Vogel schiesst allerdings die Washington Post ab, mit einem Kommentar über die Pressekonferenz, der alles in Lächerliche zieht.

He shouted down a CNN reporter (maybe mistaking him for a BuzzFeed reporter) and said he would not take his question because he was “fake news.” He also took the time to call BuzzFeed a “failing pile of garbage,” which, I guess, is better than a successful pile of garbage and could in fact mean that BuzzFeed is an excellent news source.

Trump also said that he had a terrific, great, wonderful plan to repeal Obamacare and replace it with another plan, Repeal and Replace, which would repeal Obamacare and replace it with another plan, Repeal and Replace, which would repeal Obamacare and replace it with another — well, look, the plan is going to be great, and it will repeal Obamacare but one piece at a time and will replace those pieces with other pieces. (If you could make heads or tails of this answer, please, leave me a voicemail.)

Allein, wenn man das Video sieht, ist es leider gar nicht mehr lustig. Denn was Trump auch sagt ist: they will be facing the consequences, und auch sonst verhält er sich mehr wie lateinamerikanischer Diktator. Unglaublich. Unglaublich.

Bild: Parker Byrd auf Unsplash

10 Jahre iPhone war gestern

„Harzigen Glühstrumpf“ nachträglich, wie man in jenen Tagen noch manchmal schrob im Jahr des falsch gebildeten Präteritums: 2007.

Als das iPhone endlich auf dem Markt kam, hatte ich schon so viele falsche Ankündigungen darüber gehört, das Apple ins Telefongeschäft einsteigen wollen würde (tun getan), dass ich es schlicht nicht geglaubt habe, bis Steve Jobs es auf der Bühne verkündete. Ein bewegender Moment, wahrlich.

Und ich war direkt begeistert, denn was Jobs da präsentierte hatte ja mit dem heutige iPhone bzw. seinem nervigen Appstore-Ökosystem drumherum nichts zu tun. Stattdessen war die Original-Idee ja, voll auf Web-Apps zu setzen, der Browser als App-Plattform, genial. Wer würde das heute glauben?! Aber auch irgendwie nicht ganz so vorausschauend, wie man den guten Steve sonst kannte:

According to Jobs, it was an issue of security. “You don’t want your phone to be an open platform,” he told me. “You don’t want it to not work because one three apps you loaded that morning screwed it up. Cingular doesn’t want to see their West Coast network go down because of some app. This thing is more like an iPod than it is a computer in that sense.” 1

Daran und das die Zukunft im Web und vor allem in Webapps liegen würde, habe ich wirklich geglaubt. Erst als ich sah, wie die Leute auf Apple spätere Veröffentlichung des iOS SDK und den App Store abgingen, habe ich mich davon verabschiedet (jedenfalls zeitweise).

Wäre sicherlich interessant zu sehen, wie unsere Webentwickler-Welt aussähe, wenn Apple dabei geblieben wäre und nie einen App Store eröffnet hätte. 😉

Bild: Bill Patterson licensed under the Creative Commons Attribution 2.0 Generic license.

Morgenlese XXIX

Ich habe schon viel zu lange keine technischen Artikel gelesen und empfohlen. Dann aber jetzt.

Sven Wolfermann zeigt, was man in alles mit dem Sass Parent Selector – ‚&‘ (ampersand) anfangen kann. Sollte sich ja eigentlich inzwischen herumgesprochen haben, Sven liefert aber gleich ein sehr schönes BEM-Template als Beispielcode mit. Also understand, copy and paste it!

Ebenso für den interessierten Webdev-Neuling empfohlen sei das Tutorial Get Started with Debugging JavaScript in Chrome DevTools, das die Jagd nach einem Scriptfehler mithilfe von Entwicklerkonsole und Debugger Schritt für Schritt vortanzt. Bitte nachmachen.

Chris Heilmann zeigt 7 tricks to have very successful conference calls, auf die aber IMHO jeder von selbst kommen könnte, der schonmal in rund hundert Telefon-/Videokonferenzen seine Lebens- und Arbeitszeit verbrannt hat. Dass Videocalls niemals, niemals, niemals auf Anhieb funktionieren erwähnt Christian nur am Rande.

Und schließlich: Web Performance Stats are Overrated:

We discuss web performance statistics as if the web were a monolith, as if all web applications were uniform, like performance improvement effects are linear. They may not be represented by a simple exponential equation, but performance isn’t a simple science, and metric interpretation shouldn’t be assumed to be linear, or even accurate.

Happy coding!

Bild: Parker Byrd auf Unsplash

Alexa: geh sterben!

Es klingt wie eine Story aus einer Stand-Up-Comedy, bestenfalls wie eine schlecht gemachte Fake-News von Russia Today, oder ein Witz der unter Sysadmins herumgeirct wird: Nachrichtensprecher löst reihenweise Bestellungen von Puppenhäusern aus. Ich bin geneigt einen Podcast zu produzieren, der bei Amazon Echo Kunden Ware im Gegenwert des Bruttosozialprodukts von vier Saarlands bestellt. Warum? Weil es geht! Die dämliche Alexa reagiert offenbar auf alles gesagte und anders als wenn man „Siri“ in sein Telefon säuselt, alles was in einem Raum gesagt wird, eben auch vom Fernseher. Ich sehe vor mir, wie gewitzte Menschen „echo-targeting“ in Fernsehwerbung machen und sich mit nächtlichen Spot-Ausstrahlungen vor dem TV eingeschlafene Echo-Besitzer mindestens ruinieren, wenn nicht ausnehmen.

Das ist aber natürlich nicht nur eine News-Story zum Schmunzeln Kaputtlachen, sondern beweist einmal mehr, wie ausgereift der ganze Homeautomationskram mittlerweile ist. Nämlich gar nicht, oder soweit, dass er einem zwar Schmerzen bereiten kann, ohne sicher zu sein. Ich traue solchen Vollzeitüberwachungsgeräten wie Amazon Echo ja sowieso nur so weit wie ich es werfen kann, aber offenbar gibt es Horden von very first adoptern, die dafür Schlange stehen und hoffen, dass sich die frühen Probleme im Laufe der Entwicklung dann schnell geben werden und danach Amazon das Bankkonto abräumt und nicht mehr irgendein Spammer oder jemand, der von draußen vor dem Haus ins Netz eingebrochen ist. Letzterer räumt dann wahrscheinlich auch nicht nur das Konto ab, sondern auch gleich die ganze Wohnung, weil er Alexa sanft ins Ohr flüstern kann: „Alexa! open the front door!“

Morgenlese XXVIII

Die Diskussion um den Silvestereinsatz der Kölner Polizei ebbt kaum ab. Inzwischen wird dabei vieles durcheinander gewürfelt, die Rauschfrequenz ist hoch, es wird viel provoziert und allerorts mit Dreck geworfen. Man kann sicherlich nicht alles zu dem Thema lesen, aber diese Artikel halte ich für wichtig:

Christoph Herwartz hat schon früh am 1. Januar beschrieben, wie er die Nacht am Kölner Hauptbahnhof erlebt hat und hat dafür auf Facebook viel bösartige Kommentare auszuhalten gehabt. Seine Beobachtungen allerdings sind eindeutig:

Wer durch die rechte Glastür gehen muss, entscheidet ein Bundespolizist innerhalb von Sekundenbruchteilen, ohne denjenigen vorher beobachtet zu haben. Und allein diese Entscheidung ist ausschlaggebend dafür, wer kontrolliert wird. Denn hinter der rechten Tür wartet die Landespolizei. Die Beamten bilden eine Kette im Halbkreis vor dem Bahnhofsausgang. Die Feiernden reagieren ausnahmslos verwirrt, wenn sie den Bahnhof verlassen und hier landen.

Es entbrennt schnell eine Debatte um den Polizeieinsatz, da die Kölner Polizei nicht nur racial profiling einsetzt, sondern noch dazu zum Lieferanten von rechtem Neusprech einerseits avanciert, gleichzeitig noch kurz vor dem 1.1. das Unwort des Jahres 2017 prägt, als sie den Begriff Nafri twitterte. Wie drastisch dabei gestritten wird und wie weit am Thema vorbei kritisiert Christian Bangel lesenswert:

Ein, nun ja, dünnes Argument wird unterlegt von einem Notstandgebrüll, das keine Experten und Debattenbeiträge hören will, sondern strammstehende Zustimmung im Angesicht des Feindes. Wer die Kölner Polizei nicht unterstützt, der hat den Schuss nicht gehört, der will seine Ideologie über die Unversehrtheit unserer Frauen stellen. Der ist gegen die Kölner Polizei.

Dabei herrscht Einigkeit von der AfD über CSU, CDU bis hinein in Teile der SPD, bei Kommentatoren von DIE ZEIT, der FAZ und SZ bis in die taz hinein: der Einsatz war schon deswegen verhältnismäßig und gerechtfertigt, weil er eben ein Erfolg war. Eine „Kollateral Diskriminierung“ sei hinnehmbar. Da bin ich ehrlich gesagt anderer Meinung. Wie Patrick Gensing, der deutlich klar macht, dass der Zweck eben nicht die Mittel heiligt:

Selbstverständlich: Köln war eine Ausnahmesituation, die sexualisierte Gewalt musste unterbunden werden. Doch genau in solchen Grenzsituationen und Zeiten mit terroristischer Bedrohung muss sehr genau darauf geachtet und darüber diskutiert werden, welche Maßnahmen zulässig sind. Sonst wird das Grundgesetz zur politischen Folklore, auf das man in Sonntagsreden gerne verweist, aber das sich ansonsten als nicht zweckmäßig erwiesen habe.

Apropos racial profiling, offenbar ist es keine Ausnahme, sondern gängige Praxis, wie ein OVG-Entscheidung aus dem April 2016 beweist, die es zumindest Bundespolizisten verbietet:

Das OVG hat entschieden: Bundespolizisten dürfen sich bei anlasslosen Personenkontrollen in Zügen und Bahnhöfen grundsätzlich nicht an der Hautfarbe orientieren – auch dann nicht, wenn sie nur eines von mehreren „tragenden“ Auswahlkriterien sei. Das verstoße gegen das Gleichheitsgebot des Grundgesetzes, befand der Senat und ging mit seinem Urteil bewusst über die bisherige Rechtsprechung hinaus.

Und auch 2015 wurde schon über das Thema geschrieben, bspw. bei ZEIT ONLINE und der SZ. Zu dieser Zeit hatte die Bundesregierung noch behauptet, es gäbe in Deutschland gar kein racial profiling. So sehr hat sich das Klima seitdem geändert.

Und auch zum anderen Aufregerbegriff gibt es noch etwas zu lesen, nämlich das Nafri zwar zunächst kein rechter, wohl aber ein sehr problematischer Begriff ist, beweist Anatol Stefanowitsch im sprachlog, bei einem sprachwissenschaftlichen Grünen-Seminar für Rainer Wendt. Letzterer ist Vorsitzender der Deutschen Polizeigewerkschaft, und gab der Jungen Freiheit ein Interview, in dem er die Kritik der Grünen am Begriff Nafri relativierte.

Der Begriff ist nicht deshalb problematisch, weil die Kölner Polizei (vermutlich korrekt) erkannt hat, dass bestimmte Gruppen von Menschen aus bestimmten Ländern ihnen besonders oft Probleme bereiten, sondern, weil die sehr breite Kategorie Nafri dazu führt, dass nicht nur etwa alle Tunesier unter einen Generalverdacht für die Taten einer bestimmten Gruppe von Tunesiern gestellt werden, sondern sogar etwa alle Syrer unter einen Generalverdacht für die Taten einer bestimmten Gruppe von Tunesiern gestellt werden (und umgekehrt).

Bild: Parker Byrd auf Unsplash