Categories: "Full Stack Dev & Design"

Syndication, RSS, RDF and Atom in a Nutshell

Once upon a time, there was a company called Netscape who was investigating a new market: portal sites and content syndication. The idea was simple: a variety of websites produce relevant content in a (nearly) continuous flow. Portals would be designed to aggregate news and content from those sites and present it to the user all in one page...

Thus, Netscape invented a format called RSS, which stood for "Remote Site Syndication". This spec allows content producers to publish their news/content in an "RSS feed" (an XML based document) and content consumers to periodically check those feeds for updates.

When Netscape lost interest in developing portals, they abandonned their original (and complex) RSS 0.9 spec as well as their efforts in creating a more appropriate and simpler version. At that time, UserLand picked up the simpler 0.91 spec and applied it to its blog tools. RSS had become "Really Simple Syndication".

Today, the blogging community still uses RSS extensively: every (serious) blogger publishes an RSS feed of his posts and readers aggregate all their favorites blogs' feeds in an aggregator. This, of course, makes it more convenient to check for new posts daily on all your favorite blogs...

b2evolution is an example of a blog tool used to publish RSS feeds. SharpReader is an example of a program used to aggregate RSS feeds.

Read more »

Underrated PHP & SQL

I realized today that PHP's state of corporate underratedness is probably is similar to SQL's state of corporate underuse.

You could think it's because these technologies are not object oriented enough...

You could also think that they have been so widely misused that they got a bad reputation...

Well, actually I think the main reason is just marketing! There are corporations out there, spending millions to get the press to think (and write) that you need more complex architectures and data access schemes to get things right!

That is true sometimes... but I fear that more than 80% of the uses of things like object-to-relational mapping and other J2EE candies are just overkill... but of course, every manager thinks his project is the kind of project the press is talking about... And of course, contractors are going to give them what they ask for... as long as it pays better...

Funky world out there! :>>

(I don't believe in) Web Standards (no more... but I wish I still had faith!)

"Web Standards"... that definitely sounds cooler than it really is...

At first we had HTML and Mosaic... Then came Netscape and Microsoft with their proprietary extensions... and so came the need for standards. We got several versions of standardized HTML, but still varying implementations (IMG align anyone?).

Then came some "really really" standard method to iron out rendering differences: Cascading Style Sheets! Well... another failed attempt: people tweak them even more than standard HTML and the rendering differences get even worse. So now, we have a collection of dirty tricks to apply different CSS to different browsers.

Okay, forget that; we have an even newer standard now: XSL. You just send pure and clean XML to the browser. Then you let the browser reformat it with an XSLT template. PLEASE! XSLT implementation differences are just as problematic as with CSS... and finally no more than with plain HTML! And regarding IE, it's definitely too slow to be really useful! >:XX

So today, I really wonder why we go through all this pain... Sending different presentations in plain HTML (okay, let's say XHTML+CSS for bandwidth and maintainability optimization) was faster than desperately trying to find the "compatibility spot" in a single "standard compliant version"! :|

Not to mention there are still old browsers that do not support a lot of standards out there... and there are more and more alternative browsers (on either desktops, appliances or mobile devices...) that all support standards in their very own way! :(

What can we do? I mean pragmatically! Apart from condemning everyone that doesn't comply 100% to the standards (just a few millions anyway...).

I think we need to remember those "best practices" we had a few years ago and get back to something like this:

  1. Identify most common targets (browsers/devices) and provide them with a specific+optimized presentation (CSS/Flash/whatever). The more targets you can handle with compatible web standards, the better. But don't forget to test all those targets! You'll undoubtly encounter nasty surprises on some of them... Note: contrary to popular belief, most common targets and their "market share" largely depend on your audience!
  2. Provide at least one "safe" presentation. One that is guaranteed to be readable by almost anyone. Alternatives would be good here: maybe one text only (HTML 2.0) and one with basic CSS and images that makes it just a little more attractive (but still avoiding any CSS/Flash showing off!)
  3. Provide a manual switch between version for the times when the user uses a browser that can do more or less than we had expected. (It would be wise to always bet on less, but you'll inevitably make false assumptions at some point.)
Okay, so what's new here? Those of you running corporate sites might think they already do that. You may want to check again: are you sure you didn't stop at step 1? :?:

Now, for personal sites... I completely realize that providing multiple versions will sound like crazy to many of you. How can I expect you to update content concurrently in several files? Well... I don't! Any hosting provider nowadays will let you use dynamic page generation (one content, several presentations). I'll get back to this topic later...

Eclipse for PHP, eclipse for everyone!

I really like Eclipse as a Java IDE, I do! :D

However I'm getting really tired of having a different IDE for each language I am working with, no matter how cool those IDEs might be. Different display conventions, different keyboard shortcuts, different project browsing... :(

Microsoft sure has this right with their Visual Studio where you use an as-uniform-as-can-be IDE no matter what language you use: C++, C#, VB... Hum well, the problem is that it's a) quite expensive (unless you're completely commited to .NET and have an MSDN subscription anyway) and b) best suited to Microsoft supported languages. Java and PHP poorly qualify for this... :-/

The really nice thing that I found out today is that Eclipse is actually really beggining to become a common IDE even outside of the Java world! B)

As a matter of fact, I found no less than TWO very promising extensions for PHP:

Both of these are open source and have the minimal you could expect: PHP syntax coloring. TruStudio also supports Python and integrates a complete debugger interface. However I prefer PHPEclipse because it already has code completion where TruStudio only has contextual help.

Anyhow, it's very difficult to choose between both implementations so far since they both have pros and cons. You have to try them out both. Installation and removal are straightforward (just unzip or delete folders from the plugins directory). You'll also find out that you cannot use both at the same time (one PHP editor will disable the other one).

Those products will surely be very nice to use when they mature... but in the meantime they just add to the mess of finding the right IDE that does everything you need and does it right...

A little adventure into web dev

My real life has been holding me off from blogging and all that stuff for the last month. However, as I was sick and staying at home for the last two days, as there was nothing on TV (I really oughta get that satellite dish!), I pulled out my Dreamweaver...

First, I conscientiously fixed all open bugs on b2evolution and released a maintaince package. Then I went on playing with the homepage at http://b2evolution.net/ .

Check out that totally fluid 3 column layout. Try resizing the window. Try changing the font size. What do you think? ;)

By the way, tweaking with CSS layouts is a very efficient way to kill time! :>>

Anyway, the most interesting part of that new homepage is in the right column. There is a list of recently updated b2evolution blogs. I had added a feature in version 0.8.6 where b2evo sends a ping to its homesite everytime it is used to post a blog somewhere on the internet (unless you disabled that pinging in the conf). These pings actually get stored and here they come out of the darkness.

Now the homepage is different everytime I visit it and I can see b2evolution in action even when I don't feel like blogging myself! :D

Okay, enough self pride...