{"version":"https://jsonfeed.org/version/1","title":"Aaron Gustafson: Content tagged W3C","description":"The latest 20 posts and links tagged W3C.","home_page_url":"https://www.aaron-gustafson.com","feed_url":"https://www.aaron-gustafson.com/feeds/w3c.json","author":{"name":"Aaron Gustafson","url":"https://www.aaron-gustafson.com"},"icon":"https://www.aaron-gustafson.com/i/og-logo.png","favicon":"https://www.aaron-gustafson.com/favicon.png","expired":false,"items":[{"id":"https://www.aaron-gustafson.com/notebook/im-running-for-the-w3c-advisory-board/","title":"✍🏻 I’m Running for the W3C Advisory Board","excerpt":"<p>As many of you know, I’ve been involved in the push for web standards for the better part of two decades. I caught the bug early and have been advocating for their use in pretty much every <a href=\"/publications/#articles\">article</a>, <a href=\"/publications/#books\">book</a>, <a href=\"/speaking-engagements/\">talk, and workshop</a> I’ve created. I’ve also had the great pleasure of helping run the <a href=\"https://www.webstandards.org/\">Web Standards Project (WaSP)</a>, <a href=\"https://wikipedia.org/wiki/Web_Standards_Project\">a group whose impact on the web cannot be understated</a>.<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">1</a></sup> And so, when a handful of my colleagues reached out to see if I’d consider running for the <a href=\"https://www.w3.org/2005/10/Process-20051014/organization.html#AB\">W3C Advisory Board</a>, I was… well… speechless. What an honor it is to be nominated, especially out of the blue like that!</p><hr class=\"footnotes-sep\"><section class=\"footnotes\"><h4 class=\"hidden\">Footnotes</h4><ol class=\"footnotes-list\"><li id=\"fn1\" class=\"footnote-item\"><p>Most of the truly impressive and important work was done by the folks who founded the Web Standards Project. I can’t take credit for more than a handful of our activities, but I was honored to have played a bit role in its history. <a href=\"#fnref1\" class=\"footnote-backref\">↩︎</a></p></li></ol></section>","summary":"<p>As many of you know, I’ve been involved in the push for web standards for the better part of two decades. I caught the bug early and have been advocating for their use in pretty much every <a href=\"/publications/#articles\">article</a>, <a href=\"/publications/#books\">book</a>, <a href=\"/speaking-engagements/\">talk, and workshop</a> I’ve created. I’ve also had the great pleasure of helping run the <a href=\"https://www.webstandards.org/\">Web Standards Project (WaSP)</a>, <a href=\"https://wikipedia.org/wiki/Web_Standards_Project\">a group whose impact on the web cannot be understated</a>.<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">1</a></sup> And so, when a handful of my colleagues reached out to see if I’d consider running for the <a href=\"https://www.w3.org/2005/10/Process-20051014/organization.html#AB\">W3C Advisory Board</a>, I was… well… speechless. What an honor it is to be nominated, especially out of the blue like that!</p><hr class=\"footnotes-sep\"><section class=\"footnotes\"><h4 class=\"hidden\">Footnotes</h4><ol class=\"footnotes-list\"><li id=\"fn1\" class=\"footnote-item\"><p>Most of the truly impressive and important work was done by the folks who founded the Web Standards Project. I can’t take credit for more than a handful of our activities, but I was honored to have played a bit role in its history. <a href=\"#fnref1\" class=\"footnote-backref\">↩︎</a></p></li></ol></section>","content_html":"<p>As many of you know, I’ve been involved in the push for web standards for the better part of two decades. I caught the bug early and have been advocating for their use in pretty much every <a href=\"/publications/#articles\">article</a>, <a href=\"/publications/#books\">book</a>, <a href=\"/speaking-engagements/\">talk, and workshop</a> I’ve created. I’ve also had the great pleasure of helping run the <a href=\"https://www.webstandards.org/\">Web Standards Project (WaSP)</a>, <a href=\"https://wikipedia.org/wiki/Web_Standards_Project\">a group whose impact on the web cannot be understated</a>.<sup class=\"footnote-ref\"><a href=\"#fn1\" id=\"fnref1\">1</a></sup> And so, when a handful of my colleagues reached out to see if I’d consider running for the <a href=\"https://www.w3.org/2005/10/Process-20051014/organization.html#AB\">W3C Advisory Board</a>, I was… well… speechless. What an honor it is to be nominated, especially out of the blue like that!</p>\n<p>You can read <a href=\"https://www.w3.org/2019/05/02-ab-nominations#ag\">my nomination statement on the W3C site</a>, so I won’t spend a lot of time rehashing that. What I will do is make a brief case for why I think I would be a valuable member of this particular board.</p>\n<p><strong>I’m a web developer whose heart belongs to standards.</strong> I may work for Microsoft in Developer Relations, but I started building stuff for the web in 1996 and never stopped. I’ve worked on sites for every kind of business you can imagine—from small mom and pop shops to huge international conglomerates and everything in between. I’ve also held just about every role you can in web projects, from strategist right through to front and back end dev, where the rubber meets the road.</p>\n<p>I think this experience, especially when coupled with my current position at Microsoft—which affords me a lot of time to listen to the challenges faced by the web design and development community—will enable me to bring an “in the trenches” perspective to the W3C. <a href=\"https://rachelandrew.co.uk/\">Rachel Andrew</a> provides similar guidance as <a href=\"https://fronteers.nl/about\">Fronteers</a>’ representative to the W3C and I relish the opportunity to work with her again<sup class=\"footnote-ref\"><a href=\"#fn2\" id=\"fnref2\">2</a></sup> in this capacity. I honestly wish there were more web designers and developers working within the W3C and my goal is to give voice to their concerns and champion their ideas.</p>\n<p><strong>I’m a diplomat <em>and</em> a pragmatist</strong>. Over the years, I’ve participated in varying capacities for a handful of boards and committees. I’ve chaired small town committees (e.g., the Energy Use Task Force in Hamden, Connecticut), been the co-president of a state political party (Green Party of Connecticut), run homeowners associations, and, of course, led the Web Standards Project, to name but a few. In all of these roles—and in my consulting work—I’ve learned how to manage personalities (and politics), set expectations, and get folks to rally together to achieve common goals.</p>\n<p>Anyone who knows me will tell you I am incredibly diplomatic. Perhaps more soo than is warranted sometimes. I believe everyone should be heard, but I’m also unwilling to allow individuals to dominate conversations and drown out other viewpoints. I value diverse opinions and appreciate people who challenge convention. In all interactions, I look for common ground and shared goals. I don’t shy away from uncomfortable conversations and have no problem disagreeing with someone, but I will always do it in a civil and respectful way.</p>\n<p>While idealistic—especially when it comes to the web and standards—I’m also a pragmatist. I want to understand problems from multiple angles and use that knowledge to know which battles are worth fighting and when compromise is necessary. And I always seek to build consensus, which is the W3C way.</p>\n<p><strong>I’ve got experience in non-profit work.</strong> You may not realize it, but the W3C does not actually exist as a legal entity. It’s currently in the process of changing that and becoming a non-profit corporation. The Advisory Board is overseeing that process. When I lived in Connecticut, I helped form a non-profit corporation. I’ve also got experience in grant writing and other non-profit related work. I think I could be a real asset in that regard.</p>\n<hr>\n<p>If you can vote in this election and think I’d make a good member of the Advisory Board, please vote for me. If you can’t vote, but know someone who can, please encourage them to read this and consider voting for me. I’d be ever so grateful for your help.</p>\n<p>Thank you!</p>\n<hr class=\"footnotes-sep\">\n<section class=\"footnotes\">\n<h4 class=\"hidden\">Footnotes</h4>\n<ol class=\"footnotes-list\">\n<li id=\"fn1\" class=\"footnote-item\"><p>Most of the truly impressive and important work was done by the folks who founded the Web Standards Project. I can’t take credit for more than a handful of our activities, but I was honored to have played a bit role in its history. <a href=\"#fnref1\" class=\"footnote-backref\">↩︎</a></p>\n</li>\n<li id=\"fn2\" class=\"footnote-item\"><p>We worked together in the Web Standard Project. <a href=\"#fnref2\" class=\"footnote-backref\">↩︎</a></p>\n</li>\n</ol>\n</section>\n","url":"https://www.aaron-gustafson.com/notebook/im-running-for-the-w3c-advisory-board/","tags":["web standards","career","W3C"],"date_published":"2019-05-06T23:15:52Z"},{"id":"https://www.aaron-gustafson.com/notebook/css-variables-are-a-bad-idea/","title":"✍🏻 CSS Variables are a Bad Idea","excerpt":"<p>I’ll level with you: I used to think I wanted variables in CSS.</p><p>As a programmer, I love the idea of being able to abstract reusable bits like colors, border widths, font sizes, and the like to obviously named variables. It’s a far more <a href=\"https://en.wikipedia.org/wiki/Don't_repeat_yourself\">DRY</a> approach and makes maintenance far easier.</p>","summary":"<p>I’ll level with you: I used to think I wanted variables in CSS.</p><p>As a programmer, I love the idea of being able to abstract reusable bits like colors, border widths, font sizes, and the like to obviously named variables. It’s a far more <a href=\"https://en.wikipedia.org/wiki/Don't_repeat_yourself\">DRY</a> approach and makes maintenance far easier.</p>","content_html":"<p>I’ll level with you: I used to think I wanted variables in CSS.</p>\n<p>As a programmer, I love the idea of being able to abstract reusable bits like colors, border widths, font sizes, and the like to obviously named variables. It’s a far more <a href=\"https://en.wikipedia.org/wiki/Don't_repeat_yourself\">DRY</a> approach and makes maintenance far easier.</p>\n<p>Before I made the leap to using a CSS preprocessor, I was convinced we needed CSS variables, but I always wondered how we might make it possible without breaking one of the fundamental <a href=\"https://www.w3.org/TR/CSS21/intro.html#design-principles\">design principles of CSS</a>: Forward and backward compatibility. Take a look at this example (which is based on <a href=\"https://www.w3.org/TR/css-variables/\">the working draft spec</a>) and I think you’ll spot the problem:</p>\n<pre class=\"language-css\" tabindex=\"0\"><code class=\"language-css\"><span class=\"token selector\">:root</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">--foreground-color</span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">--background-color</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">body</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> <span class=\"token function\">var</span><span class=\"token punctuation\">(</span>--background-color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">var</span><span class=\"token punctuation\">(</span>--foreground-color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>For a browser that understands CSS variables, the interpreted stylesheet would look like this:</p>\n<pre class=\"language-css\" tabindex=\"0\"><code class=\"language-css\"><span class=\"token selector\">body</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>But any browser that doesn’t understand the variables would never get the color values because browsers follow <a href=\"https://www.w3.org/TR/CSS21/syndata.html#parsing-errors\">the rules of fault tolerance in CSS</a> and ignore anything they don’t understand. The introduction of variables to CSS would effectively build a wall between older browsers and new ones. (For the record, as of this writing, <a href=\"https://caniuse.com/#feat=css-variables\">only Firefox has implemented CSS variables</a>).</p>\n<p>In order to serve the broadest spectrum of devices, we’d have to provide a fallback like this:</p>\n<pre class=\"language-css\" tabindex=\"0\"><code class=\"language-css\"><span class=\"token selector\">:root</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">--foreground-color</span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">--background-color</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token selector\">body</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> <span class=\"token function\">var</span><span class=\"token punctuation\">(</span>--background-color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">var</span><span class=\"token punctuation\">(</span>--foreground-color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>But that kinda defeats the whole purpose, right?</p>\n<p>Preprocessors already give us this access to variables today (along with nesting, mixins, and programmatic structures like conditionals, loops, etc.). Here’s a SASS example:</p>\n<pre class=\"language-scss\" tabindex=\"0\"><code class=\"language-scss\"><span class=\"token property\"><span class=\"token variable\">$foreground-color</span></span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n<span class=\"token property\"><span class=\"token variable\">$background-color</span></span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n\n<span class=\"token selector\">body </span><span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$background-color</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token variable\">$foreground-color</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>The big difference here is that this document is a source file, it is not what is sent to the browser. This file is compiled by the preprocessor into actual CSS, which is what we send to the browser and is exactly what we wanted in the first place:</p>\n<pre class=\"language-css\" tabindex=\"0\"><code class=\"language-css\"><span class=\"token selector\">body</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #fff<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">color</span><span class=\"token punctuation\">:</span> #333<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre>\n<p>And it works on every browser that supports CSS, all the way back to <a href=\"https://en.wikipedia.org/wiki/Cascading_Style_Sheets#Difficulty_with_adoption\">IE 3</a>.</p>\n<p>With a preprocessor like SASS, Less, or Stylus, I get all of the maintainability benefits without sacrificing browser support. It’s a no-brainer. But even if that were not true, there’s another issue to consider: If I push CSS variables to browsers, they have to parse the CSS and substitute the variables before they can apply the styles.</p>\n<p>Now I’m sure browser makers can find ways to optimize this process, but it’s bound to affect the rendering time. And not in a positive way. I don’t even want to think about how bad it would be on a mobile chipset, especially on a low-end device.</p>\n<p>Honestly, I love using variables… in the source files I use with a preprocessor. Given the potential loss of browser support, the pointless fallbacks I’d have to use if I wanted to continue supporting older browsers, the existence of numerous preprocessor options that solve the abstraction problem in a backward- and forward-compatible way, and the fact that CSS variables would make browsers have to work even harder to achieve the desired result, I’m not convinced we need them.</p>\n<p>CSS variables are a bad idea.</p>\n","url":"https://www.aaron-gustafson.com/notebook/css-variables-are-a-bad-idea/","tags":["CSS","W3C","web standards","web design","web development"],"date_published":"2014-11-04T19:58:01Z"}]}