<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.friendlybit.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.friendlybit.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xml:lang="en" xml:base="http://friendlybit.com/wp-atom.php">
	<title type="text">Friendly Bit - Web Development Blog</title>
	<subtitle type="html">You have found Friendly Bit, a web development blog. I focus on client side technologies like CSS, HTML and Javascript. I try to post once per week (average).</subtitle>

	<updated>2008-11-20T20:39:47Z</updated>
	<generator uri="http://wordpress.org/" version="2.7-beta3">WordPress</generator>

	<link rel="alternate" type="text/html" href="http://friendlybit.com" />
	<id>http://friendlybit.com/feed/atom/</id>
	

			<link rel="self" href="http://friendlybit.com/feed/" type="application/atom+xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://friendlybit.com/feed/" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffriendlybit.com%2Ffeed%2F" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffriendlybit.com%2Ffeed%2F" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Follow the 10 ground rules, or fail on the web]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/tutorial/10-web-ground-rules/" />
		<id>http://friendlybit.com/?p=331</id>
		<updated>2008-11-20T20:39:47Z</updated>
		<published>2008-11-20T16:58:16Z</published>
		<category scheme="http://friendlybit.com" term="Tutor" />		<summary type="html"><![CDATA[When you work with the web, there are a couple of basics you really need to get right. These are things I see people misunderstand over and over again, with a varying degree of failiure as a result. Not only individuals make these mistakes, even really big organizations make them, and suffer as a result. [...]


Related posts:<ol><li><a href='http://friendlybit.com/other/click-here-to-read-this-article/' rel='bookmark' title='Permanent Link: Click here to read this article'>Click here to read this article</a> <small>No matter where you go on the web today you...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/tutorial/10-web-ground-rules/">&lt;p&gt;When you work with the web, there are a couple of basics you really need to get right. These are things I see people misunderstand over and over again, with a varying degree of failiure as a result. Not only individuals make these mistakes, even really big organizations make them, and suffer as a result. So lets get at it.&lt;/p&gt;
&lt;h2&gt;1. Everyone is &lt;strong&gt;anonymous &lt;/strong&gt;on the web, if they want to&lt;/h2&gt;
&lt;p&gt;If you depend on trying to identify who a particular user on the web is, you will fail in every way possible. This is what lots of law firms try to do, especially in the context of file sharing. You will never ever be able to know who someone online is, if they don&amp;#8217;t want you to.&lt;/p&gt;
&lt;p&gt;Technical reasons: &lt;strong&gt;IP-numbers are easy to fake&lt;/strong&gt;, but using proxy servers of different sorts. New services are constantly popping up, that makes this available for unexperienced users. Just push them a little more, send a couple of more &lt;a href="http://en.wikipedia.org/wiki/Cease_and_desist"&gt;cease and desist&lt;/a&gt; letters and even ordinary home users will start to cloak who they are. It&amp;#8217;s possible, it&amp;#8217;s easy.&lt;/p&gt;
&lt;p&gt;Social reasons: It&amp;#8217;s very easy to surf using &lt;strong&gt;someone else&amp;#8217;s internet connection&lt;/strong&gt;. Ways vary from just connecting to an unencrypted wireless network, to just using the free connection at a library or school. And it&amp;#8217;s getting worse: people are starting to move around while using the web (mobile), hopping from one connection to the next as their geographic position permits. The link between internet connections and users are getting blurrier as we speak.&lt;/p&gt;
&lt;p&gt;Despite the above, there are things you can identify and use. One of those is categorizing users into user types. This is what Google (and lots of others) are successfully doing with their advertising system. &amp;#8220;Based on what you&amp;#8217;ve showed interest in previously, we think you will like this&amp;#8221;. This enables you to personalize and customize your content to a particular user type, something that holds lots of economical value (if that&amp;#8217;s what you&amp;#8217;re after).&lt;/p&gt;
&lt;h2&gt;2. Give your content away for &lt;strong&gt;free&lt;/strong&gt;, or watch someone else do it&lt;/h2&gt;
&lt;p&gt;The web is a gigantic content creation machine, and except for very niched content, you can find anything on it. If you are in the business of selling content online, you will see your profits &lt;strong&gt;steadily decline&lt;/strong&gt;. The competition is just too intense when anyone can create content.&lt;/p&gt;
&lt;p&gt;How do you tackle that? Well, put your previously costly content online for free, to &lt;strong&gt;drive people to your site&lt;/strong&gt;. If the content is good, your will see a massive surge in number of users. Well on the site, you will need to figure out how to &lt;strong&gt;make money of them&lt;/strong&gt;, either by showing them ads or getting them to buy something physical.&lt;/p&gt;
&lt;p&gt;Industries that depend on online content creation are really living on the edge right now, and for a future prediction, just look at the music industry. You still have some time to rethink your bussiness model.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;3. Linking&lt;/strong&gt; is the core of the web, make people want to  link to you&lt;/h2&gt;
&lt;p&gt;It&amp;#8217;s called a web because of the links. Trying to limit or control other sites linking to you is fundamentally breaking the web. It&amp;#8217;s also downright stupid, since every external link is a vote for your site, and a sure way for people to find you. Having an &amp;#8220;link policy&amp;#8221;, controlling how people may link to you, is a sure way to make a fool out of yourself online. Not to say that people won&amp;#8217;t care one bit about it.&lt;/p&gt;
&lt;p&gt;Instead, you should encourage people to link to you. How? By first giving every piece of content a &lt;strong&gt;linkable address&lt;/strong&gt;. Many flash- and frame-based sites miss this fact, and instead require users to click through your frontpage to find the content they want. This is a sure way to turn users away. Just make your content linkable, it&amp;#8217;s not hard.&lt;/p&gt;
&lt;p&gt;Then, make sure the content is in such a high quality that users want to link to it. This rules out saying what everyone else is saying, in the same way everyone else is saying it. You need to be &lt;strong&gt;different, &lt;/strong&gt;and have &lt;strong&gt;genuinely interesting &lt;/strong&gt;content, that no one else has. This is hard, but a problem you need to solve to make it on the web.&lt;/p&gt;
&lt;h2&gt;4. Link to &lt;strong&gt;external sites&lt;/strong&gt; with good content, it&amp;#8217;s all about servicing your users&lt;/h2&gt;
&lt;p&gt;There&amp;#8217;s billions of sites a user can go to, and you need to work hard to servicing your users if you want their attention. Sometimes your content is so extensive, that no matter how hard you work, users will still want more. This is a perfect situation where you should link to external sites and give your users what they want.&lt;/p&gt;
&lt;p&gt;Many newspaper make this mistake, and end up with users leaving their site for Google, trying to find more information about a particular piece of content. They have instead linked to good follow-up content directly, given the user what they wanted, and be accessible via the most used button on the web, the back-button. &lt;strong&gt;Happy users&lt;/strong&gt; that have &lt;strong&gt;easy access to your site&lt;/strong&gt;, or annoyed users that leave for Google, your choice.&lt;/p&gt;
&lt;h2&gt;5. People will &lt;strong&gt;copy your content&lt;/strong&gt;, and there&amp;#8217;s nothing you can do about it&lt;/h2&gt;
&lt;p&gt;Some people are worried about the copying of their content. And if they see that as an issue, they better be worried. You see, each time someone reads your texts, or looks at your media, it&amp;#8217;s copied from your server to the users computer. Web browsers are really effective copyright infringement machines, and by just clicking a link, you copy that page.&lt;/p&gt;
&lt;p&gt;So if you are worried about users copying your content, please &lt;strong&gt;don&amp;#8217;t put it online at all&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Other people think that they can have their content on the web, and still prevent people from copying it. This is pure lunacy, and all ways to prevent copying have failed. People even miss the most obvious way people can copy, by hitting the &amp;#8220;Print screen&amp;#8221; button on their keyboards. When it comes to video and audio it&amp;#8217;s a bit more annoying, but everything that comes out of your speakers, or is displayed on the screen, is recordable. So stop worrying about copying, &lt;strong&gt;you can&amp;#8217;t stop it&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Instead, know and accept that people will copy your content, and just ask for a simple &lt;strong&gt;link back &lt;/strong&gt;if they do. That way, small pieces of your content on other sites will act as marketing for the whole site.&lt;/p&gt;
&lt;p&gt;If you want this formalized as a license, there is the &lt;a href="http://creativecommons.org/licenses/by/2.0/"&gt;creative commons attribution license&lt;/a&gt;, which I use on this site (see footer).&lt;/p&gt;
&lt;h2&gt;6. Use the web to &lt;strong&gt;communicate&lt;/strong&gt; with your users, or watch your impact fade&lt;/h2&gt;
&lt;p&gt;Almost everything is moving to the web, including most of your business and private life. This of course has implications for web sites. Back in 1999, a couple of smart people sat together and tried to formulate how the future would look for businesses. One of the fundamental truths they found was &amp;#8220;&lt;a href="http://www.cluetrain.com/book/markets.html"&gt;Markets are conversations&lt;/a&gt;&amp;#8220;. In essence, this means that &lt;strong&gt;you sell stuff by talking&lt;/strong&gt; about it with customers. It can be through marketing or through recommendation, but it is talking. When that communication moves to the web, you too better start talking &lt;strong&gt;on the web&lt;/strong&gt;. And quickly.&lt;/p&gt;
&lt;p&gt;This movement of websites for two-way instead of one-way communication has been given the techy name Web 2.0. And it turns out, this new web is a terribly effective way of communicating. The more people realize this, the more of the conversations will move to the web.&lt;/p&gt;
&lt;p&gt;The question is, when hoards of people come to your site to talk to you about your product, are your ready? Or will you give them: &amp;#8220;Sorry, this store is closed, but we have this nice brochure you can read&amp;#8230;&amp;#8221;&lt;/p&gt;
&lt;h2&gt;7. Communicate with your users in &lt;strong&gt;natural language&lt;/strong&gt;, marketing speech has no place on the web&lt;/h2&gt;
&lt;p&gt;It&amp;#8217;s easy to find marketing speech about products today. Companies compete with each other to make sure as much of your field of vision as possible is filled with their message. When people are subjected to that much information they have no interest in, there are consequences. On the early web, the consequences were banner blindness, people simply started ignoring some banner formats. On the modern web, people have started &lt;strong&gt;ignoring marketing language &lt;/strong&gt;use instead. The words &amp;#8220;Best&amp;#8221;, &amp;#8220;Revolutionize&amp;#8221; and &amp;#8220;Cheapest&amp;#8221;, instantly makes people stop reading.&lt;/p&gt;
&lt;p&gt;Why? Because companies writing about their own products don&amp;#8217;t have anything to compare to! They can&amp;#8217;t say what&amp;#8217;s &lt;strong&gt;best&lt;/strong&gt;, because they don&amp;#8217;t use their competitor&amp;#8217;s products. They don&amp;#8217;t know if the product will &lt;strong&gt;revolutionize&lt;/strong&gt; the users life, because they know nothing about the user. And any user can look up how &lt;strong&gt;cheap &lt;/strong&gt;they are on a price comparison site.&lt;/p&gt;
&lt;p&gt;So what to do? Talk to them like you would to a friend, in the afternoon, &lt;a href="http://www.youtube.com/watch?v=OqhXwjBVVRY"&gt;after two beers&lt;/a&gt;. This will make sure you don&amp;#8217;t turn customers away by trying to push to much crap on them. You wouldn&amp;#8217;t do it to your friend? Then don&amp;#8217;t do it to potential customers. Just changing your language has huge positive implications, but let me just sum it up like this: &lt;strong&gt;it builds trust&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;8. Be &lt;strong&gt;honest&lt;/strong&gt; about what your strengths are, liars are easily uncovered&lt;/h2&gt;
&lt;p&gt;Never has it been so easy to look up facts. Liars are easily uncovered by a couple of soft tappings on a keyboard. What&amp;#8217;s even better, is that even subjective things can be checked. If someone yells: &amp;#8220;Our product is the best one!&amp;#8221;, you can find out if that&amp;#8217;s the case in a few seconds. Just read a couple of reviews, look at comparison charts, and you will know.&lt;/p&gt;
&lt;p&gt;Lying in person is rather bad, but &lt;strong&gt;lying on the web is worse&lt;/strong&gt;. All the facts are so close. A customer is literally seconds away from finding out if you&amp;#8217;re bullshitting them or telling the truth. This makes it vital not to lie on the web.&lt;/p&gt;
&lt;p&gt;If you want to brag anyway, make sure your add a &amp;#8220;&lt;strong&gt;we think&lt;/strong&gt;&amp;#8221; before all your bold claims, and back them up with solid arguments. Because if you say &amp;#8220;We&amp;#8217;ve found no cheaper product than our own&amp;#8221;, and I find out there are others that in fact are, you&amp;#8217;re not a liar, you&amp;#8217;re just badly informed.&lt;/p&gt;
&lt;h2&gt;9. Care about &lt;strong&gt;search engines&lt;/strong&gt;, and double your number of users&lt;/h2&gt;
&lt;p&gt;You are not the only site on the web, and people will spend most of their time on sites other than your own. This means, that if you don&amp;#8217;t think about how people find your site, all your content work is in vain.&lt;/p&gt;
&lt;p&gt;So how are people found? I have yet to see a customer of mine that gets less than 50% of their users from search engines. &lt;strong&gt;Usually 60-70%.&lt;/strong&gt; People tend not to understand the implications of this. A e-store could potentially lose over half their sales by misbehaving in Google&amp;#8217;s eyes. This is huge.&lt;/p&gt;
&lt;p&gt;You need to &lt;strong&gt;care about search engines&lt;/strong&gt;. Luckily, they are well synced with the ground rules you&amp;#8217;re reading. If you make your content linkable, unique, interesting, and talk to them in a language they understand, you will be successful. All serious search engine optimization guides will say the same.&lt;/p&gt;
&lt;p&gt;The last step, and what many miss, is to &lt;strong&gt;keep track of &lt;/strong&gt;how people find you, and what they find. Then feed that information back to your content producers. That way, you can produce content that people actually like.&lt;/p&gt;
&lt;p&gt;Or, you could lose half your sales. Your choice.&lt;/p&gt;
&lt;h2&gt;10. Encouraging and acting upon &lt;strong&gt;feedback &lt;/strong&gt;is currently the best form of marketing&lt;/h2&gt;
&lt;p&gt;Asking for feedback is unfortunately still uncommon. Unfortunate because there are so many out there that could benefit from knowing how they can do better. It&amp;#8217;s also fortunate, because it means that you have a chance to be different, and stand out, just by &lt;strong&gt;asking people what they want&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.ideastorm.com/"&gt;Dell IdeaStorm&lt;/a&gt; is a great example of this. They are simply saying: &amp;#8220;Hi, we want your feedback&amp;#8221;, and instantly they have media coverage everywhere. Additionally, they get great feedback on how to improve their business.&lt;/p&gt;
&lt;p&gt;Of course, this means you need to act upon feedback too. Telling people that you listen, and then don&amp;#8217;t is a much worse offense than not listening at all. So find yourself a good chair, hand out the megaphones, and listen carefully.&lt;/p&gt;
&lt;h2&gt;Where to now?&lt;/h2&gt;
&lt;p&gt;Thanks for reading this far. This article comes from a frustration over how some companies, and individuals, think the web is still a place were they can makes their own rules. I would therefore like to set the foot down, and tell people what I&amp;#8217;ve learned about the web, about what works and not.&lt;/p&gt;
&lt;p&gt;I also know that there are other people out there that needs to read this. Do you know some of them? I then appreciate if you could send them the link. &lt;strong&gt;More people need to read this&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Thanks.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/other/click-here-to-read-this-article/' rel='bookmark' title='Permanent Link: Click here to read this article'&gt;Click here to read this article&lt;/a&gt; &lt;small&gt;No matter where you go on the web today you...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=tunvn"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=tunvn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=h9nuN"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=h9nuN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/tutorial/10-web-ground-rules/#comments" thr:count="2" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/tutorial/10-web-ground-rules/feed/atom/" thr:count="2" />
		<thr:total>2</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Ftutorial%2F10-web-ground-rules%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Templated User Controls in ASP.NET]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/other/templated-user-controls-in-aspnet/" />
		<id>http://friendlybit.com/?p=323</id>
		<updated>2008-11-18T19:55:05Z</updated>
		<published>2008-11-17T23:28:43Z</published>
		<category scheme="http://friendlybit.com" term="HTML" /><category scheme="http://friendlybit.com" term="Other topics" /><category scheme="http://friendlybit.com" term="Tutor" />		<summary type="html"><![CDATA[Good design repeats itself. It works hard to convey a whole, a feeling of consistency. Once you understand a part of such a design, you know your way around all of it. This is often done by repetition, using the same elements, colors, styles, positioning, and so on. This is a good thing.
Good code never [...]


Related posts:<ol><li><a href='http://friendlybit.com/html/web-standards-with-aspnet/' rel='bookmark' title='Permanent Link: Web standards with ASP.NET'>Web standards with ASP.NET</a> <small>Good interface code is a mix of CSS and HTML,...</small></li><li><a href='http://friendlybit.com/css/what-beginners-ask-for-and-what-i-tell-them/' rel='bookmark' title='Permanent Link: What beginners ask for (and what I tell them)'>What beginners ask for (and what I tell them)</a> <small>Being in an IRC help channel lets you meet a...</small></li><li><a href='http://friendlybit.com/html/why-the-class-name-wrapper-is-so-common/' rel='bookmark' title='Permanent Link: Why the class name &#8220;wrapper&#8221; is so common'>Why the class name &#8220;wrapper&#8221; is so common</a> <small>We've all heard about how bad it is to use...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/other/templated-user-controls-in-aspnet/">&lt;p&gt;Good design repeats itself. It works hard to convey a whole, a feeling of consistency. Once you understand a part of such a design, you know your way around all of it. This is often done by repetition, using the same elements, colors, styles, positioning, and so on. This is a good thing.&lt;/p&gt;
&lt;p&gt;Good code &lt;a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself"&gt;never repeats itself&lt;/a&gt;. The number of techniques to avoid it are numerous, and all new languages compete in trying to remove as much repetition as possible (Especially the dynamic ones).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Good design repeats itself, good code does not. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;With interface development, you &lt;strong&gt;face the conflict&lt;/strong&gt; above over and over again. You get a design that (rightly) reuses the same concepts over and over, and you need to implement them in code that makes you write the same logic only once. This same time both when writing the code and later when fixing bugs in it, and deep inside, all programmers know that it&amp;#8217;s the correct way to do things.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m currently working in a .NET project (EPiServer CMS 5), and is faced with a design that uses the same kind of boxes all over the site. The boxes only differ by color and content, so things like shadows and rounded corners are clear repetition that I want to do only once. I&amp;#8217;ll do the shadows and corners with CSS, but for that I need a couple of wrapper divs. Divs that I only want to specify once, and then reuse.&lt;/p&gt;
&lt;p&gt;The prequisites are:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I want a &lt;strong&gt;flexible &lt;/strong&gt;solution, so I&amp;#8217;m not tied to a specific HTML structure (number of divs, or even if I use the div tag or not).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No HTML in properties&lt;/strong&gt; that get sent to user-controls&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No HTML in code-behind&lt;/strong&gt; (a common way in .NET to split logic (code-behind) and templates (ASP.NET and HTML))&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;What I came up with was &lt;a href="http://msdn.microsoft.com/en-us/library/36574bf6.aspx"&gt;templated user controls&lt;/a&gt;. They provide a way to write controls that wrap any other controls you may have, and add content around them. And it&amp;#8217;s easy to write and user. This is how the one I wrote is used:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;&amp;lt;MyProject:Box runat="server"&amp;gt;
    &amp;lt;Contents&amp;gt;
        &amp;lt;h2&amp;gt;Random header...&amp;lt;/h2&amp;gt;
        &amp;lt;asp:Repeater runat="server"&amp;gt;...&amp;lt;/asp:Repeater&amp;gt;
        ...
    &amp;lt;/Contents&amp;gt;
&amp;lt;/MyProject:Box&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It simply wraps anything inside it (in this case a heading tag and a asp repeater), and lets me do whatever I want with them. In my case, I wanted to add some generic HTML around lots of different content, but you could do anything you wanted.&lt;/p&gt;
&lt;p&gt;This is how the above was implemented. First the code-behind:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;using System.Web.UI;

namespace MyProject.templates.units
{
    [ParseChildren(true)]
    public partial class Box : System.Web.UI.UserControl
    {
        private ITemplate contents = null;

        [TemplateContainer(typeof(TemplateControl))]
        [PersistenceMode(PersistenceMode.InnerProperty)]
        [TemplateInstance(TemplateInstance.Single)]
        public ITemplate Contents
        {
            get
            {
                return contents;
            }
            set
            {
                contents = value;
            }
        }

        void Page_Init()
        {
            if (contents != null)
                contents.InstantiateIn(PlaceHolder1);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;#8230; and then the &amp;#8220;code-front&amp;#8221;:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;&amp;lt;%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Box.ascx.cs" Inherits="MyProject.templates.units.Box" %&amp;gt;
&amp;lt;div class="box"&amp;gt;
    &amp;lt;div class="boxwrapper"&amp;gt;
        &amp;lt;asp:Placeholder runat="server" ID="PlaceHolder1" /&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think this is a &lt;strong&gt;really useful&lt;/strong&gt; way to write user controls, especially for those of you that work as interface developers in a .NET world. Asking the people around me I found that quite a few didn&amp;#8217;t know how templated user controls worked, so I hope I will be of use to some of you out there. Happy coding!&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/web-standards-with-aspnet/' rel='bookmark' title='Permanent Link: Web standards with ASP.NET'&gt;Web standards with ASP.NET&lt;/a&gt; &lt;small&gt;Good interface code is a mix of CSS and HTML,...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/what-beginners-ask-for-and-what-i-tell-them/' rel='bookmark' title='Permanent Link: What beginners ask for (and what I tell them)'&gt;What beginners ask for (and what I tell them)&lt;/a&gt; &lt;small&gt;Being in an IRC help channel lets you meet a...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/why-the-class-name-wrapper-is-so-common/' rel='bookmark' title='Permanent Link: Why the class name &amp;#8220;wrapper&amp;#8221; is so common'&gt;Why the class name &amp;#8220;wrapper&amp;#8221; is so common&lt;/a&gt; &lt;small&gt;We've all heard about how bad it is to use...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=Ge7dn"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=Ge7dn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=qEO6N"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=qEO6N" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/other/templated-user-controls-in-aspnet/#comments" thr:count="4" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/other/templated-user-controls-in-aspnet/feed/atom/" thr:count="4" />
		<thr:total>4</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fother%2Ftemplated-user-controls-in-aspnet%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Install MySQL-python on Mac OS X (leopard)]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/" />
		<id>http://friendlybit.com/?p=299</id>
		<updated>2008-10-31T16:46:53Z</updated>
		<published>2008-10-31T16:37:18Z</published>
		<category scheme="http://friendlybit.com" term="Django" /><category scheme="http://friendlybit.com" term="Tutor" />		<summary type="html"><![CDATA[What a pain. Getting mysql to work with python is the single most annoying step in getting Django up and running (if you choose MySQL as the database). You see, python requires drivers to be able to talk to MySQL, and you have to compile those yourself. I just devoted several hours last night to [...]


No related posts.]]></summary>
		<content type="html" xml:base="http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/">&lt;p&gt;What a pain. Getting mysql to work with python is the single most annoying step in getting Django up and running (if you choose MySQL as the database). You see, python requires drivers to be able to talk to MySQL, and you have to compile those yourself. I just devoted several hours last night to help friends do what I did some months ago. This time, I thought I document it right here.&lt;/p&gt;
&lt;h2&gt;How to install MySQL-python on Mac OS X&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: &lt;strong&gt;Brace yourself&lt;/strong&gt;, this proccess is really really annoying.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: &lt;a href="http://dev.mysql.com/downloads/mysql/5.0.html#macosx-dmg"&gt;&lt;strong&gt;Download MySQL&lt;/strong&gt; for Mac&lt;/a&gt; (Skip registration by clicking the link below the login form). You probably want &amp;#8220;&lt;a href="http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-5.0.67-osx10.5-x86.dmg/from/http://mysql.mirror.kangaroot.net/"&gt;Mac OS X 10.5 (x86)&lt;/a&gt;&amp;#8220;. Is it possible to use some other version of MySQL? Yes, as long as you have a version that includes the source code (&lt;a href="http://www.mamp.info/en/mamp.html"&gt;MAMP&lt;/a&gt; does not include them, so it won&amp;#8217;t work). You&amp;#8217;ll need the source later on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: &lt;strong&gt;Install MySQL&lt;/strong&gt; by mounting the image you just downloaded, and double-clicking the package file for MySQL. Also install the prefPane that&amp;#8217;s included in the package. That adds an icon the system admin that lets you start and stop MySQL, very convenient.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: &lt;strong&gt;Make the mysql command accessible from anywhere&lt;/strong&gt; by adding it to your PATH (a variable that holds all directories the terminal looks in to find the command you&amp;#8217;re trying to execute). The below just adds mysql&amp;#8217;s bin directory (it&amp;#8217;s probably the one I&amp;#8217;m using below) to the PATH you currently are using:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;export PATH=/usr/local/mysql/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You probably want to add this line to a file called &lt;strong&gt;.bash_profile&lt;/strong&gt; (yes, it starts with a dot), that is situated in your home directory (which you get to by just typing &amp;#8220;cd&amp;#8221;). This file gets run each time you start a new terminal, so it makes sure the mysql command is always accessible, no matter where you are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: &lt;strong&gt;&lt;a href="https://sourceforge.net/project/showfiles.php?group_id=22307&amp;amp;package_id=15775"&gt;Download MySQL-python&lt;/a&gt;&lt;/strong&gt;, you probably want the file that ends with .&lt;strong&gt;tar.gz&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;: &lt;strong&gt;Unpack the file &lt;/strong&gt;you just downloaded in an empty directory (anywhere)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;: &lt;strong&gt;&lt;a href="http://developer.apple.com/technology/xcode.html"&gt;Download XCode&lt;/a&gt;&lt;/strong&gt; from Apple. The reason you need this is because XCode includes a C++ compiler you will use when installing MySQL-python soon. The download is huge (1 Gb), and to be able to download you first need to fill in a long form. The registration process for Apple Developer Connection is about the worst things Apple has ever created, so after completing it, you will either laugh or be really annoyed, just pick and choose. You do need XCode however.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 8&lt;/strong&gt;: &lt;strong&gt;Install the XCode Tools&lt;/strong&gt; &lt;strong&gt;package&lt;/strong&gt; by first mounting the file you just downloaded, and then double-clicking on the &lt;strong&gt;XCode Tools&lt;/strong&gt; package. It&amp;#8217;s the only one you need from the huge set of junk you just downloaded.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 9&lt;/strong&gt;: Try installing MySQL-python by going to the directory where you unpacked it and typing:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;python setup.py install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will attempt to install the drivers, but &lt;strong&gt;will fail&lt;/strong&gt;. This is because the coders behind MySQL-python have failed to fix a very simple bug in types.h (&lt;a href="https://sourceforge.net/tracker/?func=detail&amp;amp;aid=1808476&amp;amp;group_id=22307&amp;amp;atid=374932"&gt;1808476&lt;/a&gt; - &amp;#8220;#define of uint breaks compiling on Mac OS X 10.5&amp;#8243;). However, you can easily fix it yourself: Look for a reference to types.h in the terminal. When you find it, open that file in your favorite text editor and comment out line 92, which should say something about &amp;lt;code lang=&amp;#8221;c++&amp;#8221;&amp;gt;#define&amp;lt;/code&amp;gt; and &amp;lt;code lang=&amp;#8221;c++&amp;#8221;&amp;gt;uint&amp;lt;/code&amp;gt; (comments in C++ are double forward slashes: //).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 10&lt;/strong&gt;: Now, &lt;strong&gt;try the above command again&lt;/strong&gt;. It should install fine. If it doesn&amp;#8217;t, you will probably find out why by looking in the terminal for errors while compiling.&lt;/p&gt;
&lt;p&gt;What did I say, isn&amp;#8217;t this process about 7 steps to long? Well, I hope this little guide helps someone.&lt;/p&gt;


&lt;p&gt;No related posts.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=e0sym"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=e0sym" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=ZMEAM"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=ZMEAM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Ftutorial%2Finstall-mysql-python-on-mac-os-x-leopard%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[OpenID, Nofollow removed, Comment counts, and IE7 fixes]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/openid-nofollow-removed-comment-counts-and-ie7-fixes/" />
		<id>http://friendlybit.com/?p=290</id>
		<updated>2008-10-19T13:49:47Z</updated>
		<published>2008-10-19T13:48:03Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[I&#8217;m added a few features to the site:
OpenID support: Instead of typing your name and e-mail you could instead sign in with an OpenID-enabled URL. Or you could completely ignore it, and go on as usual.
Nofollow restriction removed: Wordpress by default adds rel=&#8221;nofollow&#8221; to all links that people write in comments. It&#8217;s a good way [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/new-theme-up-for-friendlybitcom/' rel='bookmark' title='Permanent Link: New theme up for friendlybit.com'>New theme up for friendlybit.com</a> <small>Hi! If you're reading this blog through your feed reader,...</small></li><li><a href='http://friendlybit.com/css/feed-readers-should-show-comments/' rel='bookmark' title='Permanent Link: Feed readers should show comments'>Feed readers should show comments</a> <small>One thing I've noticed lately is that I read fewer...</small></li><li><a href='http://friendlybit.com/css/make-a-tooltip-out-of-some-columns-in-a-table/' rel='bookmark' title='Permanent Link: Make a tooltip out of some columns in a table'>Make a tooltip out of some columns in a table</a> <small>A worried user joins the #CSS channel on EFNet. He...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/openid-nofollow-removed-comment-counts-and-ie7-fixes/">&lt;p&gt;I&amp;#8217;m added a few features to the site:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;OpenID support&lt;/strong&gt;: Instead of typing your name and e-mail you could instead sign in with an OpenID-enabled URL. Or you could completely ignore it, and go on as usual.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Nofollow restriction removed&lt;/strong&gt;: Wordpress by default adds rel=&amp;#8221;nofollow&amp;#8221; to all links that people write in comments. It&amp;#8217;s a good way to decrease the impact of spam. Thing is, I strictly moderate comments, and have three plugins that prevent spam (Akismet, Spam Karma 2, and Bad Behavior). Since spam really isn&amp;#8217;t a problem, I&amp;#8217;ve decided to remove the nofollow from your links, if you&amp;#8217;ve posted more than three comments. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Comment counts&lt;/strong&gt;: To make it easier to see who you can trust and not in the comments I&amp;#8217;ve added a comment count next to the name. Damn, I&amp;#8217;ve commented a lot :)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;IE7 fixes&lt;/strong&gt;: There were script errors in IE7 since I&amp;#8217;m trying to do funky stuff with opacity on the search field. I&amp;#8217;ve fixed that. Also, the number of subscribers wasn&amp;#8217;t visible in IE7. They are now.&lt;/p&gt;
&lt;p&gt;Over and out.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/new-theme-up-for-friendlybitcom/' rel='bookmark' title='Permanent Link: New theme up for friendlybit.com'&gt;New theme up for friendlybit.com&lt;/a&gt; &lt;small&gt;Hi! If you're reading this blog through your feed reader,...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/feed-readers-should-show-comments/' rel='bookmark' title='Permanent Link: Feed readers should show comments'&gt;Feed readers should show comments&lt;/a&gt; &lt;small&gt;One thing I've noticed lately is that I read fewer...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/make-a-tooltip-out-of-some-columns-in-a-table/' rel='bookmark' title='Permanent Link: Make a tooltip out of some columns in a table'&gt;Make a tooltip out of some columns in a table&lt;/a&gt; &lt;small&gt;A worried user joins the #CSS channel on EFNet. He...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=zi7Cm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=zi7Cm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=N8oRm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=N8oRm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=NA3iM"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=NA3iM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/openid-nofollow-removed-comment-counts-and-ie7-fixes/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/openid-nofollow-removed-comment-counts-and-ie7-fixes/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fopenid-nofollow-removed-comment-counts-and-ie7-fixes%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[IE7 hover bug: z-index ignored (and other properties)]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/ie7-hover-bug-z-index-ignored-and-other-properties/" />
		<id>http://friendlybit.com/?p=285</id>
		<updated>2008-10-12T18:26:26Z</updated>
		<published>2008-10-12T18:17:04Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[I&#8217;m implementing a rather different design right now for an intranet, and have found a bug I thought you&#8217;d like to know about. If you restyle things with :hover, you might have to add an extra property for the rule to be applied in IE7.
How is this design different? Well, it built on columns that [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/ie6-bug-ignored-selector-hover-bug/' rel='bookmark' title='Permanent Link: IE6 bug: Ignored selector hover bug'>IE6 bug: Ignored selector hover bug</a> <small>IE6 bugs seem to pop up all over the place...</small></li><li><a href='http://friendlybit.com/css/upside-down-text-with-css/' rel='bookmark' title='Permanent Link: Upside down text with CSS'>Upside down text with CSS</a> <small>Previously I've talked about reversing text with CSS by simply...</small></li><li><a href='http://friendlybit.com/css/finer-details-of-floats/' rel='bookmark' title='Permanent Link: Finer details of floats'>Finer details of floats</a> <small>The other day I was working on one of those...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/ie7-hover-bug-z-index-ignored-and-other-properties/">&lt;p&gt;I&amp;#8217;m implementing a rather different design right now for an intranet, and have found a bug I thought you&amp;#8217;d like to know about. If you restyle things with :hover, you might have to add an extra property for the rule to be applied in IE7.&lt;/p&gt;
&lt;p&gt;How is this design different? Well, it built on columns that are overlapping each other. When you hover one of the columns, that column get placed on top (temporarily). You think you need javascript for this? You don&amp;#8217;t (if you can live with not supporting IE6).&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;#menu, #content, #sidebar {
   z-index: 1;
}
#menu:hover, #content:hover, #sidebar:hover {
   z-index: 2;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Simple isn&amp;#8217;t it? Now you just have to absolutely position the three columns. By the way, working with absolute positioning is ok as long as you don&amp;#8217;t need a cleared footer below the three columns. Strange that not more people use this.&lt;/p&gt;
&lt;p&gt;Anyway, the above doesn&amp;#8217;t work in IE7. It should, because IE7 supports :hover on all elements, including my &amp;#8220;div columns&amp;#8221;. Some googling led me to an old IE6 bug where &lt;a href="http://www.tanfa.co.uk/css/articles/pure-css-popups-bug.asp"&gt;some elements are ignored on links&lt;/a&gt;. The bug talks about IE6 and the color property being ignored, but the same seems to apply to IE7 and z-index.&lt;/p&gt;
&lt;p&gt;So, long story short, just add &lt;code &gt;display: block&lt;/code&gt; to the hover rule and everything works fine. As the link above dictates, many different rules work, the important thing is that it must be a new rule, which you &lt;strong&gt;haven&amp;#8217;t used before&lt;/strong&gt; on that element. But you don&amp;#8217;t set display: block; on divs, do you? So it should work fine.&lt;/p&gt;
&lt;p&gt;Hope it helps some frustrated soul out there :) And long live funky designs.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/ie6-bug-ignored-selector-hover-bug/' rel='bookmark' title='Permanent Link: IE6 bug: Ignored selector hover bug'&gt;IE6 bug: Ignored selector hover bug&lt;/a&gt; &lt;small&gt;IE6 bugs seem to pop up all over the place...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/upside-down-text-with-css/' rel='bookmark' title='Permanent Link: Upside down text with CSS'&gt;Upside down text with CSS&lt;/a&gt; &lt;small&gt;Previously I've talked about reversing text with CSS by simply...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/finer-details-of-floats/' rel='bookmark' title='Permanent Link: Finer details of floats'&gt;Finer details of floats&lt;/a&gt; &lt;small&gt;The other day I was working on one of those...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=u6NHm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=u6NHm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=IKFPm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=IKFPm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=TXxMM"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=TXxMM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/ie7-hover-bug-z-index-ignored-and-other-properties/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/ie7-hover-bug-z-index-ignored-and-other-properties/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fie7-hover-bug-z-index-ignored-and-other-properties%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Yellow fade with CSS and a simple image]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/yellow-fade-with-css-and-a-simple-image/" />
		<id>http://friendlybit.com/?p=276</id>
		<updated>2008-10-31T19:47:20Z</updated>
		<published>2008-10-04T18:19:09Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[Via Think Vitamin I find a cool way to highlight the current element. Lots of people do this by calling some kind of javascript library, it&#8217;s so common it&#8217;s been dubbed the yellow fade technique. But javascript isn&#8217;t really needed, you just need CSS and an image.
First: you can jump to any id on the [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/simple-css-templates/' rel='bookmark' title='Permanent Link: Simple CSS templates'>Simple CSS templates</a> <small>The most frequent question in the #CSS channel I'm in...</small></li><li><a href='http://friendlybit.com/css/correcting-the-20-pro-tips/' rel='bookmark' title='Permanent Link: Correcting the 20 pro tips (.NET magazine)'>Correcting the 20 pro tips (.NET magazine)</a> <small>.NET magazine is a fairly big web development magazine. I've...</small></li><li><a href='http://friendlybit.com/css/kth-goes-web-standards/' rel='bookmark' title='Permanent Link: KTH goes web standards'>KTH goes web standards</a> <small>Sweden's largest technological university, KTH, just launched their new site...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/yellow-fade-with-css-and-a-simple-image/">&lt;p&gt;Via &lt;a href="http://www.thinkvitamin.com/features/css/stay-on-target"&gt;Think Vitamin&lt;/a&gt; I find a cool way to highlight the current element. Lots of people do this by calling some kind of javascript library, it&amp;#8217;s so common it&amp;#8217;s been dubbed the &lt;a href="http://www.37signals.com/svn/archives/000558.php"&gt;yellow fade technique&lt;/a&gt;. But javascript isn&amp;#8217;t really needed, you just need CSS and an image.&lt;/p&gt;
&lt;p id="example"&gt;First: you can jump to any id on the current page by appending #some-id-here to the url. This includes all the &amp;#8220;semantic&amp;#8221; ids you&amp;#8217;ve added to the page such as #content, #sidebar, and so on. Very useful if you want to point out a certain section of a page to a friend, just look at the source, try to find an id nearby, and add it to the url.&lt;/p&gt;
&lt;p&gt;If you want to make things even easier on your own site, you can visually highlight things that get referenced via the above method. That&amp;#8217;s where the :target psuedo selector jumps in to save your day. Please note that :target is CSS3, and only currently works in &lt;a href="http://reference.sitepoint.com/css/pseudoclass-target"&gt;non-crap browsers&lt;/a&gt;. But perhaps this effect is something not all users really need?&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;a:target {
   background: #234af5;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This highlights all links that get referenced via the URL with a nice blue color. So they need an id added. Makes perfect sense for all kinds of documentation where you want to refer someone to a certain method or even sentence.&lt;/p&gt;
&lt;p&gt;But it gets better:&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;:target {
   background: url(&lt;a href="http://friendlybit.com/images/yellow-fade.gif"&gt;yellow-fade.gif&lt;/a&gt;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We&amp;#8217;ve removed the limit of only targeting links with by using :target straight off. So all targeted elements will get affected by this rule. What next? Well, we use a small animated image to fade from one color to the next. It&amp;#8217;s a really easy way to add dynamics to a page. &lt;/p&gt;
&lt;p&gt;Try the effect by &lt;a href="#example"&gt;jumping to the code example&lt;/a&gt; above.&lt;/p&gt;
&lt;p&gt;I really think this makes internal links a whole lot more useful, especially for jumping to the bottom of the page, where it&amp;#8217;s not possible for the browser to scroll down enough to get the targeted element to the top. Needless to say, I&amp;#8217;ve added this effect to this site too. Hope you can find something to use it for too.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/simple-css-templates/' rel='bookmark' title='Permanent Link: Simple CSS templates'&gt;Simple CSS templates&lt;/a&gt; &lt;small&gt;The most frequent question in the #CSS channel I'm in...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/correcting-the-20-pro-tips/' rel='bookmark' title='Permanent Link: Correcting the 20 pro tips (.NET magazine)'&gt;Correcting the 20 pro tips (.NET magazine)&lt;/a&gt; &lt;small&gt;.NET magazine is a fairly big web development magazine. I've...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/kth-goes-web-standards/' rel='bookmark' title='Permanent Link: KTH goes web standards'&gt;KTH goes web standards&lt;/a&gt; &lt;small&gt;Sweden's largest technological university, KTH, just launched their new site...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=m0oWm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=m0oWm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=PyOnm"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=PyOnm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=DSPUM"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=DSPUM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/yellow-fade-with-css-and-a-simple-image/#comments" thr:count="6" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/yellow-fade-with-css-and-a-simple-image/feed/atom/" thr:count="6" />
		<thr:total>6</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fyellow-fade-with-css-and-a-simple-image%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Django - the fun framework (presentation)]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/other/django-the-fun-framework-presentation/" />
		<id>http://friendlybit.com/?p=265</id>
		<updated>2008-10-31T16:47:41Z</updated>
		<published>2008-09-26T15:07:14Z</published>
		<category scheme="http://friendlybit.com" term="Django" /><category scheme="http://friendlybit.com" term="Other topics" />		<summary type="html"><![CDATA[Yesterday I attended the excellent Geek Meet hosted by Robert Nyman at the Creuna office. I held a presentation about the Django web framework, and took some time today to add some comments in english and make a PDF-file of the presentation. Would you like to know why Django is more fun than what you&#8217;re [...]


Related posts:<ol><li><a href='http://friendlybit.com/js/worth-a-look-domassistant/' rel='bookmark' title='Permanent Link: Worth a look: DOMAssistant'>Worth a look: DOMAssistant</a> <small>A couple of months ago Robert Nyman showed me a...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/other/django-the-fun-framework-presentation/">&lt;p&gt;Yesterday I attended the excellent &lt;a href="http://robertnyman.com/geekmeet/"&gt;Geek Meet&lt;/a&gt; hosted by Robert Nyman at the Creuna office. I held a presentation about the Django web framework, and took some time today to add some comments in english and make a PDF-file of the presentation. Would you like to know why Django is more fun than what you&amp;#8217;re using right now?&lt;/p&gt;
&lt;p&gt;So go ahead and have a look at the presentation: &lt;strong&gt;&lt;a href="/files/Django - the fun framework.pdf"&gt;Django - the fun framework&lt;/a&gt;&lt;/strong&gt; (11 Mb, PDF with english comments)&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/js/worth-a-look-domassistant/' rel='bookmark' title='Permanent Link: Worth a look: DOMAssistant'&gt;Worth a look: DOMAssistant&lt;/a&gt; &lt;small&gt;A couple of months ago Robert Nyman showed me a...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=Qr4Tl"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=Qr4Tl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=yIGyl"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=yIGyl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=JW08L"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=JW08L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/other/django-the-fun-framework-presentation/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/other/django-the-fun-framework-presentation/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fother%2Fdjango-the-fun-framework-presentation%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Ten commandments of update services]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/other/ten-commandments-of-update-services/" />
		<id>http://friendlybit.com/?p=239</id>
		<updated>2008-10-31T17:13:39Z</updated>
		<published>2008-09-21T21:10:25Z</published>
		<category scheme="http://friendlybit.com" term="Other topics" /><category scheme="http://friendlybit.com" term="Tutor" />		<summary type="html"><![CDATA[I&#8217;m getting increasingly annoyed with update services shipped with popular applications. It&#8217;s looks like it&#8217;s getting worse and worse, and I think someone should stand up and say enough is enough.

Adobe Update
Google Update
Microsoft Update
Ten Commandments of Update Services

Let me start by showing when updates go wrong:
Adobe Update
I start Adobe Fireworks because I want to resize [...]


Related posts:<ol><li><a href='http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/' rel='bookmark' title='Permanent Link: Install MySQL-python on Mac OS X (leopard)'>Install MySQL-python on Mac OS X (leopard)</a> <small>What a pain. Getting mysql to work with python is...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/other/ten-commandments-of-update-services/">&lt;p&gt;I&amp;#8217;m getting increasingly annoyed with update services shipped with popular applications. It&amp;#8217;s looks like it&amp;#8217;s getting worse and worse, and I think someone should stand up and say &lt;strong&gt;enough is enough&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#adobe"&gt;Adobe Update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#google"&gt;Google Update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#microsoft"&gt;Microsoft Update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ten"&gt;Ten Commandments of Update Services&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let me start by showing when updates go wrong:&lt;/p&gt;
&lt;h2 id="adobe"&gt;Adobe Update&lt;/h2&gt;
&lt;p&gt;&lt;img class="secondary" src="http://friendlybit.com/wp-content/uploads/2008/09/adobe_logo.jpg" alt=""&gt;I start Adobe Fireworks because I want to resize an image I have. After it has started and the image has loaded the update service prompts me that there are new updates available. For what? It doesn&amp;#8217;t say, so I click more info and get a list of things. Strange: &lt;strong&gt;None of them seem related to Fireworks&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The update starts, and tells me I &lt;strong&gt;have to close Fireworks&lt;/strong&gt; to complete it. Bah, I just started it! I&amp;#8217;m trying to resize an image here, remember? But Ok, this time. Next it tells me to close Firefox. What?! All my precious tabs I&amp;#8217;ve saved for later reading! Bitches.&lt;/p&gt;
&lt;p&gt;The download begins, and the &lt;strong&gt;progress window takes focus&lt;/strong&gt; over the other stuff I&amp;#8217;m doing while not looking at the progress bar. *Repeated clicking to hide the window*. Then when it&amp;#8217;s done it takes focus again, and asks me to click the only button available. GAH?!&lt;/p&gt;
&lt;p&gt;Ok, done. Why was I starting Fireworks again? And hey, what&amp;#8217;s those &lt;strong&gt;new PDF icons&lt;/strong&gt; doing in my Links toolbar in Internet Explorer?&lt;/p&gt;
&lt;h2 id="google"&gt;Google Update&lt;/h2&gt;
&lt;p&gt;&lt;img class="secondary" src="http://friendlybit.com/wp-content/uploads/2008/09/google-logo.jpg" alt=""&gt;Oh, a new web browser: Google Chrome, I surely want to try it out. *Couple of hours of fiddling*. Nah, I still like Firefox more, I&amp;#8217;ll go back to using that one. &lt;strong&gt;Wait, what&amp;#8217;s that GoogleUpdate.exe process doing there&lt;/strong&gt;? I&amp;#8217;ll try closing Chrome. Nope, still there. Ok, I&amp;#8217;ll force it to close. Hmm, it restarts after a while. Ok, must be some kind of process that starts with Windows. Ah, registry setting, lets remove that one. *Reboot*. Still there?! Ah, they also installed it as a service. Lets remove that too. Finally!&lt;/p&gt;
&lt;p&gt;What&amp;#8217;s that? A new version of Google Gears! *Installing*. Hmm&amp;#8230; What&amp;#8217;s that GoogleUpdate.exe process doing there? GAH! What were you thinking Google?!&lt;/p&gt;
&lt;h2 id="microsoft"&gt;Microsoft update&lt;/h2&gt;
&lt;p&gt;&lt;img class="secondary" src="http://friendlybit.com/wp-content/uploads/2008/09/logo_microsoft_small.gif" alt=""&gt;I really should make sure my OS is up to date. Lets go to the windowsupdate website. What? I need to run IE5 or later? Ah, no Firefox support, damn it. Lets switch browser. Ok. Install validation thingie? Ehm&amp;#8230; I guess I have no choice. *Waiting*. Ok, now let&amp;#8217;s see if there&amp;#8217;s some updates, Express or Custom? Custom, of course. *Waiting quite a long time*. Why are you making me look at a progress bar? Ok, no &lt;abbr title="Operating System"&gt;OS&lt;/abbr&gt; upgrades, but there&amp;#8217;s some update to Windows Media player. Yeye, I guess it couldn&amp;#8217;t do any harm (not that I use that one). Trust ActiveX thingie? Yeye, I know what I&amp;#8217;m doing. *Waiting some more, with focus stealing*. &amp;#8220;Please restart your computer to complete the installation&amp;#8221;. Sigh.&lt;/p&gt;
&lt;p&gt;So why don&amp;#8217;t I just use Windows Update program instead? Well, there&amp;#8217;s a window that pops up every 5 minutes that remind you that you have to restart the computer. Do you know how annoying that one is? No, it&amp;#8217;s MORE annoying than that.&lt;/p&gt;
&lt;h2 id="ten"&gt;Ten Commandments of Update Services&lt;/h2&gt;
&lt;p&gt;So I hope that&amp;#8217;s enough evidence that big companies have no idea how do conduct a decent update of their own program. So let me offer some (free of charge) advise:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;If your update is web based, &lt;strong&gt;let me use any modern browser I want&lt;/strong&gt;. Don&amp;#8217;t start by getting me annoyed.&lt;/li&gt;
&lt;li&gt;Check for updates &lt;strong&gt;right before the program starts&lt;/strong&gt;. I know that you want me to close the app while it&amp;#8217;s being updated, but why on earth do you let me start it then? Lets keep it simple, update before the program starts, and resume starting the app when you&amp;#8217;re done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don&amp;#8217;t leave processes running in the background&lt;/strong&gt; when I close the program. When I close your program, I don&amp;#8217;t care about you, or any updates to your program.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Only update the current program&lt;/strong&gt;, not bundled ones. I know you want me to have the latest versions of all your programs, but odds are I don&amp;#8217;t even use them. Update those programs when I start them, not now.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Show me what gets updated&lt;/strong&gt;, and if possible link to a change log. If you want me to download 70 Mb you need to first talk me into why I need it. You may want to hide detailed info for inexperienced users, but could you please then remember that I&amp;#8217;m not one of those?&lt;/li&gt;
&lt;li&gt;If it&amp;#8217;s a tiny update (less than 1 Mb), you can just &lt;strong&gt;go ahead and install right away&lt;/strong&gt;. You don&amp;#8217;t even have to prompt me.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Download and install in the background&lt;/strong&gt;, without stealing my focus. If you&amp;#8217;re shipping a big pile of fixes (ie. the version I bought was not done), you have to let me do other stuff while you update. Like surfing the web. It&amp;#8217;s not Ok it require that I close unrelated programs, sorry.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never ever touch my browser bookmarks&lt;/strong&gt;. Never add things to the quicklaunch bar. Never make things start automatically unless I&amp;#8217;ve told you that&amp;#8217;s what I want (why do most people have a Quicktime icon in their systray?). The only way of getting into my bookmarks or my quicklaunch bar is writing a really good application. You can&amp;#8217;t force me to like you. The opposite works well though.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Never require me to restart the computer&lt;/strong&gt;. There&amp;#8217;s only one exception for when you may: when I&amp;#8217;m updating the operating system. No excuses.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When you&amp;#8217;re done&lt;/strong&gt;, just start the program. I don&amp;#8217;t want to confirm anything, I want to get to work using your app.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(Bonus point from &lt;a href="#comment-31047"&gt;James Socol&lt;/a&gt; in the comments: 11. &lt;strong&gt;Use incremental downloads&lt;/strong&gt;, so I don&amp;#8217;t have to download stuff I already have installed.)&lt;/p&gt;
&lt;p&gt;If you are a software company, and can&amp;#8217;t manage the above, just do it the old fashion way: let me manually download a file from your website. That will annoy me much less than a bad automatic process. Or if you want things to be really convenient: &lt;strong&gt;write a web application instead&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Now get to work. I&amp;#8217;ve had it.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/tutorial/install-mysql-python-on-mac-os-x-leopard/' rel='bookmark' title='Permanent Link: Install MySQL-python on Mac OS X (leopard)'&gt;Install MySQL-python on Mac OS X (leopard)&lt;/a&gt; &lt;small&gt;What a pain. Getting mysql to work with python is...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=53NRl"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=53NRl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=UWKPl"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=UWKPl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=UKRoL"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=UKRoL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/other/ten-commandments-of-update-services/#comments" thr:count="20" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/other/ten-commandments-of-update-services/feed/atom/" thr:count="20" />
		<thr:total>20</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fother%2Ften-commandments-of-update-services%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[The Open Web: Can it deliver?]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/the-open-web-can-it-deliver/" />
		<id>http://friendlybit.com/?p=221</id>
		<updated>2008-09-01T21:01:09Z</updated>
		<published>2008-09-01T20:58:08Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[It&#8217;s ringing through my head as Microsoft releases Silverlight, as Adobe forces another version of Flash or Air, and as Sun tries to push JavaFX into the spotlight. It&#8217;s a dark whisper when I read how many still use old browsers (hello IE6!), or when I see Javascript being used poorly by otherwise knowledgeable programmers. [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/open-letter-to-the-ie-team/' rel='bookmark' title='Permanent Link: Open letter to the IE Team'>Open letter to the IE Team</a> <small>Dear IE Team, I have carefully followed the development of...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/the-open-web-can-it-deliver/">&lt;p&gt;It&amp;#8217;s ringing through my head as Microsoft releases Silverlight, as Adobe forces another version of Flash or Air, and as Sun tries to push JavaFX into the spotlight. It&amp;#8217;s a dark whisper when I read how many still use old browsers (hello IE6!), or when I see Javascript being used poorly by otherwise knowledgeable programmers. It&amp;#8217;s getting obvious when people complain over how hard and hacky HTML and CSS is.&lt;/p&gt;
&lt;p&gt;People are simply not getting their job done fast enough. Just because we&amp;#8217;ve hacked and hacked to the point of getting used to it, doesn&amp;#8217;t mean our way of writing web apps is the best way. In the end it about delivering to end users or paying clients, and they care more about &lt;strong&gt;what&lt;/strong&gt; you deliver than &lt;strong&gt;how&lt;/strong&gt;. I&amp;#8217;m not saying we are working slower than before, it&amp;#8217;s the opposite, new tools makes web development less annoying. But I am saying that we get less work done in relation to the expectations.&lt;/p&gt;
&lt;p&gt;So what do they expect? Well, they want flashy effects. The want application behavior. They want snappy response times, bright colors, and &amp;#8220;Wow!&amp;#8221;-reactions. For our clients, the web is getting more crowded every day and they need to fight harder and harder for people&amp;#8217;s attention. That means you need to fight harder on their behalf.&lt;/p&gt;
&lt;p&gt;Say you are a pro open standards developer, like me. What tools do you have to grab people&amp;#8217;s attention? Valid HTML? DIVs with fading color? AJAX? No way man. A good Flash developer can get a wow reaction by the time you&amp;#8217;ve chosen doctype (or at least by the time you&amp;#8217;ve booted IE6). &lt;/p&gt;
&lt;p&gt;So you turn to Google, and look for the latest and hottest in standards development. And you find that you need to use Javascript and Flash (sIFR) to render custom fonts. You find that you need to use (Adobe) Photoshop to add highlights and shadows on your headers. You find that you have to hack severely to be able to use alpha transparent images. To do any kind of animation, you need a big Javascript library, because browser makers have not yet (yes, it&amp;#8217;s 2008) been able to collaborate on how the language should work.&lt;/p&gt;
&lt;p&gt;You say that standards have to take time. That everyone needs to come together and thoroughly discuss important issues. The right committees and councils needs to be formed. Meanwhile Microsoft prepares for the release of Silverlight 2. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Have you no sense of urgency?&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/open-letter-to-the-ie-team/' rel='bookmark' title='Permanent Link: Open letter to the IE Team'&gt;Open letter to the IE Team&lt;/a&gt; &lt;small&gt;Dear IE Team, I have carefully followed the development of...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=h5Itxl"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=h5Itxl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=HRAW1l"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=HRAW1l" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=fMjEML"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=fMjEML" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/the-open-web-can-it-deliver/#comments" thr:count="17" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/the-open-web-can-it-deliver/feed/atom/" thr:count="17" />
		<thr:total>17</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fthe-open-web-can-it-deliver%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[7 silliest W3C specs ever published]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/other/7-silliest-w3c-specs-ever-published/" />
		<id>http://friendlybit.com/?p=208</id>
		<updated>2008-08-13T20:20:52Z</updated>
		<published>2008-08-13T20:20:52Z</published>
		<category scheme="http://friendlybit.com" term="Other topics" />		<summary type="html"><![CDATA[W3C is producing lots and lots of good specifications and we seriously have their joined effort to thank for a lot of today&#8217;s web. But everything released by them isn&#8217;t all nice. I&#8217;ve digged deep into obscure search results to find, that&#8217;s right, the silliest specifications ever. *Drumroll*.
HTML+TIME: Why not add timers to HTML? Didn&#8217;t [...]


Related posts:<ol><li><a href='http://friendlybit.com/other/top-3-articles-of-friendlybitcom-according-to-me/' rel='bookmark' title='Permanent Link: Top 3 articles of friendlybit.com (according to me)'>Top 3 articles of friendlybit.com (according to me)</a> <small>Robert taunted me cause my blog was to inactive, so...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/other/7-silliest-w3c-specs-ever-published/">&lt;p&gt;W3C is producing lots and lots of good specifications and we seriously have their joined effort to thank for a lot of today&amp;#8217;s web. But everything released by them isn&amp;#8217;t all nice. I&amp;#8217;ve digged deep into obscure search results to find, that&amp;#8217;s right, the &lt;strong&gt;silliest specifications ever&lt;/strong&gt;. *Drumroll*.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/NOTE-HTMLplusTIME"&gt;HTML+TIME&lt;/a&gt;: Why not add timers to HTML? Didn&amp;#8217;t you always want to only display that div only the first 4 seconds after load. Could this be combined with the blink tag somehow?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/WD-wwwicn.html"&gt;Predefined icon entities&lt;/a&gt;: No more images needed! Instead, let browsers implement whatever icons they want and just use them by typing &amp;amp;calculator;, &amp;amp;fax; or &amp;amp;www;. I love the example icon for &amp;amp;gopher;, is that an orc?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/curie/"&gt;CURIE Syntax&lt;/a&gt;: There are also huge specifications for nothing. What about a 2000+ word specifcation for the syntax: &amp;#8220;charcters:characters&amp;#8221;? This is what happens when you put too many &amp;#8220;scientists&amp;#8221; in one room.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/1999/WD-Micropayment-Markup-19990825/"&gt;Micropayments in HTML&lt;/a&gt;: If you&amp;#8217;re going to make micropayments on the web, first build your payment system, then add lots of attributes you don&amp;#8217;t need. Then make sure you pick a short code for your payment system, and get that one in the spec. Ehmm. No.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/WD-jepi-uppflow-970106"&gt;Selecting Payment Over HTTP&lt;/a&gt;: If you are into paying, but don&amp;#8217;t really like interfaces, this one is for you. You can&amp;#8217;t pay through it though, just select how to pay. Makes sense, doesn&amp;#8217;t it?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/2008/WD-css3-marquee-20080801/"&gt;CSS Marquee Module Level 3&lt;/a&gt;: Remember the &lt;code &gt;marquee&lt;/code&gt; element? What if you could implement that on any element, using only CSS3? Isn&amp;#8217;t marquee behavior? I guess not. &amp;#8220;The deadline for comments is 1 September 2008&amp;#8243;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3.org/TR/2008/WD-wai-age-literature-20080514/"&gt;Accessibility for old people&lt;/a&gt;: Very strange. This isn&amp;#8217;t a specification but a literature review. Could this be the first step for W3C to go into book recommendations? I love the chapter of how to define an old person.&lt;/p&gt;
&lt;p&gt;That&amp;#8217;s all I can find. Now I leave it open to you to fill in with the comments about how useful they could be, and how SOAP should be in the list. Over to you, dear audience.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/other/top-3-articles-of-friendlybitcom-according-to-me/' rel='bookmark' title='Permanent Link: Top 3 articles of friendlybit.com (according to me)'&gt;Top 3 articles of friendlybit.com (according to me)&lt;/a&gt; &lt;small&gt;Robert taunted me cause my blog was to inactive, so...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=Mubopk"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=Mubopk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=bNAHuk"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=bNAHuk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=ABJIbK"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=ABJIbK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/other/7-silliest-w3c-specs-ever-published/#comments" thr:count="8" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/other/7-silliest-w3c-specs-ever-published/feed/atom/" thr:count="8" />
		<thr:total>8</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fother%2F7-silliest-w3c-specs-ever-published%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Google Reader subscriptions on a Wordpress Page]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/other/google-reader-subscriptions-on-a-wordpress-page/" />
		<id>http://friendlybit.com/?p=194</id>
		<updated>2008-08-09T18:52:56Z</updated>
		<published>2008-08-09T15:09:43Z</published>
		<category scheme="http://friendlybit.com" term="Other topics" />		<summary type="html"><![CDATA[Instead of posting new lists of blogs I follow over and over again I thought I&#8217;d make a permanent place for them. So I just exported all of the blogs I follow from Google Reader (Settings -> Import/Export) and imported them to Wordpress (Write -> Links -> Import Links (in the sidebar)). OPML is a [...]


Related posts:<ol><li><a href='http://friendlybit.com/html/google-statistics-over-html-usage/' rel='bookmark' title='Permanent Link: Google statistics over HTML usage'>Google statistics over HTML usage</a> <small>Google Code has done extensive research over the use of...</small></li><li><a href='http://friendlybit.com/css/improving-the-web/' rel='bookmark' title='Permanent Link: Improving the web; Blogging, Google and Web standards'>Improving the web; Blogging, Google and Web standards</a> <small>The web has really changed the way we do things....</small></li><li><a href='http://friendlybit.com/css/feed-readers-should-show-comments/' rel='bookmark' title='Permanent Link: Feed readers should show comments'>Feed readers should show comments</a> <small>One thing I've noticed lately is that I read fewer...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/other/google-reader-subscriptions-on-a-wordpress-page/">&lt;p&gt;Instead of posting new lists of blogs I follow over and over again I thought I&amp;#8217;d make a permanent place for them. So I just &lt;strong&gt;exported all of the blogs I follow&lt;/strong&gt; from Google Reader (Settings -&gt; Import/Export) and &lt;strong&gt;imported them to Wordpress&lt;/strong&gt; (Write -&gt; Links -&gt; Import Links (in the sidebar)). &lt;a href="http://en.wikipedia.org/wiki/OPML"&gt;OPML&lt;/a&gt; is a great format!&lt;/p&gt;
&lt;p&gt;Then I created a &lt;a href="http://codex.wordpress.org/Pages#Page_Templates"&gt;Wordpress Page template&lt;/a&gt; that simply printed the content of that page &lt;strong&gt;followed by all my imported links&lt;/strong&gt;. This following is the code needed (as a file called links.php in your template directory):&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;&amp;lt;?php
// Template Name: Links
?&amp;gt;
&amp;lt;?php get_header(); ?&amp;gt;
&amp;lt;div id="content"&amp;gt;
   &amp;lt;?php while (have_posts()) : the_post(); ?&amp;gt;
      &amp;lt;div class="post" id="post-&amp;lt;?php the_ID(); ?&amp;gt;"&amp;gt;
         &amp;lt;h1&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/h1&amp;gt;
         &amp;lt;div class="entry"&amp;gt;
            &amp;lt;?php the_content(); ?&amp;gt;
            &amp;lt;?php wp_list_bookmarks(); ?&amp;gt;
         &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
   &amp;lt;?php endwhile; ?&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;?php get_sidebar(); ?&amp;gt;
&amp;lt;?php get_footer(); ?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now just create a new page, and select the Page Template &amp;#8220;Links&amp;#8221; at the bottom. Fill out a page title and an introduction text and press Save. Voilá!&lt;/p&gt;
&lt;p&gt;The final touches was adding two new categories, &amp;#8220;Blogs I follow&amp;#8221; in English and Swedish, moving all links to one of those, and removing everything not related to web development or media. Some bastards also both have great blogs and are my friends, so I removed some duplicates too.&lt;/p&gt;
&lt;p&gt;So, here it is, a permanent page of my Google Reader subscriptions, converted into a Wordpress page. I&amp;#8217;m hoping you&amp;#8217;ll find something interesting in the &lt;a href="/friends/"&gt;list of excellent blogs&lt;/a&gt;!&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/google-statistics-over-html-usage/' rel='bookmark' title='Permanent Link: Google statistics over HTML usage'&gt;Google statistics over HTML usage&lt;/a&gt; &lt;small&gt;Google Code has done extensive research over the use of...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/improving-the-web/' rel='bookmark' title='Permanent Link: Improving the web; Blogging, Google and Web standards'&gt;Improving the web; Blogging, Google and Web standards&lt;/a&gt; &lt;small&gt;The web has really changed the way we do things....&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/feed-readers-should-show-comments/' rel='bookmark' title='Permanent Link: Feed readers should show comments'&gt;Feed readers should show comments&lt;/a&gt; &lt;small&gt;One thing I've noticed lately is that I read fewer...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=384vfk"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=384vfk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=7XB6ck"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=7XB6ck" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=94XOpK"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=94XOpK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/other/google-reader-subscriptions-on-a-wordpress-page/#comments" thr:count="5" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/other/google-reader-subscriptions-on-a-wordpress-page/feed/atom/" thr:count="5" />
		<thr:total>5</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fother%2Fgoogle-reader-subscriptions-on-a-wordpress-page%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Why adding variables to CSS is a good thing]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/why-adding-variables-to-css-is-a-good-thing/" />
		<id>http://friendlybit.com/?p=171</id>
		<updated>2008-08-07T14:29:24Z</updated>
		<published>2008-08-07T14:29:24Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[Via Simon Willison I find that Bert Bos, one of the creators of CSS, has written an article on why variables shouldn&#8217;t be included in CSS3. I thought I&#8217;d try to explain why I think they should.
Professional perspective
Bert posts statistics of stylesheet usage from the W3C site, and means that most stylesheets are very small, [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/what-beginners-ask-for-and-what-i-tell-them/' rel='bookmark' title='Permanent Link: What beginners ask for (and what I tell them)'>What beginners ask for (and what I tell them)</a> <small>Being in an IRC help channel lets you meet a...</small></li><li><a href='http://friendlybit.com/css/simple-css-templates/' rel='bookmark' title='Permanent Link: Simple CSS templates'>Simple CSS templates</a> <small>The most frequent question in the #CSS channel I'm in...</small></li><li><a href='http://friendlybit.com/css/beginners-guide-to-css-and-standards/' rel='bookmark' title='Permanent Link: Beginner&#8217;s guide to CSS'>Beginner&#8217;s guide to CSS</a> <small>In the chat channel I'm in, I get to talk...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/why-adding-variables-to-css-is-a-good-thing/">&lt;p&gt;Via &lt;a href="http://simonwillison.net/2008/Aug/6/cssvariables/"&gt;Simon Willison&lt;/a&gt; I find that Bert Bos, one of the creators of CSS, has written an article on why &lt;a href="http://www.w3.org/People/Bos/CSS-variables"&gt;variables shouldn&amp;#8217;t be included in CSS3&lt;/a&gt;. I thought I&amp;#8217;d try to explain why I think &lt;strong&gt;they should&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Professional perspective&lt;/h2&gt;
&lt;p&gt;Bert posts statistics of stylesheet usage from the W3C site, and means that most stylesheets are very small, and on those, variables are not really needed. I agree. You can get away with simple search-replace in those simple cases. But Bert also finds that there are bigger sheets: &amp;#8220;largest hand-written style sheet: 1462 lines (bought from a Web design company)&amp;#8221;. I work at one of those companies, and almost all CSS files I write exceed 1000 lines.&lt;/p&gt;
&lt;p&gt;In those cases, I think CSS variables would help me a lot. Especially for margins. Matching several margins together by copying the same value over and over again isn&amp;#8217;t maintainable. Search replace on a pixel value is a sure way to mess up your whole stylesheet: who says you only use 5px for those margins? So &lt;strong&gt;there is &lt;/strong&gt;a use case for some kind of variables. &lt;/p&gt;
&lt;h2&gt;So we need variables, but how?&lt;/h2&gt;
&lt;p&gt;Bert then suggests that those people should use a solution such as &lt;a href="http://interfacelab.com/variables-in-css-via-php/"&gt;PHP to generate CSS&lt;/a&gt;. So we should invent a new language for generating CSS with PHP? And another language for generating CSS from Ruby, from Java, from .NET, and so on. Why shouldn&amp;#8217;t we go this way? It&amp;#8217;s the path HTML has taken. And this is a hard nut to crack. How is CSS different from HTML? Why should CSS have variables when HTML doesn&amp;#8217;t?&lt;/p&gt;
&lt;p&gt;I think the answer is that we should add variables to both languages. They are very similar in nature, so they should be treated the same. Because what has changed since when CSS was created is that we&amp;#8217;ve started building bigger and more complex sites. And if CSS starts to be too cumbersome to use, people will start looking elsewhere, to Flash, Air, Silverlight and so on. CSS needs to adapt to the more complex sites people are building today. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;I&amp;#8217;d rather see CSS follow the times and add variables, than seeing frustrated professionals move to proprietary technologies&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;So what about beginners?&lt;/h2&gt;
&lt;p&gt;Bert&amp;#8217;s article deals a lot with beginners, and how it will be harder for them to understand another level of abstraction. Lets make it clear at first that CSS already is too hard for beginners. To make a very simple layout you need to understand floats (yes, almost everyone needs columns), and floating is really confusing (ever tried to explain float/clear to someone?). Even for someone like me, who has worked with CSS for years, floats still puzzle me regularly.&lt;/p&gt;
&lt;p&gt;People will give up on CSS when they encounter floats (yes, I&amp;#8217;ve seen this), not when they find CSS variables. They can just choose not to use variables, while they really need to know floats. Also, CSS variables are easier to understand than cascading values. I mean really, if I set font-size on body, why do my links get larger? That&amp;#8217;s a very similar concept that is central to CSS. &lt;/p&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;CSS Variables make it easier for professionals to do their job. It doesn&amp;#8217;t require inventing new template languages. It doesn&amp;#8217;t make the language overall harder either. The people that can handle floats and cascading, can handle variables too. &lt;strong&gt;We need variables&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/what-beginners-ask-for-and-what-i-tell-them/' rel='bookmark' title='Permanent Link: What beginners ask for (and what I tell them)'&gt;What beginners ask for (and what I tell them)&lt;/a&gt; &lt;small&gt;Being in an IRC help channel lets you meet a...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/simple-css-templates/' rel='bookmark' title='Permanent Link: Simple CSS templates'&gt;Simple CSS templates&lt;/a&gt; &lt;small&gt;The most frequent question in the #CSS channel I'm in...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/beginners-guide-to-css-and-standards/' rel='bookmark' title='Permanent Link: Beginner&amp;#8217;s guide to CSS'&gt;Beginner&amp;#8217;s guide to CSS&lt;/a&gt; &lt;small&gt;In the chat channel I'm in, I get to talk...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=gpbBmk"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=gpbBmk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=u6OWnk"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=u6OWnk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=nHPFkK"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=nHPFkK" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/why-adding-variables-to-css-is-a-good-thing/#comments" thr:count="19" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/why-adding-variables-to-css-is-a-good-thing/feed/atom/" thr:count="19" />
		<thr:total>19</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fwhy-adding-variables-to-css-is-a-good-thing%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Don&#8217;t waste time writing HTML and CSS]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/dont-waste-time-writing-html-and-css/" />
		<id>http://friendlybit.com/?p=169</id>
		<updated>2008-07-09T23:02:50Z</updated>
		<published>2008-07-09T23:02:50Z</published>
		<category scheme="http://friendlybit.com" term="CSS" /><category scheme="http://friendlybit.com" term="HTML" />		<summary type="html"><![CDATA[When you&#8217;ve worked with front-end development for a while, you start thinking about effectiveness. So without further ado, here&#8217;s my four best ways to be a more effective front-end developer. Feel free to add more ideas as comments!
1. Do you need HTML or CSS for this?
Lots of times when I get stranded on hard problem [...]


Related posts:<ol><li><a href='http://friendlybit.com/html/datatypes-of-html/' rel='bookmark' title='Permanent Link: Datatypes of HTML; why HTML is great for structure'>Datatypes of HTML; why HTML is great for structure</a> <small>HTML is often bashed by people for being a bad...</small></li><li><a href='http://friendlybit.com/html/encyclopedia-of-html-elements/' rel='bookmark' title='Permanent Link: Encyclopedia of HTML elements'>Encyclopedia of HTML elements</a> <small>HTML is a much richer language than what it's used...</small></li><li><a href='http://friendlybit.com/html/forgotten-html-elements/' rel='bookmark' title='Permanent Link: Forgotten HTML elements?'>Forgotten HTML elements?</a> <small>HTML has existed for a long time now with five...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/dont-waste-time-writing-html-and-css/">&lt;p&gt;When you&amp;#8217;ve worked with front-end development for a while, you start thinking about effectiveness. So without further ado, here&amp;#8217;s my four best ways to be a more effective front-end developer. Feel free to add more ideas as comments!&lt;/p&gt;
&lt;h2&gt;1. Do you need HTML or CSS for this?&lt;/h2&gt;
&lt;p&gt;Lots of times when I get stranded on hard problem and sit back, I realize that I really &lt;strong&gt;shouldn&amp;#8217;t be trying to use CSS to solve all layout problems&lt;/strong&gt;. Assuming a rounded corner box will have to scale in all directions (up to 8 images!), when it really is fixed width and height (1 image), is an indescribable waste of everyone&amp;#8217;s time. Look closely at the design you&amp;#8217;re trying to implement: does it really have to be as flexible and scalable as you think? Shifting to that mindset saves me hours of work per day.&lt;/p&gt;
&lt;p&gt;One thing that many developers forget is that not all designers care for exact pixels. If something is really hard to develop, walk over to their table and suggest a change. You&amp;#8217;ll soon start to notice that designers are real people too, and that they have as much flexibility as you do. It&amp;#8217;s just as easy to call them up, so don&amp;#8217;t let shyness waste your time.&lt;/p&gt;
&lt;h2&gt;2. Try to set properties once&lt;/h2&gt;
&lt;p&gt;When you know you have to do something (see above), try to &lt;strong&gt;do things once&lt;/strong&gt;. This is really tricky in both HTML and CSS, languages that have no variables, and generally makes code reuse a pain. But it is possible. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;With CSS&lt;/strong&gt;; set widths of elements once, and trust inner elements to fill their parent. That&amp;#8217;s the default behavior of block level elements, and you can set display: block, or width: 100% on most other elements. Don&amp;#8217;t set heights at all if you can avoid them, and let elements expand to fill their containers. Combine similar CSS selectors to avoid typing things twice, and make new ones for common properties when few properties differ. Use floats and clearing instead of absolute positioning, and you&amp;#8217;ll won&amp;#8217;t have to micromanage positions all the time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;With HTML&lt;/strong&gt;, make sure that you really know the template language. I&amp;#8217;ve fighted with ASP.NET, JSP, JSTL, Smarty, Wordpress Themes, RHTML, and Django&amp;#8217;s Templating Language, and now know enough about all of them to be productive. You should never have to type the same structure out twice, even in HTML. If your template language have loops, if-clauses and includes you really have no excuse to copy large chunks of HTML around. Refactor your HTML and make your own life easy.&lt;/p&gt;
&lt;h2&gt;3. Learn your text editor&lt;/h2&gt;
&lt;p&gt;When code reuse isn&amp;#8217;t possible, &lt;strong&gt;use search/replace&lt;/strong&gt; in your favorite text editor. &lt;/p&gt;
&lt;p&gt;Replacing all instances of one HTML tag name with another is about replacing &amp;#8220;element&gt;&amp;#8221; with &amp;#8220;element2&gt;&amp;#8221; (without the opening bracket). That way you replace both opening and ending tags at once. Check to see if your editor supports regular expressions in its search/replace tool. If it does you can save lots of time by learning it. Matching a HTML tag is &amp;#8220;&lt;[^&gt;]+&gt;&amp;#8221;, a starting angel bracket, one or more non-brackets, followed by an ending angel bracket. Naive regexps can make you match the starting bracket of one tag and the end of another, which makes for a mess.&lt;/p&gt;
&lt;p&gt;There&amp;#8217;s lots of little tricks like that, if you learn them you save massive amounts of time. &lt;/p&gt;
&lt;h2&gt;4. Make sure your environment supports you&lt;/h2&gt;
&lt;p&gt;There&amp;#8217;s more than the text editor that you have to work with. One essential part of front-end development is trial and error. It sounds silly but no matter what your skill is, sometimes you must resort to trying and testing your way to a solution. With HTML and CSS, this means being able to &lt;strong&gt;quickly make a change, switch window, and see that change in the browser&lt;/strong&gt;. If that cycle takes more that 5 seconds, you&amp;#8217;re losing valuable time.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t use a virtual machine (even if it&amp;#8217;s only for IE6) that you can&amp;#8217;t quickly Alt-Tab out of. If you&amp;#8217;re stuck using one, you need to have the text editor on that machine too. It&amp;#8217;s worth your time fixing it.&lt;/p&gt;
&lt;p&gt;Don&amp;#8217;t accept build processes that makes you wait more than 5-10 seconds before you see your changes. With trial and error coding you will then waste 50% of your capacity doing nothing. Most often you can bypass this by copying just the HTML and CSS to the right place, without touching other source-code. I&amp;#8217;ve managed to do this in all kinds of crappy environments, and it&amp;#8217;s always worth it.&lt;/p&gt;
&lt;p&gt;So.&lt;/p&gt;
&lt;p&gt;I hope some of the above can help you save some time each day. The little things add up you know. What&amp;#8217;s your best time-saver?&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/datatypes-of-html/' rel='bookmark' title='Permanent Link: Datatypes of HTML; why HTML is great for structure'&gt;Datatypes of HTML; why HTML is great for structure&lt;/a&gt; &lt;small&gt;HTML is often bashed by people for being a bad...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/encyclopedia-of-html-elements/' rel='bookmark' title='Permanent Link: Encyclopedia of HTML elements'&gt;Encyclopedia of HTML elements&lt;/a&gt; &lt;small&gt;HTML is a much richer language than what it's used...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/html/forgotten-html-elements/' rel='bookmark' title='Permanent Link: Forgotten HTML elements?'&gt;Forgotten HTML elements?&lt;/a&gt; &lt;small&gt;HTML has existed for a long time now with five...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=fLtqsj"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=fLtqsj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=FE4aej"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=FE4aej" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=AyijqJ"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=AyijqJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/dont-waste-time-writing-html-and-css/#comments" thr:count="33" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/dont-waste-time-writing-html-and-css/feed/atom/" thr:count="33" />
		<thr:total>33</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fdont-waste-time-writing-html-and-css%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Upside down text with CSS]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/upside-down-text-with-css/" />
		<id>http://friendlybit.com/?p=167</id>
		<updated>2008-07-08T18:46:44Z</updated>
		<published>2008-06-26T21:34:31Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[Previously I&#8217;ve talked about reversing text with CSS by simply setting a few CSS attributes. Today we will try another trick: turning text upside down. 
It&#8217;s actually possible using a simple CSS property and works cross-browser today. The property to use it &#8220;text-gravity&#8221; with a value of &#8220;inverse&#8221;.
&#60;span style="text-gravity: inverse"&#62;
write upside down text
&#60;/span&#62;
&#8230; and this [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/reverse-text-with-css-32-very-special-hex-digits/' rel='bookmark' title='Permanent Link: Reverse text with CSS (32 very special hex digits)'>Reverse text with CSS (32 very special hex digits)</a> <small>Sometimes you wake up and feel that big things are...</small></li><li><a href='http://friendlybit.com/css/ie7-zoom-bug/' rel='bookmark' title='Permanent Link: IE7 Zoom Bug: Text width incorrectly calculated'>IE7 Zoom Bug: Text width incorrectly calculated</a> <small>IE7 shipped with a new and improved Page Zoom feature...</small></li><li><a href='http://friendlybit.com/css/ie6-bug-ignored-selector-hover-bug/' rel='bookmark' title='Permanent Link: IE6 bug: Ignored selector hover bug'>IE6 bug: Ignored selector hover bug</a> <small>IE6 bugs seem to pop up all over the place...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/upside-down-text-with-css/">&lt;p&gt;Previously I&amp;#8217;ve talked about &lt;a href="/css/reverse-text-with-css-32-very-special-hex-digits/"&gt;reversing text with CSS&lt;/a&gt; by simply setting a few CSS attributes. Today we will try another trick: turning text &lt;strong&gt;upside down&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;It&amp;#8217;s actually possible using a simple CSS property and works cross-browser today. The property to use it &amp;#8220;text-gravity&amp;#8221; with a value of &amp;#8220;inverse&amp;#8221;.&lt;/p&gt;
&lt;pre&gt;&lt;code &gt;&amp;lt;span style="text-gravity: inverse"&amp;gt;
write upside down text
&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;#8230; and this is the result:&lt;/p&gt;
&lt;p&gt;&lt;span style="text-gravity: inverse"&gt;ʇxǝʇ uʍop ǝpısdn ǝʇıɹʍ&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m really surprised to learn that so few people know about this property, and I recommend you to continue reading the &lt;a href="http://www.fliptext.info/index.php"&gt;W3C specification of text-gravity&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Sorry, I lied :) The above is done with a UTF-8 character generator (see the link the the &amp;#8220;specification&amp;#8221; above). Amazingly, you can find that most characters have their upside down equivalent somewhere else in the huge Unicode alphabet. Neat trick :)&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/reverse-text-with-css-32-very-special-hex-digits/' rel='bookmark' title='Permanent Link: Reverse text with CSS (32 very special hex digits)'&gt;Reverse text with CSS (32 very special hex digits)&lt;/a&gt; &lt;small&gt;Sometimes you wake up and feel that big things are...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/ie7-zoom-bug/' rel='bookmark' title='Permanent Link: IE7 Zoom Bug: Text width incorrectly calculated'&gt;IE7 Zoom Bug: Text width incorrectly calculated&lt;/a&gt; &lt;small&gt;IE7 shipped with a new and improved Page Zoom feature...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/ie6-bug-ignored-selector-hover-bug/' rel='bookmark' title='Permanent Link: IE6 bug: Ignored selector hover bug'&gt;IE6 bug: Ignored selector hover bug&lt;/a&gt; &lt;small&gt;IE6 bugs seem to pop up all over the place...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=ng6KWi"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=ng6KWi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=oWmcfi"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=oWmcfi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=DxmalI"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=DxmalI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/upside-down-text-with-css/#comments" thr:count="24" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/upside-down-text-with-css/feed/atom/" thr:count="24" />
		<thr:total>24</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Fupside-down-text-with-css%2F</feedburner:awareness></entry>
		<entry>
		<author>
			<name>Emil Stenström</name>
						<uri>http://friendlybit.com</uri>
					</author>
		<title type="html"><![CDATA[Feed readers should show comments]]></title>
		<link rel="alternate" type="text/html" href="http://friendlybit.com/css/feed-readers-should-show-comments/" />
		<id>http://friendlybit.com/?p=165</id>
		<updated>2008-06-15T16:25:48Z</updated>
		<published>2008-06-15T16:25:48Z</published>
		<category scheme="http://friendlybit.com" term="CSS" />		<summary type="html"><![CDATA[One thing I&#8217;ve noticed lately is that I read fewer comments. It isn&#8217;t that strange really: I read blogs using a feed reader and it doesn&#8217;t show a links to comments. I see a couple of reasons why comments are not cared for in feed readers:
Why not to #1: Feeds are meant to be fast
Many [...]


Related posts:<ol><li><a href='http://friendlybit.com/css/ie6-standalone-with-conditional-comments-and-cookies/' rel='bookmark' title='Permanent Link: IE6 standalone with conditional comments and cookies'>IE6 standalone with conditional comments and cookies</a> <small>Just a quick note for all of you that wants...</small></li><li><a href='http://friendlybit.com/other/feeds-a-threat-to-design-on-the-web/' rel='bookmark' title='Permanent Link: Feeds - a threat to design on the web'>Feeds - a threat to design on the web</a> <small>When CSS was first introduced it got bashed by a...</small></li><li><a href='http://friendlybit.com/css/new-theme-up-for-friendlybitcom/' rel='bookmark' title='Permanent Link: New theme up for friendlybit.com'>New theme up for friendlybit.com</a> <small>Hi! If you're reading this blog through your feed reader,...</small></li></ol>]]></summary>
		<content type="html" xml:base="http://friendlybit.com/css/feed-readers-should-show-comments/">&lt;p&gt;One thing I&amp;#8217;ve noticed lately is that I read fewer comments. It isn&amp;#8217;t that strange really: I read blogs using a feed reader and it doesn&amp;#8217;t show a links to comments. I see a couple of reasons why comments are not cared for in feed readers:&lt;/p&gt;
&lt;h2&gt;Why not to #1: Feeds are meant to be fast&lt;/h2&gt;
&lt;p&gt;Many subscribe to feeds to be able to get news before everyone else. And getting things fast means getting it before anyone else have commented. Why add a lot of zeros below each feed item?&lt;/p&gt;
&lt;p&gt;But, it isn&amp;#8217;t unusual that &lt;strong&gt;I read posts that are a couple of days old&lt;/strong&gt;. I don&amp;#8217;t read my feeds every day, rather every second or third day. In those days there are most likely comments on good posts, and of course I don&amp;#8217;t want to miss them. The older a post is, the more likely that it will have interesting comments. &lt;/p&gt;
&lt;h2&gt;Why not to #2: Comments are hard to detect&lt;/h2&gt;
&lt;p&gt;Perhaps feed readers have a hard time detecting if there are comments to a post or not. Comments are not included in the post, so wouldn&amp;#8217;t they have to parse through the feed link for comments?&lt;/p&gt;
&lt;p&gt;No, there is a tag called &lt;code &gt;&amp;lt;wfw:commentRss&amp;gt;&lt;/code&gt;, that&amp;#8217;s possible to use in both Atom and RSS (If I&amp;#8217;m not mistaken), that gives &lt;strong&gt;a link to the comment feed&lt;/strong&gt;. That means feed readers could easily get the comments too. The best thing here is that all Wordpress blogs (and others too) have it already. It&amp;#8217;s just a matter of using it!&lt;/p&gt;
&lt;h2&gt;Why not to #3: Each post will be too long!&lt;/h2&gt;
&lt;p&gt;If there are 50 comments to a post, the item in the feed reader will be too long to read. That would also affect download time and therefore make things slow.&lt;/p&gt;
&lt;p&gt;Yes, it will mean downloading more data, but you also get more information. &lt;strong&gt;Each feed reader is free to implement comments any way they like&lt;/strong&gt;, and I doubt it will be to expand the original post with all 50 comments. I little link that expands comments (don&amp;#8217;t download any extra data until you expand)? Only show the first five, and a link to the page for more? There&amp;#8217;s lots of good options here.&lt;/p&gt;
&lt;h2&gt;Promote contributions more&lt;/h2&gt;
&lt;p&gt;Adding comments to your feed serves to promote your user&amp;#8217;s contributions even more, and I&amp;#8217;m really surprised that not everyone does it. I&amp;#8217;m using feed burner for &lt;a href="http://friendlybit.com/feed"&gt;my feed&lt;/a&gt; and can therefore use a feed flair (Click your feed / Optimize / FeedFlair / Comment count) to add a link to my comments at the end of the post. That&amp;#8217;s a first step.&lt;/p&gt;
&lt;p&gt;What would be much better was if &lt;strong&gt;feed readers would get better at promoting comments&lt;/strong&gt;. Could we get them to somehow?&lt;/p&gt;


&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/ie6-standalone-with-conditional-comments-and-cookies/' rel='bookmark' title='Permanent Link: IE6 standalone with conditional comments and cookies'&gt;IE6 standalone with conditional comments and cookies&lt;/a&gt; &lt;small&gt;Just a quick note for all of you that wants...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/other/feeds-a-threat-to-design-on-the-web/' rel='bookmark' title='Permanent Link: Feeds - a threat to design on the web'&gt;Feeds - a threat to design on the web&lt;/a&gt; &lt;small&gt;When CSS was first introduced it got bashed by a...&lt;/small&gt;&lt;/li&gt;&lt;li&gt;&lt;a href='http://friendlybit.com/css/new-theme-up-for-friendlybitcom/' rel='bookmark' title='Permanent Link: New theme up for friendlybit.com'&gt;New theme up for friendlybit.com&lt;/a&gt; &lt;small&gt;Hi! If you're reading this blog through your feed reader,...&lt;/small&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=xg0qdi"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=xg0qdi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=K5WLpi"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=K5WLpi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.friendlybit.com/~f/FriendlyBit?a=MqdvqI"&gt;&lt;img src="http://feeds.friendlybit.com/~f/FriendlyBit?i=MqdvqI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content>
		<link rel="replies" type="text/html" href="http://friendlybit.com/css/feed-readers-should-show-comments/#comments" thr:count="10" />
		<link rel="replies" type="application/atom+xml" href="http://friendlybit.com/css/feed-readers-should-show-comments/feed/atom/" thr:count="10" />
		<thr:total>10</thr:total>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=FriendlyBit&amp;itemurl=http%3A%2F%2Ffriendlybit.com%2Fcss%2Ffeed-readers-should-show-comments%2F</feedburner:awareness></entry>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetFeedData?uri=FriendlyBit</feedburner:awareness></feed><!-- Dynamic Page Served (once) in 6.535 seconds --><!-- Cached page served by WP-Super-Cache -->
