Lovin’ the WordPress plugin ecosystem

I’m a sucker for simple things and in my book, WordPress (the open source software) is a great example of a simple yet powerful solution for publishing on the web. The last few days I experienced their plugin-ecosystem to be just as simple and powerful.
If you have a plugin to share and you:

  1. register on wordpress.org
  2. fill out a form to submit your plugin for inclusion in their repository
  3. after confirmation upload your code (together with a structured readme-file) via svn

Then boom, automatically;

  • plugin pages (for description, installation, faq, changelog, …) are created and populated with information from the readme and base php-file
  • a zip-file is created containing your stable version
  • your plugin is listed on the “new plugins” page

Before you know it, you’ve got a bunch of real users (wp-youtube-lyte was downloaded 128 times in 2 days) who can rate your plugin and provide you with feedback. And every time you upload a new stable version via svn, a new zip-file is created and your users will get a notification in their wp-admin pages, allowing them to upgrade by simply clicking that upgrade link. Don’t you love it when a plan comes together?
But enough raving already, got to go create that admin-page for my plugin now, as requested by a user. I’m a sucker for real users!

As found on the web (May 19th)

generic (feed #49)
generic (feed #49)
generic (feed #49)
frank posted The Tell-Tale Beat.
blog (feed #46)
frank published Web API security basics.
generic (feed #49)
generic (feed #49)
blog (feed #46)
generic (feed #49)
generic (feed #49)

Lite YouTube Embeds in WordPress

This 3rd episode in the “High performance YouTube embeds” series brings you yet another way to use LYTE instead of normal YouTube embeds: wp-youtube-lyte. This WordPress-plugin will automatically replace YouTube-links that start with “httpv://” with Lite YouTube Embeds, thereby significantly reducing download size & rendering time.
wp-youtube-lyte plays nice with the great “Smart Youtube” plugin, in which case it will take care of the default embeds (httpv), while Smart Youtube will parse the other types (httpvh, httpvhd, httpvp, …).
You can download the plugin from http://futtta.be/lyte/wp-youtube-lyte.zip.
A quick demo maybe, to finish things off? Owen Pallett performing “Lewis takes action” live in the KCRW studios:

Owen Pallett - Lewis Takes Action

Web API security basics

When I proposed the lead developer of an open source web application to enable JSONP for the API, the developer replied:

The whole thing sounds easy enough to implement, but I have some doubts that it will open the project to XSS attack of some sort. Don’t really know why, though. 🙂

We mailed a bit more about the risks of cross site scripting and then he wrote the following:

Sadly we can have malicious JS problems since cleaning up of incoming data is optional.

For an unrelated project I asked about authentication for a write-operation in the API and the reply was:

Authentication is not in the API yet. Currently you must include a session cookie along with API requests to perform a write, but the cookie itself is the one you get from logging in [in the web front end] as you would normally.

Which sounds a lot like “we support cross site request forgery out of the box” …
As with normal web applications, web API-security is an important (but complex) issue, which is not always easy to grasp. Based on a basic understanding of things, the following guidelines can go a long way into securing things both on the API-side and the client:

  1. Know who you’re dealing with; disable API-access for your users by default (allowing them to opt-in), provide bullet-proof authentication and session management in the API and throw in a synchronizer token to prevent cross site request forgery
  2. Never trust input from users or external systems; decide what to trust and filter out everything that’s not in that white-list (SQL-code, server-side code, javascript, and even html and css)

If you apply these basic principles to JSONP (make sure to filter the callback-parameter and set the correct content-type in your response) you’ll have a whole lot less to worry about!
More info:

As found on the web (May 12th)

generic (feed #49)
generic (feed #49)
generic (feed #49)
facebook (feed #40)
frank Frank Met zijn gezicht in een autoruit en in het ziekenhuis … auw..
generic (feed #49)
blog (feed #46)
generic (feed #49)
generic (feed #49)

Over hoe ik aan den lijve ondervond dat ge altijd een fietshelm moet dragen

Op de fiets door Brussel, is dat niet gevaarlijk?” vroeg men mij soms. “Nee” zei ik dan altijd een beetje stoer, “goed afgestelde remmen, een beetje geconcentreerd rijden en dan valt dat goed mee”.
Tot gisterenavond een voetganger met typisch Brusselse doodsverachting de straat zonder boe of ba overstak, een auto de remmen voor haar moest dichtgooien en ik hetzelfde deed om niet achterop die monovolume te knallen. Remmen dicht, de lucht in, door de achterruit van die vervloekte Opel het Schaarbeekse ziekenhuis binnengevlogen.
Op de spoed moesten ze 3 sneeën op m’n linkerarm dichtnaaien en hebben ze paar mooie zwart/wit foto’s genomen om daar -na lang wachten- op te zien dat er niets gebroken of gebarsten was in pols of nek, waarop ik goed bevonden werd om me terug in het verkeer te begeven, voorlopig wel zonder vouwfiets.
“Het valt mee, het had veel erger kunnen zijn” en “Ge hebt geluk gehad dat ge een helm ophad Mijnheer” zeiden Mario en Pieter (de vriendelijke ambulanciers), verpleegsters en dokters heel de avond lang. Absoluut! Ik en mijn Giro Flak fietshelm, wij zijn vanaf nu helemaal onafscheidelijk. Hopen dat Veerle dat geen belemmering vindt, zo in bed …

As found on the web (May 5th)

blog (feed #46)
generic (feed #49)
frank posted WebSockets in Firefox.
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
generic (feed #49)
blog (feed #46)
youtube (feed #51)
generic (feed #49)
generic (feed #49)
frank posted Revitalizing Caching.
generic (feed #49)
generic (feed #49)
blog (feed #46)
youtube (feed #51)
generic (feed #49)
facebook (feed #40)
frank Frank ‘t is maar dat ge het weet:
"As of today, there is a
new Facebook privacy setting called "Instant Personalization," which shares data
with non-FB websites and may be automatically set to "Allow." Go
to Account>Privacy Settings>Applications & Websites>Instant
Personalization and UN-CHECK "Allow." Please copy and repost because friends could still
be sharing info about you.".

But how unstable is Flash really?

You probably read that  Steve Jobs officially declared Flash a stability nightmare and that Adobe’s CEO responded that OS X is to blame. Hard to take sides in this blame-game, especially without access to Apple’s crash reports data. We do, however, have access to Mozilla’s crash-stats.mozilla.com. Could those figures provide us with at least some relevant statistics about Flash’s reliability?
I imported this csv-file with the top 300 crashers for Firefox 3.6.3 for the last 50 days (3.6.3 was released on April 1th) into a Google Docs spreadsheet and counted the number of crashes for each line where “Flash” or “NPSWF32” is in the signature (SUMIF without wildcard characters, seriously Google!?). You can find the spreadsheet here, but these are the results:

total number crash reports for top 300 crashers:3583582
crash reports with “NPSWF32” or “Flash” in signature:1154488
flash-related crashes %:32.22%

That’s right; almost 1/3 of the Firefox 3.6.3 “top crashers” are clearly related to Flash! So yes, there is good reason to consider plugins in general and Flash in particular a stability risk for Firefox. And for the record, the numbers for Mac seem to indicate that the problem is even (much) worse there! So hurray for Firefox 3.6.4 with Out of Process Plugins! And hey Adobe, get your Flash together!

Van 1 mei tot 13 juni: wat zijn die Sossen eigenlijk van plan?

En daarmee is het weeral 1 mei, dag waarop Kameraad Caroline naar jaarlijkse gewoonte hoog van de rode toren moet blazen. Met 125 jaar socialisme in België en met de verkiezingen in juni in het vooruitzicht, mag ze er ongetwijfeld nog een schepje bovenop doen!
Maar gaat dat wel goed komen voor de SP.A, met die verkiezingen en zo? Ik vrees er toch een beetje voor. Dit is, samengevat in 4 headlines, het parcours van de partij in de kwestie die politiek en journalistiek België de afgelopen maand bezig hield;

Niet mee willen onderhandelen, niet willen depanneren en de gewonde Leterme dan nog eens een stevige linkse verkopen? Pas op, dat zijn allemaal standpunten waar misschien wel één en ander voor te zeggen valt en met Yves moeten we niet te veel medelijden hebben, maar …  Hoe kan de SP.A, die -zoals de afgelopen maand weer eens bleek- zich als het over communautaire kwesties gaat liefst op de vlakte houdt, een rol van betekenis spelen in een verkiezingscampagne die opnieuw gedomineerd zal worden door BHV, overhevelen van bevoegdheden en faciliteiten?
Nee, ik vrees dat de heropstanding van de SP.A niet voor juni is. En zelfs Caroline weet eigenlijk al in welke hoek de winnaars zullen zitten:

Bij nieuwe verkiezingen voorspel ik wel grote chaos en dat stemt me bijzonder droevig omdat het in de kaart speelt van extreme partijen […] (bron: deredactie.be)

En dat in het 125ste jaar van de Socialistische Partij … Spijtig!