Previous Episode: GST022 - Der Finder lügt!
Next Episode: GST024 - Super Spell Boy

Dieses Mal war Mateus Armando zu Gast bei uns auf der Couch. Wir sprachen darüber wie neue
Mobiltelefone in das Netz der Telekom eingegliedert werden und was bei GSM so schief laufen kann. Im Anschluss
haben wir einen ganz guten Abriss über die Geschichte von RubyMotion gehört und zum Abschluss äußern wir uns
noch zum Apple iPhone Event vom 10. September.

Mit Mateus "@seanlilmateus" Armando über Mobilfunktechnik, MacRuby, RubyMotion und Apple.
Unser Gast (00:00:00)

Mateus "@seanlilmateus" Armando
"Lange Namen und die Ämter"
Hat eine Fachinformatik Ausbildung und ein abgebrochenes Informatikstudium vorzuweisen
Arbeitet bei der Deutschen Telekom
Ist in der MacRuby (http://macruby.org/) und RubyMotion (http://www.rubymotion.com/) Szene aktiv
Ruby is Magic: Cupcakes! https://speakerdeck.com/railsbros_dirk/ruby-is-magic-cupcakes

Arbeiten der Telekom (00:03:55)

Mateus automatisiert Dinge mit Ruby auf der Arbeit, ansonsten kommt es weniger zum Einsatz
Mateus testet Mobilfunkentgeräte mit dem Netz der Telekom
Zentrale Stelle für mehrere Länder
Funktionieren die Geräte mit dem Netz der Telekom?
Softwaretests, Funktests
Mateus bekommt oft mal neue Geräte zum Testen in die Hand
Die neuen Apple Geräte werden von speziell ausgewählten Personen getestet; Apple ist da etwas pingelig :)
Wenn Hersteller Mist machen, dürfen die Geräte nicht ins Netz der Telekom
Das Notification System eines ungenannten Devices hat vor einiger Zeit für großflächige Ausfälle gesorgt
Für Sicherheitsrelevante Fragen gibt es noch mal eine eigene Abteilung
Security Research Labs (Karsten Nohl) - "Rooting SIM cars": https://srlabs.de/rooting-sim-cards/
Wireshark: http://www.wireshark.org/
Wireshark und GSM: http://wiki.wireshark.org/GsmProtocolFamily

GSM Hacking, Security und Co (00:14:30)

Testgeräte und -installation sind extrem teuer
Base Transceiver Station: http://en.wikipedia.org/wiki/Basetransceiverstation
Mehr Augen, finden mehr Fehler; bisher wurden Mobilfunkstandards wenig von der "Masse" unter die Lupe genommen
Einige Fehler müssen sowohl beim Hersteller als auch auf Netzebene behandelt werden
NTT DOCOMO: http://www.nttdocomo.co.jp/english/
NTT DOCOMO Ausfälle: http://www.geek.com/mobile/ntt-docomo-asks-google-to-limit-android-data-use-1463313/ http://www.techinasia.com/docomo-outage-line/

C, Java, NeXT, WebObjects, Erlang… (00:19:35)

Mateus hat mit C im jungen Jahren angefangen - Basti hat mit BASIC angefangen: 1 : 00 ;-)
Wir machen einen Ausflug durch diverse Programmiersprachen und Umgebungen, die NeXT und Apple durchgemacht haben
Mateus hat während seiner Ausbildung bei T-Systems Erlang programmiert
Ruby wurde irgendwann zu Mateus' Hobby
PyObjC: http://pythonhosted.org/pyobjc/
RubyCocoa: http://rubycocoa.sourceforge.net/
Wir rätzeln, seit wann Ruby in OS X dabei ist
Der Ruby-Guy bei Apple war Laurent Sansonetti (@lrz)
Apple Scripting Bridge: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ScriptingBridgeConcepts/Introduction/Introduction.html

MacRuby & RubyMotion (00:27:30)

Bertrand Serlet: http://en.wikipedia.org/wiki/Bertrand_Serlet
Bertrand Serlet basht Windows Vista https://www.youtube.com/watch?v=n9UPhwmjJ-Y
Laurent ist zu Bertrand gegangen und hat vorgeschlagen Ruby auf der Objective-C Runtime laufen zu lassen
Das war der Anfang von MacRuby: http://macruby.org/
Es stand im Raum, ob Apple nicht MacRuby für das iPhone verfügbar machen wird (das war 2008)
ABER: MacRuby ist Garbage Collected und es gibt und gab auf dem iPhone nie GC.
Es wurde versucht MacRuby ohne GC zu bauen - nicht einfach
Automatic Reference Counting: http://en.wikipedia.org/wiki/AutomaticReferenceCounting
Garbage Collector in OS X 10.8 ist deprecated
Laurent Sansonetti gründet 2012 eine Firma und präsentiert: RubyMotion: http://www.hipbyte.com http://www.rubymotion.com/
RubyMotion ist MacRuby mit ARC für iOS! Kommerzielle Lizenz, kostet ~150 EUR
Wir rekapitulieren: RubyCocoa, MacRuby, RubyMotion
RubyMotion gibt es auch für Mac
Shizuo @watson1978 Fujita arbeitet zusammen mit Laurent an MacRuby und RubyMotion
ARC bei Objective-C wird zur Compile-Zeit gemacht
MacRuby wird auch kompiliert, mit LLVM
Bindings machen Probleme bei MacRuby und RubyMotion
Blocks in Ruby sind Closures (http://en.wikipedia.org/wiki/Closure(computerscience)) und sind sehr schwer in MacRuby zu implementieren
Weak Reference: http://en.wikipedia.org/wiki/Weak_reference
Es gibt WeakRef in Ruby! http://www.ruby-doc.org/stdlib-2.0/libdoc/weakref/rdoc/WeakRef.html
Ruby Binding: http://www.ruby-doc.org/core-2.0.0/Binding.html
How to Marshal Procs Using Rubinius: http://yehudakatz.com/2011/11/19/how-to-marshal-procs-using-rubinius/
Kernel#eval ist in RubyMotion nicht verfügbar, weil das die AppStore Richtlinien nicht erlauben
Ansonsten geht alles in RubyMotion, inkl. REPL
Im Laufzeitverhalten sind RubyMotion Anwendungen ohne Unterschied zu Anwendungen in Objective-C
Das Kompilat ist grundsätzlich nicht voneinander zu unterscheiden

Objective-C Runtime (01:08:00)

Objective-C Runtime ist noch nicht so weit wie die JVM mit unterstützten Sprachen, aber es gibt trotzdem einiges
Nu: http://programming.nu/
F-Script: http://www.fscript.org/
eero: http://eerolanguage.org/
Es war wahrscheinlich nicht von Anfang so gedacht, aber das Design lässt es sehr gut zu
Damals sollte auf OpenStep (https://en.wikipedia.org/wiki/OpenStep) Java laufen
Es gibt ein GNUStep (http://www.gnustep.org/) basiertes System, dass sich mit Smalltalk programmieren lässt (http://etoileos.com/etoile/)

Probleme mit RubyMotion (01:12:45)

Bis vor kurzem gab es noch viele Probleme mit Blöcken in Bezug auf Speicherlücken
Für Ruby-Entwickler sind Blöcke absolut normal und werden überall verwendet
Viele Bugs sind entdeckt worden bei der (falschen) Verwendung von CoreData (https://en.wikipedia.org/wiki/Core_Data)
Wichtig ist, CoreData ist keine Datenbank, aber man kann dort Objekte ablegen
CoreData ist sehr mächtig und nicht leicht zu verstehen
Da CoreData ein Teil von iCloud-Sync ist, führt dass dazu das iCloud-Sync oft nicht richtig umgesetzt ist
RubyMotion ist nicht Ruby, sondern ein Dialekt von Ruby
Beispiel ist, dass man mit der Block-API von Objective-C interagieren muss
Named Arguments sind verhalten sich unterschiedlich
In Objective-C sind die Named-Arguments Teil des Methodenname
Die großflächige Verwendung von Named-Arguments wird sich in Ruby noch etwas hinziehen
Wenn man für iOS entwickeln will, aber keine Lust auf Objective-C hat, dann macht man was falsch
Dokumentation ist in Objective-C und die Laufzeitumgebung mit all ihren Eigenheiten ist eben auch Objective-C
Aber: RubyMotion ist nach Mateus die beste Möglichkeit Objective-C zu lernen
RubyMotion ist sehr viel kompakter als Objective-C, daher die bevorzugte Umgebung von Mateus

Apple iPhone Event (01:30:20)

Wir wollen keine goldenen iPhones
Event war leider nicht live
Im Home-Office-Cologne gab es Rudelgucken mit Tippspiel
Enttäuschung, dass es keine Mac News gab
Wieder kein AppleTV SDK :-)
iPhone ist so wichtig, dass nichts parallel vorgestellt wird
Aber: Mavericks und Mac Pros werden kommen, aber ohne Event ist der Mac Pro eher unwahrscheinlich
Neue iPads und iPods stehen auch noch aus, aber dafür lohnt sich auch ein eigenes Event
Eigentlich haben sie Material für noch 2 Events
Dirk wünscht sich ein AppleTV mit SDK und der Möglichkeit einen Playstation Controller anzuschließen
Der Coup des Jahres wäre eine AppleTV Spieleconsole
iPhone/iPod als Controller für Spiele inkl. Secondscreen
Wir gehen nicht davon aus, dass Apple einen eigenen Controller bauen wird/kann
Am Anfang noch vorsichtig im Bereich, in letzter Zeit wird das ganze sehr ernsthaft verfolgt, Stichwort: Grafikleistung und OpenGL 3
In Bezug auf Independent-Spiele ist Apple bereits da wo Microsoft und Sony gerne hinmöchten
Das Event war das Ende der Ära Steve Jobs und der Beginn der Ära Jony Ive
Basti findet das "non" lustig ist, wenn die Löcherhülle auf dem 5C ist (https://www.apple.com/iphone-5c/design/images/casesgallerywhitewhite2x.png)
Die Position des iPhone 5C ist noch unklar
Weder ein Billig-Phone
Gute Leistungsdaten
Es ist aber bunt
Basti sagt nach wie vor, Apple hat es nicht nötig ein Billig-iPhone zu bringen
Unterschied momentan ist die Qualität der Anwendungen
Hintergrund wird nicht sein, mehr Umsatz über iPhones zu machen, sondern iOS weiterzuverbreiten
Das 'C' steht wahrscheinlich für 'Color' und nicht 'Cheap' ;-)
Wir warten weiterhin auf das 4k-Display…