Welche Applikationen verwende ich?

Eine Nicht-Entwicklerin frage mich, was denn meine Top-10 der Applikationen für den Mac sei. natürlich fallen mir aus dem Stegreif 10 Anwendungen ein, die man haben muss und ohne die ich heute nicht mehr wirklich zufrieden auskommen würde. Aber sind das alles Entwicklertools? hm. Dies veranlasst mich mal eine Liste und ein Updatescript zu machen, mit den Apps, die ich als Must-Have auf jedem Mac sehe und gleich welcher beruflichen Gesinnung man angehört gleichwohl generell empfehle.

Natürlich das Office Handwerkszeug
1) Pages
2) Numbers
3) Keynote

Lasst einfach diesen Excel-Scheiß hinter euch. Das bringt gar nichts außer schmerzen. Die Apple Suite ist gut und integriert sich perfekt in das Universum. Der Copy&Paste-Bug von Word treibt mich zudem zu Wahnsinn.

Ein bisschen Bildbearbeitung machen wir doch irgendwie alle heute, wenn auch nicht Professionell. Für mich haben sich zwei Tools als Must-Have herauskristallisiert:
4) Pixelmator (Affinity Photo kenne ich leider nicht, soll aber gut sein) https://itunes.apple.com/de/app/pixelmator/id407963104?mt=12 (€29.99)
5) Affinity Designer https://itunes.apple.com/de/app/affinity-designer/id824171161?mt=12 (€49,99)

Systemtools, ohne die ich definitiv nicht mehr am Rechner verbringen wollte:
6) Alfred https://itunes.apple.com/de/app/alfred/id405843582?mt=12 (Basis Version kostenlos)
Ist eine Launch-Applikation mit einigen Zusätzlichen Funktionen. Selbst in der Basis Version ist sie um Spotlight wesentlich überlegen. Das Öffnen von Apps, das locken des Bildschirmes, etc. geht mit wenigen Tastenanschlägen. Alt-Leerstelle und Anfangen “Kuc” einzugeben, schon kann man mit der Enter Taste die Kuckucksuhr öffnen.

7) Paste https://itunes.apple.com/us/app/paste-smart-clipboard-history/id967805235?mt=12 (€9,99)
Die Zwischenablage ist ein wesentliches Werkzeug der heutigen Betriebsysteme. Ausschneiden und Einfügen ist zur Produktivität wichtig. Leider ist immer der Teil gerade nicht mehr in der Zwischenablage, den man eben mit etwas neuem Überschreiben hat. Paste bietet eine schnelle und komfortabel Möglichkeiten die History der Zwischenablage anzuzeigen und mit einem klick wieder zurückzuholen.
8) Kuckucksuhr https://itunes.apple.com/de/app/kuckucksuhr/id1073128600?mt=12 (€0,99)

Für meine Newsbefriediung nutze ich
9) Reeder https://itunes.apple.com/de/app/reeder-3/id697846300?mt=8 (€4,99)
Ich lese Blogs. Viele Blogs zu allen möglichen Themen. Zum vernünftigen konsumieren ist ein RSS Reader wichtig. Reeder ist meine App. Sie ist wunderschön, sehr gut zu bedienen und mindestens genauso wichtig wie der Browser.

Als Texteditor immer noch den kleinen Bruder: irgendwie hat man dann ja doch mal was Textfile mäßiges offen.
10) TextWrangler https://itunes.apple.com/de/app/textwrangler/id404010395?mt=12 (Gratis)

So, das sind die 10 Standards die ich eigentlich zu den Tools wie Mail.app, Kalender und Contacts ziehen würde. Werden auf allen meinen Macs als erstes installiert.

Nun die 10 etwas spezielleren, die bestimmt nicht auf jeden passen.
Auf Platz 1 dabei ist unbedingt für jeden der etwas mit Konzepten und Ideenverwirklichung zu tun hat Omni Graffle. Ohne Graffle kein Zusammenarbeiten! Ohne Witz, Graffle ist mein visualisiertes Hirn.

11) Omni Graffle https://itunes.apple.com/de/app/omnigraffle-6/id711830901?mt=12 (€99,99)

Für Menschen mit externen Servern und die vor ssh nicht zurück schrecken empfehle ich ein kleines Menüzeilentool.

12) Shuttle http://fitztrev.github.io/shuttle/ (Gratis, open Source)
Shuttle ist ein Shortcut Menüzeilentool, das einen schnell auf einen SSH Server verbindet.

und unbedingt um schnell hin und herspringen zu können zwischen Finder und Shell:
13) cd to https://github.com/jbtule/cdto (Gratis, open source)
Hey, wer will nicht eben mal vom Finder-Fenster in die Shell springen. Andersherum geht das übrigens mit “open .”😉

Wer ein wenig mit Code und Konfigurationen zu tun hat, oder für Uni und Schule ein wenig Datentypist in JSON spielen muss, da gibt es für mich natürlich nur ein Tool:

14) Inspector Json https://itunes.apple.com/de/app/inspector-json/id993821152?mt=12 (€4,99)
Mit Inspector Json können JSON Dateien erstellt und bearbeitet werden, gleich ob diese als lokale Datei vorliegen oder von einem Webserver kommen. Das Benutzerinterface ist unkompliziert und intuitiv. Importfunktionen ermöglichen es Dateien schnell aus verschiedenen Quellen zusammenzustellen und per Drag&Drop richtig ineinander zu verschachteln. Einfach, schnell und schön.

Um auf Datenbanken zuzugreifen und mit diesen zu Arbeiten:
15) Sequel Pro http://www.sequelpro.com (Gratis)
16) Navicat essentials for SQLite https://itunes.apple.com/de/app/navicat-essentials-for-sqlite/id466727086?mt=12 (€39,99)

Für Freelancer und Stundeneintrager:
17) Timecop https://itunes.apple.com/de/app/timecop/id466285239?mt=12 (€4,99)
Ein Schönes Tool um die Zeit die man in Projekte steckt zu messen. Ohne großen Schnickschnack, zählt es einfach die Stunden und Minuten. Egal in welchem Fenster man gerade ist.

Zum schnell mal ein Script schriben und Testen
18) Code Runner https://itunes.apple.com/de/app/coderunner-2/id955297617?mt=12 (€14,99)
Ideal um mal eben eine Aufgabe zu programmieren oder eine Funktion zu testen.

Und zum platz auf der Eigenen Festplatte zu schaffen und um zu sehen welcher Ordner wieviel belegt habe ich zwei Tools im Einsatz.
19) Disk Care https://itunes.apple.com/de/app/disk-care-clean-create-free/id913724705?mt=12 (€19,99)
20) Free Disk Space https://itunes.apple.com/de/app/free-disk-space/id838744420?mt=12 (€9,99)
So, ich hoffe das bei der Auswahl meiner Standardtools ein wenig was interessantes dabei war. Für spezifische Anwendungen einfach nochmal nachfragen.

+++ Nachtrag +++

Zwei Anwendungen fehlen noch, eine, die ich seit längerem in Verbindung mit der Fritzbox verwende ist Frizzix. Damit habe ich Zugriff auf die Anrufliste was gerade über VPN von Unterwegs sehr praktisch ist.

Die Andere nicht erwähnte App kenne ich auch erst seit gestern, da mich ein Freund darauf aufmerksam machte. Kennt ihr die Batterie-Prüf-Tools, welche die Apple Genius-Bar Leute haben. Sowas gibt es auch für Consumer und wohl schon länger… Coconut Battery zeit die Ladezyklen vom Mac und vom angeschlossen iPhone. Sehr Informativ.

.REBOOT braucht Unterstützung!

Schlagwörter

,

„Ein guter Hacker ist jemand, der die Welt ein kleines bisschen besser machen will.“ – Stephan Urbach

Eigentlich wollt ihr direkt hier hin, aber ich erzähle wieso ihr das unbedingt möchtet.

Tomates Buch „Neustart“ ist eines dieser Bücher. Man liest es langsam und bedächtig. – Ich suche nach Ausdrücken, die nicht überkandidelt klingen, finde aber keinen Anderen passenderen als “ehrfürchtig”.
In gekonnter Sprache trifft er den Nerv eines Mindsets; einer Weltanschauung und eines Environments das mir nur zu bekannt ist. Tomate häkelt den Leser unfassbar gut in sein Werk ein. Holt ihn ab und trägt ihn davon. In extreme!

Ich muss gestehen es nimmt mich auf so vielen Ebenen mit. Nichts von meinem Leben ist in Aktion auch nur ansatzweise vergleichbar und doch erfühle ich jede Szene jeden Satz tief im Herzen. In den ersten Kapiteln und der Beschreibung seiner Jugend drifte ich oft ab, denke viel über meine eigene “Gruppe der Außenseiter” nach. Meine Gedanken werden verflochten. Ich muss viel über mich nachdenken. Ich weiß nicht ob dem Autor das recht ist, aber die Zeilen lassen den Leser sehr sehr nah an ihn heran.

Diese Nähe schafft es dann schließlich. Im laufe des Buches. Wahrlich ist es kein Motivationstrainer. Ich lese viele Passage zwei mal, weil ich abgedriftet bin. Ich bin oft beim lesen traurig und muss pausieren. Depressive Verstimmungen. Doch Gleichzeitig ist da dieses andere Gefühl, dieser energiegeladene, großartige Zustand. Nicht aufgeben. Gefühle des nicht allein zu seins. Diese großartige Menschen im weiteren Dunstkreis zu haben die Dinge vollbracht haben die es lohnt zu Bewundern.

Als ich Stephan Urbach zum ersten mal traf musste ich ihn knuddeln. Ein Gefühl das ich bei jedem einzelen Satz wieder und wider verspüre.

Dieses Buch ist neben der Darstellung von Telecomix und der Unterstützung der Opposition des arabischen Frühlings auch die einer ergreifenden Freundschaft.
Neben all dem ist es aber vor allem ein Meisterwerk über ein Teil unserer Generation auf der Suche nach Leben.

Sein Buch “Neustart” soll nun ins englische übersetzt werden. Ich bitte euch die Übersetzung zu Unterstützen. Dafür gibt es eine indiegogo Seite.
Bitte werft ein paar Euros ein. Es ist wichtig. Es ist ein tolles Buch!

Leihe mir keinen Zehner!, denn an 127 Tagen im Jahr zahle ich ihn nicht zurück!

Die Firma Boniversum Consumer Information besitzt keine Personen bezogenen Daten über mich. Dennoch liegt mein Scorewert bei 80.41%.

Das ist in sofern bemerkenswert als das ich momentan ziemlich liquide bin. Da gab es ganz andere Zeiten. Privatkredite, Firmenkredite, ach ich will da gar nicht von Anfangen… Fiese Zeit weit zurück in einem anderen Leben.
Zu dieser Zeit hatte ich jedoch einen Scorewert von über 90%. Kurz: ich habe in der „richtigen“ Gegend gewohnt. Der Unterschied zwischen Bad Homburg und Offenbach beträgt ~10%.
Interessant. Das ist doch das aufstrebende Hipsterviertel. Bei einer Miete um die tausend Euro auch nicht gerade Brennpunkt gefährdet.

Nun ja, leiht mir lieber kein Geld, denn ich kann ein 71.5 Tagen im Jahr es laut Boniversum nicht zurückzahlen.

 

Auch bemerkenswert ist, dass Deltavista GmbH mir mit einem positiven Eintrag von DocMorris (sofort online Bezahlt) einen Scorewert von 467 bescheinigt. Das ist ~65%.
Mit anderen Worten: laut Deltavista GmbH zahle ich geliehenes Geld an 127 Tagen im Jahr wahrscheinlich nicht zurück.

Ich habe bei DocMorris angefragt warum sie meine Daten weitergeben und welchen Vorteil dies ihnen bringt. Ich bin auf eine Antwort gespannt.

Auskunft über zu meiner Person gespeicherte Daten

Eigentlich sollte das hier ein alter Hut sein. Nach einem heutigen Artikel auf netzpolitik.org gibt es in Deutschland jedoch nur 5.000 IFG-Anfragen.

Das ist vielfältig nicht gut. Zwei Gründe möchte ich nennen:
a) Es muss wichtig bleiben, das staatlich gespeicherte Daten dem betreffenden Zugänglich gemacht werden und von diesem Recht auch reichlich Gebrauch gemacht wird.
Das führt zu b) nur eine maschinenlesbarer Staat kann dauerhaft für eine reibungslose, zügige und faire Abwicklung und Auslieferung der Daten sorgen. Es ist daher wichtig, das mehr Menschen das IFG nutzen. Dadurch wird es Lösungen geben müssen mit der Masse an Anfragen umgehen zu müssen. 5.000 ist keine nennenswerte Größe.

Ich selber habe erst am vergangenen Montag 17 Anfragen gestellt. Mich interessiert ob Daten zu meiner Person den jeweiligen Behörden übermittelt/erhoben wurden. Da ich vor einem halben Jahr mein Namen änderte ist dies natürlich besonders interessant. Sollte es Daten geben, so ist die Frage (und mein Recht) zu wissen an wen diese Daten übermittelt wurden.

Die Anfragen gingen an:
* Bundeskriminalamt, Wiesbaden
* Bundespolizei, Potsdam
* Visa-Warndatei, Köln
* Bundesamt für Justiz, Bonn
* Zollkriminalamt, Köln
* Schengen-Informationssystem, Wiesbaden
* Interpol, Lyon
* Homeland Security, Washington
* Bürgel Wirtschaftsinformationen GmbH Co. KG, Hamburg
* CEG Creditreform Consumer GmbH, Neuss
* Deltavista GmbH, Karsruhe
* Schufa Holding AG, Köln
* infoscore Consumer Data GmbH, Baden-Baden
* Landeskriminalamt Bayern, München
* Landeskriminalamt Hessen, Wiesbaden
* Landesamt für Verfassungsschutz Hessen, Wiesbaden
* Bundesministerium für Inneres, Wien

Vor allem bei den privaten Scoreing-Firmen ist es interessant und angefordert mir zu sagen woher meine Daten bei ihnen Stammen. Hier weiß ich das Daten vorlagen. Wurden diese mit der Namensänderung übernommen?

Das ganze Verfahren kostete mich ca. 30 Minuten (mit dem Spaziergang zur Post) und knappe 10 Euro. Es ist schon letztes Jahrtausend, dass ich die über den Postweg Anschreiben muss, andererseits können so die Daten auch nicht aus dem Internet getragen werden. Hat alles sein Für und Wieder. Bewegung ist aber an sich was gutes, sofern es nicht junge Hunde regnet.

Ich bin gespannt, wer Daten über mich besitzt und ob meine Namensänderung beim Landeskriminalamt angekommen ist. Schon merkwürdig, aber seit dem ich geheiratet habe werde ich nicht mehr per se am Flughafen auseinandergebastelt. hm, coincidence? – Wahrscheinlich nur mein Verfolgungswahn. Seit ~7 Jahren der selbe…

Eigentlich bin ich auch darüber gespannt wer von den 17 zurückschreiben wird. Verpflichtet dazu wären sie alle.

Am Rande beschäftigt mich die Frage, was passiert, wenn ich z.B. in einem laufenden Abhörverfahren bin, da meine Telefonnummer in einem Handy gespeichert war das dem Besitzer auf Grund einer Wohnungsdurchsuchung abhanden gekommen ist. Müssten die Behörden das an mich zurück melden? Oder dürften sie mit „keine Angaben“ lügen?

Datenschmutz.de sagt dazu:

Ein Eckpfeiler des durch das Volkszählungsurteil definierten Datenschutzkanons ist ein relativ weitgehendes Auskunftsrecht der in den Datenbanken erfassten Personen. Die generische Regelung steht in §19 BDSG, der verlangt, dass auf Antrag kostenfrei Auskunft gegeben wird über gespeicherte Daten, deren Herkunft, eventuelle Übermittlungen und den Zweck der Speicherung (was idR auch die Rechtsgrundlage umfassen wird). In §19 (2) BDSG gibt es dann zahlreiche Ausnahmetatbestände; so kann Auskunft verweigert werden, wenn die Funktion der Behörde oder die öffentliche Sicherheit und Ordnung gefährdet wäre.

Demnach dürfte die Aussage verweigert werden, jedoch keine Falschausagen getätigt werden, richtig? Wer hier Antwort weiß, bitte in die Kommentare.

So oder so. Die Auskunft über unsere Daten ist ein Grundrecht und jeder sollte von Zeit zu Zeit davon Gebrauch machen. Die Kosten sind überschaubar und der Aufwand dank Generator marginal.

 

Technische Lösungen für ein soziales Problem

Dies ist der dritte Teil einer Europatrilogie. 

Teil 1: Warum hast du damals nichts gesagt, als Europa die Welt angegriffen hat?

Teil 2: Warum ihr auf mich schießen werdet

Utopia.
Wir heizten uns gegenseitig auf. Kacken uns an und wehren uns sinnbefreit gegen jede Hinweise zu unserem Verhalten. Wir mussten Stellung beziehen. Die Möglichkeiten waren zu vielfältig. Zu vielfältig für unseren Kleingeist. Wir sind rechts und wir sind links. Wir verlieren den Boden und klammerten uns an die einfachsten zu verstehenden Theorien.
Rechenspiele. Geht es uns allen besser wenn,…? Wie werden wir der Umweltthematik, des Miteinanders, der Armut, des Klimas, you name it… herr?

Unsere Meinungen sind geprägt von Persönlichkeiten, geprägt von Befindlichkeiten. Geleitet von Macht und Selbsterhalt. Wir können diese Frage nicht lösen. Emotional aufgeladen diskutieren wir im Kreise herum. Wohin mit Europa? Werden wir untergehen? Ist der Terror eine ernstzunehmende Bedrohung oder Instrument zur Machterhaltung? Angst als Saatgut gegen das Unkraut Diversifizierung.

Es sind Rechnungen. Wahrscheinlichkeiten. Formeln mit einer Masse an Faktoren. Wie können wir diese entscheiden, wenn wir sie noch nicht einmal begreifen?
Computer sind besser in diesen Dingen. Emotional unabhängig. Schnell. Gewissenhaft. Unsere Regierung sollte aus Programmierern bestehen, Aus Sicherheitsanalysten und Datentypisten. Welche Gesetzte notwendig sind und welche Handlungen darauf folgen müssen um ein für alle Menschen bestmöglichen Platz zum leben zu bieten muss berechenbar sein. Ich wählte Deep Blue als meinen nächsten Presidenten.

Unsere Gesetze und Handlungsweisen dürfen wir für eine positive Zukunft nicht einzelnen Akteuren überlassen und schon gar nicht dem Mop. Europa ist das Antibeispiel der menschlichen Schwarmintelligenz, hätte ich doch zu gerne an eben diese geklaubt.
Kausalzusammenhänge und überprüfbare Fakten. Computer sind unsere einzige Chance auf Gleichberechtigung, Wohlstand und Fairness.

Computer würden entscheiden Grenzen abzureißen, Staaten aufzulösen. Sie würden Zug um Zug wie ein Schachkomputer die uns vernichtenden Sünden aus dem Spielfeld befördern. Sie würden uns bevormunden und es uns taktisch unmöglich machen diesen Planten zu zerstören. Sie würden das Höchstmaß an Transparenz bieten – jeder verworfene Zug sichtbar, und der einzig logische im Zusammenhang auszuführen.
Wir stehen mit ihm auf der Siegerseite. Voller Wohlgefallen. Miteinander.
Es war so weit, wir brauchten technische Lösungen für unsere sozialen Probleme. Es war die Zeit als wir mathematische Grundgesetze endlich akzeptierten. Gott war tot und mit ihm vielen die Regierungen.

Warum ihr auf mich schießen werdet

Dies ist der zweite Teil einer Trilogie. Teil 1: Warum hast du damals nichts gesagt, als Europa die Welt angegriffen hat?
Teil 3: Technische Lösungen für ein soziales Problem

Eure Energie des unbändiges Hasses wird, einmal aufgeschaukelt, nicht vor meiner Tür halten. Auf eine sehr deutliche Weise ist mir das bewusst.
Woran ihr euch aufhängen werdet weiß ich nicht, vielleicht an meine Religionsverachtenden Einstellung, vielleicht an meiner Musik. Eventuell auch die Kunst die ich (nicht) aufhänge oder meinen Äußerungen im Netz. Vielleicht weil ich ein Sympathisant gleichgeschlechtlicher Beziehungen bin, oder auch einfach nur weil meine Sprache seltsam stotterig ist. Eventuell weil ich zufällig der falsche Person auf Twitter folge.
Den überwiegenden Teil der Zeit in der man sich Gruppiert war ich in der Gruppe der Außenseiter. Ich wuchs auf in der Annahme ich sei “anders”. Das ich diese Lehre später zu Marke machen konnte war mein Glück. Das Glück sehe ich massiv gefährdet. Die Kunst anders zu sein kann in einem so voller Hass geladenen Land schnell zur Gefahr werden.

Wohin lenkt ihr euern Hass und eure Gier nach publizistischer Aufmerksamkeit? Euren Spaß daran wahnwitzige Ansichten aus fehlgeleitete Rückschlüssen zu liken, wenn ihr alle Menschen anderer Herkunft aus euerer Europafestung verbannt hab, wen nutzt ihr als Vehikel gegen eure Unsicherheit? Welches Objekt wir Anlass um euch in eurem braunen Sumpf selbst zu stärken. Wie setzt ihr euren Hass fort?

Ich habe Angst ihr werdet an meiner Tür klopfen. Meine Wohnung durchwühlen. Anti-europäische Pamphlete finden, oder diese mir unterschieben. Ihr werdet mich abführen. Ihr werdet das im Inneren operierende Militär vor meinem Haus positionieren. Ihr werdet eindringen. Mich auf den Boden drücken. Vielleicht werdet ihr mich auf Grund falscher Literatur im Schrank erschießen.

Wenn ihr jetzt schon nicht reflektieren könnt, wie dann erst wenn es darum geht anders denkende einzuordnen. Die Lage jetzt ist dagegen klar. Wir als das reichste Land können und müssen jeden aufnehmen. Wir müssen uns überwinden die Schubladen der “Herkunft” abzulegen. Wir brauchen Systeme um Ausgleich zu schaffen. In Deutschland in Europa in der Welt. Das ist das selbe Prinzip. Wir verkakken es dank euch Spasten auf der ganzen Linie. Die Konsequenz ist einfach: mit unseren Waffen erschießen wir die die noch nicht verhungert sind. Wir fallen zurück ins Neandertal. Wenn der glücklichere Gewinnt, oder der der am meisten sinnlos mobilisieren konnte, dann… tja, dann verliere ich. Denn ich passe nicht in euer System. Nicht in eure Denkweise. Ihr bin gefährlich. Ihr werdet mich holen und ihr werdet mich töten. Ihr werdet mobil gegen mich machen, weil ihr zu doof seit es zu verstehen. Meine Texte werdet ihr nicht lesen, sondern auf quadratischen Bildern vor Hexenflaggen eure Idiologien posten. Tausende und abertausende von likes werden euch anheitzen.

Ich sehe mich in ein paar Jahren auf der Flucht vor euch rechten Idioten. Ich werde nicht mal Zeit haben eine Tasche zu packen. Ich werde laufen, laufen laufen und dann vor eine riesigen europäischen Mauer stehen. Ich werde hier nicht raus kommen. Ihr werdet auf mich schießen, wenn ich nicht im Meer ertrunken bin.

#itsnotmyeurope

Beim ersten Kaffee schaue ich ins Netz und werde von eine Scheißewelle überrollt. Alte Schulkollegen teilen und liken. Rechter scheiß der untersten Art. Mir wird bewusst: ihr werdet es sein. Ihr werdet in the name of meinen Platz beanspruchen. Wie die tollwütigen Tiere.

Warum hast du damals nichts gesagt, als Europa die Welt angegriffen hat?

Ich habe keine Kinder. Somit werde ich nie meinen Enkeln Erklärungen schulden. Ich habe keine Generationsverantwortung. Habe nie einen Generationenvertrag unterschrieben und lebe egozentrisch. Ich werde alle meine Schulden alleine Zahlen müssen. Und ich hinterlasse euren Kindern meinen Müll. Ich versuche das zu drosseln.

Einzig mir und meinem Leben bin ich schuldig einen Dienst zu erweisen: Freude, Glück, Wohlstand, Fairness, Vorantrieb sind einige der Attribute die ich denke erfüllen zu müssen. Jede bedingt sich und ist des gegenseitigen Ausschlusses gefährdet.
Ich kann mich nicht auf kosten anderer Freuen, denn das schließt die Fairness aus. Glück zu erleben geht in der Summe nur in Gesellschaft. Wie schmal ist der Grad zwischen Wohlstand und Reichtum und bedingt dieser doch auch gleich eine starke Selbstkontrolle des Vorantriebs. Wohin? Welche Ziele? Alles muss sich in sich schließen lassen. Ein endloser Loop mit Fransen zum daran reiben.
In meinem Leben schaffe ich das für mich selber relativ gut. Die stetige Frage wirft mich in die ein oder andere Depression, Der Zweifel ist imminent. Ich werde älter und es wird schwieriger zu trennen. Schwieriger die Dinge auseinanderzuhalten. Ich weine manchmal. Es übermannt mich und ich denke den Faden verloren zu haben. Ich renne ihm nach; habe da meine Taktiken die mich zu gleich krank machen. Ich erhole mich und erneuere mich. Leben nennt sich das.

Dauerfeuer, Dauerloop, Midlifecrisis um dann im Sonnenaufgang völlig ich zu sein. Im reinen mit, mit meinen Gefährten und der Zeit. Ich habe die Ruhe und Weisheit Bestrebungen zu testen. Mich reinfallen zu lassen und wieder gehen zu lassen. Wir brauchen Moden. Wir müssen Dinge glauben können und gegen nichts in der Welt eintauschen wollen, solange bis wir sie eintauschen müssen. Ideen skalieren nicht, sie sind Individuen. Wir tragen sie feierlich und mit erhobenem Haupte zu Grabe.
Ich verteufle diese in meinem Leben gegangenen Extreme nicht. Voller Inbrunst war ich Teil der einen oder anderen Bewegung. Meine Sozialphobie habe ich durch den gelebten Versuch einer Utopie bekämpft. Hier neben mir steht ein Köfferchen. Ich habe kleine Pflänzchen von jeder Idee aufgehoben. Saatgut für die Bevölkerung ganzer Planeten. Gegenüber steht eine Zimmerpflanze die ich täglich pflege. Sie ist noch jung und wächst erst noch heran… ich bin kein Ast mehr von dieser. Ich bin Beobachter geworden. Wenige Idee skalieren in ihrer Grundform ewig. Die meisten werden bei der Transformation in etwas größeres zerstört. Zu viel Individuum vielleicht… Ist ja auch egal. Ich beschneide meine eigene Version. Zeige sie gerne her, ermutige andere ihren eigenen Ableger zu ziehen.
Meiner Schuld zuliebe weiß ich das ich ewig vorangehen werde. Suchen, Gestallten, Enttäuschungen als Chance begreifen. Meine gelernten zerstörerischen Mechanismen anwenden um mich mühsam herauszuziehen aus der Nacht um in der nächsten Mode, im nächsten Sonnenaufgang am Strand zu tanzen. In völliger Überzeugung. In Liebe!

Mit 38 wird das alles besser. Ich weiß es geht weiter. Das wusste ich mit 16 nicht. Wenn ich falle, dann freue ich mich auf den nächsten Hype. Begreife ich das langsam als gefundenen Jungbrunnen. Ich komme klar und bin Glücklich. Mein Antrieb hält meinen Wohlstand, den ich gerne teile. Und ich umgebe mich mir weniger, aber für mich wichtigeren Menschen. Ich meide seit neustem aktiv die, zu denen ich nicht fair sein kann. Die, bei denen ich meiner Überzeugung nicht gerecht werde. An denen ich es nie geschafft habe über meinen Schatten zu springen.
Du magst sagen ich gehe den Weg des geringsten Wiederstandes? Mag sein. Aber meine ungewollte Boshaftigkeit gegenüber Arschlöchern ist nicht fair. Es wirkt gegen mein Glück und wirft mich wieder und wieder zurück. Es sind die sich bedingten Einflüsse der mir wichtigen Eigenschaften. Ich kann nur Lieben, wenn ich hasse. Ich hasse für mich. alleine. Ich tausche die Freuden. Mir Dir und den Deinen. Soweit zur Theorie.

Von Tag zu Tag wird es schwieriger. Es kommt in mein Umkreis. In meine Privatsphäre. Es nimmt sich den Platz den ich nicht geben will. Meine Komfortzone ist durchbrochen und ich fühle mich beengt. Eine Komfortzone, die mein Leben lang als gegeben galt. In der ich mit mir viele Kämpfe austrug, aber keinesfalls und jemals mit aufgezwungenem Außenwelten. Schwierig bin ich nicht, lässt man mir meinen Platz in mir. Es gibt Bereiche da ist es nicht einfach sich zu schützen, Es gibt Situationen in den ich Menschen in diese Zone reinziehen muss um mich von der Zerstörung von außen zu bewahren. Aber alles womit ich mein Leben lang nie Probleme hatte.

Und dann kommt es von unerwartet. Von uns spät 70’gern völlig unbekanntem. Wir, die Kinder der Familien, der Reihenhäuser, der Schulfreunde ab 15:00 – Mittagsruhe und Nachbarschaft-Hallo-Bekanntschaft. Der Nutella oder Nuspli. Politik geht bei uns um Stadtplanung. Um die systematische Schließung unserer Clubs. Unserer Spielplätze und Therapiezentren. Es sollte sich um das wichtige Soziale handeln. Um Fragen der Regelung und Umgang und Regulierung. Kurz: Wir haben uns darauf eingerichtet mit uns selber beschäftigt zu sein.

Wir, wir Kopfschüttler über kriegerische Völker. Die die wir Panzer im Fernsehen sehen und mit der Frage aufgewachsen sind was passieren wird, wenn einfach keiner hingeht.
Wir, die wir uns aus der Führung unserer Intendanten fragten, ob man Witze über Hitler machen kann und uns freistrampelten. Schnelllebig, denn wem das Lachen nicht im Halse stecken bleib nimmt die Dummheit der Deutschen nicht ernst. Gefährlich.

Plötzlich kommt der Terror Terror und vermiest mir alles! Da kommen plötzlich Leute zum Vorschein die mir Angst machen. Die mich maßlos verärgern. Die mir erzählen müssen das ich “zum Wohle, von…(von was eigentlich)” meine Komfortzone aufgeben muss. Da stellt sich dieses für uns doch ehemals zurückhaltendes Land mit einem völlig verblödeten dicken Kanzel aus der Provinz Bonn plötzlich hin und dringt in mein Privates ein. Lässt mich mit seiner ganzen Außenpolitik unwohl in meiner Haut fühlen. Mischt sich ein. Überall.

Länder sollten wir überwunden haben. Regierungen sollten lokales Organ eines Europas sein. Und dann schaue ich mir das an. Dieses Europa. Dieses ummauerte, mordende, menschenverachtende Ding auf dem Globus. Und dann wird mir schlecht. Es ist nicht mein Europa. Ein ängstliches. Ein unwissendes. Ein völlig überfordertes Europa. Wir sind gemein. Nicht “die da oben”, es sind wir. Du, ich, der dir gegenüber sitzt. Wir schreien nicht laut NEIN, sondern OCH JA. Na gut.

Ein Europa mit einem Deutschland das aus Angst nicht zu wissen was es tun soll versagt. Das sich nicht öffnet, nicht wagt, Den Absturz und den Krieg offen in kauf nimmt aus Mangel an Ideen. Mir scheint es so als haben wir in keiner Weise irgendwelche Ideen und suchen geschichtlich was bremst und zerstört: “oh ja, hmm. drittes Reich jetzt noch größer, könnte funktionieren…”. Wir bremsen, geben immer mehr ab um ein Stückchen zu behalten. Ein Stückchen unseres inneren Gartens. Wir freuen uns nicht mehr auf Chanchen. Der nächste geile Hype ist uns egal. Bremsen statt vorankommen.
Ich spucke meinen Bildschirm an! Ich hasse euch. Ihr nervt mich alle. Ich bin so sauer. Auf mich auch. Auf Mauern und Schießbefehle. Auf fette Säcke. Ich bin sogar sauer auf Einhebelmischbatterien. Und doch, ich will nichts ändern an euch. Ich will nur das ihr verschwindet. Geht mit euerem Hass in den Wald und hasst beim sterben die Bäume.

Die Medien springen auf den Zug auf. “Oh geil. den Mop mobilisieren!”, ja da machen alle mit! Feini. Ich kotze! Ich weiß da ist kein Plan hinter. Aber Geld. Ich verurteile das nicht. Ich verurteile den Verbraucher. Ich verurteile Dich. Ich verurteile das Europa nicht von innen ausbrennt und verreckt. Ich verurteile das mehr von der Scheiße funktionieren kann. Ich verurteile das das Platz einnehmen konnte. Ich verurteile mich.

Und immer mehr glauben diesen Mist. Der böse Moslem – ist doch auch nur Sinnbild. Schaut euch die Scheiße an, das ist ein super Brettspiel. Hier ein bisschen Inland beschäftigen, dort schon mal Mauern hoch ziehen. Panzer strategisch positionieren und ach ja – Teile der Antwort würden die Bevölkerung verunsichern. Und währenddessen ist Wohlstand zu Reichtum geworden. Welche Drohne kaufen wir uns morgen? Wie konnten all die menschen damals Hitler nachrennen? Zur Zeit kann man das wunderbar studieren.

Der Staat war der letzte den ich in meiner privaten Komfortzone erwartet hätte. Warum konntet ihr mich nicht weitere 30 Jahre in Ruhe lassen. Ich wollte doch eh nicht alt werden. Dann hättet ihr machen können was ihr wollt. Aber „der Staat“ das seit ihr alle.

Das ist nicht mein Europa.
Ich will nicht länger als Bürger dieses Kontinentes wahrgenommen werden. Aus meiner Bubble heraus waren die meisten Menschen doch irgendwie okish. Ich war immer Menschenoffen. Hab hier und da mein Fett wegbekommen und bin enttäuscht worden. In Summe aber habe ich so die tollsten Gefährten kennen gelernt. Darauf habe ich keine Lust mehr. Denn immer mehr treffe ich diese Arschlöcher von euch. Ich kann nur gemein zu euch sein. Ich habe lust Gewalt gegen euch anzuwenden. Was wiederum, nun ja…. nicht dem entspricht wie ich leben möchte. Ergo ist die Konzequenz zu vereinsammen. Mit geschlossenen Augen sich nur noch darüber zu freuen niemandem mehr Rechenschaft ablegen zu müssen.

Ich sehe die Tagesschau und analysiere Bild und Ton mit meiner Frau zusammen. Versuche der Idiotie zu widerstehen. Was ich treffe da draußen ist Ignoranz, oder Fanatismus. Ich kotze auf euch. Und wenn ich hier nicht schnell abhaue, dann verstoße ich gegen meine Bringschuld von Freude, des Glücks, des Wohlstandes, der Fairness und des Vorankommens.

Wir lassen diese ganze Scheiße zu. Ich lasse diese ganze Scheiße zu. Aus Bequemlichkeit und Altersstarrsinn. Ich bin in der BRD geboren und lerne zum ersten mal wie es ist eine Mauer um sich zu haben. Aber hey, die ist ja in anderen Ländern. Ich gehe Laub aus meinem Garten rächen. Wir haben versagt. Tragen wir es zu grabe und hoffen auf die nächste Utopie.

Dies ist der erste Teil einer Trilogie. Teil 2 Teil 3

Vortragsaufzeichnungen des Chaos Computer Club jetzt offiziell auf den Apple TV

Schlagwörter

, ,

Am 03.Januar dieses Jahres ging die CCC Tv App erneut nach erster Ablehnung in den Review Prozess. Eine Gruppe aus Mitgliedern des Frankfurter CCC hat sich dazu entschieden die Vorträge die Apple nicht haben möchte mit entsprechendem Hinweis zu markieren.

Simulator Screen Shot 18 Dec 2015 17.19.28

Wenn man eines der 8 Videos auswählt erscheint Erklärung warum der Beitrag nicht sichtbar ist und vor allem unter welcher Adresse man diesem im Browser sehen kann.

Screen Shot 2016-01-14 at 09.46.18

Dadurch soll eine breite Aufmerksamkeit auf die Thematik der geschlossenen Systeme gelegt werden.

Nach fünf ganzen Tagen Review wurde die App am 8. Januar erneut abgelehnt. Es folgte sofort eine durch Apple initiierte Telefonkonferenz in der ich nochmals die Gesinnung des CCC darlegen konnte. Ebenso sprachen wir über Zensur und die klare Darstellung der Positionen.Auch sprach ich die Quelle der Videos an und verwies auf die regelmäßigen Updates und ging mit dem Mitarbeitern durch den auf Github liegenden Code.

Die App wurde im Anschluss freigeschaltet. Laut Apple soll es keine weiteren Eingriffe in die Inhalte geben, die acht Videos bleiben jedoch gesperrt.

Eine Pressemitteilung liegt drüben beim CCC Frankfurt.

 

Auszug aus einer persönlichen Stellungnahme von mir:

Der Ausgang der Geschichte ist positiv und den “Kampf” mit Apple lohnend. Meiner Ansicht nach ist das Gespräch und der offene und vor allem vehemente Dialog mit den Unternehmen entscheidend für unsere Rechte.

An dem Wandel von Apples Entscheidung hat natürlich die Reputation des CCC schuld. Es ist nicht alles gut! Kleinere Anbieter ohne diese Reputation und Durchhaltevermögen werden weiterhin an dieser Willkür scheitern. So wird es weiterhin unsere Aufgabe sein mit diesen Unternehmen zu sprechen und Fairness durchzusetzen. Vielleicht auch um ihnen die Möglichkeit zu geben mit Konsumenten zu reden.

Ich bin davon überzeugt, dass dies nur der Anfang war. Die Mediale Welt prägt sich mehr uns mehr durch eine von Unternehmen regulierte Distributionsmöglichkeit. Apple, Google, Amazon, … Durch die gegebenen Möglichkeiten der einfachen Veröffentlichung entstehen auch Kehrseiten. An diesen Fronten müssen wir weiter kämpfen und für eine klare Kennzeichnung und gegen eine Verzerrung der Tatsachen kämpfen.

 

Die App kann aus dem AppStore des Apple TV geladen werden. Suche nach „CCC tv“

appstore

JavaScript Tutorial : map reduce on collections – avoid nested iterations like foreach

This is a possible solution for a module that solves a problem from a real life implementation my company have today. The code is perfect to show some functional programming styles, that is small enough to show in a blog post.

Download

You can download the code and play with it. If you have some improvements please share it with me.
You’ll neede node >= 4 to run this tutorial. All Anotations are in the Sourcefile, too.

Description

One ordering system (A) should commit the order to a vendor system (B). A is a modern scripting framework, fully RESTIfyed. Mobile Apps talk to this Service to place and pay orers. B is an old fashion 16-Bit single-core system-on-a-chipm, like a softdrink automat.

The automat doesn’t understand JSON or XML. It wants to get the order in an ugly but powerfull custom format. To understand the implementation, you have to understand the machine first. The softdrink automat has 16 Slots with different drinks in it.

To proceed an order it have two data fields to submit from the app to the machine:

  • validOrder
  • priceOrder

validOrder is a 16-Bit STRING-value that indicated the slot of the machine. For every bought product the corresponding bit must be set to high. For example: to get a „Mate“ out of this maschine validOrder must be: 0000000000001000. To get a Mate and a cold Beer validOrder must be set to: 0000000010001000.

priceOrder must be set correctly, too. The priceOrder is an array-like STRING of cents onto the right array index. Let’s say a Coke costs $ 2.50. That the first position (from behind) must be 250. For our example with the Mate ($ 2.50) and the cold Beer ($ 2.80) the priceOrder array should be: 0,0,0,0,0,0,0,0,280,0,0,0,250,0,0,0

We can not look inside the maschine, but we belive that the input will be pared in c to int and pushed to a shift-register to turn on the motors of the slots.

More than one product: Ok, let’s say a friend comes in and wants a beer, too. The validOrder is still 0000000010001000, but the price has to be increased to: 0,0,0,0,0,0,0,0,560,0,0,0,250,0,0,0 because 560 is 2 * 280, thats the cent of a beer for $ 2.80. The validOrder must be the same, because it triggers only the active slots.

So far so good, but our modern ordering system does not know anything about slot positions. Hm, we are dealing with so called PLU (price look-up code) Luckily we can set the PLU like we want, so we define a table of plus that are the power of two.

Coke             1
Sprite:          2
Mate:            4 
Water:           8
Fanta:          16
Bionade:        32
Red Wine:       64
Beer:          128
Ginger Ale:    256
Tonic:         512
Orangina:     1024
Fritz Cola:   2048

Different Thoughts

Well my first thought was a functional programming one. I found is reasonable to map/reduce the PLUs to it’s corresponding bit values, while my colleague was more on the iterating side of this town. Well nothing is more or less correct. One or the other way is good. There is no one final solution to this problem. There are many ways. I present one way in this post, a approach that i do like the most. That does not mean that this is the best one.

Implementation

I implement the functional way here to demonstrate the approach of functional units. Feel free to do a nice and clever way of your own and share it with me. I like to see other solutions and I really like to read code.

I will annotate the source to demonstrate and teach the approach. Feel free to comment the steps. It is mastering time, folks!

The code is written from top to bottom. Maybe it is not like i would commit into the corporate SCM, but it will show how I think while coding and more how functional programming in JavaScript supports me.

The Code

We use let and other stuff from modern ECMA script

"use strict";

Modules we use

let _ = require('underscore')
    ;

Pre-Requirements

a order is placed, we habe a array of PLU’s 1 x Code 2 X Beer

let order = [
      {plu: 1,   price: 150}
    , {plu: 128, price: 280}
    , {plu: 128, price: 280}
    ];

In this example we habe a 16-Bit vendor machine

const BITS = 16

First thoughts about how we can solve the porblem.

We habe two separate outputs. The calculation of valid is diffrent to the calculation to price. So I will seerate them from each other. That will be good for testing and debugging, too. I wrap them in functions first, befor I implement the rest. A good style is to do the underlaying mechanism first. My function design is to call each of it by a single PLU.
I have to implement two functions:

  • getValidationStringForPLU
  • getPriceArrayStringForItem

Transform a PLU into its binary

Parameter: PLU (the product PLU) Parameter: padding (a length of the returned string)
Usage: getValidationStringForPLU(plu, BITS); The result for 128 is '0000000010000000'

let getValidationStringForPLU = function getValidationStringForPLU(plu, len){
    /** 
     * Because the plu is in the power of two, we just need to transform it into the 
     * binary representation
     */
    var binaryString = (parseInt(plu) >>> 0).toString(2);

    // if a len is set, than pad the string to the right.
    if(len){
        binaryString = '0'.repeat(       // repeat to add a '0' 
            len - binaryString.length    // for the times that is the differences between
                                         // the current length and given len
        ) + binaryString;                // and than append the original string
    }
    return binaryString;
};

Transform a item with price into its price-array-position

Parameter: Item (the product object) Parameter: size (the size of the returned array)
The result for 128 is '[ , , , , , , , , 280, , , , , , , ]'

let getPriceArrayStringForItem = function getPriceArrayStringForItem(item, size){
    var price = new Array(size);
    /**
     * The position in the array is the product from: 
     * BASETONUM(LOG(PLU, 2), 10)
     * But: Position 0 is the last, and position 16 is the first place in the array, so
     * turn it around  with ABS(current - size).
     */
     let position = Math.abs(
        Math.log2(parseInt(item.plu))
        - (size -1)
     );
     price[position] = item.price;       // set the price to the korrekt position
     return price;
};

We map every plu to its own price array:

PLU - - - \
             [,,,,,,,,280,,,,,,,]
PLU - - - -  [,,,,,,,,280,,,,,,,] ---> [,,,,,,,,560,,,,,,,250]
             [,,,,,,,,,,,,,,, 50]
PLU - - - /

This can be done asynchron and does not need any other requirements. You can do it on parallel or on different machines. This is the MAPPING part. Later on I will show the REDUCEING part of the m/r, because I need something to reduce the arrays into a single one. But how will the reducing work? It will need some ‚processor‘ that knows what to do. The smalest piece i can imagine is (well i can image a photon or a hicks, but not in real life – and that is real life code…) to sum up two arrays. More specific what i want to have later on is a function that adds every element in an array to the same position of another array.

sumPrice will add a price array to another. That is my smalest unit – the precesor of the reduce.

I could use a function like: let sumPrice = function sumPrice(pricesLeft, pricesRight){ .. } …, but I prefere Prototypes for simple tasks on Objects. We have an array, and want
to add another array to it, so why don’t extend the Array.Object with this functionality.

Array.prototype.sumArray = function(arr) {                      // Prototyping Array
    var sum = [];                                               // a Temporary new Array 
    if (arr != null && this.length == arr.length) {             // check validation
        for (var i = 0; i < arr.length; i++) {                  // itterate every element
            /**
             * Add the element to the temporary array 
             * with the product of both elements or 0
             */
            sum.push((parseInt(this[i]) || 0) + (parseInt(arr[i]) || 0));
            /**
             * !!! ATTENTION
             * Yes, I could override the elements in 'this', instead of returning the new 
             * array. But would it be more readable? I expect a returning result from a 
             * function call.
             * Maybe I should rewrite it that it behaves exactly like pop() and push() 
             * later on. 
             */            
        }
    } else { console.error("missmatch array summarising", this, arr); } // loging
    return sum; // return the temporary array as a new result 
};

Now I have all I need! I can implement the calculation part

// first I get the valid-string of all items, therefore I have to prepare the collection
let uniqueProductPlus = _.unique(       // each plu MUST be quniqe
    _.map(order, function(item){        // map the orders to get only the PLU
        return item.plu;
    })
);

Get Valid-Order

Because every plu is now unique and in the power of two it is possible to sum it p. And get the binary string at once. The calculation is easy: Coke 1 = 00000001 Beer 128 = 00010000 so a Coke and a Beer is 1 + 128 = 129. And 129 in binary is : 00010001

let validOrder = getValidationStringForPLU(
    // count all PLUs together
    _.reduce(uniqueProductPlus, function(n, memo){ return n + memo; }, 0)
    // padding to 16
    , BITS
);
console.log( "Valid Order:", validOrder );  // <- Eh, thats the whole trick.😉

ok fine, whats next. 50% done. Now, I need the price array…

Get Valid-Price

I should slightly do the same, but on all PLUs. First I’ll map them all into price arrays like described above, …

let validPrice = _.reduce(priceArrays, function(n, memo){   // reduce all arrays
    return memo.sumArray(n);                                // by the processor sumArray
                                                            // with the last result.
}, new Array(BITS));                                        // up from an empty array.
console.log( "Valid Price:", validPrice );  // <- Year! Print it out

CONSOLE OUTPUT

Valid Order: 0000000010000001
Valid Price: [ 0, 0, 0, 0, 0, 0, 0, 0, 560, 0, 0, 0, 0, 0, 0, 150 ]

Postscriptum

I hope this brings a bit more fun to functional programming without side effects. node.js and swift are really good language for data-crunching tasks like this. It is so much better for to „think in a language“. Remember: divide a Problem into single units and than implement each unit from the bottom up to the solution.