Whatever

Gerade hat man sich an den Namen Lōvefilm gewöhnt, da unterbietet das ein alter Bekannter mit einem neuen Namen für ein weiteres Netflix-ähnliches Angebot. Bereit? Vorsicht, gleich:

Watchever
Logo: Watchever GmbH

Nein, keine Satire. Selten schwingt in einer Marke gleich von Beginn eine derartige Gleichgültigkeit und Austauschbarkeit mit. Whatever, Watchever.

Selbst die kleine Figur im Logo scheint auf ein beliebtes Image Macro anzuspielen, das Leidenschaftslosigkeit ausdrücken soll.

Watchever gehört Medienriese Vivendi und sammelt gleich am ersten Tag Sympathiepunkte für die Startkooperation mit der Bild-Zeitung. Ohne Bild.de-Konto gibt’s die Anmeldung erst in zwei Wochen.

Der Dienst ist die übliche Melange aus Silverlight und “Smart”-TV-“Apps”. Bleibt auszuprobieren, wie die Integration auf dem Apple TV aussieht, die sie erstaunlicherweise zum Start auch schon haben.

Die Videoqualität ist dem ersten Vernehmen nach schlecht, wie erwartet.

Laut FAQ gibt es “zahlreiche” Titel in OV. Sollte wohl “alle” heißen, aber watchever.

How To Edit Vector Illustrations

10 Install Adobe Illustrator

error5

20 Download & Install Inkscape

Setting Language: .UTF-8

(process:1454): Gtk-WARNING **: Locale not supported by C library.
    Using the fallback 'C' locale.
Nothing to do!
logout

[Process completed]

30 Goto 10

Schoko-Wünsch Dir was!

Ich bin ja leider immer noch Kunde bei der HypoVereinsbank, dem Kernkompentenzteam unter den Schokobanken. Nicht, dass die anderen besser wären, aber hier sind meine persönlichen Highlights für 2012:

  • Nachts schalten sie immer noch das Internet-Banking aus. Buchungslauf, weißte?
  • Disketten (!) mit Buchungen zum Jahresschluss bitte bis 27.12. einreichen.
  • Der Online-Kontoauszug funktioniert genauso wie der Auszugsdrucker. Anfordern, genau einmal herunterladen, danach ist das PDF weg.
  • Update: Die PDF-Auszüge liegen immerhin eine Weile in einer Inbox, die sich dann aber nach 6 Monaten wieder deaktiviert.
  • Seit ein paar Monaten haben sie einen Online-Berater per Videokonferenz. Da haben sie sich von den Citrix-Sales-Droiden bequatschen lassen, dass sich die Bankkunden prima Citrix-Client vom US-Server auf dem eigenen Rechner installieren, um mit einem Mitarbeiter zu sprechen.
  • Mobile TANs finden sie auch ganz dufte. Inklusive der Kontonummer und des Betrags in der SMS. Da können die Android-Trojaner gleich noch mehr auslesen, als sie brauchen.

Aber den Vogel schießen sie gerade mit diesem Banner für Neukunden ab. Der/Die/Das USP: Nimm doch deinen Hochzeitstag als PIN für deine EC-Karte.

Wünsch Dir ein leeres Konto.
Wünsch Dir ein leeres Konto. Bild: HypoVereinsbank Abteilung Kundensicherheit

Update 2013-01-09: Die Kampagne auf der Startseite ist raus, und auf der Neukundenseite spart sich die Schokobank jetzt auch den Hochzeitstag. Einsicht oder normale Aktualisierung?

Replacing Skype for Remote Podcasting with Mumble and Opus

On the German show Bits und so two of our regulars are remote. Leo in Wiesbaden, Germany, and Alex in Helsinki, Finland. The studio is in Munich, Germany. For the past couple of years, they’ve joined the conversation via Skype, as so many podcasters do. The reliability and quality of this service has been flaky, and even worse, it seems that nobody at Skype seems to care. Apart from terrible UI updates, the underlying codecs and protocols don’t seem to get any attention in a shipping client. A new feature we tried using for a while was paid multi-user video chat, which always resulted in inexplicable audio quality degradation. We had to switch back to one person per Skype machine.

I’ve been evaluating alternatives such as iChat (remember that?), Facetime, SIP software phones, ISDN hybrid codecs for a long time, but despite the pain, none would even come close to the relative ease of use, reliability and quality of Skype. And Skype is horrible. Go figure.

Mumble

For the past three months, we’ve been evaluating Mumble 1.2.4 with Opus support and won’t be looking back at Skype anytime soon. Read more details on Opus at the Auphonic Blog.

As Mumble 1.2.4 still isn’t released, you will have to build binaries yourself or find something on the web. A great German resource is Natenom’s Wiki or the English official Mumble Wiki.

Mumble appears to have been developed, similarly to Teamspeak, with gaming in mind. The idea is to start the client, connect to a server and let the connection run in the background, while you play your game.

Server

Mumble’s server (named “Murmur”) can be run locally provided you have sufficient upstream bandwidth. In most cases, you will want to run the server in the cloud. We tried both cheap virtualized boxes and a dedicated high end machine and didn’t really see any differences. CPU load should be minimal, and as long as you’re talking about a handful of participants, network bandwidth also will be minimal percentage wise on a 100 MBit/s connection.

Our server now is located somewhat centrally between all participants, in Falkenstein, Germany. Geographically and network topology wise.

Channel

By having an open channel, participants can dial into that channel whenever they want – the host doesn’t need to take action when somebody loses their connection and needs to reconnect.

Client Defaults

The defaults in the Mac client are a little odd. We found that disabling all sound processing, transmitting continously and setting “Audio per packet” to the minimum value of 10 ms, we achieve our goal of a high quality, low latency connection that will not cut out when multiple people are talking at once. This of course requires all ends to minimize all crosstalk from headphones to microphones, or all echo will be transmitted as well.

There’s also a bunch of notification sounds that need to be disabled on both ends.

Mumble also comes as an iPhone app (no Opus support in the App Store yet, need to build it yourself from source) which enables high quality voice calls even on a 3G connection. Again, weird default settings that need some massaging. Turn on continuous transmission and disable any sound processing.

Codecs

SILK, Skype’s standard audio codec is specified at a maximum sampling frequency of 24 kHz. This means that frequencies above 12 kHz will be cut off. This gives you the typical Skype sound you’re used to. The maximum bitrate is 40 kbit/s for SILK.

But we really don’t need to be restricted by this codec nor by very low bitrates. Even on the somewhat archaic DSL line in Finland, we have 1 Mbit/s upstream.

With Opus over Mumble we gain the ability to set the audio bitrate manually. We found that anything over 70 kbit/s sounds really great, and 40 kbit/s still is much better than Skype on a good day. Also, the signal contains frequencies up to 16 kHz, implying there may be a low pass or some 32 kHz sampling frequency in the signal path. Unlike Skype, there’s no level compression or hard limiting built-in, which means that you should be extra-careful not to clip the input and that you need to take some extra care in processing the signal yourself in post or on a hardware audio processor.

Opus has a default codec latency of 22.5 ms, configurable down to 5 ms, although I’m not sure which value is used in the current implementation. Anyway, it’s lower than 25 ms with SILK.

Syncing with Skype Video

So you want to look at each other or want to broadcast the webcam image as well? Just run a Skype video session in parallel, with mics and Skype audio muted. This will reveal the higher latency Skype provides over the very same connection. The result is a very visible and audible ~100 ms delay of the video. Usually, that might be a deal breaker, but in our setup this is actually really great: Our little HDMI cameras that record the images from the studio introduce a similar visual delay and lag behind the audio. All we need is to delay audio for 80 to 100 ms and all sources will be in sync again.

Optimizing UDP Latency

With increased manual control over the protocol, we can try to optimize latency even further. As Murmur will not mix the audio on the server and provide each participant with their own mix, but will only forward individual streams to all participants, you may look into running the server locally, to minimize latency from Murmur to your local instance of Mumble. Local latency on the loopback device should be well under 0.1 ms. This would provide you with a minimal latency “truth” on your mixing board.

In our case though, this theoretical advantage does not help in the real world.

Comparing ping times from Helsinki to Falkenstein (avg 90 ms) to ping times from Helsinki to Munich (avg 160ms) and a quick traceroute shows that the Finnish ISP has better peering to Germany over DE-CIX to Falkenstein and a much slower route, via Sweden, to the network of Deutsche Telekom where my VDSL line is hooked up.

Falkenstein Munich
Munich 25 ms 0.1 ms
Wiesbaden 25 ms 25 ms
Helsinki 90 ms 160 ms

Adding the 25 ms from the studio in Munich to the server in Falkenstein gives us a better latency to Helsinki (25 ms + 90 ms = 115 ms) than directly from Helsinki to Munich (160.1 ms)

Conclusion

After 10 episodes (combined runtime: ~30 hours) we’re quite confidently using Mumble as a vastly superior alternative to Skype for our purposes, enjoy much more lively conversations without anyone cutting out, reduced latency and increased audio quality. Skype is demoted to providing us with a moving image.

The increased work to set this up may not be for everyone, but for professional, regular shows this little effort will pay off in a huge way.

As we’ve seen in an ever increasing number of examples, relying on third party services will at some point come back to bite you. Whenever Skype goes belly up or turns super evil, we’re covered, at least for the audio part. The irony in that is of course that Skype is heavily involved in the development of Opus, but so far no Skype version supporting it has been published.

Update 2013-01-22: Read more on how to set up Mumble for optimized latency and audio quality.

New Blog

I’ve had it with Twitter and their quadrants. Nobody leaves email, nobody leaves blogs, right? So here you go. I own my content and can move it freely whenever and wherever I want. BTW Dick, where’s that Twitter Exporter you promised this summer?

I crossposted a bunch of old posts from the Undsoversum Blog that really didn’t fit over there.

Außerdem ist hier noch der Laster, mit dem die Videos aus der deutschen YouTube abtransportiert werden.
20121215-155200.jpg

Adjusted Euro App Store Retail Prices

Before

When the App Store launched in the summer of 2008, four years ago, the exchange rate EUR/USD was at around 1 EUR = 1.58 USD. Accordingly, the conversion for the European App Store was something like this:

0.99 USD / 1.58 = 0.627 EUR

Subtract Apple’s cut of 30% from this to arrive at the payout of 0.44 EUR.

Add 15% VAT to 0.627 EUR for iTunes Sàrl in Luxembourg, who acts as the operating legal entity for Europe: 0.627 EUR * 115 % = 0.72 EUR.

N.b.: This tax rate is valid for all European customers, regardless of the developer’s or the customer’s nationality. Look it up in European Council Directive 2002/38/EC and amending Directive 77/388/EEC.

So, to get a nice price, Apple rounded 0.72 EUR to 0.79 EUR, giving them leeway to a USD exchange rate as low as 1.44 EUR.

As to why the adjustment happend now – who knows what Apple’s rules for this look like. The Dollar dipped below 1.44 EUR a couple of times in the last four years.

After

So right now the calculation is:

0.99 USD / 1.29 = 0.767 EUR

Add 15% VAT: 0.767 EUR * 115% = 0.883 EUR

Round that up to nice-looking 0.89 EUR.

To arrive at the new developer payout: 0.89 EUR / 1,15 * 70 % = 0.54 EUR.

Across the 87 regular price tiers, the increase in retail price roughly is between 9% and 20%, accounting for some very irregular rounding at some tiers.

Prepare yourselves for the next adjustment when the exchange rate stays below 1.15 for a while.

Auto-renewing Subscriptions

How does this affect auto-renewing subscriptions? The basic rule is: If the developer racks up the price of a subscription, the subscriber will be notified when his renewal comes up and the subscription will not be renewed automatically. What happens when Apple increases the retail price? My guess would be that the customer will be billed the new price automatically. Guessed wrong. They cancel all subscriptions.

Update: Decrementing the price tier to match (or possibly undercut(?)) the old Euro price will keep subscribers on their auto-renewing plan, but will reduce revenue outside of Euroland accordingly.

Funfact

Digital dead-tree publishers get special sauce for price tiers 1b (0,99 EUR) and 2b (1,99 EUR). As far as I can tell, these are only valid for Newsstand subscriptions, and stay the same after the adjustment, at the lovely exchange rate of 1 EUR = 1 USD. A recent addition to price tier 2b appears to be The Magazine.

Location-Based Ads: The Passbook Feature Nobody Noticed

So, Passbook is perceived having a bad start. The special App Store category is mostly empty, and support in the few companies that support it seems rushed or is spotty.

Implementation is not trivial, but easy enough. Passes are a zipped bundle containing images, pass data in a json structure and a cryptographic signature. Updates to passes are triggered with push notifications. Any half-asleep Java developer can whip that up during his coffee breaks.

One feature that is included in Passbook but hasn’t got any attention is that they’re location-based. Any pass can contain a number of locations that will set up geofences on the iPhone and will present the user with a prompt to go into your store and spend some money when they’re nearby. When I got close to the Subway’s location, the notification popped up silently, and when I left, it disappeared again. A loyalty card pass for a larger chain could update itself to notify the user when they’re near one of their five most frequented branches.

The marketing departments should be falling over themselves to implement Passbook. Guess nobody told them, including Apple.

Note that this pass is self-made and is not actually supplied by Subway.

App Store Bit Rot

With Xcode 4.5 reportedly dropping support for armv6 binaries (iPhone Classic and iPhone 3G) and therefore deployment targets below iOS 4.3, actually continuing to use these devices gets increasingly harder.

Apple has half-baked measures in place that could alleviate this issue, but it appears to be broken.

Let’s say I’m using my iPhone Classic on iOS 3, and GreatApp 1.0 supports this hardware.

The developer decides to support iOS 6 and iPhone 5 using Xcode 4.5 and therefore has to drop armv6 support with GreatApp 2.0.

The device will not install the update because it’s incompatible. But iTunes on Mac/PC will download the update and replace the 1.0 .ipa on disk.

Now the device needs a restore from a backup. iTunes lost the 1.0 ipa. And the device is unable to get the older version from the App Store, because only the latest version is listed.

In iTunes Connect, there is an option to “indicate a legal issue with this version“. According to the wording on the page, this should make this version unavailable to redownload. This would also imply there was some way to access those old versions. But there is none.

Even when accessing the old purchase directly (viewSoftwareRedownload URL), the store seems to present only the latest version to the user, even if it’s incompatible.

With an ever-increasing number of older devices floating around, Apple should make sure customers have a way of restoring those devices to a somewhat usable state even when apps get their unevitable updates and drop explicit support for old devices.

The App Store should enable old devices to actually download the last compatible version of an app through the iTunes in the Cloud / iCloud mechanism, a.k.a. App Store / Updates / Purchased.

Developers should have a clear way of indicating which old versions should stay available. The “legal issue” indication is there already, but worded confusingly and apparently quite useless.