Entwicklungsumgebung Unity: experimentelle Linux-Version veröffentlicht

Gute Nachrichten für Spiele-Entwickler: Das Unternehmen Unity Technologies arbeitet hart daran, seine Entwicklungsumgebung Unity unter Linux zur Verfügung zu stellen. Bisher werden nur Windows und MacOS unterstützt, obwohl die erstellten Spiele auch Linux lauffähig sind.

Nun ist eine erste öffentliche, experimentelle Version freigegeben worden. Offiziell wird nur Ubuntu 64bit unterstützt; auf anderen »modernen« Linux-Distributionen (hier getestet mit Linux Mint 17.1) sollte die Software aber auch funktionieren.

Unity ist eine leistungsfähige Entwicklungs- und Laufzeitumgebung für Spiele (und andere 3D-Anwendungen), die zahlreiche Ausführungsplattformen vom Web-Browser über den PC und Konsolen bis hin zu Mobiltelefonen unterstützt. Eine eingeschränkte »Personal Edition«, die in begrenztem Umfang auch kommerziell verwendet werden darf, wird kostenlos angeboten; für den professionellen Einsatz bzw. Einsatz im größeren Rahmen gibt es entsprechende Lizenzen.

Unity unter Linux Mint
Unity unter Linux Mint

PHP: The Right Way

Die Programmiersprache PHP und das Ökosystem um die Sprache herum haben im Laufe der Jahre (PHP gilt sicherlich noch als relativ junge Programmiersprache, hat aber vor kurzem bereits seinen 20. Geburtstag gefeiert) zahlreiche und tiefgreifende Veränderungen durchgemacht. Dementsprechend widersprüchliche und veraltete Informationen finden sich rund um PHP im Internet, in Tutorials und Einsteiger-Literatur.

Die Seite »PHP: The Right Way« möchte die Situation etwas verbessern und bietet eine Zusammenfassung einiger wichtiger Werkzeuge und Verfahren in und rund um PHP mit vielen weiterführenden Links. Die Seite ist sicherlich nichts für Programmier-Neulinge geeignet, aber für alle, die entweder ihre PHP-Kenntnisse noch einmal auf den neuesten Stand bringen wollen oder als Erfahrene Entwickler ins Thema einsteigen wollen bzw. müssen.

Die Seite ist nicht nur auf Englisch verfügbar; es sind auch einige Übersetzungen, auch eine deutschsprachige, verlinkt.

Bleibt zu hoffen, dass die Seite auch in Zukunft fleißig aktuell gehalten wird.

Vom Umgang mit der Zeit

Bei kaum einem Thema kann man als Software-Entwickler so vieles falsch machen wie beim Umgang mit Zeit- und Datumsangaben. In seinem Blog hat Noah Sussman mal so einige Annahmen gesammelt, von denen Entwickler in Bezug auf Zeitangaben gerne ausgehen – die aber definitiv falsch sind. Das ist unterhaltsam und überraschend lehrreich.

Noah Sussman: Falsehoods programmers believe about time

Microsoft veröffentlicht Visual Studio Code für Windows, Mac und Linux

Vor ein paar Jahren wäre das undenkbar gewesen: Microsoft veröffentlicht mit »Visual Studio Code« einen erweiterten Code-Editor, der plattformübergreifend und kostenlos für Windows, MacOS und Linux zur Verfügung steht. Laut Microsoft soll sich »Visual Studio Code« vor allem dafür eignen, »modern web and cloud applications« zu entwickeln und zu debuggen. Viel mehr als ein einfacher Code-Editor mit Git-Unterstützung und integriertem Debugger ist die jetzt freigegebene Preview-Version (noch) nicht. Welche Funktionen für die Zukunft geplant sind, ist nicht klar, ein Ersatz für das »große« Visual Studio wird »Code« aber sicherlich nicht werden.

Interessant ist die Architektur der Anwendung: Sie selbst basiert auf Web-Techniken, also HTML und JavaScript / TypeScript und wird mit Hilfe der Rendering Engine Chromium dargestellt. Basis dafür ist das Framework Electron.

Visual Studio Code
Visual Studio Code unter Linux Mint

Software-Tipp: aWallet Password Manager

Vor einiger Zeit habe ich hier den Tipp gegeben, aus Sicherheitsgründen für jeden Internet-Dienst, bei dem man sich registriert, ein eigenes Passwort zu vergeben. Das erste Argument, das man dagegen hört, ist sicherlich, dass sich kein Mensch mehr als eine Handvoll Passwörter wird merken können. Dafür gibt es Abhilfe, und zwar Software-Tools, die einem das »Merken« abnehmen.

Ich benutze seit einiger Zeit das Tool »aWallet Password Manager«, das auf meinem Android-Handy läuft, und das ich hier kurz vorstellen und empfehlen möchte.

Screenshot von aWallet
Screenshot von aWallet

Eine App für das Handy ist für mich sinnvoller als eine PC-Anwendung, da ich das Handy praktisch immer dabei habe. aWallet besitzt alle Grundfunktionen, die ich von einem Password Manager erwarte: Einträge können in verschiedenen Kategorien abgelegt werden, wobei die Kategorien inkl. der zu erfassenden Felder beliebig vom Anwender konfiguriert werden können. Ein Passwort-Generator ist enthalten, ebenso eine Suchfunktion. Und nicht zuletzt fügt sich die App auch optisch vernünftig in das Android-System ein.

Der größte Nachteil dieser Lösung: Sollte das Mobiltelefon abhanden kommen, sind nicht nur (falls kein Backup existiert) die Passwörter »weg«. Im schlimmsten Fall erhält der »Finder« Zugriff auf alle dokumentierten Benutzerkonten. aWallet scheint mir ausreichend Funktionen integriert zu haben, um diese Gefahr zu verringern: Wichtig ist zunächst, ein ausreichend starkes Master-Kennwort zu vergeben. Die Daten werden ausschließlich in verschlüsselter Form auf dem Gerät abgelegt, so dass ein Zugriff durch andere Apps bzw. ohne Kenntnis des Master-Kennwortes nicht möglich ist. Die App kann außerdem so konfiguriert werden, dass nach einer bestimmten Anzahl von Fehleingaben bzw. gescheiterten Entsperr-Versuchen die Daten auf dem Gerät gelöscht werden. Optional können Backups auf SD-Karte oder in der Cloud (Dropbox) erzeugt werden, die selbstverständlich auch dort ausschließlich verschlüsselt abgelegt werden. Ver- und Entschlüsselung erfolgen immer nur auf dem Android-Gerät.

Die App gibt es in einer kostenlosen Version, bei der per In-App-Kauf zusätzliche Funktionen freigeschaltet werden können. Die Cloud-Version ist kostenpflichtig, allerdings sind 2,59 EUR für die gebotene Funktionalität sicherlich angemessen.

Xerox-Bug: Auch ein Lehrstück über die Tragweite von Software-Fehlern

Je nachdem, in welchem Bereich man als Software-Entwickler tätig ist, haben die eigenen Fehler, die man macht, eine unterschiedliche Tragweite. Im Automobil- oder Medizinsektor kann es dabei sogar schnell um Menschenleben gehen. Aber auch — vermeintlich — harmlose oder unscheinbare Fehler können Ausmaße annehmen, die schwer zu überschauen sind.

Der Informatiker David Kriesel hat auf dem 31. Chaos Communication Congress (31C3) über die Geschichte des Xerox Bugs referiert. Dieser Bug hat dafür gesorgt, dass eingescannte Dokumente nicht ganz dem Original entsprachen … Ein sehr unterhaltsamer und interessanter Vortrag.

iX Developer Special »Spiele entwickeln«

Seit dieser Woche liegt ein neues Sonderheft aus der Reihe »iX Developer« an den Kiosken aus. Dieses dreht sich alles rund um die Spieleentwicklung. Neben Artikeln zu Studienangeboten und Berufseinstieg gibt werden Frameworks, Game-Engines und andere Grundlagen besprochen.

Das Heft kostet 12,90 und kann auch online im Heise Shop bestellt werden. Zu einem etwas günstigeren Preis gibt es auch eine digitale Ausgabe im PDF-Format.

iX Developer: Spiele entwickeln
iX Developer: Spiele entwickeln

Tipp: Podcast »Systemfehler«

Der Autor und Journalist Christian Grasse hat mit dem Podcast »Systemfehler« ein äußerst vielversprechendes neues Projekt gestartet. Die erste Folge thematisiert – wie sollte es auch anders sein – Herkunft und Geschichte des Begriffes »Bug« in diesem Zusammenhang:

Aber warum nennt man diese Art von Fehler eigentlich “Bug”? Was haben Insekten damit zu tun, wenn sich Programmfehler in Computersysteme einschleichen? Die erste Folge dieses Podcasts geht genau dieser Frage nach und erzählt eine Geschichte des Programmierfehlers.

Ich finde: Das ist gut gelungen und macht Spaß auf mehr. Daher: klare Empfehlung!

IMHO: Was uns der Heartbleed-Bug lehrt

Eine Sicherheitslücke in der Open-Source-Bibliothek OpenSSL sorgt in den letzten Tagen für viele Schlagzeilen: Durch einen simplen Programmierfehler ist es möglich, bei betroffenen Web- und E-Mail-Servern interne Speicherinhalte auszulesen. Die Lücke blieb bei den Projektverantwortlichen rund zwei Jahre unentdeckt und wurde anscheinend auch aktiv ausgenutzt (siehe hier oder hier).

Eine gute technische Zusammenfassung der Ursachen gibt es bei Sean Cassidy. (Spoiler: der Fix ist extrem simpel.)

Aber was kann man als Software-Entwickler aus dem »SSL-Gau« lernen? Aus meiner Sicht demonstriert Heartbleed ein paar wichtige Punkte auf drastische Art und Weise:

Eingabedaten sind immer zu validieren
Eigentlich eine Binsenweisheit, offensichtlich aber beherzigen das nicht einmal angehende Informatiker zum Ende ihres Studiums: jede Benutzereingabe hat validiert zu werden. Immer. Ausnahmslos. Im Falle des Heartbleed-Bugs bedeutet das konkret, zu überprüfen, ob die Länge der gesendeten Daten tatsächlich übereinstimmt mit der ebenso gesendeten Längenangabe. Easy, oder?

Als Anwender sollte man für jeden Dienst ein eigenes Kennwort verwenden
Auch dieser Hinweis ist eigentlich simpel und liegt auf der Hand. Wenn schon die Zugangskennung für einen Dienst entwendet wird, ist es enorm hilfreich, wenn mit derselben Kennung nicht auch gleich etliche andere Dienste zugänglich sind. Wer Schwierigkeiten hat, sich Passwörter zu merken, oder wer besonders sichere Passwörter haben möchte, der sollte einen Password Safe einsetzen. Es gibt mittlerweile einige sehr schöne Anwendungen für Smartphones, so dass man seine Kennwörter auch immer dabei haben kann.

C ist unsicher
Zugegeben: diese Aussage ist etwas plakativ und zugespitzt. Und vielleicht ist diese Aussage auch die schmerzvollste Lehre aus dem Heartbleed-Bug. Sicherlich ist C nicht zu unrecht eine der wichtigsten Programmiersprachen überhaupt, wenn nicht sogar die wichtigste Programmiersprache. Natürlich ist es möglich, bombensichere und fehlerfreie Software in C zu entwickeln. Andere Programmiersprachen haben auch ihre Schwächen, und ja: in jeder Programmiersprache kann man Müll zusammenschreiben. Leider ist es aber auch definitiv so, dass C es einem Entwickler extrem leicht macht, sich ins eigene Knie zu schießen, indem (wie hier) versehentlich auf Speicherbereiche zugegriffen werden kann, auf die man nicht zugreifen will und soll. Die flexible Struktur von C erschwert außerdem Werkzeugen zur Code-Analyse die Arbeit. Der Umgang mit Strings und Arrays, die Implementierung von eigenen Methoden zur Speicherverwaltung … die Schwachstellen von C sind zahlreich und grundlegend und bedürfen sehr viel Erfahrung, um souverän damit umzugehen.
Da drängt sich ganz selbstverständlich die Frage auf, ob es nicht an der Zeit ist, für die Entwicklung gerade von sicherheitskritischen Werkzeugen höhere Sprachen bzw. Systeme einzusetzen. Welche Alternativen da in Frage kommen, lasse ich einmal offen.

Open Source bedeutet nicht automatisch Sicherheit
Als ein Argument für Open-Source-Software (OSS) wird immer wieder die ageblich überlegene Sicherheit genannt, die sich aus der Tatsache ergebe, dass jedermann die Software einsehen und notfalls korrigieren könne. Das ist natürlich Blödsinn. In der Praxis funktioniert das eher selten, und deshalb ist OSS auch nicht prinzipiell besser oder sicherer als proprietäre Alternativen. Die sind allerdings ebenso wenig pauschal besser. Anders ausgedrückt: das Modell »Open Source« sagt rein gar nichts über die Qualität der Software aus.

Große Verbreitung bedeutet auch eine große Verantwortung
Gerade einmal elf Entwickler kümmern sich regelmäßig um die OpenSSL-Bibliothek, genutzt wird sie praktisch von der ganzen Welt. Und ein solches Software-Projekt lässt es zu, dass ein junger Informatik-Student anscheinend ohne großartigen Review-Prozess kritische Code-Teile einreicht. Muss das sein? Die großen Nutznießer der OpenSSL-Bibliothek setzen sie in ihrer kritischen Infrastruktur ein, ohne sich selbst an der Entwicklung zu beteiligen oder wenigsten aus Eigeninteresse ein Qualitätsmanagement zu betreiben.

Sollte hier nicht ein Umdenken erfolgen? Ein OSS-Projekt mit der riesigen Bedeutung und Verbreitung wie OpenSSL sollte nicht nur Selbstbedienungsladen sein, sondern auch von den Unternehmen unterstützt werden, die am meisten davon profitieren.

Zu diesem Thema gibt es auch an andere Stelle viele Meinungen und Denkansätze:

Code, Code, Code!