samedi 19 mai 2012

SASS vs. LESS

SASS vs. LESS:
"Which CSS preprocessor language should I choose?" is a hot topic lately. I've been asked in person several times and an online debate has been popping up every few days it seems. It's nice that the conversation has largely turned from whether or not preprocessing is a good idea to which one language is best. Let's do this thing.
Really short answer: SASS
Slightly longer answer: SASS is better on a whole bunch of different fronts, but if you are already happy in LESS, that's cool, at least you are doing yourself a favor by preprocessing.
Much longer answer: Read on.

The Much Longer Answer

The Learning Curve with Ruby and Command Line and Whatever

The only learning curve is the syntax. You should use an app like CodeKit to watch and compile your authored files. You need to know jack squat about Ruby or the Command Line or whatever else. Maybe you should, but you don't have to, so it's not a factor here.
Winner: Nobody

Helping with CSS3

With either language, you can write your own mixins to help with vendor prefixes. No winner there. But you know how you don't go back and update the prefixes you use on all your projects? (You don't.) You also won't update your handcrafted mixins file. (Probably.) In SASS you can use Compass, and Compass will keep itself updated, and thus the prefix situation is handled for you. Yes you'll have to keep your local preprocessor software updated and compile/push once in a while, but that's trivial and thinking-free.
So what this comes down to is: SASS has Compass and LESS does not. But it goes deeper than that. The attempts at creating a real robust project like Compass for LESS haven't succeeded because the LESS language isn't robust enough to do it properly. More on that next.
Winner: SASS

Language Ability: Logic / Loops

LESS has an ability to do "guarded mixins." These are mixins that only take affect when a certain condition is true. Perhaps you want to set a background color based on the current text color in a module. If the text color is "pretty light" you'll probably want a dark background. If it's "pretty dark" you'll want a light background. So you have a single mixin broke into two parts with these guards that ensure that only one of them takes effect.
.set-bg-color (@text-color) when (lightness(@text-color) >= 50%) {
  background: black;
}
.set-bg-color (@text-color) when (lightness(@text-color) < 50%) {
  background: #ccc;
}
So then when you use it, you'll get the correct background:
.box-1 {
  color: #BADA55;
  .set-bg-color(#BADA55);
}
That is overly simplified, but you likely get the idea. You can do some fancy stuff with it. LESS can also do self-referencing recursion where a mixin can call itself with an updated value creating a loop.
.loop (@index) when (@index > 0) {
  .myclass {
    z-index: @index;
  }
  // Call itself
  .loopingClass(@index - 1);
}
// Stop loop
.loopingClass (0) {}

// Outputs stuff
.loopingClass (10);
But thats where the logic/looping abilities of LESS end. SASS has actual logical and looping operators in the language. if/then/else statements, for loops, while loops, and each loops. No tricks, just proper programming. While guarded mixins are a pretty cool, natural concept, language robustness goes to SASS. This language robustness is what makes Compass possible.
For example, Compass has a mixin called background. It's so robust, that you can pass just about whatever you want to that thing that it will output what you need. Images, gradients, and any combination of them comma-separated, and you'll get what you need (vendor prefixes and all).
This succinct and intelligible code:
.bam {
  @include background(
    image-url("foo.png"),
    linear-gradient(top left, #333, #0c0),
    radial-gradient(#c00, #fff 100px)
  );
}
Turns into this monster (which is unfortunately what we need for it to work with as good of browser support as we can get):
.bam {
  background: url('/foo.png'), -webkit-gradient(linear, 0% 0%, 100% 100%, color-stop(0%, #333333), color-stop(100%, #00cc00)), -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 100, color-stop(0%, #cc0000), color-stop(100%, #ffffff));
  background: url('/foo.png'), -webkit-linear-gradient(top left, #333333, #00cc00), -webkit-radial-gradient(#cc0000, #ffffff 100px);
  background: url('/foo.png'), -moz-linear-gradient(top left, #333333, #00cc00), -moz-radial-gradient(#cc0000, #ffffff 100px);
  background: url('/foo.png'), -o-linear-gradient(top left, #333333, #00cc00), -o-radial-gradient(#cc0000, #ffffff 100px);
  background: url('/foo.png'), -ms-linear-gradient(top left, #333333, #00cc00), -ms-radial-gradient(#cc0000, #ffffff 100px);
  background: url('/foo.png'), linear-gradient(top left, #333333, #00cc00), radial-gradient(#cc0000, #ffffff 100px);
}
Winner: SASS

Website Niceitude

LESS has a nicer, more usable website. The SASS documentation isn't awful. It's complete and you can find what you need. But when competing for attention from front end people, LESS has the edge. I don't doubt this plays a large role in LESS currently winning the popularity race. Things may be changing though.
Winner: LESS

The @extend Concept

Say you declare a class which has a bit of styling. Then you want another class which you want to do just about the same thing, only a few additional things. In LESS you'd likely:
.module-b {
   .module-a(); /* Copies everything from .module-a down here */
   border: 1px solid red;
}
That's an "include" essentially. A mixin, in both languages. You could use an include to do that SASS as well, but you're better off using @extend. With @extend, the styles from .module-a aren't just duplicated down in .mobule-b (what could be considered bloat), the selector for .module-a is altered to .module-a, .module-b in the compiled CSS (which is more efficient).
.module-a {
   /* A bunch of stuff */
}
.module-b {
   /* Some unique styling */
   @extend .module-a;
}
Compiles into
.module-a, .module-b {
  /* A bunch of stuff */
}
.module-b {
  /* Some unique styling */
}
See that? It rewrites selectors, which is way more efficient.
Winner: SASS

Variable Handling

LESS uses @, SASS uses $. The dollar sign has no inherit meaning in CSS, while the @ sign does. It's for things like declaring @keyframes or blocks of @media queries. You could chalk this one up to personal preference and not a big deal, but I think the edge here is for SASS which doesn't confuse standing concepts.
SASS has some weirdness with scope in variables though. If you overwrite a "global" variable "locally", the global variable takes on the local value. This just feels kind of weird.
$color: black;
.scoped {
  $color: white;
  color: $color;
}
.unscoped {
  // LESS = black (global)
  // SASS = white (overwritten by local)
  color: $color;
}
I've heard it can be useful but it's not intuitive, especially if you write JavaScript.
Winner: Tossup

Working with Media Queries

The way most of us started working with @media queries was adding blocks of them at the bottom of your main stylesheet. That works, but it leads to mental disconnect between the original styling and the responsive styles. Like:
.some-class {
   /* Default styling */
}

/* Hundreds of lines of CSS */

@media (max-width: 800px) {
  .some-class {
    /* Responsive styles */
  }
}
With SASS or LESS, we can bring those styles together through nesting.
.some-class {
  /* Default styling */
  @media (max-width: 800px) {
    /* Responsive styles */
  }
}
You can get even sexier with SASS. There is a really cool "respond-to" technique (see code by Chris Eppstein, Ben Schwarz, and Jeff Croft) for naming/using breakpoints.
=respond-to($name)

  @if $name == small-screen
    @media only screen and (min-width: 320px)
      @content

  @if $name == large-screen
    @media only screen and (min-width: 800px)
      @content
The you can use them succinctly and semantically:
.column
    width: 25%
    +respond-to(small-screen)
      width: 100%
Note: requires SASS 3.2, which is in alpha, which you can install with gem install sass --pre. I don't think there is any doubt this is a very nice way to work.
Winner: SASS

Math

For the most part, the math is similar, but there are some weirdnesses with how units are handled. For instance, LESS will assume the first unit you use is what you want out, ignoring further units.
div {
   width: 100px + 2em; // == 102px (weird)
}
In SASS, you get a clear error: Incompatible units: 'em' and 'px'. I guess it's debatable if it's better to error or be wrong, but I'd personally rather have the error. Especially if you're dealing with variables rather than straight units and it's harder to track down.
SASS will also let you perform math on "unknown" units, making it a bit more futureproof should some new unit come along before they are able to update. LESS does not. There is some more weird differences like how SASS handles multiplying values that both have units, but it's esoteric enough to not be worth mentioning.
Winner: Narrowly SASS

Active Development

At the time of this writing...
Number of open issues on LESS: 392

Number of open issues on SASS: 84
Pending pull requests on LESS: 86

Pending pull requests on SASS: 3
Number of commits in the last month in LESS: 11

Number of commits in the last month in SASS: 35
None of that stuff is any definitive proof that one project is more active than the other, but the numbers do seem to always leans toward SASS. As I understand it, both of the leads work on the languages in whatever little free time they have, as they both have other major new projects they are working on.
Winner: Probably SASS

More Reading

SASS vs. LESS is a post from CSS-Tricks

mercredi 9 mai 2012

Css Gradients

Eligir su plataforma de crowFunding

Los Beneficios del Coaching: el Ser Humano es Extraordinario, por @Esther_Roche

Los Beneficios del Coaching: el Ser Humano es Extraordinario, por @Esther_Roche:
Como el Coaching es una experiencia muy personal, a veces es extremadamente complicado para el Coachee (“coacheado”) explicar qué beneficios ha obtenido del proceso, aunque existen innumerables testimonios de personas que lo han experimentado, siendo en su mayoría muy positivos.
Lamentablemente el Coaching es aún una técnica muy desconocida en nuestro país, pese a los esfuerzos y entusiasmo de las numerosas organizaciones relativas a esta disciplina, así como de los profesionales que nos dedicamos a ello. El tipo de Coaching más difundido en la actualidad en España es el Coaching Ejecutivo y el Empresarial, aunque poco a poco se empieza a conocer el Coaching Personal y en otros campos, como el Coaching para Emprendedores.
Hasta hace bastante poco, el Coaching era sólo conocido en las “altas esferas”, tanto de ejecutivos como de atletas y otros deportistas. Pese a que la mayor parte de las compañías de Fortune 500 llevan años contratando coaches para sus ejecutivos sénior, y pese a que hay más de 50.000 coaches profesionales en el mundo, se puede decir que todavía no se entiende muy bien lo que es el Coaching.
Existen dos razones primordiales por las que esto sucede. Una es que el Coaching es una discusión privada y confidencial entre coach y cliente (coachee) y por tanto la información que se pueda compartir fuera de esa relación será muy escasa o incluso nula. La confidencialidad es una de las bases del proceso de Coaching. No sólo eso, también es esencial para el proceso de desarrollo.
La otra razón es que no se hace marketing masivo del Coaching. Al contrario, se “vende” por lo general mediante el boca a boca. Algunos coaches de renombre han hecho esfuerzos personales para difundir algo más el conocimiento del Coaching entre la población y sin embargo, sigue siendo un completo desconocido para la mayoría de la gente.
Sin embargo, y pese al desconocimiento que existe en torno a esta técnica, el Coaching tiene numerosos beneficios. Sir John Whitmore, uno de los padres del Coaching, lo define como “la habilidad de liberar el potencial de una personas para maximizar su propio rendimiento. Es más ayudarles a aprender, que enseñarles”.
El Coaching, según la International Coaching Federation, ofrece a los individuos la oportunidad de “experimentar perspectivas diferentes para sus retos personales, así como mayor efectividad y confianza”.
Tales avances tendrán como consecuencia “resultados positivos considerables en las áreas de productividad, satisfacción personal tanto en la vida laboral como en la profesional, y también el logro de metas relevantes al individuo”, según la ICF.
Entonces, ¿cuáles son los beneficios más tangibles del Coaching? A continuación enumero 10 áreas en las que puedes obtener beneficios mediante un buen proceso de Coaching:
1. El Coaching es un tipo de conversación diferente: un debate o conversación de Coaching se centra en ti y todo el potencial que podría aflorar del proceso. Un coach está formado para construir confianza desde el principio del proceso, de forma que el cliente o coachee se sienta cómodo abriéndose para, él mismo, poder evaluar las acciones necesarias que le llevarán a conseguir sus metas. Hay una escena en la película El indomable Will Hunting, donde Robin Williams, en su papel de psicólogo de Matt Damon, conecta profundamente con él al compartir detalles de su propia vida en forma de historias. Éste es un ejemplo del tipo de conexión que el coach debe establecer con su cliente desde las fases iniciales de su relación.

2. La gente a tu alrededor puede no estar diciéndote toda la verdad. Todos tenemos puntos ciegos mentales de los que no somos conscientes, pero los demás sí. En Coaching, definimos punto ciego como cierta información que es evidente para los demás acerca de ti, pero a la que tú mismo eres totalmente ajeno.
La mayoría de las veces, las personas que tenemos a nuestro alrededor no nos hacen tomar conciencia de esa información, sea vista como positiva o como negativa por ellos. Este feedback que se puede solicitar a esas personas durante un proceso de Coaching puede ser altamente beneficioso a la hora de identificar conductas e incluso los objetivos del individuo. El coach sólo puede trabajar con personas que están dispuestas a examinar su comportamiento y abiertas al cambio.
3. El coach te ayuda a ver tu verdadero potencial con claridad. Si eres como la mayor parte de las personas, probablemente en lo más profundo de tu ser, piensas que eres capaz de conseguir mucho más de lo que estás consiguiendo en la actualidad. El coach te ayuda a examinar tus pensamientos y creencias con la finalidad de observar desde otra perspectiva dónde los mismos son defectuosos y dónde existen oportunidades que te sean útiles en el avance hacia tus metas.
A veces, lo único necesario es que el coach haga la pregunta correcta para hacerte tomar conciencia. De hecho, el Coaching en realidad se trata de hacer las preguntas adecuadas y necesarias para un individuo concreto. Preguntas que perpetuarán el aprendizaje y la exploración del potencial de ese individuo en concreto.
4. La vida no es solamente una historia que nos contamos a nosotros mismos. Las personas observamos nuestras vidas a través de una lente subjetiva que distorsiona la realidad. Las circunstancias que nos bloquean en nuestra vida cotidiana están basadas en una estructura de presuposiciones que arrastramos con nosotros.
Si somos capaces de dibujar una estructura diferente alrededor de las mismas circunstancias, veremos cómo aparecen nuevas trayectorias. Encuentra el esquema apropiado para ti y observarás cómo logros extraordinarios comienzan a formar parte de tu vida cotidiana. El coach te ayuda a examinar tu propia historia y reescribirla.
5. Tu conducta puede ser dañina. Uno de los trastornos de la locura es hacer la misma cosa una y otra vez esperando resultados diferentes. Los fisiólogos han observado que el 90 por ciento de los pensamientos que tienes hoy son exactamente los mismos que tuviste ayer. La vida son hábitos y los coaches pueden ayudarte a examinar qué acciones podrías hacer mañana para reportarte diferentes resultados a los de hoy.
Cuando un coach te pregunta al principio de la sesión “¿Qué esperas de la sesión de hoy?”, te das cuenta inmediatamente de que vas a salir de allí con un plan de acción y conductas resultantes que son diferentes a las que habrías conseguido por ti mismo.
6. El éxito en la vida depende en gran parte de tus relaciones. La gente de éxito entiende que, trabajes para otros o para ti mismo, tú alcanzarás tanto éxito como el que tengas en las relaciones que vayas construyendo en tu camino. Muchos de nosotros no nos damos cuenta de lo importante que es identificar a las personas clave que pueden ayudar, entorpecer o incluso sabotear nuestro éxito (sea consciente o inconscientemente).
Cuando existen relaciones clave que te hacen sentir frustración, un coach puede ayudarte a buscar diferentes formas de abordar esos retos. Por ejemplo, el coach puede ayudarte a mejorar tus relaciones mediante el examen de conversaciones pasadas que han sido decisivas, usando herramientas especificas para este punto concreto, como La Escalera de Inferencia.
El coach, al utilizar estas herramientas, te ayuda a identificar falsas presuposiciones basadas en tus esquemas mentales o creencias, a la vez que puede observar la situación desde un punto de vista más objetivo que tú.
7. Una leve variación en tu perspectiva puede significar una gran diferencia. Tampoco es nuevo para nadie que, como dice Wayne Dyer, “Si cambias el modo en que observas las cosas, las cosas que observas cambiarán”. A veces, la forma en que abordamos una discusión, o una situación, con nuestras intenciones y opiniones preestablecidas, determinará el resultado.
Sin embargo, si olvidamos por un momento todas esas ideas predeterminadas para abordar la reunión con la mente abierta, es posible que el resultado sea diferente y/o más positivo.
8. Quizá tengas alguna creencia limitante que te está frenando. La mayoría de la gente pone un límite en lo que es posible para ellos, que está basada en experiencias anteriores y en creencias desarrolladas en el pasado, la mayoría durante la niñez. Este fenómeno se muestra a través de toda nuestra vida.
Puesto de otra forma: tu programación mental personal (experiencias y creencias) conduce a tus pensamientos, que conducen a tus emociones, que conducen a tus acciones, que conducen a tus resultados. Si eres capaz de modificar o sustituir tu programación interna, ésta te llevará a pensamientos diferentes, emociones diferentes… resultados diferentes.
9.Quizá tienes gancho para la basura! La Ley de la Atracción, de la que tanto se ha hablado en los últimos años por libros como El Secreto, describe esta noción. Básicamente afirma que lo similar se atrae. Aquella famosa frase de “El dinero llama al dinero”, a eso me refiero. Si centras tu atención en algo, seguirás obteniendo más de lo mismo, tanto si es positivo como si es negativo.
Es decir la famosa profecía auto-cumplida. Aquí voy a poner un ejemplo personal: cuando voy al supermercado y compro huevos suelo colocarlos cuidadosamente en la parte superior del carrito para subirlos a casa. No es que vayan muy seguros, pero siempre llegan enteros, no les presto atención alguna. Hace un par de semanas, ignoro la razón, me fijé en los dichosos huevos y un pensamiento cruzó mi mente por un segundo: “Como se me caigan los huevos…!”. Adivinad adónde fueron a parar los huevos dos minutos más tarde. No sé si es la Ley de la Atracción, la Ley de Murphy, o qué, pero seguro que todos tenemos mil ejemplos como el anterior. De hecho hay infinidad de frases hechas que observan esto mismo: levantarse con el pie izquierdo, tener la suerte de cara, … ¿No tenéis un amigo, familiar o conocido que “es que tengo tan mala suerte, ¡todo lo malo me pasa a mí!”? ¿Cuestión de actitud? Simplemente, pruébalo.
Mañana cuando te levantes, ponte una música marchosa o feliz, comienza el día con una actitud positiva, sonríe por la calle, da un abrazo a quien no se lo espera, explícate a ti mismo por qué eres extraordinario hoy, por qué vas a encontrar aparcamiento o por qué vas a esperar sólo dos minutos al autobús. Al final del día, me cuentas la diferencia. “Hoy puede ser un gran día, plantéatelo así…”.
10. Los coaches pueden proporcionarte una mejor comprensión de ti mismo y tus circunstancias. Un coach ve cosas que tú no ves, porque estás en ti mismo y la perspectiva es totalmente diferente. Además, están formados y tienen herramientas precisamente para esta finalidad. Cuando por fin observamos a nuestra persona desde otro punto de vista, tomamos conciencia de infinidad de cosas sobre nosotros mismos que ni siquiera se nos habían pasado por la cabeza.
Recientemente, durante una sesión de Coaching, mi coachee me explicaba que últimamente se había dado cuenta de que tenía un problema con las críticas y que deseaba dos cosas: dejar de juzgar a los demás y también deseaba dejar de sentirse mal cuando pensaba que los demás estaban emitiendo juicios de valor acerca de sus acciones. Le pregunté: ¿Qué relación ves entre estos dos deseos? Después de darle un par de vueltas tomó conciencia de que eran dos caras de la misma moneda y que quizá él se sentía juzgado precisamente porque también juzgaba. Parece simple, pero a veces podemos tener la respuesta en nuestras narices y no verla por no hacernos la pregunta correcta.
Y para eso está el coach, para hacernos las preguntas apropiadas en el momento idóneo. Esas preguntas nos dan una comprensión de nosotros mismos que nos sería muy complicado adquirir por nosotros mismos, al menos en tan poco tiempo. Preguntas que van enfocadas a revelarnos todo el potencial que tenemos, nuestros recursos y nuestros valores más profundos.
Al ser capaces de hacer aflorar todas estas herramientas y características desconocidas a nivel consciente, surge una nueva versión avanzada de nosotros mismos que ya estaba ahí, latente, y que nos hace tomar conciencia de que, en verdad, el ser humano es extraordinario.
Un proceso de Coaching es idóneo para aquellas personas que desean identificar y/o alcanzar sus objetivos de un modo más rápido y duradero.

Pretty and Lightweight jQuery Countdown Plugin

Pretty and Lightweight jQuery Countdown Plugin:

Advertise here via BSA
Countdowns can be a great way to build up anticipation when launching a new website or web application, it gives users a clear indication of how long they need to wait before they can get access to your site.
jQuery Countdown is a handy and pretty jquery countdown plugin for you. You can easily customize the format, images, width and height. And it’s only 1.7 KB. Best of all, it’s released under Apache License 2.0 which is free for download.
jquery-countdown
Requirements: jQuery Framework
Demo: http://jquery-countdown.googlecode.com/svn/trunk/index.html
License: Apache License 2.0

Css2Less - Convertissez vos CSS en LESS

Css2Less - Convertissez vos CSS en LESS: Css2Less permet de convertir les feuilles de styles CSS en fichiers LESS d'un simple copier/coller.