QuirksMode: “The problem with Angular”

I’ve previously already expressed my doubts about the how well-suited AngularJS is for mobile web development (in Dutch, though, as I was discussing the merits of the mobile news-site of the Flemish broadcaster VRT).
QuirksMode’s PPK dove in a lot deeper in his “The problem with Angular“, stating amongst other things;

Angular is aimed at corporate IT departments rather than front-enders, many of whom are turned off by its peculiar coding style, its emulation of an HTML templating system that belongs on the server instead of in the browser, and its serious and fundamental performance issues. I’d say Angular is mostly being used by people from a Java background because its coding style is aimed at them. Unfortunately they aren’t trained to recognize Angular’s performance problems.

The performance problems PPK mentions are not the initial download of angular.js in the browser (which is one of the reasons why I dislike it), but the fact that angular.js does a huge amount of DOM-manipulations, which are costly, especially on mobile. This quote says it all;

Although templating is the correct solution, doing it in the browser is fundamentally wrong. The cost of application maintenance should not be offloaded onto all their users’s browsers — especially not the mobile ones. This job belongs on the server.

But do read PPK’s article for more insights on Angular and the road it is heading down with AngularJS 2.0!

WP YouTube Lyte and YouTube API v2 end of life

The YouTube API v2 is now officially to be shut down soon after April 20th. That’s bad news for WP YouTube Lyte, which uses this version of the API to perform unauthenticated read-only requests to fetch a.o. video title and thumbnail information (example here). The v3 API is supposed to simpler yet more powerful and migrating should not be a big problem, except for that little detail that v3 doesn’t allow unauthenticated requests at all. So I’ll need to add authentication (via an API key) to the mix, leaving me with the dilemma of having to choose between these approaches, none of which I really like:

  1. Tell WP YouTube Lyte users to get their own API key and have them enter it in the plugin’s settings-page. Risk: upsetting users who all of a sudden have to get an API key (“huh, what key?”)
  2. Get an API key myself and hardcode that in WP YouTube Lyte. Risk: abuse of that key (and neither a server key nor a browser key is applicable really), reaching limits, being denied access.
  3. Create and operate a proxy application that sits between the v3 API and each and every WP YouTube Lyte instance, taking care of authentication with an API key. Risk: having to write & install that proxy application, making sure it is available 24/7 (it’s a single point of failure) + obviously the same abuse-risk as in (2).

No, I’m definitively not happy … 🙁

Sad Musicians Make Better Music

While waiting for a meeting to begin, I perused the Spotify playlist of a colleague. One of the only names I recognized was Sia.
Aaaah Sia, … How I used to love her. Beautiful songs (both solo and with Zero 7) , wrought with pain, doubt, passion and a splash of quirkiness. Think “Soon we’ll be found” or “Destiny” and above all “Breathe me” (which also featured in the most impressive final of one of the most beautiful and slightly quirky TV shows ever), here in a live version in the KCRW studio’s in 2007;

Sia - Breathe Me (Live at KCRW 2007)

But I’m afraid the love affair is over, Sia confessed to being happy now and the song on the Spotify playlist was David Guetta’s rather horrible Titanium which Sia provided vocals for. And recent Sia-tracks like “Chandelier“,  “You’re Never Fully Dressed Without a Smile“, “You’ve changed” or these “7 Songs You Didn’t Know Were Written by Sia” don’t really move me either. I wish Sia all the happiness in the world, but I wish she was still sad. If only a tad.

Nieuwe m.deredactie.be niet meer mobiel!

(Update December 2014: ik bouwde zelf een alternatieve versie die sneller en toegankelijker is op http://futtta.be/redactie/)

m.deredactie.be homepageIk ❤ mobiele websites, zelfs op de desktop. Bij het refreshen van m.deredactie.be vandaag (12 mei) kwam ik op de nieuwe versie uit. De developers hebben zich ongetwijfeld goed geamuseerd om niet alleen de nieuwe look & feel te implementeren, maar ook om de achterliggende technologie grondig te herbouwen naar een JavaScript-based UI volgens de “single page application“-filosofie (iemand heeft zich wel héél erg in angular.js verdiept, daar aan de Reyerslaan).
Maar ik, eenvoudige gebruiker, ben minder enthousiast. De site ziet er misschien moderner uit, maar is minder bruikbaar; zonder javascript is er niets te zien (neem een voorbeeld aan “cut the mustard“, progressive enhancement zoals de BBC die predikt), “above the fold” staan er enkel afbeeldingen en vooral; alles is plots trager!
Want over snelheid kun je niet discussiëren; sneller is beter, trager is slechter, zeker mobiel. De voorgaande versie van m.deredactie.be “woog” pakweg 150KB en laadde volledig in minder dan 2 seconden, maar de nieuwe versie tikt af op 2560KB in 6 seconden (gemeten op webpagetest.org met “cable” bandbreedte-profiel, met “fast mobile” wordt dat 17s).
Is m.deredactie.be een mobiele site? 2 megabyte aan data zeggen van niet.

Twitter-fight leidt tot onzin over dansmuziek in de krant

Kort over “Generatiekloof leidt tot koude oorlog op de dansvloer“: Rommel is er altijd geweest, ook in de electro. De recente disco-exploten Daft Punk zijn evengoed saai. Er wordt nochtans nog zo veel fantastische muziek gemaakt; Four Tet, Flying Lotus, Floating Points, … En Modeselektor. En Gold Panda. En Jon Hopkins. En deze Jono McCleery;

Jono McCleery - 'Ballade' (Djrum Remix)

Maar een Twitter-fight is altijd goed voor wat extra aandacht, de kranten moeten gevuld en wij moeten onze meninkjes toch ook ergens kwijt? Dus tuurlijk is er een generatiekloof, tuurlijk leidt die tot een koude oorlog. Wankers!

Irregular Expressions have your stack for lunch

I love me some regular expressions (problems), but have you ever seen one crash Apache? Well I have! This regex is part of YUI-CSS-compressor-PHP-port, the external CSS minification component in Autoptimize, my WordPress JS/CSS optimization plugin:
yo regex dawgExecuting that on a large chunk of CSS (lots of selectors for one declaration block, which cannot be ripped apart) triggers a stack overflow in PCRE, which crashes Apache and shows up as a “connection reset”-error in the browser.
Regular expression triggered segfaults are no exception in the PHP bugtracker and each and every of those tickets gets labeled “Not a bug” while pointing the finger at PCRE, which in their man-pages and in their bug tracker indeed confirm that stack overflows can occur. This quote from that PCRE bug report says it all, really;

If you are running into a problem of stack overflow, you have the
following choices:
  (a) Work on your regular expression pattern so that it uses less
      memory. Sometimes using atomic groups can help with this.
  (b) Increase the size of your process stack.
  (c) Compile PCRE to use the heap instead of the stack.
  (d) Set PCRE's recursion limit small enough so that it gives an error
      before the stack overflows.

Are you scared yet? I know I am. But this might be a consolation; if you test your code on xampp (or another Apache on Windows version), you’re bound to detect the problem early on, as the default threadstacksize there is a mere 1MB instead of the whopping 8MB on Linux.
As for the problem in YUI-CSS-compressor-PHP-port; I logged it on their Github issue-list and I think I might just have a working alternative which will be in Autoptimize 1.8.

Facebook force-feeding Messenger, going mobile web instead

So Facebook wants me to install yet another permissions-greedy app just to read messages? That is so frustrating! So no, don’t think so guys. I’m putting Facebook back into the (slightly) safer sandbox that is the mobile web;
facebook forces users from app to web
So thanks for reminding me why I love my mobile browser that much Facebook!

Stress uitlokken dan toch ethisch volgens JEP

cover van metro op 13 Juni 2013Die mannen van de JEP hebben zich op vraag van de advocaten van Beiersdorf opnieuw over de zaak “Stress op de trein” gebogen. De Jury in eerste aanleg veroordeelde de advertentie voor Nivea Stress Protect nog in strenge bewoordingen:

De Jury is van mening […] dat het onvoldoende duidelijk is dat het in werkelijkheid gaat om een bericht dat deel uitmaakt van een reclame.[en dat] de reclame in kwestie niet getuigt van een behoorlijk maatschappelijk verantwoordelijkheidsbesef en meer bepaald ten onrechte inspeelt op angstgevoelens

Maar de JEP-jury in hoger beroep bleek het daar dan toch niet mee eens (zie ook samenvatting van de klacht en de uitspraken op de site JEP);

De Jury in hoger beroep is derhalve van oordeel dat de reclame in kwestie voldoende identificeerbaar is als reclame voor de gemiddelde consument [en] dat uit deze context en uit de totaalindruk die de reclame biedt, voldoende duidelijk het humoristische gebruik van overdrijving naar voren komt. Gelet op het voorgaande, is de Jury in hoger beroep derhalve tevens van oordeel dat de reclame in kwestie niet van een gebrek aan behoorlijk maatschappelijk verantwoordelijkheidsbesef in hoofde van de adverteerder getuigt.

Terug naar af, of toch niet helemaal? Goh, ik mag hopen dat ze bij Metro, Beiersdorf en het reclamebureau in het vervolg toch net iets verder van de grenzen van het toelaatbare blijven? Want al de commotie (de veroordeling door JEP in eerste aanleg, de verontschuldiging van Metro, de publicatie van de rechtzetting van Infrabel en de veroordeling van Metro door de Rechtbank van Koophandel van Brussel), daar moet toch wat stress-zweet aan te pas gekomen zijn, niet?