soledad penadés
repeat 4[fd 100 rt 90]

Archive for the ‘thoughts’ Category

20070709 Why is it important to have open standards

First of all, let me confess something: each time I find a headline which begins with why and has either open or standards in it, my first idea is to skip that article and read the next one. So I'll understand if you feel the same urge.

That said, I would like to explain my own tacky headline and why I do believe it really matters.

Normally, when discussing these topics, the conversation usually ends in a dead end where everybody gets bombarded with either very philosophical matters, which do not touch the inside of most of us, selfish beings, or usual and boring unintelligible cliches such as licensing, operating system A vs operating system B and all that malarkey, which force everybody else in the discussion to leave and let the speakers alone.

That's not good, because the issue is really important. But due to the inability to communicate of the defenders of the good cause (open standards), most of us are completely unaware of the seriousness of this.

What we are doing by allowing our personal stuff to be recorded and preserved in closed formats is like buying a leasehold instead of a freehold. You get the illusion that you are the owner but in fact you're just owning part, not the whole, of your files. Once the lease expires, you'd better start thinking about a way of renewing it or may have to move to a different place. And on the move, something may get lost and you can't complain because that wasn't covered by the lease contract. But if you manage to renew the lease, it may probably come with a new list of terms and conditions, which you might have to accept or risk losing your valuable belongings.

Now think of this in software terms. Each time you save your data in proprietary, non standard formats, you're exposing yourself to the future will of your software vendor. If they decide to stop supporting that software, you can begin waving bye bye to your data. Admittedly, you could keep using the same version of the software. But what do you do if you want to move to a different platform? Or if your current version crashes with a new version of your operating system?

Yes, there are emulators. There are visors and readers and converters. They might come from the software vendors (rarely) or might be a product of reverse engineering. And all of them are like a home-move: something may be lost in the process, with you getting to know when it's too late.

I'm scared!! What can I do??! AAAAAH!!

So I managed to scare you! Good! I think we all should try, for our own sake, to start looking for open alternatives when faced with the decision of choosing a file format.

For example, as a developer, a good idea is to try and use common formats instead of creating your own one when you need to store data. Not only it will help you in developing time (since there might be tools which manage that file format already there) but it will help people to use their data wherever they want, with the program they want, instead of forcing them to use only your program for manipulating their data.

As a user, try to use open formats, so that you do not force anybody into your closed living style when sharing data with them. For example, if you want to send somebody a song, do not send a WMA file which in addition may need some exotic plug-in for playing; just use OGG, which is free and doesn't force people to install something (a player) which forces them to accept an extraordinary lengthly EULA when the only thing they want is to listen to a song.

I have lots more of examples. Movie files which can't be played by your friend and he doesn't want to download player X and crack it so he can't see that funny clip you found. Your university texts written in some sort of old text processor which who knows which format used, lost in computer's limbo. Four years' e-mails. The whole accounts data for a company. Your drm'ized songs collection, religiously paid at an online music store…

At the end, using open formats will ultimately benefit the owners of the data - that means you! And if you're not worried about having to ask first in order to access your data, you're in risk of losing it.

20070307 Being understood

(This is an extended version of the minispeech I gave at BarCampLondon2, "Being understood", and here are the slides just in case you're willing to see some bullet points goodness).

We are failing to make ourselves understood. We can be speaking the same language as our listeners and failing miserably in communicating even simple concepts properly.

I'll show you a couple of real life examples, taken from a web design and development forum:

  1. Thread A: New website by xyz.
    When approaching a new website by xyz announcement, different people pay attention to different stuff. Designers which need to work with HTML tend to focus only on the design and the flashiness of the end result. On the other hand, developers and people which are really involved with the bare bones web tend to look minuciously at the implementation details and the use of technology, kind of ignoring the end users of the websites.Hence, you get answers like these ones:

    • Designer: it's so cool! I like the design!
    • Concerned-with-standards person: it sucks! they use tables and it is not valid! they should use layers and CSS only!

    In truth, that website was visually great but the implementation was a terrible abomination.

    Normally there are lots of lurkers in the forums and they tend to read way more than they write. Occassionally, someone which is just starting in web development read this thread and got confusing information, which led to the next thread:

  2. Thread B: Help with a CSS design!!!
    I'm trying to do a CSS-with-layers-only design but I'm stuck on something. I'd like to show a list of prices, it should be something like this:

    LOREM IPSUM
    Dolor 10
    Amet 12

    I thought of solving it with something like this:

    <div class="table">
    	<div class="first_cell">
    		<div class="blue_3px_border">
    			LOREM
    		</div>
    		<div class="blue_3px_border">
    			IPSUM
    		</div>
    	</div>
    	<div class="row">
    		<div class="value">
    			Dolor
    		</div>
    		<div class="value">
    			10
    		</div>
    	</div>
    	<div class="row">
    		<div class="value">
    			Amet
    		</div>
    		<div class="value">
    			12
    		</div>
    	</div>
    </div>

    … but I'm having some problems for getting it all well aligned…

    Obviously someone got terribly confused here. There are real examples, like the main page of any forum using phorum's default skin, which is built using div's instead of using a table for what is a good table use.

And then we also have the magic word: accessible. That word. Each time it's used nobody gets its meaning right. You can find discussions like this one:

  • this site is not accessible
  • … but I can access the site, what's wrong with it?

… which should start ringing all the bells in our brains but instead of stopping and trying to clarify things before it's too late, we just contribute to increase the uncertainty and fear with more misunderstandings, like for example these ones which are very common:

  • cookies will steal all the data from your computer
  • javascript will steal and publish your compromised pictures in flickr
    • and tag them
    • and geotag them
    • and send an e-mail to all your friends
    • ok, just joking!

There are multiple sources of confusion for each person, even technically savvy ones. While browsing any website, we get bombarded with lots of acronyms and terms which not only can be completely unknown to us but also increase the probabilities of misunderstanding the rest of the content, because we get confused and our brain is still trying to figure out what those terms mean. Think of things like:

  • RSS
  • CC
  • XFN
  • ATOM
  • Tag cloud
  • XML
  • AJAX
  • Web 2.0
  • W3C
  • WSG
  • WAI
  • etc

Is this something to worry about? I would say deffinitely YES, specially if we look at some absolutely subjective facts that I've come up with:

  • Only 5% of sites do not make my eyes bleed when looking at their source code
  • 60% of people claiming they follow standards do not really understand what it means
  • Is the result of trying to follow standards worse than a step backwards? Look at all the cases of:
    • divitis < div class="table">< /div>, because someone understood he should just use div's in a tableless design
    • classitis < h2 class="title02"> < /h2>, < div class="h2"> </div>, because people don't understand html semantics nor css really
    • self proclaimed "valid html generators" CMS's and alike, e.g. Joomla!/Mambo, Postnuke, vBulletin, phpBB, subdreamer, etc - the default template from each one of them may pass an automated test but it's not "valid HTML", and not semantic HTML either (which I believe is way more important than passing an automated test). Unfortunately, people with limited technology knowledge may choose one of these believing they are doing the right thing, thus contributing to the global disaster.
  • W3c icons are perverted. Most of the times you find them in sites generated with the aforementioned CMS's, when not in governmental websites, and a simple test shows zillions of errors, which creates these two feelings amongst concerned users:
    • they are kind of useless
    • they guarentee nothing

    Ultimately, non-technology people do not have a clue about the meaning of those icons, which are part of the confusing elements I referred to before


So what can we do?

I think we, as technologists, need to take a different approach. Although we are responsible for building the www, it's not us who are going to use it most of the times. Common people are going to enter the content, to play with the systems, to use them, and maybe extend them. If we don't make ourselves understood and aren't able to educate them on how to do things properly, we are failing.

We need to think out of the box, putting ourselves in their place, and trying to understand their goals and concerns. And while some of their concerns may look ridiculous to our eyes, we must be patient and not overreact. It's like the "THIS SITE SUCKS" response to a posting in a forum. It doesn't help, it's not constructive, and just produces frustration.

But convincing people to use something abstract is very, very hard. Nobody's going to take your new and shiny standards-based approach if they have something which works for them and you just have philosophy and words theorising about the benefits of standards and all that stuff. You need to demonstrate movement: be an early adopter, stop theorising and start building practical solutions right now. Show real applications of standards which give real advantage over the old practices.

(Obviously, you'll need to assume risks but that's part of the game.)

Finally, the most important rule of all is: be accessible - yes, YOU! Do not scare people away with a cloud of meaningless (for them) words when they come to you, and speak their language, not yours.

————————————————–

Some context:

This was inspired by an article which Ricardo wrote, "The accessibility is inaccessible". After lots of comments and the discussion which followed outside the blog comments, and reaching a point in which I was almost getting angry I realised there was something very wrong about the whole discussion, and the "Think outside the box" sentence made me understand why me and the rest of the people which was against Ricardo had got it wrong, because we were failing to think in "non developer terms". Extrapolate it a bit more and you've got a fantastic source for a BarCamp talk :-)

20061219 What if…?

Some years ago I used to read quite a lot of sci-fi and comic books. My favourite storylines where the ones about parallel universes, alternative realities and in general the what could have happened if somebody had done this instead of that? story type, for example, the Marvel's What if? series.

And today I was having a nice chat with mr. Madgoblin about the prospectives in Spain, the house prices and the possible devaluation of IT workers in the future, and I thought: what if we changed our jobs and switched to a non pure IT field? I mean, a place where computers are a tool, not part of the product, if you understand me.
I don't really know what I would do, and it's hard for me to imagine myself in a what if…? scenario. If it wasn't by the money, I presume I would try to do something artistic like writing or composing stuff; a pity there's too many people doing both types of stuff nowadays and inspiration isn't something which is up and ready every day at 9 o'clock in the morning :-)

So what would you do if IT jobs were to disappear? Would you stay loyal to your beloved computers? or would you just shut them off and search for a better paid job?

20061129 Some things I've learnt about managing developers teams

During the past three years I've been working in two different environments: big and small companies. Both producing the same kind of final products (corporate applications with web interfaces) have similar problems, and I thought it may be interesting to share them with you so we can find out if there's any solution, and if not, we always can complain and moan about the horrible career we have chosen for our life and how well we would do taking care of green lettuces in a peaceful but lost country farm. So there we go with my appreciations!

About Open Source

  • Open Source is good but it is not free
    Although having access to the source code of something means you can adapt the software at your complete will, it doesn't imply that it will be quicker than writing it from scratch. The Open-* Philosophy is great, brilliant, but contributors come from very different backgrounds and sometimes the quality is not what you would expect. Most of the times, mixing several open source projects under another one results in a funky mix of interfaces, classes and methods, with lots of conversions and patches here and there. That is not good, mainly if you want a robust, well thought code, and also for obvious maintenance reasons.
  • Using OS without contributing back to the community sucks
    You might believe you're ingenious by using Open Source code and saving some money, thus gaining advantage over your competitors, but developers feel bad about doing that. They know they should give something back to the community and feel really dispaired when you strictly forbid it "because it would mean losing your investment".

About the skills

  • The cheapest option is always the most expensive
    Hiring unexperienced developers at a very cheap salary with the hope that they will come up to date in a couple of months is an utopia. The senior developers will feel stupid having to explain once and once again the basics to someone who must know that, and then will get unmotivated the third time they have to argue why using functions instead of copying and pasting the same code is better, for example.
  • Sometimes, employees know more than the employer
    Face it. You may have lots of experience from ten years ago, you may know how to negociate even with a Demon, but you're not up to date with nowadays technologies.
    If they discuss any of your decissions, do not try to impose your methods using brute force. It is not an act of rebellion which needs to be dealt with quickly. Just listen to them and learn the most that you can, then think again about your decission.
  • Improving the skills
    Good developers are curious, they love to learn new things. Allowing, and encouraging them to spend work time to find out new techniques and be up to date will not only make them happy and unestressed but that will also reflect in the efficiency of your products.
  • Respect the spare time
    Everybody needs to rest and have a break from work, even if you think that it is superexciting. Making the people stay for half an hour more every day, suggesting to study new things in their commute home, etc, it's not only dishonest but it's also stressing.

About the interface

  • You absolutely need a designer
    Every interface should be created by a designer. They know where to place things. They are professionals on that. No matter how distinguished and exquisite your graphical skills are, you will never be as good as a real designer.
    If you can't afford to hire a designer full time, just look for any decent agency and get a good design made for your product. (I could spend hours describing the horrible interfaces I've seen in these three years, all of them consequence of wanting to save some money in the designer area.)
  • Good print designers may be horrible web designers
    Basically, what works in paper may not work in a screen. The style guide of a corporation may be appropiate for printed materials but not for a web product. Unfortunately, there are lots of self-called web designers which create painful html+css layouts, impossible to understand, maintain or modify, so finding a really good web designer may be a tedious task, but will prove to be worth it.
  • An interface design is more than a screenshot
    Good interface design will be based on a style guide. Do not think of an style guide as an arbitrary imposition of rules, think of it as a framework that will help you develop the application, saving time on decissions and not having to fix things which are not consistent later on. It is better to provide the developers with all the elements that they will need for the development: logotypes in the needed sizes, interface elements (bullets, fonts), colours (do not give them a Pantone number, they are not designers and they do not have a Pantone list: give them an HTML hexadecimal code, as that's what they will finally use).
    By doing so, it's very complicated that they miss anything.

About treating people

  • Developers aren't machines for converting code into money
    They are people, and they have feelings, and they also notice yours. If you're trying to manipulate them, they will notice. And they will turn angry at that (possibly leaving the company in the most stressful moment).
  • Don't try to look smarter than you really are
    Because good programmers are also good observers, they will notice instantly that you're pretending to be what you're not, and will probably lose respect for you.
  • Verbosity produces boredom
    Being detailed is good. Developers love to hear details about things because it helps them to anticipate what's next, getting a better overview of everything, which is a must for doing a good product. But being too verbose each time you get to talk to them will make them avoid talking to you, because you'll bore them, and they hate boredom. You don't need to revisit every single detail when you're being asked a simple question, nor is there need for explaining the technical implications of using one or another method for whatever to someone which possibly already told you about those technical implications (because he noticed before). Keep it short and they will come back often!
  • Keep meetings to a minimum
    Directly related to the above suggestion!

About your clients

  • Your client might use IE, but the public might not
    Your client's browser is not the browser that people will use. Do not develop for their browser. Develop for the standards, and you won't get angry calls some years after when (hopefully) bad hacks for IE stop working.
    Also, developers tend to use Firefox. Telling them to use IE "because that's what the client uses" will turn them into an anger machine, and you don't want that, obviously.
  • Your client might be wrong
    He doesn't neccessarily need that flash intro, for example.

About the users

  • Users are not idiots
    It may occur that the interface is confusing them and then they act as idiots. Maybe they have a different logic - not everybody thinks like you. Maybe you didn't test properly in other scenarios and they are getting errors that didn't arise in your environments.
    But if you refer to them as idiots, the developers will finally believe it, and get unmotivated, because no one likes to work for idiots.

Can't really think of something else now. Feel free to add whatever you are missing in the comments!

20061030 Dodgy hotdogs (no pun intended)

I was walking to take the bus when I passed near the hotdog post near Tottenham Court Road station. The powerful roasted onion flavour caught my nose immediately as was expected (I'm a big fan of roasted vegetables!) and then I wondered: why do people depreciate so much these hotdogs, saying they are a major health menace, but then they go to any of those big fast food chains and have the big menu with fries, biggest carbohidrated drink and whatnot?
I mean, at least in these hotdogs you can see the onion being fried, same for the frankfurt sausages, and that's something which you can't see very easily in the fast food chains. Maybe you may think the oil is the key of all the horrors but I refuse to admit that the oil for the hotdogs is less healthy than the other one.

The power of advertising is amazing, without doubt.