W1siziisijiwmtqvmdyvmjkvmtuvmtkvmjkvmjqxl2htyw5zx2j1zxjzdguyx3nxdwfyzs5qcgcixsxbinailcj0ahvtyiisijmwmhgzmdajil1d?sha=e70f445e784e7667
Hi from RUGHH!

Hi from RUGHH!

Xbox One oder Playstation 4?

Xbox One oder Playstation 4?

Ich tippe diesen Text, während meine Playstation 4 gerade Grand Theft Auto 5 installiert, als wäre es das letzte, was sie tun müsste. Langsam wandert die Fortschrittsanzeige von 53% auf 54%, ein kleiner Meilenstein unter vielen, denn über zwei Stunden schaue ich diesem Elend nun schon zu. Vier Stunden, um ein Spiel zu installieren. Vier Stunden.

Eigentlich ist mit dieser kleinen Anekdote bereits alles gesagt, was man über das Thema Next-Gen-Spielekonsolen1 wissen muss. Aber da mich die Tatsache, dass ich auch noch beide Konsolen (Playstation 4 und Xbox One) gekauft habe, zu so etwas wie einen seltenen Experten auf dem Gebiet macht und ich daher immer wieder gefragt werde, welches der beiden Systeme ich denn nun empfehlen würde, möchte ich dazu an dieser Stelle ein paar Worte verlieren, so dass ich eine praktische URL habe, die ich als Antwort um mich werfen kann.

Das wichtigste vorab: so richtig empfehlen kann ich derzeit keines der zwei Geräte. Genau genommen machen sowohl Playstation 4 als auch Xbox One – jeweils auf ihre eigene Art – so viel falsch, dass sie Leute, die nicht erst vorgestern mit dem Spielen angefangen haben, nur frustrieren können. Von der vielbeschworenen Spielezukunft – alles Superduper-HD! Alles digital! Alles Cloud! Spielen, wo, wie viel, und wie herum ihr mögt! – ist nicht viel mehr übrig geblieben als zwei moderat leistungsfähige Kompakt-PCs, deren Hersteller sich mit software- und inhaltsseitiger Befüllung leider etwas schwer tun.

Tatsächlich haben beide Geräte außer, dass sie performanter als ihre jeweiligen Vorgänger sind, nicht wahnsinnig viel zu bieten, weswegen ich mich in diesem Text auf all das konzentrieren möchte, das euch jeweils daran abfucken wird, so dass ihr abwägen könnt, welches das für euch weniger schlimme Gerät ist. (Und, ja, ganz ehrlich: wenn ihr schon einen guten PC habt und damit zufrieden seid, dann könnt ihr an dieser Stelle die Lektüre meines Artikels ohne schlechtes Gewissen abbrechen.)

Was euch an der Xbox One abfucken wird:

Die Sache mit der Sprachauswahl:

Der mit Abstand größte Clusterfuck der Xbox One ist die maximal verkackte Einstellung von System-Sprache und -Land, denn im Gegensatz zu allen anderen normal funktionierenden Computersystemen sind diese zwei Einstellungen bei der Xbox One aneinander gebunden. Ihr dürft zuerst eine Systemsprache auswählen und danach das Land – bekommt aber nur die Länder zur Auswahl, in denen die ausgewählte Sprache offizielle Landessprache oder zumindest weit verbreitet ist.

Wenn ihr eure Konsole auf Deutsch einstellt, habt ihr also die Auswahl aus Deutschland, Österreich und der Schweiz. Wollt ihr sie lieber auf Englisch betreiben, müsst ihr das Gerät anlügen und z.B. England oder die USA auswählen. Dies wäre für sich alleine genommen nicht so schlimm, aber nein, bei Microsoft hat man sich offenbar sehr genau überlegt, wie man dieses Setup noch maximaler verkacken kann als einfach nur maximal, und hat daher den angezeigten Xbox Live-Store an eben jene Landesauswahl gebunden. Habt ihr eure Konsole und damit Microsoft frisch angelogen und so getan, als würdet ihr im sonnigen Großbritannien hausen, bekommt ihr auch den sonnig-großbrittannischen Store angezeigt, was genau bis zu dem Punkt kein Problem ist, an dem ihr tatsächlich einen Kauf tätigen wollt, denn siehe da, natürlich funktioniert euer deutsches Kreditkärtchen nicht im britischen Store. Abgelehnt! Bitte schalten Sie auf den deutschen Store um! Okay!

Aber auf den deutschen Store umzuschalten bedeutet natürlich, die Konsole auf Deutschland umzuschalten, was wiederum bedeutet, die Konsole auf die deutsche Sprache umzuschalten, und wer jetzt denkt: ja mei, das ist ja nun wirklich nicht so schlimm, für den hat Microsoft noch extra eingebaut, dass man nach einer Änderung dieser Einstellung das komplette Gerät neu booten muss, was grob zwei Minuten und die restlichen Nerven kostet.

Wer in Deutschland die TV-Funktionen der Xbox One benutzen möchte, muss diese übrigens auf Deutsch/Deutschland eingestellt haben. Wer also so doof ist, den eingebauten Programmführer nutzen zu wollen, aber seine Spiele lieber auf Englisch spielt, darf jetzt jedes Mal zwischen Fernsehen und Spielen das Gerät neu booten. Microsoft. Nah am Nutzer.

Zu all diesem Übel gesellt sich noch das Gerücht hinzu, Microsoft würde Geräte blockieren, die mit nachweislich falscher Landeseinstellung kostenlose Inhalte von den internationalen Stores downloaden. Na gut, dies ist tatsächlich nur ein Gerücht, aber ganz ehrlich? Wundern würde mich das auch nicht mehr, und das ist eigentlich schon schlimm genug.

Die Teams, die bei Microsoft die Smartglass-Apps für iOS und Android entwickeln, scheinen sich dieser Katastrophe bewusst zu sein, und erlauben in den Apps, ein anderes Locale für die ebenfalls in den Apps abgebildeten Xbox-Live-Stores einzustellen, als auf der verknüpften Konsole eingestellte.

Alter.

Die Sache mit dem deutschen Store:

Wer sich dazu entscheidet, ein braver, ehrlicher Spieler zu sein und seine Konsole nicht anzulügen, den erwartet der maximal verkackte deutsche Xbox-Live-Store, der war kaum Inhalte, aber dafür haufenweise von Bing oder Betriebspraktikums-Neuntklässlern verbrochene Texte bietet. Perlen wie “Das best von Oktober” (ja, genau so) sollen den geneigten Microsoft-Fan offenbar daran erinnern, dass man dort Deutschland für so etwas wie eine Spielebananenrepublik hält, für die es sich nicht lohnt, auch nur einen halbwegs kompetenten Mitarbeiter zu beschäftigen, der den Store mit sprachlich korrekten oder gar guten Texten füllt, mal von den vielen fehlenden Inhalten (“Die beliebtesten Spiele: [keine]”) ganz zu schweigen.

Die Sache mit den ewigen Installationszeiten:

Hat man sich über den Sprachfuck genug aufgeregt und sich endlich dazu berappelt, doch mal ein Spiel auszuprobieren, wartet bereits die nächste Überrachung auf einen, denn “Disc einlegen und loszocken” ist zu viel für diese mächtige neue Generation an Unterhaltungshardware; erst einmal will das Spiel installiert werden. Und zwar immer, ohne Ausnahme. Dies dauert dann gerne mal – je nach Spiel – 10 Minuten bis mehrere Stunden, und zwar erschreckend unabhängig davon, ob man das Spiel digital oder auf Disc erworben hat.

Mit der eingebauten 500 GB-Festplatte hat man immerhin Platz für grob 10-15 Spiele; wer mehr Spiele parallel spielt oder zumindest vorhalten will, um nicht immer stundenlang warten zu müssen, kann angeblich mit einer externen Festplatte den verfügbaren Platz erweitern.

Bei der Entwicklung der Xbox One war sich Microsoft offenbar voll und ganz der Tatsache bewusst, dass es eine Weile dauert, ca. 40 GB von einer Plastikscheibe oder gar aus dem Internet zu schaufeln, weswegen man dort besonders clever war und sich eine Art mehrstufiges Installationssystem ausdachte: Spiele können die wichtigsten Daten zuerst laden und dann dem Spieler anbieten, dass er schonmal los spielt, während der Rest des Spiels im Hintergrund installiert wird. Leider wird dieses Feature in der Praxis so gut wie gar nicht benutzt; die meisten Spiele bieten zwar schon nach ~10 Minuten an, dass man sie startet, aber nur, um anschließend einen Installationsscreen angezeigt zu bekommen, der einen darauf hinweist, dass man bitte warten möge, bis auch die letzten Daten von Microsofts erschreckend langsamen Servern gezogen wurden. Fuck. That.

Was euch an der Playstation 4 abfucken wird:

Kommen wir zur Playstation 4, die leider auch nicht viel besser abschneidet als ihr Microsoft-Pendant.

Die Sache mit dem deutschen PS4-Store:

Der deutsche Playstation-Store ist nicht so schlimm wie der deutsche Xbox Live-Store, aber immer noch schlimm genug. Er bietet deutlich mehr Inhalte, besonders seien an dieser Stelle die vielen auf die PS4 portierten Indie-Spiele erwähnt, allerdings wird man auch bei ihm das Gefühl nicht los, dass Deutschland bei Sony unter “wir haben da drei bis vier Nutzer” läuft. Schlechte Texte, teilweise in falschen Sprachen, plus die ganzen schon von der PS3 bekannten Krankheiten, wie zum Bespiel oft unbrauchbare Beschreibungen davon, was man da eigentlich kauft (so gibt es zum Beispiel schon seit Monaten ein Driveclub-Paket, bei dem ich bis heute nicht weiß, ob es das Spiel oder ein Addon ist.)

Wenn man sich vorher im Web informiert, was man kaufen will, dann geht das, dann schaut man auch über so Scheiße hinweg, wie dass die Liste der verfügbaren Spiele von mehreren Seiten Vorbestellungs-Titeln angeführt wird, teils zu Preisen, bei denen einem die Ohren schlackern. Aber toll ist das alles nicht.

Die Sache mit den Installationen:

Ähnlich wie bei der Xbox One dauern auch auf der PS4 die Installationen teilweise ziemlich lange, und die eingebaute 500 GB-Festplatte ist schneller voll, als einem lieb ist. Fairerweise muss man aber anmerken, dass die PS4 wenigstens die vorhandene Internetbandbreite wesentlich umfassender ausnutzt als die Xbox One; auch bei größeren Downloads hat man eine reelle Chance, sie anzuspielen, bevor eines Tages außerirdische Invasoren die eigenen Gebeine ausgraben und sich wundern, was zum Teufel man da wohl gerade getan hat, auf dem Boden kauernd, mit der eigenen Faust im Mund.

Bis auf GTA V. Dieses verkackte GTA V. Das installiert immer noch.

Die Sache mit dem Controller:

Der Controller der Playstation 4 ist… nicht gut. Ja, er liegt gut in den Händen und macht auch sonst einen wertigen Eindruck, dieser trügt aber leider stark. Die Qualität des Geräts ist nicht besonders hoch, viele Besitzer klagen über nach wenigen Wochen quietschende (oder komplett kaputte) Trigger, einige über sich ablösende Stick-Beschichtungen (weswegen es im Handel übrigens aufsteckbare Stick-Verhüterli gibt. Ich denke mir das nicht aus.)

Viel schlimmer im täglichen Gebrauch ist jedoch die miserable Batterielaufzeit. Eine volle Ladung reicht vielleicht für vielleicht gerade mal 5-6 Stunden Spielspaß, danach muss der Controller wieder per USB aufgeladen werden. Der Grund für diese Scheiße ist womöglich das große LED-Licht, das auf der Vorderseite verbaut wurde und keinen weiteren Zweck erfüllt, als den Nutzer maximal zu nerven, denn es ist nicht abschaltbar.

Lohnt es sich da noch, sich über ein paar wirklich schlecht erreichbare Buttons aufzuregen? Eigentlich nicht.

Die Sache mit der inkompatiblen Zusatzhardware:

Alter. Alter! Da ich meine alte Playstation 3 auch als Blu-ray-Player benutzte, kaufte ich mir einst die Playstation-Blu-ray-Fernbedienung. Sie läuft über Bluetooth und ist lediglich mit “Playstation” gebrandet, nicht “Playstation 3”, weswegen man ja eigentlich davon ausgehen könnte, dass sie auch mit der Playstation 4 funktioniert. Ihr ahnt es schon: das tut sie nicht. Und wenn ihr jetzt denkt, das sei so nur, damit man als blöder PS4-Käufer die spezielle PS4-Blu-ray-Fernbedienung kauft: es ist noch viel schlimmer, denn eine PS4-Remote existiert nicht einmal. Wer also auf der PS4 Filme schauen will, darf diese mit seinem Dualshock-Controller steuern. Ja, genau, der mit dem nicht abschaltbaren, ziemlich hellen LED, der euch so sehr stören wird, dass ihr den Controller wütend unter ein Kopfkissen schiebt, wodurch die viel zu leichtgängigen Trigger getriggert werden und der Film auf einmal vorspult. Ach. Ach. Ach.

Die Sache mit dem PSN:

Alles, was auf der Playstation online passiert, läuft unter dem Titel “PlayStation Network”, kurz: PSN, und es ist nicht besonders gut. Multiplayer-Spiele laufen in der Regel gut (wenn sie auch teilweise ewig brauchen, um die Verbindung zu den Servern aufzubauen; Destiny und Call of Duty kann man locker 1-2 Minuten beim Verbinden zuschauen.)

Man kann andere User als Freunde hinzufügen, okay, und bekommt dann irgendwann User vorgeschlagen, die man auch kennen könnte, was bei mir bisher nicht so gut funktioniert hat. Angeblich kann man dann mit anderen Spielern Partys aufmachen, um zu chatten, was bisher auch nicht so ganz klappte. Will man einem anderen Nutzer eine Nachricht schicken, dauert es manchmal eine Minute oder länger, bis sie tatsächlich verschickt wird, und folgt wenig später die Benachrichtigung über den Erhalt einer Antwort, wird die eigentliche Antwort meistens nicht oder erst sehr viel später angezeigt.

Lange Rede, kurzer Sinn: das PSN ist nicht toll, was keine so große Überraschung ist, wenn man bedenkt, dass Sony der Laden ist, der einst sämtliche Nutzer-Passwörter unverschlüsselt speicherte. Microsoft kann das mit dem Netzwerken einfach besser.

Fazit

Wie ihr seht, haben beide Geräte Eigenarten, die mich sehr frustrieren. Nach einer sehr guten PS3 und einer fantastischen Xbox 360 hatten beide Hersteller die Chance, wirklich revolutionäre Unterhaltungsgeräte zu schaffen; eine Chance, die von beiden komplett vertan wurde. Ich bin bereit für eine volldigitale Zukunft mit funktionierender Hard- und Software und ohne Bullshit, aber sie ist nicht da, und womöglich wird sie nie kommen. Diese Ernüchterung ist womöglich der größte Schaden, den Xbox One und Playstation 4 anrichten.

Wer schon einen PC hat, auf dem er spielen kann, und damit alles in allem zufrieden ist, für den gibt es – von Exclusives abgesehen – keinen Grund für eine Xbox One oder eine PS4. Das groß angekündigte “Next Generation Gaming”, das so auf PCs nicht möglich sein sollte, findet nicht statt, ihr verpasst nichts.

Wer sich schon dazu entschieden hat, eines der beiden Geräte zu kaufen, sich aber noch nicht sicher ist, welches, dem würde ich aktuell eher die Playstation 4 empfehlen, da sie trotz aller Schwächen ein größeres Spieleangebot hat und nicht mit dem sagenhaften Sprach-Clusterfuck der Xbox One nervt. (Nebenbei sei erwähnt, dass sie auch noch eine leicht bessere Performance bietet, die aber nicht ausschlaggebend sein sollte.)

Microsoft hat aber schon bei der Xbox 360 bewiesen, dass man dort keine Angst davor hat, mitten im Produktzyklus noch einmal alles neu zu machen; daher mag ich nicht ausschließen, dass sich die Dinge bei der Xbox One in der Zukunft vielleicht doch noch zum Besseren entwickeln. Aber noch ist es nicht so weit.

  1. Auch, wenn Playstation 4 und Xbox One die aktuelle Generation sind, nenne ich sie zur Zeit noch der Einfachheit halber “next-gen” und nicht “current-gen”. Lasst euch davon nicht verwirren.

In reply to: pants.morgvom.org/dis081
Far Cry 4 könnte man in vielerlei Hinsicht als das Anti-Unity bezeichnen.

Micht deucht, ich habe mit dem grottigen AC Unity den falschen Sandkasten gekauft. Mist.

Far Cry 4 könnte man in vielerlei Hinsicht als das Anti-Unity bezeichnen. Was ich besonders bemerkenswert finde: es versucht nicht einmal, den Spieler mit Microtransactions oder an Uplay-Level gebundenen Content zu nerven. Als wären die zwei Spiele von komplett unterschiedlichen Publishern…

Berge sind einfach interessanter als Strände.

Berge sind einfach interessanter als Strände. Das merke ich gerade beim Spielen von Far Cry 4, das mich ziemlich hart flasht. Spielerisch macht es nur wenig anders als der sehr gute Vorgänger, und dass die Story, die das Framework rund um die Sandbox-Action bildet, nicht besonders aufregend ist, merke ich jetzt schon, und für all dies wird es von Kritikern und Spielern zur Zeit ziemlich abgestraft, aber wisst ihr was? Das ist alles egal. Far Cry 3 war eine hervorragende Sandbox, und Far Cry 4 reichert sie mit einer wahnsinnig schönen, wahnsinnig interessanten und wahnsinnig toll inszenierten Spielwelt an. Wenn die Sonne langsam hinter den Bergen verschwindet und die Welt in deren Schatten versinkt, dann wird mir richtig kalt. Seit Skyrim fühlte ich mich schon nicht mehr so sehr in einem Spiel drin.

I’ve been dabbling in small-scale/hobby/etc.

I’ve been dabbling in small-scale/hobby/etc. game development ever since I started writing code1, mostly as a diversion in times when I need to gain some distance from the more serious stuff. It’s such a fun exercise, since developing a game touches on so many different disciplines at once; you get to think about data structures, algorithms, maths, performance optimizations, even more maths, memory management, even more maths, and if you’re really good (or reckless), you even get to make some graphics, music and sounds, and maybe even wrap it into an exciting story. Did I mention maths?

And right now I’m having heaps of fun with LÖVE, a cross-platform (Windows, Mac, Linux) 2D game framework using the Lua language. Man, Lua is fun! It’s clicking with me the same way Ruby clicked with me almost 10 years ago, and I will write about it some more in future posts.

LÖVE gives you the usual game loop of constantly updating and drawing stuff, with a whole set of library functions for rendering sprites, playing sounds, displaying text and so on. What sets LÖVE apart from a lot of its counterparts is mostly the “batteries not included” approach it shares with Lua; you get the basic tools and nothing else (just to name two examples, it doesn’t come with any entity management or collision detection out of the box2.) Wait a minute, that doesn’t sound like a good thing, right? Actually, I consider this a huge plus – beyond the obvious advantage of giving you full control over how you structure your game, I consider building these systems a big part of the fun in writing a game. LÖVE, in the end, is a programming framework, not a game maker. (If this scares you, don’t worry; there are heaps of libraries available to give you a quick start.)

LÖVE is also blazingly fast, primarily thanks to Lua itself. With similar frameworks using other languages, you would typically run a (in most cases large-ish) codebase through an interpreter, selectively wrapping around native code in order to get to OpenGL and friends; LÖVE wraps this inside-out and gives you a native executable for your platform that embeds the Lua interpreter (actually, its fantastic just-in-time compiler.)

For now, allow me to share some of my bookmarks that I’ve collected:

  • love2d.org, of course, is the main LÖVE website. There’s a forum and also a Wiki, the latter containing the official reference documentation.
  • lua.org is the official website for Lua, the scripting language LÖVE uses. If you’re already familiar with high-level languages like Javascript or Ruby, you can learn Lua in a day or two. I can fully recommend “Programming in Lua”, the first edition of which (covering Lua 5.0) is available for free online. If you’re in a hurry, I recommend the fantastic Learn Lua in 15 Minutes.
  • examples.love is a great little collection of example scripts, giving you a quick overview of the most important stuff.
  • Code Doodles! is an interesting forum thread with small, abstract code examples.
  • HUMP is the aforementioned library I like to use; it comes with some basic tools you will need in pretty much every game you’ll build (like vector calculus, game state management and a camera abstraction.)

I’ve been writing a small 2D space shooter as an exercise to learn all this stuff, and it’s been super fun. I will probably put its source code up on Github at some point, and I’m looking forward to sharing what I’ve learned.

#love2d #lua

  1. I’m tempted to say that was in the early 90s, but in reality, it was much earlier. It’s really kind of embarrassing.

  2. Actually, it does come with a wrapper around Box2D called love.physics, but this may be too much of a beast for most simple games.

Ich möchte mir vielleicht die Tage eine Xbox One kaufen und habe ein paar Fragen: Wie gut eignet sich die Xbox One zum Schauen von Blu-rays? (Dafür setze ich aktuell meine PS4 ein, die ich jedo...

Ich möchte mir vielleicht die Tage eine Xbox One kaufen und habe ein paar Fragen:

  • Wie gut eignet sich die Xbox One zum Schauen von Blu-rays? (Dafür setze ich aktuell meine PS4 ein, die ich jedoch ggf. verkaufen möchte.)
  • Hat die Xbox One einen Infrarot-Receiver (so dass ich sie über meine Harmony Remote steuern kann)?
  • Ist der TV-HDMI-Eingang auf “passthrough”, wenn die Xbox One im Standby bzw. ausgeschaltet ist? (Anders gefragt: kann ich TV schauen, ohne die Xbox One dafür anschalten zu müssen)?
  • Wie gut oder schlecht ist der deutsche (!) Xbox Live-Marketplace? Der auf der 360 wurde lange Zeit ziemlich schlecht gepflegt, es entstand der Eindruck, als hätte Microsoft kein großes Interesse, den deutschen Markt zu bedienen.

Danke vorab.

In reply to: pants.tubit.net/fwf427
Ich finde dein #pants-Blog spitze! \o/

A: “Und, worüber schreibst Du so in deinem Pants Blog?”
B: “Naja, nur davon, wie ich Pants betreibe und das ich es irgendwohin migriere.”
A: “Öhm, macht das sinn?”
B: “Nein.”

Ich finde dein #pants-Blog spitze! \o/

Ich suche eine Bürogemeinschaft (alternativ: eine nette Firma, die bereit ist, mir einen Schreibtisch und ihr WLAN unterzuvermieten) in Hamburg.

Ich suche eine Bürogemeinschaft (alternativ: eine nette Firma, die bereit ist, mir einen Schreibtisch und ihr WLAN unterzuvermieten) in Hamburg.

  • Ab wann? November 2014, bin aber im Zweifel flexibel.
  • Wie lange? Ich suche etwas Langfristiges, aber wenn ihr gerade nur für ein paar Monate einen bereits vorhandenen Tisch frei haben solltet, sagt bitte trotzdem bescheid.
  • Welche Ecke Hamburgs? Am liebsten Eimsbüttel, Eppendorf, Altstadt, Neustadt, Ottensen/Altona, Sternschanze, St. Pauli (in der Reihenfolge.)
  • Was brauche ich? Nette Leute, WLAN, idealerweise einen bereits vorhandenen Tisch und Stuhl (kann ich aber sonst auch selber mitbringen), eine ordentliche Rechnung.
  • Was brauche ich nicht? Telefon, durchprofessionalisierte Coworking-Spaces, Bürogemeinschaften mit forciertem Synergiedruck1.

Kurz zu mir: 37, Nichtraucher, Softwareentwicklertrainerberatercoach, gemäßigter Spießer. Falls euch das noch nicht überzeugen sollte, bringe ich auch noch ab und zu selbstgebackene Cookies und Cheesecakes mit.

Falls ihr etwas für mich habt (oder jemanden kennt), freue ich mich über eine Mail an hendrik@mans.de oder eine XING-Nachricht.

  1. Diesen Begriff habe ich gerade erfunden. Ich freue mich, wenn in einer Bürogemeinschaften Synergien zwischen unterschiedlichen Disziplinen entstehen und Früchte tragen, aber es darf keine Voraussetzung sein.

I’ve been working on #pants for 4 months now – on and off, due to intermittent client and/or baby related work load.

pantscode

I’ve been working on #pants for 4 months now – on and off, due to intermittent client and/or baby related work load. Still, I can’t believe it’s only been 4 months. Even within this short time frame, the project has gone through so many different iterations. They grow up so fast!

When I started out, I kept saying how I didn’t really know what #pants was and where it was headed. Four months later, I think I have a pretty good idea of what it is, so I thought it’d be fun (and potentially useful) to look back at its development so far and think about what worked (and what didn’t), and which parts of #pants I would do differently if I were to start from scratch. (Which I’m not going to; but maybe there’s a chance to get the most important or interesting bits implemented in the current code base.) Well, here we go.

Open Source from the start: yes, #pants has been open-source from its very first commit, something I’m very happy about. This is a lesson that I learned when working on sloblog.io; when I decided I wanted to open-source the project months after launching it, I realized that I didn’t really want to bother with cleaning up the code (having made the usual mistakes of committing secrets to the code base that should not be public, and other atrocities.) I didn’t want to make the same mistake with #pants.

I need to admit that I have a pretty ambivalent attitude towards open-sourcing my projects. In my experience, most people asking for something to be open-sourced are really asking for it to be provided for free, which is fine, and often to be easily installable on their (sometimes underpowered) servers, which is also fine to ask for, but very hard to achieve with complex software. Giving in to these requests in spite of reservations is a recipe for disappointment, which is one of the many reasons why, in #pants’ README, I’ve been paradoxically telling people not to install it.

And this is where I’m at with open-sourcing #pants right now. I do want to share the code, allowing others to learn, review, comment and possibly hack; obviously, I also do want others to be able to install the code on their own servers, duh; but I do not want to (and can’t) offer much in the way of installation support at this point.

Having said that, please rest assured that actively encouraging people to install their own copy of #pants of course is a cornerstone of its future, but the only officially supported deployment will be Docker-based, and I simply haven’t had the time to prepare decent Docker images.

Ruby on Rails: there are certainly some interesting alternatives to this framework available, some of which may be a much better fit for a project like #pants when it comes to utilizing available CPU for highly IO-bound applications (or really just writing asynchronous code.) Node.js is an obvious candidate; an upside to which would have been extreme community hackability (a lot more people seem to be deep into Javascript today than Ruby). Elixir (probably together with the Phoenix framework) might have been an interesting choice, as it promises extreme performance benefits with a Ruby-like syntax.

Rails doesn’t have a great concurrency story; its server processes use humongous amounts of memory; the way gems (Ruby library packages) work is an invitation for unstopped bloat. So why did I pick it for #pants? Even with all these caveats, Rails is the framework that I’ve been using almost exclusively for most of the last decade; with the familiarity gained in this time plus all the amazing Rails gems available, I can whip up something over the course of a weekend that would probably take (me) multiple times longer with any other language or framework. #pants doesn’t have a high number of users yet, and none of them appear to be facing load issues, so I think we should be okay for a while. If #pants gets its 15 minutes and isn’t able to handle them, it’s going to be a fun problem to solve through a reimplementation in another language.

(Ironically, the best fit when it comes to improving #pants’ installation story would have been share-nothing style PHP – just upload the code to your web server and you’re good to go, I guess? But let’s just say that I’m not a fan.)

Javascript frontend vs. server-side HTML rendering: There was a time where I was tempted to build the server code for #pants as a JSON API only and create the user-facing frontend as a client-side Javascript application. It would have been interesting to make #pants consume its own API, but I’m still not fully convinced that it would have been practical. My dislike of Javascript aside, I’m very happy to have gone the server-side rendering path; it’s very fast, easily hackable, uses minimal code, and keeps your #pants site trivially machine-readable, which, for this type of project, is important for many reasons beyond just SEO.

PostgreSQL vs. Document Databases: Rails uses PostgreSQL as its database, a RDBMS that I’ve recently fallen in love with after years of using MySQL. Seriously, if your app needs a relational database, give PostgreSQL a try, it is great; the extra features (like arrays) it offers allow you to model certain things much quicker and with less code.

However, four months into the project, I now wonder if a document database (aka NoSQL, etc.) would have been a better fit. From where I’m standing, the lack of a strict schema alone is a huge advantage in fast-evolving open-source projects; migrating relational database tables and integrating these migrations in deployment runs isn’t exactly rocket science in Rails, but explaining to users they need to run update scripts (even if it’s just a rake db:migrate) can be. What I really want users to be able to do is to just update/replace the code (eg. Docker image), and things will just work. This probably one of the most trivial differences between relational and document databases, but here it would make a big difference.

In addition to this, I’ve been lustingly ogling RethinkDB for some time now. I haven’t actively used it in any projects so far, but what these guys are doing just feels and looks right, and I so want to give it a serious spin.

Another option may be CouchDB, which has some views on simplicity that strongly resonate with me, even though I’ve never used it in a real project so far, either.

Binary asset handling: Up to this point, #pants doesn’t really allow you to upload binary assets (post images etc.) beyond your user avatar. I was going to leave the storing of images et al to the users, but I realize now that #pants absolutely needs to support this stuff out of the box; a large part of social networking (and blogging in general) revolves around the sharing of images and other assets, and this stuff should be on the user’s server, so in the long run I can’t really get away with making users upload their stuff to Dropbox et al as I’m doing now.

The problem is that dealing with file uploads has always been and still is tricky, especially with open-source software that you’re expecting people to eventually install on their own servers. I’m using the excellent Dragonfly gem to deal with uploaded images and the like, and it’s easy to configure it to anything from using the local filesystem to putting everything on Amazon S3, but where do you strike the balance between convenience, flexibility and minimal external dependencies? The easiest configuration is to just use the local filesystem, but then you’ll be in trouble once you need or want to add more web servers; also, a bunch of potential hosting options (like Heroku) would not work. Amazon S3? It’s cheap, easy to set up and generally great, but it’s yet another external dependency that you need to set up (and sign up for); also, not everybody is keen on Amazon.

Ideally, I would like to put uploaded files in the same store that is holding all the other data; the database. Storing binary data in PostgreSQL isn’t difficult, but also not trivial. Its Large Objects aren’t natively supported by ActiveRecord, and I wasn’t entirely confident about the workaround-ish Dragonfly plugin that I built at some point; simply serializing files and splitting them up into chunks (by way of dragonfly-activerecord may be more reliable, but extremely smelly in more way than one.

Yes, you could probably hook up Dragonfly to some FTP server easily, but once again, the perfect option would simply work out of the box, using the same database that’s storing everything else. This may be another point in favor of a document database; MongoDB and CouchDB are said to have very solid binary data support (with Dragonfly plugins readily available), and RethinkDB appears to have at least some support, too.

GUIDs, URLs, slugs, oh my: this is really just a technical detail, but a tricky one. In an ideal world, a #pants post would simply have a single, globally unique ID: its URL. However, since post IDs are not supposed to change, this would completely obliterate all SEO efforts, as you could never add or change an existing post’s URL to something that’s more SEO-friendly. Even worse, someone switching their #pants instance to HTTPS would basically change all URLs of all their posts. Ouch.

So I ended up separating URLs from my own flavor of GUIDs, the latter being simply a URL, but without a protocol (eg. a post at the URL http://hmans.io/foo123 would have a GUID of hmans.io/foo123.) The idea here is that the URL is allowed to change (both its protocol and path), while the GUID should always stay the same (and, if necessary, redirect to the post’s current URL.)

If this confuses you, I don’t blame you. I’ve never been too happy with this setup; it feels like an overly convoluted solution for a problem that we didn’t really face yet. If I were to start over (or find the time to refactor most of #pants’ code), I would probably just keep two different URLs; one being the ID (staying the same over the lifetime of a post), the other being the human-facing, SEO-friendly URL. This would allow me to get rid of a heap of code converting URLs to GUIDs and back.

Indieweb: #pants is what the indieweb community would call “and indieweb implementation”, but I didn’t quite realize this until several weeks into the project. #pants is now making heavy use of Indieweb protocols and markup, but it didn’t do so from the beginning, and it absolutely should have. I’m not sure how this happened; I’ve been aware of indieweb for a while now, but didn’t think of embracing it with #pants when I started development.

Webmentions everwhere: Webmention is an extremely simple reboot of protocols like Trackback or Pingback and probably the most important thing to come out of Indieweb for #pants. Webmentions allow site A to tell site B that it has published something interesting, like a comment to a post. #pants uses Webmention liberally; when you post a reply to someone else’s post, their site receives a Webmention, allowing them to pull your comment to be able to display it beneath their post; when you follow another #pants site, it is notified through a Webmention; the upcoming Like feature uses it, too.

The great thing about this approach is that this allows #pants to easily communicate with non-#pants sites, as long as they also use Webmention. Once your #pants site receives a Webmention, it will pull and analyze the referenced source URL, no matter if it’s a #pants site, Wordpress, a static HTML page or whatnot, and depending on what it finds there, list the reply/fav/etc. underneath the referenced post. Just like my previous point about Indieweb, I only realized just how great this is very late in the project and would have saved a lot of time embracing it from the start. (Incidentally, #pants was using a very similar setup to allow for remote #pants instances to communicate; I called it a “Ping”, and while I eventually refactored the whole business to simply use Webmention, there’s still a Ping model and a PingsController.)

Separate post types, pre-rendered body HTML: this is one of #pants’ features (or rather design decisions) that I’m especially happy about. Basically, the stuff that we’ve been using so far – text posts that contain Markdown which is then rendered to HTML – is just one of many (possible) types of post objects that can be published on your #pants site. The upcoming Like feature uses a second post type, and I want to make it trivially easy for people hacking #pantssource code to add new types (think image gallery posts, reviews, polls, etc.) The great thing is that custom #pants post types will even work on remote #pants servers that don’t have the code powering them, as each post comes with a pre-rendered chunk of HTML that will just be displayed instead. The one thing that I would like to add to #pants is to have not one, but two pieces of pre-rendered HTML; one for the full post, one for the feed views, possibly containing a shorter version of the post.

That’s it for now, I think. I apologize for spamming your network timeline with such a long post! Let me finish this with saying how happy I am that so many people are enjoying #pants already. And remember, if you want to give it a try, here’s how!

Was ich auf OS X zuerst installiere, Ausgabe 10/2014 Ich habe gestern meinen Rechner auf OS X #Yosemite aktualisiert – wie immer als komplette Neuinstallation (statt Upgrade), eher aus Gewohnheit ...

Was ich auf OS X zuerst installiere, Ausgabe 10/2014

Ich habe gestern meinen Rechner auf OS X #Yosemite aktualisiert – wie immer als komplette Neuinstallation (statt Upgrade), eher aus Gewohnheit statt aus Notwendigkeit. Was installiere ich eigentlich so auf einem frischen OS X-System?

Chrome ist mein Standardbrowser, obwohl er unter OS X leider ziemlich lahm ist (zumindest im direkten Vergleich mit Safari.) Er hat aber nach wie vor die besten Entwicklertools, wird regelmäßiger aktualisiert, und bietet schlussendlich auch eine für mich als Nexus 5-Besitzer sehr angenehme Synchronisierung mit seinem Android-Pendant.

Caffeine ist ein kleines Menu-Bar-Icon, dessen Aktivierung per Klick verhindert, dass der Rechner in den Schlafmodus wechselt oder den Bildschirmschoner aktiviert. Praktisch für Präsentationen aller Art, ihr kennt das.

Phoenix ist ein leichtgewichtiger Fenstermanager für OS X, dessen Verhalten man komplett über Javascript konfigurieren kann. Hier ist meine Konfiguration, die mich nicht nur das gerade aktive Fenster in alle möglichen Ecken des Bildschirms schubsen, sondern auch per Tastendruck komplette Layout-Presets für meine Entwicklungsarbeit aktivieren lässt. (Es gibt inzwischen einen Nachfolger namens Mjolnir, der über Lua gesteuert wird; habe ich aber noch nicht ausprobiert.)

Textual ist der mit Abstand beste IRC-Client für OS X und erscheint die Tage in einer Version 5.0.

f.lux passt zu programmierbaren Zeiten die Farbwärme des Displays an, um u.A. in dunklen Räumen (ich arbeite gerne mal abends/nachts) das Display etwas augenfreundlicher zu machen.

Hazel ist ein kleines Tool, das automatisch und im Hintergrund vom User definierbare Regeln auf Dateien und Verzeichnisse anwendet. Ich benutze es zum Beispiel, um meinen Download-Ordner automatisch ein einzelne Ordner pro Tag umzusortieren und Downloads, die älter als 14 Tage sind, automatisch zu löschen.

Daisydisk analysiert die Festplatte und zeigt an, wo und von was der meiste Platz verbraucht wird. Sehr praktisch, wenn man auf seiner knapp bemessenen SSD ein paar Gigabyte frei schaufeln will oder muss.

Byword ist mein Lieblingseditor zum Schreiben von Markdown-formatierten Blogposts. Es mag auf den ersten Blick wie eine Kopie von iA Writer erscheinen, hat sich aber in der täglichen Benutzung als schneller und stabiler erwiesen.

Pixelmator ist das beste Bildbearbeitungsprogramm für Bitmapgrafiken jenseits von Photoshop, welches ich in der Regel nur monatsweise abonniere, wenn Projekte es von mir verlangen (danke, Adobe, dass das überhaupt geht.) Wenn man nicht gerade vom Designer tonnenschwere PSDs mit dreimilliarden Layers zugesandt bekommt, erledigt Pixelmator jedoch alle Aufgaben wunderbar. (Bonustipp: Affinity Designer ist ein ähnlich gutes Programm für Vektordesign.)

Alfred ist ein superschneller und sehr mächtiger Ersatz für (bzw. eine Erweiterung von) Spotlight. Ich muss zugeben, dass ich Alfred in Yosemite noch nicht installiert habe, weil ich erst einmal schauen will, wie weit mich das rundumerneuerte Spotlight (welches sich visuell übrigens stark an Alfred orientiert…) trägt.

Desweiteren seien hier noch die allgemein bekannten Tools Dropbox, 1Password, Evernote, Pocket, Reeder 2 (welches ich zusammen mit dem tollen Feedbin benutze) und Radium (Internet-Radio) genannt.

Meine liebsten Entwicklertools hebe ich mir für einen separaten Post auf.

In reply to: pants.morgvom.org/gxu621
Immer, wenn ich iA Writer mag, überrascht es mich mit irgendwelchen doofen Bugs. :/

Ich wechselte gerade von iA Writer auf iA Writer Pro. Byword war in enger Konkurrenz. Ich hoffe, das war keine Fehlentscheidung.

Immer, wenn ich iA Writer mag, überrascht es mich mit irgendwelchen doofen Bugs. :/

In der Hoffnung, mich öfters dazu motivieren zu können, meine Pocket-Liste leer zu lesen, möchte ich die interessanteren Fundstücke an dieser Stelle verbloggen.

In der Hoffnung, mich öfters dazu motivieren zu können, meine Pocket-Liste leer zu lesen, möchte ich die interessanteren Fundstücke an dieser Stelle verbloggen. Ich wette dagegen, dass das funktioniert, aber wer weiß!

Oh, wie bös ist das System: ein hübscher Text auf Zeit Online über Systemkritiker und Verschwörungstheoretiker, dessen Kernaussage man auch abseits des dort geführten Beispiels Xavier Naidoo auf viele aktuelle Diskussionen anwenden kann.

Kicking the Bukkit: Anatomy of an open source meltdown protokolliert den Untergang des Open-Source-Projekts Bukkit, einer quelloffenen (und dadurch mod-baren) Alternative zum offiziellen Minecraft-Server.

Docker and Microsoft: Docker (Inc.) und Microsoft haben eine längerfristige Zusammenarbeit angekündigt, deren Ziel umfassender Support von Docker-Containern in Microsofts Server-Technologien ist. Ein solcher Schritt ist dringend notwendig, damit Windows nicht irgendwann vollends von der Server-Software-Landkarte verschwindet.

Mac App Store: The Subtle Exodus beschreibt die zunehmende Flucht von Entwicklern aus dem Mac App Store. Natürlich sind in erster Linie Apps betroffen, deren Funktionalität nicht mit den Sandboxing-Bedingungen des Stores kompatibel sind; in den meisten Fällen sind dies sehr spezialisierte Apps (z.B. für Entwickler), ob es sich also dabei um einen größeren, gegebenenfalls für den App Store gefährlichen Trend handelt, ist fraglich.

Netflix-Effekt: die plötzliche Liebe deutscher Sender und Filmstudios zu Qualitäts-TV-Serien. Ich selber stehe kurz davor, meinen TV-Anschluss auf ein Minimum zu reduzieren, da ich inzwischen vorrangig über Angebote wie Netflix, Watchever, iTunes oder Kabel Deutschlands Select Video konsumiere (oder einfach die Blu-rays kaufe, ich Romantiker.) Wenn deutsche TV-Sender auf einmal in hochqualitative Formate investieren, werden diese hoffentlich kundenfreundlicher angeboten, als sie mit Werbung durchspickt im Free-TV zu verballern.

Wir fordern den Rücktritt der Bundesregierung ist ein heiteres Video, das seit ein paar Tagen durch die sozialen Netze geistert. Das hämische Gezetere ist natürlich wieder einmal groß, aber wer ein bisschen sucht (es ist wirklich nicht so schwer), findet schnell heraus, dass dahinter der österreichische Youtuber PockhuhnFilm (Twitter) steckt, der sich auf dadaistische Video-Comedy zu spezialisiert haben scheint.

BTW, ich schreibe meine #pants-Drafts mit Byword.

Nachtrag zu diesem Post: Das hier finde ich toll!

Nachtrag zu diesem Post:

nexus 9

Das hier finde ich toll!

Google hat (endlich) offiziell die neuen Geräte der Nexus-Serie bekannt gegeben: das sehr große Nexus 6 und das Nexus 9, ein neues 9”-Tablet.

Google hat (endlich) offiziell die neuen Geräte der Nexus-Serie bekannt gegeben: das sehr große Nexus 6 und das Nexus 9, ein neues 9”-Tablet.

Ich bin vor ein paar Monaten von iOS zu #Android gewechselt; von einem iPhone 4S auf ein Nexus 5, mit dem ich mit kleineren Ausnahmen1 sehr zufrieden bin. Schon allein deswegen ist diese Ankündigung für mich interessant.

Und jetzt mache ich mit dem Nexus 6 ähnliche Gedankendramen durch wie wahrscheinlich jeder Apple-Besitzer bei der Ankündigung des (immer noch 0,5” kleineren) iPhone 6+: beim gerade noch so in einer Hand haltbaren Nexus 5 bleiben, oder den Sprung zu einem Phablet wagen (auch noch zu einem der größten, die zu dem Zeitpunkt erhältlich sein werden)?

Auf der einen Seite finde ich Phablets furchtbar – nicht, weil es albern aussieht, damit zu telefonieren, wer telefoniert denn bitte heute noch? – nein, weil ich keine Chance sehe, es mit einer Hand zu bedienen, es wahrscheinlich immer in meiner Hosentasche stören wird, und so weiter und so fort. Die klassischen Ängste halt.

Auf der anderen Seite hatte ich mir klammheimlich vorgenommen, in naher Zukunft mein iPad Mini mit einem Android-Tablet zu ersetzen2, und vielleicht ist das Nexus 6-Phablet da ja genau der richtige Kompromiss, mit dem großen Vorteil, mit einem einzigen Gerät unterwegs zu sein?

Ach. Entscheidungen, Entscheidungen, Entscheidungen. Ich warte so oder so erst einmal die Reviews ab und freue mich, dass in den nächsten Wochen das großartige Android L für mein Nexus 5 freigeschaltet wird. \o/

  1. Die Kamera… argh. Argh!

  2. Warum ich mit iOS nicht mehr so viel Spaß habe, verblogge ich vielleicht demnächst in einem separaten Beitrag.

In reply to: pants.morgvom.org/jbn114
CRRRAAAACCCKKKDDOOOOWWWWWWWNNNNNNNNNNNN

Am tollsten waren die Flaschen bei Sly Cooper 2: Man konnte ein kleines Glas an Glas Geräusch vernehmen, wenn man nah dran war. Das hat mir richtig Spaß gemacht, die zu sammeln.

CRRRAAAACCCKKKDDOOOOWWWWWWWNNNNNNNNNNNN

In reply to: pants.f5n.de/pxi763
Spoiler: AC3 kannst du getrost skippen, das haben sie leider zu überfrachtet.

Ärgert mich direkt, erst jetzt darauf gestossen zu sein. Hab dann aber gleich zugeschlagen solang noch alles billiger war und Brotherhood, Revelations und III nachgekauft. Alle 4 zusammen unter 20 EUR und meine nächsten Wochen sind wohl verplant. <3

Spoiler: AC3 kannst du getrost skippen, das haben sie leider zu überfrachtet. AC4 wiederum ist fantastisch (aber sehr anders als AC2.)

In reply to: pants.epir.at/zvb442
Which version did you update from?

Since the latest #pants update my network is broken, I only see very recent posts, all older posts are only from @need.computer, no other posts…

Which version did you update from? r105 didn’t include any major changes to the network timeline from r104 (here’s the diff), so I’m finding it hard to find a reason why this would happen. It’s also hard for me to debug a remote #pants instance, obviously, but if there is a bug, I’m naturally interested in fixing it. Would you be okay with emailing me a dump of your #pants database?

In reply to: pants.morgvom.org/zdt803
Du wagst es, nicht jede 1-2 Jahre erneut deine Apple-Steuer zu bezahlen?

Mein wichtigstes Gerät im Haushalt ist unser iPad Mini (erstes Modell) und Apple hat ihm mit iOS8 die Beine gebrochen.

Du wagst es, nicht jede 1-2 Jahre erneut deine Apple-Steuer zu bezahlen?

Edit: mein iPad Mini (selbe Generation) läuft zu meinem Erstaunen mit iOS 8 besser als mit iOS 7, aber das kann auch der eingebildete Speed einer frischen Installation sein.

In reply to: pants.gorgmorg.de/tjc389
Wie schon geschrieben, irgendwann soll eine Grafikkarte mit rein.

Das sieht doch ganz schlau aus. Ich bin nicht ganz sicher, ob ich nicht eine “richtige” Grafiklösung haben wollte - aber, nett.

Wie schon geschrieben, irgendwann soll eine Grafikkarte mit rein. Aber ich will erst einmal schauen, wie weit mich die 4400 trägt, um dann entscheiden zu können, wie viel Geld ich zusätzlich in eine GPU investieren möchte.

Es ist sicher kein Zufall, dass das auch einen ordentlichen Hackin0sh abgeben könnte, eh?

Jein. Auf der einen Seite würde ich es gerne mal ausprobieren, auf der anderen Seite habe ich keine großen Erwartungen daran (und besitze ja schon einen Mac.)

Ich möchte mir ggf.

Ich möchte mir ggf. doch bald endlich einen (bescheiden ausgelegten) PC zum Basteln und Spielen (Steam-Krams) zusammen basteln und habe mir mit etwas Unterstützung aus dem #pants-Channel auf Freenode diese Konfiguration erbastelt. Mein Budget: €500, eher als Übung statt aus Notwendigkeit.

Habt ihr dazu Feedback? Ein paar Notizen:

  • Nein, da ist tatsächlich keine GPU dabei. Dies ist zum einen der Tatsache geschuldet, dass die im ausgewählten i3 integrierte Intel HD 4400 vermutlich für das meiste, was ich spielen will, erst einmal ausreichen wird; zum anderen habe ich mich noch nicht entschieden, wie viel Geld ich denn überhaupt für eine GPU ausgeben mag (da ich wahrscheinlich nicht die vollkrasse Superpower brauche.)
  • Nein, da ist keine SSD dabei. Mir sind die Vorteile einer SSD vollkommen klar, allerdings soll das Ding halt nur ein kleiner Kasten sein, auf dem ich ab und zu mal was spiele bzw. bastel; die ausgewählte 1 TB-SSHD (danke für die Empfehlung, @unisphe.re) wird vermutlich vollkommen ausreichen, und wie bei der GPU kann ich ja später problemlos eine SSD nachrüsten.
  • Nein, es ist kein DVD-Laufwerk o.Ä. dabei, ich habe ein externes, was ich die wenigen Male, die ich irgendwo eine Plastikscheibe verwenden muss, per USB anschließen werde.

Über Feedback und Vorschläge freue ich mich (solange die Konfiguration mein selbstauferlegtes Budget von €500 nicht plötzlich überschreitet.)