[Rezension] Guter Einstieg, aber zu unkritisch

May 15th, 2015

Rezension des Buchs: DJ Patil, Hilary Mason. Data driven – Creating a Data Culture. O’Reilly. 2015.

In diesem Buch erläutern die beiden Autoren, was sie unter einer “Datenkultur” verstehen. Sie erläutern, welchen Stellenwert die Daten in menschlichen Organisationen haben (hauptsächlich Firmen, NGOs (non government organisations), Vereine etc.) und das sie von möglichst vielen Menschen genutzt werden soll. Traditionelle Data-Warehouses waren bürokratisch organisiert, es gab eine kleine “Informations-Elite” und normale Anwender mussten u. U. lange auf die Umsetzung ihrer angeforderten Reports warten. Big Data setzt auf eine “Demokratisierung”, d.h. die Daten sollen möglichst vielen zur Verfügung gestellt werden.

Es ist ein ganz angenehmer Anfang, aber leider viel zu optimistisch und noch nicht zu Ende gedacht. Wo liegen die Gefahren? Was ist mit der Daten-Qualität? Wenn diese schlecht ist, sind auch die Folgerungen aus diesen Daten schlecht? Wie bringt man seinen Mitarbeitern Statistik bei? Facebook und Co. haben wohl keine Schwierigkeiten sehr intelligente “Data Scientists” anzuheuern, aber die kleineren Firmen hingegen wohl schon. Auch gibt es viele Möglichkeiten mit Statistik falsche Schlüsse zu ziehen, siehe z. B. das Buch “The flaw of averages” by S. Savage.

Aber insgesamt kurz und einen Blick wert, aber zu unkritisch.

[Rezension] Pflichtlektüre im Bereich Security

May 7th, 2015

Rezension des Buchs: Bruce Schneier. Beyond Fear: Thinking Sensibly About Security in an Uncertain World. Copernicus. 2003.

In dem 2003 geschriebenen Buch schreibt der Autor ganz allgemein über Sicherheit. Hier ist die englische “security” gemeint und nicht die “safety”, d. h. die Zuverlässigkeit. Er hat das Problem sehr gut durchdacht und abstrahiert soweit, dass er verschiedene Themen wie Terrorismus, Passkontrollen, Kreditkarten und Computersicherheit behandeln kann. Er stellt hierfür einen 5-Fragen-Plan auf, mit dem Sicherheit-Systeme hinterfragt werden können und führt dieses für die o.g. Bereiche durch.

Ich war zwischendurch sehr beeindruckt davon, wie viel Durchblick der Bruce Schneider wirklich hat. Es ist stellenweise schon ein Philosophiebuch. Auch die ökonomischen Hintergrunde berücksichtigt er. Für ihn ist Sicherheit immer ein Tradeoff zwischen der Vermeidung der Gefahr und dem Aufwand zur Erreichung dieser.

Das Buch ist von 2003 und damals befand sich die USA noch in einem Schockzustand aufgrund 9/11. Das Buch von Herrn Schneier sollte wohl auch dazu anregen, die damals von der Politik betriebene “Homeland-Security” der USA kritisch zu überdenken. Denn viele der von der Politik geforderten Mittel können den gewollten Effekt nicht haben und sollen nur die Wähler beruhigen, sie sind ein Placebo.

Stellenweise in der Mitte allerdings wurde es ein wenig langatmig, aber dennoch ein Meilenstein.

[Rezension] 3D-Druck und Industrie 4.0 für Kleinunternehmen

May 2nd, 2015

Rezension des Buchs: Chris Anderson. Makers: Das Internet der Dinge: die nächste industrielle Revolution. Hanser. 2013.

Der Autor beschreibt in diesem Buch, wie industrielle Fertigungsprozesse mit CAD, dem 3D-Druck und/oder durch Outsourcing auch von Kleinunternehmern durchgeführt werden können. Die Dezentralisierung, d.h. eine möglichst große Verteilung der Produktionsmittel – im Gegensatz zu einer Zentralisierung im Sozialismus – wurde von vielen schon als Garant der Freiheit und Wohlstand gesehen. Das Buch ist von 2012 und der Autor beschreibt die Situation sehr enthusiastisch, allerdings auch ein wenig zu unkritisch.

1. Er geht nicht genügend auf die industrielle Verwendung der 3D-Drucker ein. Er schreibt “Es gibt keine Stückkostendegration”. Das mag im Kleinen stimmen, aber nicht, wenn 3D-Druck industriell 24/7 eingesetzt wird. Wir wird Plastik nachgefüllt? Wenn das Modell geändert wird, muss der Computer den optimalen Guss berechnen, d.h. die Pfade für den 3D-Drucker. Das kostet Zeit. Hier schreibt er “Dem Computer ist es egal, wie viele Berechnungen er durchführen muss”. Ja, aber bei den Stromkosten macht das einen Unterschied. Das könnte insbesondere später bei komplexeren Modell schon entscheidend sein (vor allem wenn die Strompreise weiter steigen).

2. Er berücksichtigt meiner Meinung nach das “Wissen” nicht, das ein 3D-Modellierer und -Entrepeneur haben muss und die Infrastruktur um den 3D-Betrieb herum. In Baden-Württemberg mit viel Industrie wird es mehr Aufträge geben, als z. B. in Ostfriesland mit wenig Industrie. So global wie der Autor die Wirtschaft beschreibt, ist sie meiner Meinung nach nicht.

3. Der Autor geht auch nicht auf die Gefahren auf Regulierung durch den Staat ein (bei uns auch die EU). Solange der 3D-Druck nur ein Hobby für wenige ist, tut er der etablierten Industrie nicht weh. Wenn sich das ändert, besteht die Gefahr, dass die etablierten Groß-Unternehmen versuchen, die Konkurrenz zu verhindern. Dann werden die Firmen beim Staat versuchen, kostenintensive Regulierungen durchzusetzen, die sich nur Großbetriebe leisten können.

4. Auch werden die rechtlichen Aspekte, wie Gewährleistung, Umtausch, Reklamationen, Kundenanfragen, etc. nicht behandelt. Der Autor ist US-Amerikaner, geht aber auch auf die Situation in den USA nicht ein.

5. Das Thema hat mit dem “Internet der Dinge” eigentlich nur am Rande zu tun. Das hat der Übersetzer da in den Buchtitel hineingebaut, denn das ist im englischen Original nicht vorhanden.

6. Das vorgeschlagene Geschäftsmodell von “3D Robotics” lässt sich leider nicht auf alle Unternehmen verallgemeinern. Das Unternehmen profitiert davon, dass Enthusiasten umsonst als Hobby an den Drohnen arbeiten, die Software verbessern usw. Diese Menschen arbeiten ja noch bei anderen Firmen und beziehen ihr Gehalt aus der “alten” Wirtschaft.

Das Buch ist aber als Einstieg sicherlich lesenswert.

Measuring traffic on the PCI Express Bus (PCIe)

April 24th, 2015

During my talk at the parallel 2015 conference i was asked how one can measure traffic on the PCI express bus. For multi GPU computing it is very important to control the amount of data exchanged on the PCIe bus.

You need the  Intel Performance Counter Monitor (https://software.intel.com/en-us/articles/intel-performance-counter-monitor). Compile it and copy pcm-pcie.exe into a new directory.

Then read this helpful article http://www.correlsense.com/blog/intel-performance-counter-monitor/ of how to obtain the missing WinRing dlls and drivers. Copy them into the same directory, start the cmd.exe as an admin and there you go.

Now you can analyse the traffic on the PCI bus.

C:xyzIntelPerformanceCounterMonitorV2.8bin>pcm-pcie.exe
DEBUG: Setting Ctrl+C done.

Intel(r) Performance Counter Monitor: PCIe Bandwidth Monitoring Utility

Copyright (c) 2013-2014 Intel Corporation
This utility measures PCIe bandwidth in real-time

PCIe event definitions (each event counts as a transfer):
   PCIe read events (PCI devices reading from memory – application writes to disk/network/PCIe device):
     PCIePRd   – PCIe UC read transfer (partial cache line)
     PCIeRdCur* – PCIe read current transfer (full cache line)
         On Haswell Server PCIeRdCur counts both full/partial cache lines
     RFO*      – Demand Data RFO
     CRd*      – Demand Code Read
     DRd       – Demand Data Read
     PCIeNSWr  – PCIe Non-snoop write transfer (partial cache line)
     PRd       – MMIO Read [Haswell Server only: PL verify this on IVT] (Partial Cache Line)
   PCIe write events (PCI devices writing to memory – application reads from disk/network/PCIe device):
     PCIeWiLF  – PCIe Write transfer (non-allocating) (full cache line)
     PCIeItoM  – PCIe Write transfer (allocating) (full cache line)
     PCIeNSWr  – PCIe Non-snoop write transfer (partial cache line)
     PCIeNSWrF – PCIe Non-snoop write transfer (full cache line)
     ItoM      – PCIe write full cache line
     RFO       – PCIe parial Write
     WiL       – MMIO Write (Full/Partial)

* – NOTE: Depending on the configuration of your BIOS, this tool may report '0' if the message
           has not been selected.

Starting MSR service failed with error 2 The system cannot find the file specified.
Trying to load winring0.dll/winring0.sys driver…
Using winring0.dll/winring0.sys driver.

Number of physical cores: 6
Number of logical cores: 12
Number of online logical cores: 12
Threads (logical cores) per physical core: 2
Num sockets: 1
Physical cores per socket: 6
Core PMU (perfmon) version: 3
Number of core PMU generic (programmable) counters: 4
Width of generic (programmable) counters: 48 bits
Number of core PMU fixed counters: 3
Width of fixed counters: 48 bits
Nominal core frequency: 3500000000 Hz
Package thermal spec power: 140 Watt; Package minimum power: 47 Watt; Package maximum power: 0 Watt;
2 memory controllers detected with total number of 5 channels.

Detected Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz “Intel(r) microarchitecture codename Haswell-EP/EN/EX”
Update every 1 seconds
delay_ms: 84
Skt | PCIeRdCur |  RFO  |  CRd  |  DRd  |  ItoM  |  PRd  |  WiL
0    4236         576    5980 K  1536 K     48    3456    7116
———————————————————————–
*    4236         576    5980 K  1536 K     48    3456    7116

[Rezension] OO mit JavaScript hervorragend erklärt

April 4th, 2015

Rezension des Buchs: Nicholas C. Zakas. The Principles of Object-Oriented JavaScript. No Starch. 2014.

JavaScript hat einen Prototyp-basierten Ansatz zur Objektorientierung. Damit unterscheidet es sich stark von den üblichen objektorientierten Programmiersprachen, wie z. B. Java, C++ und Ruby. Denn bei diesen wird der Code mit Hilfe von Klassen und deren Hierarchien strukturiert. Diese Klassen und Hierarchien sind bei JavaScript bisher aber nur über kleine Umwege zu erreichen.

Daher muss man auch als gestandener OO-Entwickler bei JavaScript erst wieder lernen, wie man größere Applikationen mit Klassen, Funktionen, Modul-Objekten und Mixins strukturieren kann.

In diesem kleinem Buch erklärt der Autor mit sehr viel Fachkenntnissen, wie die traditionelle Objektorientierung auch mit JavaScript (ECMAScript 5) umgesetzt werden kann. Der Autor konzentriert sich nur auf diese “Lücke”, andere Themen werden in diesem Buch nicht behandelt. Es ist kein allgemeines Lehrbuch über die objektorientierte Programmierung. Für das Verständnis sind Grundkenntnisse in OO und in JavaScript notwendig.

Ob dieses Buch auch nach dem Erscheinen von ECMAScript 6, das für Mitte 2015 angekündigt wurde, noch lesenswert ist, kann ich noch nicht beurteilen. Momentan aber ist es eine der besten Quellen, um JavaScript zu verstehen.

Trying out next-gen JavaScript, ECMAScript 6

April 4th, 2015

With Babel (https://babeljs.io) you can test many features of the upcoming next version of JavaScript called ECMAScript 6 (https://en.wikipedia.org/wiki/ECMAScript) now.

I made some tests and prepared a grunt package (http://gruntjs.com) and made in available on github, see https://github.com/jdinkla/ecma6-babel-test.

[Rezension] Java MapReduce mit Hadoop

March 27th, 2015

Rezension des Buchs: Donald Miner, Adam Shook. MapReduce Design Patterns: Building Effective Algorithms and Analytics for Hadoop and Other Systems. O’Reilly. 2012.

MapReduce ist ein “Korsett” und zwingt den Entwickler in enge Grenzen. Daher macht es Sinn, dieses Buch zu lesen, damit man schnell die üblichen Tricks und Kniffe kennenlernt. Ähnlich ist es ja beim Lernen von anderen Paradigmen auch, wie z. B. Devide-and-Conquer oder Rekursion. Man begreift das allgemeine Prinzip schnell, man muss aber lernen, wann und wie man es am besten einsetzt.

In diesem Buch werden typische Anwendungsfälle für Hadoop in Java MapReduce implementiert. Dabei liegt der Schwerpunkt nicht auf den eigentlichen Entwurfsmustern (“design patterns”), wie der Titel des Buches suggeriert, sondern auf den konkreten Implementierungen. Wer nur an der Implementierung dieser Pattern interessiert ist, wird mit diesem Buch gut bedient. Man sollte aber vorher schon erste Erfahrungen mit Hadoop gemacht haben und Java gut kennen.

Wer allerdings wirkliche “Entwurfsmuster” für beliebige MapReduce-Frameworks sucht, wird mit diesem Buch nicht 100% glücklich. Die im Untertitel erwähnten “other systems” kommen definitiv zu kurz. Auch wer Hadoop mit Pig, Hive oder Apache Crunch benutzt kann sich das Lesen des Buches evtl. sparen oder nur schnell durchfliegen. Die langen Java-Listings kann man sich dann nämlich sparen.

Wer allerdings wirklich wissen will, was hinter Pig passiert, sei es bei der Fehlersuche oder bei Performance-Problemen, der kann sich hier schon den einen oder anderen Tipp anlesen.

[Rezension] Gute Einführung in C++ AMP

March 16th, 2015

Rezension des Buchs: Kate Gregory. Ade Miller. C++ AMP: Accelerated Massive Parallelism with Microsoft Visual C++. Microsoft Press. 2012.

Dieses Buch ist eine gute Einführung in die Programmierung mit C++ AMP. Leider ist das Buch zum Zeitpunkt der Rezension das einzige Buch über C++ AMP, so dass ich es nur mit anderen Büchern über CUDA und OpenCL vergleichen kann. Aber den Vergleich hält das Buch stand und hat sich solide 4 Sterne verdient. Die Reihenfolge fand ich in Kapitel 2 ein bisschen ungünstig, aber das hat sich im nächsten Kapitel wieder gelegt. Kapitel 2 sollte man beim ersten Lesen überspringen und erst am Ende lesen. Denn Kapitel 2 ist über das schon etwas kompliziertere n-body Problem und auch noch mit DirectX-Grafik. Das ist didaktisch nicht klug, das am Anfang zu behandeln. Dann gibt es da noch ein paar Kleinigkeiten, wie z. B. das ständig std::vector<> und std::shared_ptr<> im Programmcode geschrieben wird. Mich stört das “std::”.

Aber alles in allem ist man nach diesem Buch bereits ein fortgeschrittener GPU-Programmierer, der schon ein gutes Verständnis von der Thematik hat. Notwendig sind Vorkenntnisse in C++, STL und der parallelen Programmierung. Die Beispielprogramme wurden an VS 13 angepasst.

[Rezension] Das beste Buch über OpenCL 1.x

February 23rd, 2015

Rezension des Buchs: Matthew Scarpino. OpenCL in Action: How to Accelerate Graphics and Computation. Manning. 2011.

Für mich persönlich ist dieses das beste Buch, um OpenCL zu lernen. Es ist eine hervorragende Einführung in OpenCL 1.1.

Das Besondere an diesem Buch ist, das der Autor versucht, die Programme wirklich zu erklären. Man erfährt die Gründe für seine Design-Entscheidungen. Das Lernen von OpenCL ist keine so einfache Sache. Bevor man zum Programmieren kommt, muss man schon eine Menge Infrastruktur beherrschen. Meiner Meinung nach löst Matthew Scarpino dieses Problem hervorragend.

Die Beispielprogramme hingegen sind aus verschiedenen Themenbereichen, gut kommentiert und teilweise sehr mathematisch. Das störte mich aber nicht, denn OpenCL wird auch oft im Embedded Bereich eingesetzt, der oftmals sehr mathematisch ist, wie z. B. die Signal- oder die Bildverarbeitung.

Das Buch hat inzwischen allerdings schon ein paar Jahre auf dem Buckel. Die Performancetipps müssten inzwischen wohl auf den Prüfstand. Und auch das Kapitel über die Schnittstellen zu anderen Programmiersprachen, Aparapi, JavaCL, PyOpenCL sind wahrscheinlich etwas veraltet.

Aber das Buch enthält so viel Wissen über OpenCL 1.1, so dass es auch heute noch (Februar 2015) *DAS* Buch zum Einstieg in OpenCL ist.

P.S. Ich habe als technischer Editor an diesem Buch mitgearbeitet (siehe S. xvii).

[Rezension] Fortgeschrittenes ‘git’

January 29th, 2015

Rezension des Buchs: Mike McQuaid. Git in Practice. Manning. 2014.

Ich benutze git zwar schon ein paar Jahre, wollte aber mehr Hintergrundwissen haben und komplexere Abläufe kennenlernen. Das ist dem Buch zum einen gelungen, trotzdem habe ich irgendwie das Gefühl, das das nicht alles gewesen sein kann. Als Beispiel wollte ich wissen, wie man große Dateien endgültig aus dem Repository und aus der Historie entfernen kann. Auch wird “git replace” nicht erwähnt.

Nun gut, ich habe trotzdem viel aus diesem Buch gelernt und die Sachverhalte werden gut beschrieben und erklärt. Leute mit Grundwissen über git können dieses Buch mit Gewinn lesen. Experten werden aber nicht davon profitieren.


Copyright © 2007-2015 Jörn Dinkla. All rights reserved.

###ENDMATTER