Buchrezensionen

Buchrezension: Webtypografie

Veröffentlicht von am 25. Juli 2016 in Buchrezensionen

Webtypografie von Jason Santa Maria

Webtypografie von Jason Santa Maria

Typografie ist ein unheimlich spannendes Thema. Mit dem Buch Webtypografie möchte Jason Santa Maria uns zeigen, wie Typografie funktioniert und wie man sie für sich einsetzt.

In den ersten Kapiteln werden zunächst die Grundlagen erklärt wie man liest und wie Schriften funktionieren. Darauf aufbauend lernt man dann in den nächsten Kapiteln, wie man Schriften bewertet, wie man aus dem unendlichen Fundus an Schriften die passende auswählt und wie verschiedene Schriften kombiniert werden können. Diese Themen sind für sich alleine gesehen eher mäßig interessant, bilden aber die Grundlage für das eigentliche Thema Typographie und Komposition.

In den letzten beiden Kapiteln geht es schließlich darum, wie man Webseiten so gestaltet, dass sie angenehm zu lesen sind und die gewünschte Botschaft vermitteln. Dabei geht der Autor auf die Unterschiede zur klassischen Typografie in Print-Medien ein und geht auch auf die Herausforderungen von Responsive Design ein. Es gibt auch immer wieder konkrete Hinweise, wie man CSS und Javascript einsetzen kann, um das gewünschte Design zu erzielen.

Mein Fazit zu Webtypografie: Es ist ein lesenswerter Einstieg in das Thema. Das Buch vermittelt die Grundlagen kurzweilig und mit guten Beispielen. Wer bisher seine Seiten nach dem Prinzip Form follows function zusammengeklickt hat, findet in diesem Buch einige einfache Tipps, wie man es besser machen kann.

Link zum Buch

Rezension von „BitCoin kurz & gut: Banking ohne Banken“, Jörg Platzer

Veröffentlicht von am 17. Mai 2015 in Buchrezensionen

Die folgende Rezension wurde von unserem Mitglied trailblazr geschrieben:

Das Buch ist mein erstes Buch zum Thema gewesen, das ich gelesen habe und der Titel schien mir perfekt um es zum Einstieg zu lesen. Besonders auch der Untertitel „Banking ohne Banken“ machte mich neugierig. Um es gleich vorweg zu nehmen, ich bin zwar um einige Begrifflichkeiten reicher, aber auch ein wenig enttäuscht weil das alles so unsystematisch im Buch passiert.

Das Buch ist für meine Begriffe relativ unlogisch aufgebaut. Nach einer relativ kurzen Intro ins Thema BitCoin stellt man fest, das der wesentliche Kern der Technologie, nämlich die Blockchain, fast gar nicht erklärt wurde oder so erklärt wird, dass es alles ziemlich unverständlich bleibt.

Der Autor stürzt sich gleich mitten in die BitCoin-Tools, der Buchtitel hätte also besser „BitCoin Tools kurz & gut“ geheißen, denn teilweise wird wirklich Schritt für Schritt ein Browser-Plugin oder eine Software erklärt, ohne dass man dem Leser erstmal vermittelt, warum man diese Tools eventuell braucht. Nicht dass ich das Lernen von Toolwissen ablehne, aber wir wissen alle, wie schnell Softwarewerkzeuge heutzutage veralten und damit auch der Inhalt weiter Teile dieses Buches.

Es geht sofort los von Clients und Wallets, Wallettypen wie online, offline, paper, etc. es dreht sich also um Werkzeuge. Erst in Kapitel 6, als es um Anonymität geht, wird der Kern der Technologie ein wenig näher beleuchtet, nämlich die transparente und verteilte Buchhaltung. Bis dahin hat man einige Werkzeuge vorgestellt bekommen, deren eigentlichen Sinn man erst später begreift und deren Unterschiede so komplex gelagert sind, dass man als Einsteiger deutlich mehr Fragen als Antworten hat. Vor allem bohrte jederzeit die eine Frage in mir, warum sollte ich diesen Tools einfach so blind vertrauen? Sind die Toolentwickler Idealisten? Funktioniert ein nachhaltiges Ökosystem das die Geldinfrastruktur ablösen können soll nur mit Idealisten?

Mir missfällt vor allem aber, dass diese Werkzeuge nahezu kritikfrei vorgestellt werden. Der Leser muss diese Werkzeuge einfach so hinnehmen. Es wird vom Leser verlangt der Technologie und den Werkzeugen blind zu vertrauen. Aber warum sollte man dies tun? Ist es nicht die berechtigte Skepsis an unserem bestehenden Geldsystem, die einen als Leser zu diesem Buch bringt? Warum also nicht offen und ehrlich auch die vorgestellten Werkzeuge mit einer gesunden Skepsis betrachten?

Ärgerlicher noch, fast jede Werkzeugvorstellung endete mit dem Hinweis, dass man als Nutzer für ein Backup zu sorgen hat, und dass man einige Maßnahmen (z.B. Passworte) zur Sicherung seines Geldes durchzuführen hat. Das erzeugt erstmal — wenn auch unbeabsichtigt — ein komisches Unwohlsein, weil man beginnt zu erkennen, dass hier ein Haufen Verantwortung auf den Nutzer der Tools verlagert wird. Dieser Verantwortung kann aber nur gerecht werden, wer diese Werkzeuge gedanklich durchdringt, versteht und die Risiken erkennt.

Später lernt man im Kapitel 8 zum BitCoin-Mining, wie tatsächlich ein essenzieller Teil der Technologie überhaupt funktioniert. Die wesentlichen Aspekte auf die BitCoin aufbaut, werden mir insgesamt nicht klar genug vorgestellt. Man muss sich viele Teile aus dem Toolwissen des Buches mühsam zusammensuchen und extrahieren um letztlich ein unzusammenhängendes Bild von der Blockchain zu erhalten. Ein Schaubild hier und da anstatt von Tool-Screenshots hätte dem Buch sehr gut getan.

Ab Kapitel 10 wird es dann eher politisch und auch ein gutes Stück utopisch, wenn es darum geht, BitCoin als zukunftsträchtige Lösung zu präsentieren. Doch aus meiner Sicht ist die Darstellung von BitCoin als Währung an dieser Stelle geradezu skandalös schöngefärbt. Ja, BitCoin ist eine wirkliche Neuerung, und ja es funktioniert auch bereits in vielen Bereichen, doch die neuen Risiken der Lösung, die keine der bisherigen Währungen hatte, werden eben auch weitgehend verschwiegen.

So fehlt mir zum Beispiel der eindeutige Hinweis, dass BitCoin eben nur dann reibungslos funktionieren kann, wenn die Kommunikationsverbindungen zwischen tausenden Rechnern reibungslos funktionieren. BitCoin bzw. der Blockchain-Mechanismus ist keine simple Währung, die man offline nutzen kann, sie setzt zwingend Computer, spezielle Software, große verteilte Datenspeicher ein reibungslos funktionierendes Netz und großes Vertrauen in den Schöpfer der Kryptografie hinter der Technik voraus. Das mögen auf den ersten Blick zu vernachlässigende Randbedingungen in unserer „Ersten Welt“ sein, jedoch zeichnet sich BitCoin damit durch eine wesentlich höhere Komplexität und deutlich höhere Anforderungen für den Einsatz aus, als z.B. bisheriges, physisches Offline- oder Papiergeld.

Der Autor hat sich viel Arbeit gemacht, sehr detaillierte technische Risiken die der BitCoin-Infrastruktur innewohnen zu beschreiben (z.B. Double Spend Attacke, 51%-Attacke, etc.) doch die viel simpleren Basisrisiken, nämlich die technischen Abhängigkeiten die diese Währung besitzt (Strom, Computer, Software, Netz, Vertrauen in die komplexe Kryptographie) werden kaum benannt. Dabei sind es u.a. diese Risiken, die BitCoin entscheidend von anderen Komplementärwährungen unterscheidet.

Das Thema Komplementärwährung an sich wird kaum benannt, stattdessen bleibt der Autor in der BitCoin Sphäre und erwähnt lediglich die alternativen Crypto-Currencies die mehr oder weniger Ableitungen von BitCoin sind. Es hätte dem Buch außerordentlich gut getan, wenn man die Unterschiede von BitCoin zu bestehenden Konzepten alternativer Komplementärwährungen (z.B. auf Gutscheinbasis wie „Miles & More“ Programme etc.) einmal aufgezeigt hätte.

So vermittelt das Buch zwar einen vorwiegend anhand von Werkzeugen vermittelten Zugang zu BitCoin, kommt über diese Innenansicht kaum hinaus und der Blick über den Tellerrand erstreckt sich lediglich auf „Was man mit BitCoin noch so machen könnte.“ dabei stehen möglicherweise ganz andere Dinge in den Startlöchern rund um die Blockchain-Technologie.

Dennoch, das Buch ist recht kompakt und lässt sich sehr gut lesen. Man bekommt einen guten Überblick über Werkzeuge und Dienstanbieter rund um BitCoin und viele Informationen rund um den Gebrauch von BitCoin im Alltag. Unter anderem ist ein Abschnitt für Gewerbetreibende enthalten, den ich sehr wertvoll fand. Die eigentlichen Prinzipien hinter BitCoin nämlich die Blockchain als quasi grundlegendes Peer-to-Peer-Kryptoprotokoll für über ein Netzwerk verteilte, transparente Buchhaltung kommen für mich jedoch zu kurz.

Das Buch ist insgesamt empfehlenswert, weil viele verschiedene Begriffe verwendet werden, die im Zusammenhang mit BitCoin stehen und BitCoin spezifische Dinge benennen. Und es ist meines Wissens nach eines der ersten deutschsprachigen Bücher zum Thema BitCoin. So lernt man durch das Lesen des Buches viele Schlüsselbegriffe kennen, und kann danach weitere Beiträge zu BitCoin besser verstehen.

Buchrezension: 21st Century C. C Tips from the New School

Veröffentlicht von am 25. Februar 2015 in Buchrezensionen

Als ich in der Schule im HTML Unterricht nicht zu bremsen war und mit den Aufgaben in weniger als der Hälfte des Schuljahres fertig war, sagte mein Lehrer, ich solle doch Java lernen, wenn ich denn plane, den Informatik-Leistungskurs zu belegen. So kam ich zu meiner ersten Programmiersprache und mit den Eigenheiten, die ich schätzen und lieben gelernt habe, kamen dann natürlich auch die Probleme, die mit dem Lernen neuer Sprachen kommen, welche diese nicht haben. Ein besonderes Sprachmonstrum ist für mich C/C++. Memory-Management, Pointerarithmetik, das Fehlen einheitlicher Konventionen/Standards (bezogen auf C++), Fehlen essentieller Datentypen (Strings) oder unbequemes Handling derselben (Strings, Arrays), inklusive Standardfunktionen, die bekannte Sicherheitsrisiken darstellen (z.B. strcpy) und trotzdem in allen möglichen Büchern oft als die einzige Methode beschrieben werden. All das hat mir regelmäßig Kopfschmerzen bereitet; insofern würde ich nicht von mir behaupten, C zu können, obwohl ich schon einiges in C gemacht habe (inklusive Bachelorarbeit). Das führt bei mir manchmal immernoch zu Laufzeitfehlern, die ich mit keiner anderen Programmiersprache kenne; etwa Speicherlecks während der Laufzeit oder gar nur zufällig auftretende Abstürze, die nicht der Programmlogik geschuldet sind. Inkompatibilität zwischen den einzelnen C-Standards runden das Monster ab.

Daher steht auch schon seit längerem auf meiner ToDo-Liste, dass ich in C fitter werden möchte – und da kommt dieser Titel doch wie gerufen, oder nicht?

Wie gehabt werde ich zunächst die Rahmendaten darstellen, dann ein wenig detaillierter auf den Inhalt eingehen, damit sich jeder ein Bild davon machen kann, was genau er von diesem Buch erwarten kann, und lege abschließend meine Meinung zum Buch dar, bei welcher es hilfreich ist, auch den Erfahrungshintergrund des Rezensenten zu kennen, den ich in der Einleitung kurz angerissen habe. ;)

Rahmendaten

lrg
Wie auch bei meinen letzten Rezensionen handelt es sich bei diesem Titel um ein Buch, welches der O’Reilly Verlag uns netterweise für den Hackerspace zur Verfügung gestellt hat. Geschrieben ist es von Ben Klemens, der seine Brötchen vor allem durch das Schreiben von statistischen Analysetools für komplexe Berechnungsmodelle verdient; sein Kundenkreis reicht von Wirtschaftskunden über den medizinischen Bereich bis zum US Staat. Sein Buch ist 340 Seiten stark, zuzüglich Appendix und Glossar und liegt in der 2. Auflage vor, die einige Ergänzungen und Erweiterungen auf Grundlage des Feedbacks zur ersten Auflage aufweist.

Grob ist es in zwei Teile gegliedert, The Environment und The Language, wobei der erste Teil 5 Kapitel (120 Seiten) umfasst und der zweite Teil mit 8 Kapiteln (auf 220 Seiten) überwiegt.

(mehr …)

Getting Started with Raspberry Pi, 2nd Edition

Veröffentlicht von am 9. Februar 2015 in Buchrezensionen

Electronic Projects with the Low-Cost Pocket-Sized Computer

Mit „Getting started with Raspberry Pi 2nd Edition“ bringen Matt Richardson und Shawn Wallace Ende 2014 die überarbeitete Fassung ihres Einführungswerkes über den beliebten Einplatinen-Computer heraus. Das ursprüngliche Buch erschien 2012 und ist inzwischen unter dem Titel „Raspberry Pi für Einsteiger“ auch auf Deutsch erhältlich.

Der Markt der Einsteiger-Bücher für den Raspberry Pi  ist bunt, vielfältig und für den Suchenden häufig recht verwirrend. Das vorliegende Buch verfolgt die amerikanische Herangehensweise des „learning by doing“. Nach einer kurzen Übersicht über die Komponenten des Pi wird dem Leser gleich zu Beginn gezeigt, wie er mit der Raspbian-Distribution seinen Pi in Betrieb nehmen kann. Eine andere Herangehensweise findet man z.B. in dem Buch von Eric Bartmann „Die elektronische Welt mit Raspberry Pi entdecken“, welches im gleichen Verlag erschienen ist. Hier erhält der Leser umfangreiche Einblicke in die Welten der Elektronik, der Physik und des Betriebssystems Linux, ehe der Pi tatsächlich eingeschaltet wird. Diese Tiefe und diesen Umfang bietet  „Getting started with Raspberry Pi 2nd Edition“ nicht, man kommt aber sehr viel schneller zum Machen, was einigen Makern nicht Unrecht sein dürfte. Der interessierte Leser wird aber nicht alleine gelassen, nach jedem Kapitel geben die Autoren mit Literaturhinweisen und Linklisten Möglichkeiten zur weiteren Vertiefung.
(mehr …)

Rezension: JavaScript and jQuery. The missing manual.

Veröffentlicht von am 19. Januar 2015 in Buchrezensionen

JavaScript & jQuery - the missing manualBei vielen interaktiven Projekten kommt man um eine Weboberfläche nicht herum. Bei meiner Gewitterwolkenlampe will ich verschiedene Blitz-Programme auswählen können, beim Hexapod will ich einstellen, welches Bewegungsmuster verwendet wird. Ich kann zwar einigermaßen HTML schreiben, aber JavaScript kannte ich noch als kompliziertes Scripting Werkzeug, bei dem man viel schreiben muss und nur wenig erreichen kann. jQuery und Ajax kannte ich bisher auch nur als Buzzwords aus dem Internet.

Als dann das Buch „JavaScript & jQuery – the missing manual“ im O’Reilly Newsletter auftauchte dachte ich mir, gucken wir doch mal, ob die Vorurteile noch stimmen. Um das Ergebnis vorwegzunehmen: Nein, sie stimmen nicht mehr.

(mehr …)

Buchrezension: „Make: Rockets – Down-to-Earth Rocket Science“

Veröffentlicht von am 19. November 2014 in Buchrezensionen

Unser Fördermitglied Oliver Arend hat sich Make: Rockets – Down-to-Earth Rocket Science durchgelesen und folgende Rezension erstellt. Viel Spaß beim Lesen!

Make: Rockets Cover

Alleine der Titel des englischsprachigen „Make: Rockets“ schafft es schon mal, die Modellraketen aus der angestaubten Modellbauecke und dem Zwielicht des bombenbastelnden Terroristen in die Arduino-gesteuerte, LED-blinkende und vom 3D-Drucker-Surren erfüllte Maker-Welt zu ziehen. Es verspricht auch, typisch amerikanisch mit gefühlt einem Ausrufezeichen hinter jedem Satz, ein kleines Studium der Luft- und Raumfahrttechnik am Küchentisch, im Bastelkeller und auf der Wiese.
(mehr …)

Buchrezension „Hacks für Raspberry Pi“

Veröffentlicht von am 17. August 2014 in Buchrezensionen

Das Buch „Hacks für Raspberry Pi“ hat 6 große Kapitel, die unterschiedliche Themen behandeln:

1. Konfigurations-Hacks
2. Linux für den Raspberry Pi hacken
3. Der Raspberry Pi im Haus
4. Draußen hacken
5. Multimedia-Hacks
6. Erweitern Sie Ihren Pi

Die einzelnen Kapitel bauen alle aufeinander auf.

Wenn einem ein bestimmtes Thema interessiert, dann kann er gleich die entsprechende Seite aufschlagen. Dort wird dann beschrieben wie man z.B. seinen eigenen (Rasperry-Pi-)Kernel auf dem RasPi kompilieren lassen kann. Wem das dann aber zu lange dauern würde, der wird dann auf einen anderen Hack verwiesen, der erklärt wie man eine Cross-Compiler Toolchain bauen kann. (mehr …)

Buchrezension: Build Awesome Command-Line Applications with Ruby 2

Veröffentlicht von am 9. Juli 2014 in Buchrezensionen

Leider ein wenig arg verspätet (Umzug, Studium, Arbeit und Familie) kommt hier nun endlich die Rezension zum Buch „Build Awesome Command-Line Applications in Ruby 2“ von David Bryant Copeland, ein Buch, das beim Verlag „The Pragmatic Programmers“ unter der Serie „The Facets of Ruby“ veröffentlicht, und vom O’Reilly-Verlag vertrieben wird, der uns dieses Exemplar in englischer Sprache freundlicherweise zur Rezension zur Verfügung gestellt hat.

Lesemotivation und Überblick

dccar2Als Rails-Direkteinsteiger (siehe auch meine vorherige Rezension) war ich sehr interessiert an diesem Buch, und erhoffte mir, auch ein paar Ruby-Grundlagen abseits der Rails Umgebung zu erlangen. Insbesondere da der Titel Ruby 2, also die aktuellste Version von Ruby hervorhebt, war ich gespannt zu sehen, was sich zu den Vorgängern verändert hat, denn nach allen Change-Notes ist der Unterschied zwischen 1.9 und 2.0 doch sehr gering. Hier, das möchte ich schon mal vorwegnehmen, hat mich das Buch ein wenig enttäuscht, wenn es auch ansonsten sehr lesenswert war. Der Fokus liegt nämlich ausschließlich auf dem „Awesome Command-Line Applications“; soweit ich das überblicken kann, ist dabei kaum etwas Ruby 2 spezifisch und auch ansonsten hat sich nicht viel zur ersten Version geändert. Nichtsdestotrotz bietet dieses Buch einiges Interessantes. Was das im Detail ist, möchte ich in dieser Rezension erörtern, um somit anderen Lesern Klarheit über das zu Erwartende zu verschaffen.

Konsolen-Tools, im Gegensatz zur Graphical User Interface (GUI) auch Command Line Interface (CLI) genannt, spielen auch heute noch eine wichtige Rolle, was auch Copeland feststellt, welcher die Welt der Programmierer in eine Pre- und Post-Java-Zeit einteilt.

In der Post-Java-Zeit sieht der Autor die CLI immer weiter verdrängt; erst durch das Aufkommen von Ruby und Rails tritt die CLI seiner Meinung nach wieder in den Vordergrund, weshalb er sich in seinem Buch auf die Erstellung von CLI-Tools mithilfe von Ruby konzentriert. Die Verdrängung der Shell durch die GUI und die Maus wird auch in einem kleinen Werbevideo zum Buch zum Ausdruck gebracht, welches ich euch nicht vorenthalten möchte, da es doch ganz niedlich ist.

Copeland macht zwei Stile von CLI Applikationen aus, die einfachen UNIX-ähnlichen und die komplexen Command-suites, unter welche er Tools wie git oder gem fasst.

Für beide Arten von Applikationen beschreibt Copeland den Entwicklungsprozess. Dabei führt er zwei Beispiel-Probleme ein,  zum einen ein Skript, welches Sicherheitskopien für eine Datenbank erstellt, zum andern ein Tool, welches eine Todo-Liste verwalten soll. Beide Tools sollen mit viel Komfort bedient werden können, d.h. bspw. soll das Backup-Skript zwischen vollständigen und iterativen Backups differenzieren, diese komprimiert ablegen und nicht mehr benötigte iterative Backups automatisch löschen; die Todo-Liste soll mitschneiden, wann ein Punkt hinzugefügt und abgehakt wurde, und verschiedene Darstellungen unterstützen. Diese Programme werden in einer ersten rudimentären Version ausprogrammiert, ab dann werden allerdings nur noch Fingerzeige auf die wichtigsten Codeteile geliefert, sodass für ein lauffähiges Programm auch Eigenarbeit hineingesteckt werden muss, wenn man die Beispiele auch selbst implementiert. Allerdings gelingt es dem Autor so, die Beispiele klein und gut lesbar zu halten und den Fokus des Lesers sehr genau lediglich auf den relevanten Teil des Codes zu legen.

So schafft es Copeland auf nur 170 Seiten in 10 Kapiteln unterteilt, einen relativ kompletten, wenn auch nicht ausführlichen Überblick über die Entwicklung von CLI-Programmen zu geben und dabei sowohl Programmiermethoden und Werkzeuge als auch Theorien und Best-Practices vorzustellen.

(mehr …)

Rezension: Learning Android

Veröffentlicht von am 3. Juni 2014 in Buchrezensionen

Im Rahmen meines Hexapod Projekts wollte ich mich endlich mal intensiv mit Android Programmierung beschäftigen. Da kam mir das Buch Learning Android gerade recht! Das Buch verspricht, anhand eines kompletten Projekts alle wichtigen Techniken der App-Entwicklung vorzustellen.

In den ersten Kapiteln wird zunächst beschrieben, was Android ist und was die App-Entwicklung von „normaler“ Anwendungsentwicklung unterscheidet. Dabei gibt es auch eine ganz kurze Einführung in Java. Anschließend geht es dann in die Installation und Bedienung von Eclipse.

Die Projektapp, die man schließlich entwickelt ist ein Shortmessage-Client ähnlich wie Twitter, mit einem eigens für dieses Projekt aufgesetzten Server. Man lernt, wie man verschiedene Elemente einbindet und sie miteinander verknüpft, wie man mehrere Threads verwendet und wie man mehrere Perspektiven anlegt und wechselt.

Die Beispiele sind grundsätzlich gut nachvollziehbar, die Lerneinheiten sind nicht zu mächtig und nicht zu klein. Nur an einigen Stellen gibt es Unstimmigkeiten zwischen Screenshots bzw. Listings und der Beschreibung im Text. Da muss man dann ein bißchen grübeln, um den richtigen Schritt zu finden.

Alles in allem ist das Buch Learning Android ein gutes Buch. Leider kommt man so etwa in der Mitte des Projekts an einen Punkt, wo man auf den oben beschriebenen Server zugreifen muss. Dort kommt es dann zu einer Exception, so dass es nicht weitergeht. Mittlerweile ist das Problem auch noch von jemand anderem als Bug gemeldet und es gibt einen Workaround. Das habe ich aber noch nicht getestet.

Ich werde zu dieser Rezension einen zweiten Teil schreiben, wenn ich den Rest des Projektes abgeschlossen habe.

Rezension: Einführung in Apache Solr

Veröffentlicht von am 31. Mai 2014 in Buchrezensionen

Buch Einführung in Apache SolrDas Buch „Einführung in Apache Solr“ von Markus Klose und Daniel Wrigley ist im März 2014 erschienen. Das Buch vom O’Reilly® Verlag wurde uns netterweise vom Verlag zur Verfügung gestellt. Das Buch ist in deutscher Sprache.

Nach der Erklärung, was Apache Solr ist und der üblichen Beschreibung der Geschichte geht es schon los mit der Installation. Und die ist einfach mal reibungslos verlaufen. Das liegt zum Einen daran, dass diese auch einfach durchzuführen ist zum Anderen aber auch an der einfachen Sprache der Autoren, die die Schritte für Windows und Linux sehr gut aufzählen.

Im Zweiten Kapitel werden grundsätzliche Dinge zu Apache Solr erklärt, die man gleich mit der eigenen Installation ausprobieren kann und auch hier (mehr …)