Find me at...

12 March, 2010
SXSW, Austin

5 April, 2010
An Event Apart, Seattle, WA

24 May, 2010
An Event Apart, Boston

22 June, 2010
Velocity Conference, Santa Clara, CA

General

CSS Wish List

Monday, November 9th, 2009

Don’t get me wrong, I think CSS is awesome. It is a great way of defining the UI, but it could be even better. I’m excited about the special effects, transitions, and graphic elements currently being added to the CSS specification. They will help us write faster pages by eliminating the need for UI graphics for things like rounded corners. On the other hand, we also need to add structure to the language to make it easier for designers and developers to author new pages and applications. I hope the CSS Working Group will consider my suggestions.

Suggestions for the CSS Working Group

The community has been talking about some form of constants or variables in different incarnations for almost a decade, it is time to make this a reality. While it is possible to duplicate this functionality with a preprocessor (an excellent stop gap until browser support catches up), ultimately this is a tool which should live within the CSS itself. It is a powerful way of expressing more about the objects we are building.

The mixins and prototypes (and associated includes and extends properties) are designed to allow document authors to abstract reusable bits of code and better manage and maintain their style sheets. The goal is to mimic the effect of using multiple class names in the HTML without the drawbacks associated with current implementations. Authors need extends and include in order to write faster, smaller, more efficient style sheets.

CSS is a powerful expressive language. It needs certain modifications so that it will be robust, maintainable, and easy to implement.

From JSConf.eu

Bread

Friday, September 11th, 2009

Outerlands is a lovely place to have brunch before a day at the beach. They bake homemade bread which is absolutely yummy. It is a small place run by a lovely couple who are very busy at their successful restaurant.

Me (omg!): You have to bake bread every day?

Owner (happy smile): No, I get to bake bread every day.

That’s how I feel about code. I would do the very same thing even if no one paid me at all. Lucky for me, this thing I love to do is also my work.

HTML5, who is bad enough to take on canvas?

Monday, August 31st, 2009

HTML5 Superfriends

I recently went to New York to hang with some people who are interested in HTML5 and figure out what I thought about the future of this web standard. I’m a skeptic by nature, so I went into our little quest expecting to be unimpressed by HTML5, but in fact, it isn’t so bad, and even has a few additions I’m excited about.

Down with Pseudocode!

On the other hand the spec itself drives me crazy because I feel like pseudocode is a poor substitute for properly and clearly stating what you are trying to achieve. It is easy to mask your agenda in pseudocode and harder for people to sort out later what was intentional versus incidental.

#html5 .pseudo-code { display: none;} Thought experiments don’t belong in a spec & pseudocode can’t replace properly specifying requirements.

@stubbornella

Overflow – a secret benefit

Thursday, July 23rd, 2009

Overflow does some cool things you should know about.

  • Creates Block Formatting Context
  • Clears Floats

Generating block formatting context

Arnaud Gueras called this “contexte de formattage” years ago, and I was kind of surprised when I moved back to the US how few developers here had heard of this “secret weapon”. When the overflow property is set, a new block formatting context is created. What does that mean? It changes the way the block interacts with floats. It no longer wraps around floats, but rather becomes narrower.

Sweet, so how can you use it?

A block with a new formatting context takes all the remaining space on a line, while leaving room for floats which have already been positioned. In my object-oriented CSS open source project I use the formatting context in two ways.

Main content column

Adding a formatting context means that my main column takes all the space that remains after my left and right columns have been rendered. This means having only one template because if you want to remove a column from the three column layout, you simply delete the column from the html. No changes to make anywhere else, CMS developers will love you for that.

Play with the template in Firebug.
  1. Try adding the class “liquid” to the “page” element.
  2. Add or remove one of the columns from the HTML.
  3. Extend one of the column objects with the additional classes listed in the documentation.
  4. Try changing the width of the column directly in Firebug.
Grids

Anyone who has developed a grids system knows the pain of sub-pixel rounding errors. Browsers don’t know what to do with 33.3 pixels, so they all do something different. The YUI grids system hid these differences in the gutters between the blocks, but we can also hide that difference inside the units themselves.

A new block formatting context can be used to make the last unit in any grids line absorb the tiny differences in size. Play with the grids, you’ll notice that as you modify the sizes of the units, the last unit grows and shrinks to accommodate the difference. It has no width, and yet, with a new block formatting context is also doesn’t wrap around floats.

A loving Indian family

Wednesday, July 22nd, 2009

Eight techniques for thriving in a big Indian family.

The meaningless ack. You mean that you care about their opinion; you say that you agree with what they are saying. If it ever comes up again, you use one of the following techniques.

Distract. Add more or less unrelated information to the discussion, the more the better.

Delay. Decide to decide after some given point, which may or may not ever arrive. Insist that it is now too late to decide.

Seek additional advice. Everyone’s opinion counts equally. If the currently included opinions are not in your favor, invite an auntie or cousin to give their opinion. If you are really losing a battle invite so many opinions that it is impossible to sort out who thinks what. Ideally, this will include the entire family.

Claim supporters, whether or not they have actually expressed an opinion is mostly irrelevant. For example, “Auntie thinks I should get to eat nothing but cake.”

Reevaluation. Decisions are never final. You might think a decision has been made and you are on your way to get a bite to eat, when in fact things have magically evolved and you are going to visit an obscure neighbor on the other side of the city. Turn the tide of the discussion at the last moment before the decision needs to be acted upon to allow reevaluation to work in your favor.

Disagree respectfully and with a smile and you can get away with being quite forceful. The downside, everyone else will be doing the same, and they have a lot more practice than you do. You are hopelessly outmatched and you will eat five times as much as you meant to. A bit of Zen will go a long way. Remember, letting go is just a gesture.

Give up. Some arguments are not winnable. For example, your friends mother is completely incapable of understanding why you might want to go to the ATM, know the address or phone number where you are staying, buy a map, or have your own cell phone. She can’t imagine you going off on your own or even getting lost because the idea of doing things independently has no place in her worldview. Why would you ever want to be alone if you could be with others? She may treat you like a small child, but she will also make you chai ten times a day and generally spoil you rotten. Revel in it, mother love is a beautiful thing.

CSS Summit – test cases for browser bugs

Saturday, July 18th, 2009

Speaking the CSS Summit today, I listened as people voiced concerns about browser support and bugs. It might surprise my fellow CSS developers, but many of the seasoned, bearded (ok, I’m making this part up) engineers working on the innards of browsers and rendering engines may not actually write much CSS themselves. They need our help.

We need to tell them what is broken, via good bug reports with steps to reproduce, version information, and relevant comments, screenshots and ideally test cases. Can you boil the bug down to the simplest possible version of itself? How little code do you need to trigger the rendering problem? That’s the test case you want to submit.

The Year of Business Metrics – Don’t make your users run away!

Friday, June 26th, 2009

A marked change has occurred since the first Velocity Conference a year ago, and while the effects are not yet obvious, they will be. The web is still slow, but we have something now, that we didn’t a year ago: business metrics. This was the year we quantified the impact of performance choices on our businesses, and the results were astounding.

For those of you who couldn’t attend, this article summarizes results from AOL, Shopzilla, Google, Bing, Hotmail, and Chrome and gives pointers to highlights of Velocity Conference 2009.

Smush.it finds a home at Yahoo!

Wednesday, April 29th, 2009

Today is a great day for Smush it because Yahoo! decided to accept it into their family of tools. This will allow the tool to run on fanatically maintained servers, with the Yahoo! style quality of service. It doesn’t get any better than that. I feel like my baby is all grown up and going off to college! :)

Want to Optimize Images like a Pro?

Stoyan and I have contributed a chapter to Even Faster Web Sites, that outlines all the fantastic tricks you can use to make your sites smaller. We hope you find it useful, and of course we welcome feedback! It will show you how to make image optimization part of your own system, and give you all the information you need to make images as small as possible.

Reflows & Repaints: CSS Performance making your JavaScript slow?

Friday, March 27th, 2009

I’ve been tweeting and posting to delicious about reflows and repaints, and it seemed time for a blog post. Opera lists repaint and reflow as one of the three main contributors to sluggish JavaScript, so it definitely seems worth a look.

Reflows are very expensive in terms of performance, and is one of the main causes of slow DOM scripts, especially on devices with low processing power, such as phones. In many cases, they are equivalent to laying out the entire page again.

How to avoid reflows or at least minimize their impact on performance?

  1. Change classes on the element you wish to style (as low in the dom tree as possible)
  2. Avoid setting multiple inline styles
  3. Apply animations to elements that are position fixed or absolute
  4. Trade smoothness for speed
  5. Avoid tables for layout
  6. Avoid JavaScript expressions in the CSS (IE only)

Tools

A few tools have made waves lately. Stoyan Stefanov and I have been looking for decent ways to measure reflows and repaints and there are a few tools which show promise (despite being very early alpha).

Has anyone else seen any cool tools for evaluating reflows?

Object Oriented CSS video on YDN

Monday, March 23rd, 2009

Yahoo! Developer Network has released a video of my Object Oriented CSS talk at Web Directions North just in time for Ada Lovelace day. I’ve also been included in a feature on Women in Technology. I’m absolutely flattered to be included among these fantastic technical women. Wow.

Object Oriented CSS: for high performance websites and web applications.

Find out more about object oriented css

  1. Open source project on github (GIT is having some DNS issues, be patient)
  2. Follow along with the slides on slideshare
  3. Join the OOCSS google group

Object Oriented CSS, Grids on Github

Saturday, February 28th, 2009

My Object Oriented CSS grids and templates are open sourced on github. They have all the functionality of YUI grids plus some important features.

  • Only 4kb, half the size of YUI grids. (I was totally happy when I checked the final size!)
  • They allow infinite nesting and stacking.
  • The only change required to use any of the objects is to place it in the HTML, there are no changes to other places in the DOM and no location dependent styling. Eases back-end development and makes it a lot easier to manage for newbies.
  • Solution for sub-pixel rounding errors.

http://wiki.github.com/stubbornella/oocss

template.css and grids.css

…My prediction is that you’ll be writing complex layouts in less than 24 hours without adding a line to the CSS file.

CSS doesn’t suck, you’re just doing it wrong.

Thursday, February 12th, 2009

I will not say CSS sucks. I will admit my own discomfort with the problem space.

A bit of a rant

The cascade is something like a new data structure, and the ways for dealing with it are algorithms you never learned in school. You couldn’t have, because traditional engineering school poo-poos the front-end and web engineering in favor of stale (but still valuable) traditional software engineering.

Perhaps you realized this web thing wasn’t going away, so you learned a bit of javascript. That went OK, how hard is it to add another language to your repertoire? Now you just wish it would compile like a proper language. You hate the browsers, and (foolishly) wish there was only one. You find Ajaxian, and start thinking of yourself as super-engineer; the guy who can just as easily write a web UI as a cronjob to perform background data processing.

With the confidence of JavaScript success, you decide to tackle CSS, and then the problems begin. You start from scratch rather than using a library, because after all this is just a display syntax. (Do you also rewrite the math class every time you need a random number generated?) You don’t bother to learn proper semantic HTML, they must be joking! Nattering on about web standards and accessibility. It should be cake.

Nothing works as you expect it to. Your columns won’t line up. You never validated your HTML, and you have a sneaking suspicion that there is an unclosed tag somewhere. You can’t make even the simplest design look right, and you are pretty sure CSS is to blame, rather than your understanding of the technology. This should be just another acronym on your resume, right?

No. Resoundingly, no.

CSS can be predictable, scalable, modular and even object oriented. If it is written correctly, beginners can be productively participating in creating clean, reusable code in 2-3 weeks. But we need to change our approach, understand that the fundamental algorithms for a display language are different than a programing language, and yet borrow everything we can from software engineering, so that we don’t waste time reinventing the wheel.

Design Fast Websites – Don’t blame the rounded corners! on YUI Theater

Sunday, December 28th, 2008

Nicole at the Design Fast Websites Presentation by Eric Miraglia

I visited Yahoo! last week to record a talk I had given at the Front End Summit in October. If you are a designer or an F2E it is essential that you understand the ways in which design choices impact overall site performance. This talk establishes guidelines for High Performance Design including 9 Best Practices.

9 Best Practices

  1. Create a component library of smart objects.
  2. Use consistent semantic styles.
  3. Design modules to be transparent on the inside.
  4. Optimize images and sprites.
  5. Avoid non-standard browser fonts.
  6. Use columns rather than rows.
  7. Choose your bling carefully.
  8. Be flexible.
  9. Learn to love grids.

Web Directions North, Denver, February 2-7

I’ll be speaking more about Design and also CSS best practices at Web Directions North in February where I’ve been invited to give both a Performance Bootcamp Workshop and a CSS Performance for Websites and Web Apps Presentation. I look forward to seeing you there!

ParisWeb Performance Web Videos et slides disponible

Wednesday, December 3rd, 2008

80% des problèmes de performance Web se situe au niveau des échanges avec le navigateur et sur le navigateur lui-même : échanges réseau, rendu dans le navigateur, organisation des composants dans une page etc.

Nous aborderons les principales problématiques et les solutions à mettre en œuvre. Forts de l’expérience de l’équipe performance de Yahoo!, à la fin de cette session vous saurez aborder la question des performances Web du point de vue du visiteur et mettre en œuvre les actions correctrices sur vos sites Web.

Prop 8: the musical!

Wednesday, December 3rd, 2008

Cute, though the whole economy link is kind of odd.

See more Jack Black videos at Funny or Die

New tool: Easy image optimization with Smush it

Tuesday, September 30th, 2008

I’m at Ajax Experience this week with my teammate, Stoyan Stefanov. This morning we did a demo of our new tool SmushIt.com. Smush it allows you to automate image optimization by using the best of open source algorithms to achieve the smallest, high performance images possible.

Smush it comes in different flavors:

  • You can upload a bunch of pictures in your browser
  • You can provide us with a list of image urls or
  • You can get a Firefox Extension to optimize the images found on any web page

Optimisation des Images : Les 7 erreurs à éviter at ParisWeb

Sunday, September 28th, 2008

Je vais parler (en francais! eek!) avec Eric Daspet de la performance des images pour le web a ParisWeb. Les inscriptions pour Paris Web 2008 sont officiellement ouvertes. Jusqu’au 15 octobre au soir, vous bénéficierez de tarifs réduits. Le conference sera lieu a Paris le 13-15 Novembre. J’attend vous voir bientot alors. ;)

Voila le proposition

Voulez-vous améliorer la vitesse de vos pages web et réduire l’impact écologique et monétaire de votre hébergement ? Voulez-vous faire ceci avec peu de changement de code et en gardant une belle interface graphique ? Cette session va vous apprendre les 7 étapes pour mettre votre site web au régime. Comment perdre des poids que votre site a pris en rajoutant les dernières nouveautés. Et, encore plus important, comment ne pas reprendre ce poids !

So you wanna be a web dev?

Friday, September 26th, 2008

The Web Standards Curriculum published by Opera is a great place to start. It will give you the basics of Front-end Engineering from the ground up. The second wave of articles was recently published including a background image and sprites how-to by yours truly.

Time to board a plane, so I can’t tell you more just now, but check it out. It is a great place to get started or brush up on your understanding of web standards.

The two devils — how the right will beat Obama

Thursday, September 25th, 2008

without ever supporting McCain.

“There is no difference between the two devils, except family values.”

We were talking about politics over lunch. After some prodding I was able to understand that he meant that Obama and McCain were equally bad. By family values, he meant that the definition of marriage would change to include homosexual couples. In his mind, all the issues are more or less equal, both candidates are instruments of the devil, but at least McCain won’t let homosexuals get married.

I had wondered how the right wing would make people vote for McCain given his history of centrism. I’d be surprised if he even really cared about gay marriage one way or the other, but he is pandering hard, and this is his audience.

I want to take back family values. We’re not in some kind of Huxley nightmare-utopia. FAMILY VALUES means something real; you can’t distort words and use double-speak to convince Christians to make choices that don’t make any sense.

“…at the dawn of the 21st century we also have a collective responsibility to recommit ourselves to the dream; to strengthen that safety net, put the rungs back on that ladder to the middle-class, and give every family the chance that so many of our parents and grandparents had. This responsibility is one that’s been missing from Washington for far too long — a responsibility I intend to take very seriously as President.”

— Barack Obama, Spartanburg, SC, June 15, 2007

Vote for me at SXSW! – performance panel

Wednesday, August 27th, 2008

Vote for me at SXSW!

Website performance is still very much in it’s infancy. Most performance experts come from a traditional engineering background and yet, as Steve Souders showed in his book, the front end is responsible for more than 80% of end user response time.

I was excited when Ed Eliot asked me to be a part of a SXSW web performance experts panel, not only because he and I always have really excellent conversations, but also because of the quality of the people who are on board for the panel. The panelists are uniquely positioned to speak to the concerns of web developers. In addition to being performance experts, we are front-end engineers — as yet a rare combination. In our day to day work, we have experienced the pain points we’ll discuss on the panel.

Who will be on the panel?

Ed Eliot, Stoyan Stefanov, Stuart Colville, and I will join forces to talk about website performance including practical solutions to common problems. These guys are brilliant, and the panel should be really fun.

VOTE FOR US! :)