Mac-App Entwicklung, Stand 2019

Vorgestern kam ich auf die Idee, eine kleine App, später mehr dazu, zu bauen, mit der ich meine Zwischenablage besser managen kann. Da ich mir schon dachte, dass man dafür bestimmt Low-Level-Systemkram machen muss und naja, ich hab echt keine Lust auf Electron oder so, entschied ich mich dafür Xcode zu starten und es als native Mac-App zu bauen.

Boah, war das demotivierend.

Also zum einen ist es ewig her, dass ich Xcode das letzte Mal benutzt habe und Objective C kommt mir wieder vor, als hätte ich es nie geschrieben, dabei habe ich mal zwei Jahre lang quasi Vollzeit iOS-Apps gebaut! Kurios, wie schnell man sowas vergisst.

Andererseits habe ich in den letzten Jahren auch vier Versionen Swift verpasst. Ganz im Gegenteil zum Rest des Internets, denn immer wenn man etwas googelt findet man Stack Overflow-Antworten, mit diversen Updates und vier Codeblöcken in allen Swift-Varianten.

So als Außenstehender kommt mir das echt ganz schön bekloppt vor, wie man innerhalb von ein paar Jahren die Sprache so dermaßen umwerfen kann. Ich dachte ja von Anfang an, dass ich mir erstmal Zeit lassen sollte, bevor ich mich in Swift einarbeite. Im Nachhinein war das anscheinend die richtige Entscheidung. Wahrscheinlich werde ich es jetzt nie tun, denn einerseits mache ich gerade mehr JavaScript und andererseits ist Swift mittlerweile so eine verschwurbelte fette Sprache geworden, dass ich wahrscheinlich mindestens 2-3 Tage bräuchte um da rein zu kommen! Da hat man ja keine Lust drauf.


Weil mich Swift zunächst abschreckte, entschied ich mich also zuerst, die App in Objective C zu bauen. Nachdem man ein paar eckige Klammern getippt hat, ist man da ja schnell wieder im richtigen Kosmos. Leider fand ich hier zu meinen Fragen auf Google oft nur Antworten von 2007 und älter, die unter modernen Mac OS-Versionen nicht funktionierten. Danke, Steve Jobs.

Nachdem ich nach 10-minütiger Recherche keine Möglichkeit fand, zuverlässig globale Shortcuts zu definieren und mir immer nur soffes/HotKey vorgeschlagen wurde, wechselte ich also doch auf Swift.


Swift hat, wie gesagt, das Versionsproblem, und dass Optionals für mich die neuen Pointer sind, etwas was ich wahrscheinlich erst verstehen werde, wenn ich in 15 Jahren einen witzigen Comic finde, der sie erklärt.

Immerhin eignete sich Swift doch ganz gut dafür, schnell ein paar Code-Schnipsel zusammen zu kopieren und meine tolle App-Idee umzusetzen. Ob wir noch große Freunde werden, weiß ich nicht.

Vielleicht liegt’s aber auch einfach an der Mac-Entwicklung, für die sich einfach keine Sau interessiert — gefühlt wird jede Stack Overflow-Swift-Frage immer nur aus dem iOS-Blickwinkel beantwortet.


Aktuell habe ich zum Beispiel noch das Problem, dass ich die App nach jedem Build & Run frisch unter Privacy -> Accessiblity freischalten muss, damit meine Hacks funktionieren. Keine Ahnung, was das soll.

Canon EOS RP

Etwa ein Jahr nach dem ich sehr von der Ankündigung der M50 gehyped war, und zwei Wochen nachdem ich sie enttäuscht wieder verkauft habe, stellte Canon am Donnerstag die EOS RP vor.

Sie soll wohl so eine Art günstige kleine Schwester der EOS R sein und kostet nur 1.499€ — enthält dafür aber auch nur den Sensor der 6D Mark II, nicht den von der 5D Mark IV, wie die große Schwester. Dazu kommen diverse Canon-typische völlig sinnlose Einschränkungen (Keine 24 FPS in 1080p, keine 30 FPS in 4K, etc), falsche Entscheidungen (die kleinen Schrott-Akkus von der M50, statt die guten von den DSLRs) und technische Limitierungen (immer noch kein Dual Pixel AF in 4K, schlechtes Eye-Tracking, etc), die die Kamera doch wieder nur mittelmäßig erscheinen lassen.

Das einzig gute an der Kamera ist, dass Canon den Preis mal ordentlich aggressiv platziert hat, ganz untypisch, und die RP nun immerhin die günstigste Full Frame Mirrorless ist. Leider halt mit Technik von vor zwei Jahren.

Bitte, 6D, halte noch ein paar Jahre durch, bis Canon endlich zur Vernunft gekommen ist und wieder eine innovative und gute Kamera auf den Markt wirft!

Quo vadis, M50

Wisst ihr noch, wie ich mich auf die M50 gefreut habe? So sehr, dass ich sie sogar zweimal kaufte? Tja, die Tage sind vorbei.

Der erste Urlaub ist vorüber, und wer lag die ganze Zeit im Hotelsafe — bitte lest nie Forenbeiträge darüber, wie unsicher diese Hotelsafes eigentlich sind — ? Die M50.

Einerseits will man im luftigen Sommerurlaub im November ja auch nicht immer zwei Kameras rumschleppen, anderseits kann man die 6D halt auch einfach in den Sand werfen und alles ist gut — eine Sache die ich mir bei der Kleinen nicht traue.

Insgesamt habe ich mich einfach noch nicht richtig angefreundet. Klar, sie ist schön winzig und so, aber die schlechte UX durch ihre Kleinheit macht das halt eher zu einem Negativ-Punkt. Ein weiteres Einstellrädchen fehlt einfach.

Dazu kommt, dass ich immer noch ständig den Fokuspunkt verstelle, obwohl ich abgeschaltet habe, dass er über das Touchdisplay verstellbar sein soll. Trotzdem passiert es manchmal. Hä? Das Umstellen auf Face-Autofokus (der wirklich gut ist) ist leider auch zu umständlich und vor allem, wenn es ganz schnell gehen soll nicht ohne Übung machbar.

Es nervt, dass es so lange dauert, bis das Bild im Sucher kommt, und er ist winzig.

Herrje.

Um im Zeitgeist zu bleiben, der gerade von Marie Kondo geprägt ist, die ja jetzt eine Netflix-Serie hat, in der sie stereotypischen Amerikanern dabei hilft ihr Leben und ihre Häuser in Ordnung zu bringen, — übrigens basierend auf ihrem Buch, das bereits 2013 erschien und ich letztes Jahr gelesen und bereits erfolgreich in mein Aufräumkonzept übertragen habe, ich war also, wie immer, der Zeit mal wieder sehr voraus — sparkt die Kamera einfach keinen Joy bei mir.

Was macht man mit solchen Sachen? Aus dem Leben entfernen. So ist es leider. So süß ich sie auch finde, weil sie so winzig ist, bin ich nicht bereit auch nur einen der Kompromisse, die damit verbunden sind, einzugehen. Daher muss sie weg.

Hallo eBay Kleinanzeigen, bye bye M50.


Am Donnerstag kündigt Canon übrigens die EOS RP an, die kleine Schwester der letztens erschienenen EOS R, und ich denke sie wird einige der Pain-Points beseitigen. Vielleicht lass ich aber auch erstmal Gras über die Sache wachsen...

Roomba-Fernsteuerung in vierhundert einfachen Schritten

Wie wir wissen, bin ich ziemlich faul. Genau deshalb habe ich einen Roomba, der hier munter durch die Wohnung fährt und saugt. Normalerweise schafft er das auch selber, denn man kann ihm sagen, wann er losfahren soll, über ein extrem nerviges 2-Button-Interface, wie bei so einem uralten Wecker aus den 90er Jahren.

Ähnlich intelligent verhält er sich leider auch, wenn er mal wieder vergisst wie spät es eigentlich ist und mitten in der Nacht losfährt, oder einfach den Schedule vergisst, und so weiter. Passiert selten, aber passiert.

Zusätzlich möchte man den Roomba ja vielleicht auch mal so starten, wenn man zum Einkaufen geht. Man kann ja nie oft genug den Boden saugen, vor allem, da er eh nicht immer überall hinkommt. Lieber einmal zu viel gefahren, als einmal zu wenig.

Das Problem dabei: Er steht unter der Kommode und man müsste sich bücken und den Arm ausstrecken um auf den “Clean”-Button zu drücken. Das will natürlich keiner tun, wo sind wir denn hier.


Wie kann ich den Roomba nun also aktivieren, ohne mich verrenken zu müssen? Entweder bau’ ich mir einen Arduino, der mechanisch den Knopf drückt. Oder ich kauf einen neuen, teuren Roomba, der WLAN schon mitbringt, oder ich kaufe so einen China-Roboter, der deinen Grundriss sicherlich nach China schickt, dafür aber günstig ist.

Ich entschied mich für eine ganz andere Möglichkeit. Denn es gibt da dieses RooWifi-Projekt. Ein findiger Bastler hat da wohl das Protokoll des Diagnose-Ports diverser Non-WLAN-Roombas entschlüsselt und einen kleinen Chip gebaut, der WLAN hat und es so ermöglicht den Roomba fernzusteuern, juchu!

Die Seite sieht etwas ranzig aus, aber das Ding scheint in Stock zu sein, manchmal hat man aber auch Glück und findet einen auf eBay und kann ihn da günstig schießen.

IMG_3336.jpg
Ein bisschen blöd platziert ist das Ding schon.

Wie auch immer, das Ding kam an, ich steckte es auf und versuchte es ins WLAN zu kriegen. Das dauerte erstmal vier Tage. Das Gerät unterstützt natürlich nur 2,4 GHz-WLAN, genauer gesagt anscheinend nur den 802.11b-Standard, der bei Fritzboxen standardmäßig deaktiviert ist. Zum Glück fand ich nach langem googeln in den Kommentaren zu einem Blogpost einen Tipp dazu.

Ich stellte also meine Fritzbox um, leider brachte es rein gar nichts. Auch ein Gäste-WLAN mit einfacherem Passwort funktionierte nicht. Nichtmal ein unverschlüsseltes Netz verhalf dem Roomba in mein WLAN.

Solang das Ding nicht in einem anderen WLAN ist, spannt es selber ein Ad-Hoc-Netz auf, dem man beitreten kann. Ich hatte schon überlegt, einen Rasperry Pi mit WLAN-Stick zu nehmen und zur Proxy-Kontrollstation umzubauen, die sich halt mit dem Ad-Hoc-Netz verbindet. So weit war es schon gekommen!


Meine nächste Idee war eine externe Antenne auf den WLAN-Chip zu stecken. Da war so ein mini kleiner Coax-Stecker, wie man ihn aus Laptops kennt. Beim Einrichten war mir schon aufgefallen, dass das Ad-Hoc-Netz eine ziemlich geringe Reichweite aufwies. Meine letzte Hoffnung! Ich kramte also ein altes Notebook aus dem Keller, das eh schon zum Abfallhof sollte und baute professionell die WLAN-Antenne raus und montierte sie auf dem Roomba.

Ihr ahnt es schon, klappte nicht!

IMG_3337.jpg
Danke an Papa für den schnellen 3D-Druck!

Und doch habe ich es am Ende geschafft. Die Lösung: mein alter AirPort Express, der noch im Keller lag. Ich weiß gar nicht so recht, warum ich den mal gekauft habe. Ich glaube, als ich damals in Glinde in der Küche per AirPlay Musik hören wollte, aber natürlich nie gemacht habe! Gute Entscheidung, Vergangenheits-Philipp.

Eingesteckt, als neues WLAN konfiguriert und der RooWifi schaffte es sofort eine Verbindung herzustellen! Wie geil ist das denn! Irgendwas ist also an der Fritzbox zu neu, oder zu anders konfiguriert. Who knows.

Die Frage ist natürlich, ob es den Stromverbrauch eines zweiten WLAN-Accesspoints wert ist, dass ich nun den Roomba aktivieren kann, ohne den Arm unter die Kommode stecken zu müssen. Könnte man drüber streiten, aber gerade finde ich es ziemlich gut. Und es ist ja nur so lang, bis der Roomba ersetzt wird. In 5-10 Jahren. Oder so.


Dank der Apple Shortcuts-App kann ich den Roomba sogar per Siri starten. Eigentlich muss nämlich nur ein HTTP Request an http://roomba.local/roomba.cgi?button=CLEAN geschickt werden. Magic! ✨

Die ersten beiden Solo-Alben von Bela B gehören für mich mit zu der besten Musik überhaupt, umso erschütterter war ich, als ich merkte, dass sie bei Spotify plötzlich fehlten, das klassische Problem.

Nun ist es aber so, dass Bela die beiden Alben auch für den „normalen“ Handel re-released und schwupps, jetzt ist Bingo, sein erstes Album, schonmal wieder bei Spotify aufgetaucht! Perfekt!

(Danke an Daniel)