<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>http://carefulweb.com/blog/</id><title type="text">Careful Web</title><updated>2009-01-27T23:41:47Z</updated><link href="http://carefulweb.com/blog/" rel="alternate" /><author><name /></author><generator version="r33" uri="http://code.google.com/p/django-atompub/">django-atompub</generator><subtitle type="html">Personal blog about web, code and other tech stuff</subtitle><link rel="self" href="http://feeds.feedburner.com/carefulweb" type="application/atom+xml" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/carefulweb" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcarefulweb" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry><id>http://carefulweb.com/blog/2009/01/27/go-semantic/</id><title type="html">Go semantic!</title><updated>2009-01-27T23:41:47Z</updated><published>2009-01-27T23:40:44Z</published><category term="html" /><category term="microformats" /><category term="semantic" /><category term="web" /><category term="xml" /><link href="http://carefulweb.com/blog/2009/01/27/go-semantic/" rel="self" /><link href="http://feedproxy.google.com/~r/carefulweb/~3/3xKC6Dg0LMQ/" rel="alternate" /><content type="html">&lt;p&gt;So many people talk about&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Semantic_Web"&gt;semantic web&lt;/a&gt;, valid code and other related stuff. I can’t imagine how I can write more than the usual 5&amp;nbsp;cents.&lt;/p&gt;
&lt;p&gt;But I am&amp;nbsp;trying.&lt;/p&gt;
&lt;p&gt;Every professional web developer knows about such topics, but sometimes something stops him from following semantic rules or valid markup. What? His name is Mr. Style. Yes, every &lt;span class="caps"&gt;HTML&lt;/span&gt; coder knows about missing additional&amp;nbsp;&lt;code&gt;div&lt;/code&gt;&amp;nbsp;elements to wrap some blocks for fancy shadowing or other eye-candy&amp;nbsp;features.&lt;/p&gt;
&lt;p&gt;It’s a long story, that begins in&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/HTML"&gt;&lt;span class="caps"&gt;HTML&lt;/span&gt;&lt;/a&gt;&amp;#8216;s roots.&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/SGML"&gt;&lt;span class="caps"&gt;SGML&lt;/span&gt;&lt;/a&gt;&amp;nbsp;— is a general markup standard, &lt;span class="caps"&gt;HTML&lt;/span&gt; is based on it. &lt;span class="caps"&gt;HTML&lt;/span&gt; was created as both a content and style markup language at the same time. For example, &lt;span class="caps"&gt;HTML&lt;/span&gt; tags like&amp;nbsp;&lt;code&gt;font&lt;/code&gt;,&amp;nbsp;&lt;code&gt;i&lt;/code&gt;,&amp;nbsp;&lt;code&gt;b&lt;/code&gt;&amp;nbsp;is purely style-related. The main task of &lt;span class="caps"&gt;HTML&lt;/span&gt; was not content meaning (semantics), but more styling and representation&amp;nbsp;(rendering).&lt;/p&gt;
&lt;p&gt;Opposite to &lt;span class="caps"&gt;HTML&lt;/span&gt;,&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/XML"&gt;&lt;span class="caps"&gt;XML&lt;/span&gt;&lt;/a&gt;&amp;nbsp;was invented as a pure semantic standard. The main usage for &lt;span class="caps"&gt;XML&lt;/span&gt; is hierarchical data storage and retrival. It has fully flexible generalized element naming, that allows one to create new markup languages on top of&amp;nbsp;&lt;span class="caps"&gt;XML&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;After some time the next standard was invented —&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets"&gt;&lt;span class="caps"&gt;CSS&lt;/span&gt;&lt;/a&gt;, which brings new possibilities for styling both &lt;span class="caps"&gt;HTML&lt;/span&gt; and &lt;span class="caps"&gt;XML&lt;/span&gt; marked-up documents. With &lt;span class="caps"&gt;CSS&lt;/span&gt; each tag/element can be styled in any manner. For example, usual paragraph &lt;span class="caps"&gt;HTML&lt;/span&gt; tags&amp;nbsp;&lt;code&gt;p&lt;/code&gt;&amp;nbsp;can be styled as lists with few lines of &lt;span class="caps"&gt;CSS&lt;/span&gt; code. The representation meaning of &lt;span class="caps"&gt;HTML&lt;/span&gt; becomes less important with &lt;span class="caps"&gt;CSS&lt;/span&gt;&amp;nbsp;features.&lt;/p&gt;
&lt;p&gt;The next level of document markup was reached with &lt;span class="caps"&gt;XHTML&lt;/span&gt;. Yes, it seems like a natural evolution of &lt;span class="caps"&gt;HTML&lt;/span&gt;, with focus on strong semantic markup as &lt;span class="caps"&gt;XML&lt;/span&gt;. This one brings new possibilities to machine processing for data retrieval, but keeps backward compatibility with older browsers and other &lt;span class="caps"&gt;HTML&lt;/span&gt;&amp;nbsp;processors.&lt;/p&gt;
&lt;p&gt;Well, why can&amp;#8217;t we use pure &lt;span class="caps"&gt;XML&lt;/span&gt; formats for semantic data exchange in Web? &lt;span class="caps"&gt;RSS&lt;/span&gt;/Atom is the first widely used format in Web that comes to my mind. &lt;span class="caps"&gt;OK&lt;/span&gt;, here are some&amp;nbsp;points:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Semantic (x)&lt;span class="caps"&gt;HTML&lt;/span&gt; can be&amp;nbsp;&lt;b&gt;interpreted by web browsers&lt;/b&gt;&amp;nbsp;(with or without corresponding styles the user can see rendered&amp;nbsp;content).&lt;/li&gt;
&lt;li&gt;Semantic (x)&lt;span class="caps"&gt;HTML&lt;/span&gt; can be&amp;nbsp;&lt;b&gt;interpreted by machines&lt;/b&gt;&amp;nbsp;for data&amp;nbsp;retrieval.&lt;/li&gt;
&lt;li&gt;Semantic (x)&lt;span class="caps"&gt;HTML&lt;/span&gt; can be interpreted by special&amp;nbsp;&lt;b&gt;screen readers&lt;/b&gt;&amp;nbsp;and other&amp;nbsp;&lt;b&gt;devices&lt;/b&gt;&amp;nbsp;dedicated to disabled&amp;nbsp;people.&lt;/li&gt;
&lt;li&gt;Semantic (x)&lt;span class="caps"&gt;HTML&lt;/span&gt; can&amp;nbsp;&lt;b&gt;mix&lt;/b&gt;&amp;nbsp;different types of&amp;nbsp;&lt;b&gt;information&lt;/b&gt;&amp;nbsp;such as news feed, contact cards, calendars, etc. in a single&amp;nbsp;document.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I want to write a little more about the last point.&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Microformat"&gt;Microformats&lt;/a&gt;&amp;nbsp;— is one of the most famous and usable representations of semantic &lt;span class="caps"&gt;HTML&lt;/span&gt;. It’s a very useful thing, because lots of robots/tools can retrieve information (&lt;a href="http://microformats.org/wiki/hatom"&gt;hatom&lt;/a&gt;,&amp;nbsp;&lt;a href="http://microformats.org/wiki/hcard"&gt;hcard&lt;/a&gt;,&amp;nbsp;&lt;a href="http://microformats.org/wiki/hcalendar"&gt;hcalendar&lt;/a&gt;) from web site pages. Lots of the well-known big players of the Internet community already integrated this standard for their document mark-up (Google, Yahoo, etc). It’s still not Internet-wide, but already shows more and more cases with new&amp;nbsp;possibilities.&lt;/p&gt;
&lt;p&gt;With &lt;span class="caps"&gt;CSS&lt;/span&gt; evolution, the Web will go closer and closer to the semantic meaning of web page contents. I recommend that modern web developers always be on the cutting edge of markup technologies. You can easily start with Microformats as a rich example of semantic markup. You can dive into&amp;nbsp;&lt;a href="http://www.css3.info/"&gt;&lt;span class="caps"&gt;CSS3&lt;/span&gt;&lt;/a&gt;&amp;nbsp;techniques and features to be ready to implement it in some of your next projects (and write fewer divs). The markup will shine for those who reach this formatting Zen and for a few robots too!&amp;nbsp;:-)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=3xKC6Dg0LMQ:Qk8V66awy4M:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=3xKC6Dg0LMQ:Qk8V66awy4M:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=3xKC6Dg0LMQ:Qk8V66awy4M:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?i=3xKC6Dg0LMQ:Qk8V66awy4M:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=3xKC6Dg0LMQ:Qk8V66awy4M:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carefulweb/~4/3xKC6Dg0LMQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://carefulweb.com/blog/2009/01/27/go-semantic/</feedburner:origLink></entry><entry><id>http://carefulweb.com/blog/2009/01/20/quick-rules-accessible-web-part-1-text-and-text-alternatives/</id><title type="html">Quick Rules of Accessible Web. Text and text alternatives.</title><updated>2009-01-20T16:01:41Z</updated><published>2009-01-20T15:57:01Z</published><category term="accessibility" /><category term="html" /><link href="http://carefulweb.com/blog/2009/01/20/quick-rules-accessible-web-part-1-text-and-text-alternatives/" rel="self" /><link href="http://feedproxy.google.com/~r/carefulweb/~3/XJw26l5xn48/" rel="alternate" /><content type="html">&lt;ol&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Provide alternative text in images with the &lt;code&gt;alt&lt;/code&gt;&amp;nbsp;attribute of the &lt;code&gt;img&lt;/code&gt;&amp;nbsp;tag.
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Create corresponding label elements for each form input field, or add the title attribute if you can’t provide a&amp;nbsp;label.
 &lt;/p&gt;
 
&lt;p&gt;
 Example #1:&amp;nbsp;&lt;code&gt;&amp;lt;p&amp;gt;&amp;lt;label for="first_name"&amp;gt;First name&amp;lt;/label&amp;gt;&amp;lt;input id="first_name" name="firstname" type="text"&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;
 &lt;/p&gt;
 
&lt;p&gt;
 Example #2:&amp;nbsp;&lt;code&gt;&amp;lt;input type="password" name="passwd" title="Enter your password"&amp;gt;&lt;/code&gt;
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 CAPTCHAs must have an audio version. Like&amp;nbsp;&lt;a href="http://recaptcha.net/whyrecaptcha.html"&gt;reCAPTCHA&lt;/a&gt;, for&amp;nbsp;example.
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Write links carefully. Be informative when you point a user by using relevant link text. Avoid&amp;nbsp;&lt;code&gt;javascript:&lt;/code&gt;&amp;nbsp;or other placeholders for the href attribute when you are using JavaScript action on link elements. Links must always point to the content they are referring&amp;nbsp;to.
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Avoid elements without content. For example, spacer images or table-based layouts. All uninformative pictures must be used as backgrounds (with&amp;nbsp;&lt;span class="caps"&gt;CSS&lt;/span&gt;).
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Otherwise don’t include content images as backgrounds. Use&amp;nbsp;&lt;code&gt;img&lt;/code&gt;&amp;nbsp;as specified in&amp;nbsp;#1.
 &lt;/p&gt;
 &lt;/li&gt;
 &lt;li&gt;
 
&lt;p&gt;
 Use text and media alternatives for&amp;nbsp;&lt;a href="http://www.w3.org/TR/html401/struct/objects.html"&gt;object&lt;/a&gt;&amp;nbsp;embedding elements. You can include as many alternatives as you like, encapsulating them within each other. Here is an example of including a Quicktime&amp;nbsp;movie:
 &lt;/p&gt;
 
&lt;pre&gt;&lt;code&gt;&amp;lt;object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" width="320" height="256" data="http://movies.apple.com/movies/independent/blessedisthematch/blessedisthematch_480p.mov"&amp;gt;&lt;br&gt;&amp;lt;param name="src" value="http://movies.apple.com/movies/independent/blessedisthematch/blessedisthematch_480p.mov"&amp;gt;&lt;br&gt;&amp;lt;img src="http://images.apple.com/moviesxml/s/independent/posters/blessedisthematch_l200812221525.jpg" alt="Blessed Is the Match movie"&amp;gt;&lt;br&gt;&amp;lt;/object&amp;gt;&lt;/code&gt;&lt;/pre&gt;
 &lt;/li&gt;
&lt;/ol&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=XJw26l5xn48:wSac1LmywEo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=XJw26l5xn48:wSac1LmywEo:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=XJw26l5xn48:wSac1LmywEo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?i=XJw26l5xn48:wSac1LmywEo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=XJw26l5xn48:wSac1LmywEo:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carefulweb/~4/XJw26l5xn48" height="1" width="1"/&gt;</content><feedburner:origLink>http://carefulweb.com/blog/2009/01/20/quick-rules-accessible-web-part-1-text-and-text-alternatives/</feedburner:origLink></entry><entry><id>http://carefulweb.com/blog/2008/08/18/cross-browser-css3-features/</id><title type="html">Cross browser CSS3 features</title><updated>2008-08-18T20:29:01Z</updated><published>2008-08-18T16:08:40Z</published><category term="css" /><category term="css3" /><category term="html" /><category term="ui" /><link href="http://carefulweb.com/blog/2008/08/18/cross-browser-css3-features/" rel="self" /><link href="http://feedproxy.google.com/~r/carefulweb/~3/qcKtGgBbpUs/" rel="alternate" /><content type="html">&lt;p&gt;&lt;strong&gt; Three &lt;span class="caps"&gt;CSS3&lt;/span&gt; features which works right in all major browsers (Mozilla, Safari and Opera). Yes, &lt;span class="caps"&gt;IE&lt;/span&gt; plays outside with finalizing of &lt;span class="caps"&gt;CSS2&lt;/span&gt;&amp;nbsp;support.&lt;/strong&gt;
&lt;/p&gt;

&lt;h3&gt;&lt;span class="caps"&gt;CSS3&lt;/span&gt;&amp;nbsp;Opacity&lt;/h3&gt;
&lt;p&gt;Opacity effect is very widely used in graphics and of course in web-design too. Today we can use it not only inside our graphic editor, but with plain &lt;span class="caps"&gt;CSS&lt;/span&gt; feature &lt;code&gt;{ opacity: 0.5 }&lt;/code&gt;. &lt;span class="caps"&gt;IE&lt;/span&gt; users can be supported with &lt;code&gt;{ filter: alpha(opacity=50) }&lt;/code&gt; property. You can see lots of demo examples&amp;nbsp;here:
&lt;/p&gt;
&lt;ul&gt;
 &lt;li&gt;
     &lt;a href="http://www.css3.info/on-opacity-and-complexity/"&gt;Opacity for image example&lt;/a&gt;;
 &lt;/li&gt;

 &lt;li&gt;
     &lt;a href="http://www.css3.info/preview/opacity/"&gt;Opacity and &lt;span class="caps"&gt;RGBA&lt;/span&gt; quick overview&lt;/a&gt;;
 &lt;/li&gt;

 &lt;li&gt;
     Lots of examples on Mandarin Design page: &lt;a href="http://www.mandarindesign.com/opacity.html"&gt;Opacity and transparency&lt;/a&gt;.
 &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Box-sizing&lt;/h3&gt;
&lt;p&gt;This feature really matters for fast coding of block design. It really simple to use: just specify float, width in percent and &lt;strong&gt;box-sizing&lt;/strong&gt; property. Like this (Mozilla, Opera and Safari uses different&amp;nbsp;declaration):
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;div.span { width: 50%; float: left; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;Also see live example at &lt;a href="http://www.css3.info/preview/box-sizing/"&gt;&lt;span class="caps"&gt;CSS3&lt;/span&gt;.info box-sizing page&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;Overflow-x &lt;span class="amp"&gt;&amp;amp;&lt;/span&gt; overflow-y&lt;/h3&gt;
&lt;p&gt;Overflow property is improved in &lt;span class="caps"&gt;CSS3&lt;/span&gt; specification. It allows to specify X and Y axis overflow independently with visible, hidden, auto and scroll options. See examples and tests &lt;a href="http://www.brunildo.org/test/Overflowxy2.html"&gt;here&lt;/a&gt;.
&lt;/p&gt;

&lt;h3&gt;Text-shadow&amp;nbsp;(bonus)&lt;/h3&gt;
&lt;p&gt;This one is really fancy and well-know effect. Firefox supporting it only in upcoming 3.1 release. But Opera and Safari already taking care on it. See demo page with reference image on &lt;a href="http://www.css3.info/preview/text-shadow/"&gt;&lt;span class="caps"&gt;CSS3&lt;/span&gt;.info: text-shadow&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=qcKtGgBbpUs:I-zqSelEWnw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=qcKtGgBbpUs:I-zqSelEWnw:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=qcKtGgBbpUs:I-zqSelEWnw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?i=qcKtGgBbpUs:I-zqSelEWnw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=qcKtGgBbpUs:I-zqSelEWnw:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carefulweb/~4/qcKtGgBbpUs" height="1" width="1"/&gt;</content><feedburner:origLink>http://carefulweb.com/blog/2008/08/18/cross-browser-css3-features/</feedburner:origLink></entry><entry><id>http://carefulweb.com/blog/2008/08/14/new-way-catch-django-signals/</id><title type="html">New way to catch django signals</title><updated>2008-08-14T16:44:55Z</updated><published>2008-08-14T16:06:26Z</published><category term="dispatch" /><category term="django" /><category term="model" /><category term="python" /><category term="signal" /><link href="http://carefulweb.com/blog/2008/08/14/new-way-catch-django-signals/" rel="self" /><link href="http://feedproxy.google.com/~r/carefulweb/~3/kCh9jKRLYRU/" rel="alternate" /><content type="html">&lt;p&gt;During preparations for 1.0 release Django signaling system was refactored. Details on &lt;a href="http://code.djangoproject.com/wiki/BackwardsIncompatibleChanges#Signalrefactoring"&gt;Backwards Incompatible Changes Page&lt;/a&gt;, corresponding changeset is &lt;a href="http://code.djangoproject.com/changeset/8223"&gt;8223&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;Well, the main reason of changes is speeding up. Announced &amp;#8220;&lt;em&gt;90% improvement in the speed of signal handling&lt;/em&gt;&amp;#8220;.
&lt;/p&gt;
&lt;p&gt;The main question is how to update own code to be compatible with new way. We need to replace old style dispatching with new way of signal object creation (&lt;code&gt;django.dispatch.Signal&lt;/code&gt;). Let see post and pre save model signal dispatch&amp;nbsp;example.
&lt;/p&gt;
&lt;p&gt;We have &lt;code&gt;Item&lt;/code&gt; model and signal handler &lt;code&gt;add_mime_type&lt;/code&gt; declared before. Old style&amp;nbsp;connection:
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dispatcher.connect(add_mime_type, signal=models.signals.pre_save, sender=Item)&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;New way to connect model signals with&amp;nbsp;handlers:
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;models.signals.pre_save.connect(add_mime_type, sender=Item)&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;Looks pretty simple. Also we need to change one thing in handler. It must be declared as accepting &lt;em&gt;&lt;/em&gt;kwargs. For&amp;nbsp;example:
&lt;/p&gt;
&lt;p&gt;&lt;code&gt;def add_mime_type(instance, **kwargs):&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;The main changes are done behind the scenes. Now &lt;code&gt;models.signals.pre_save&lt;/code&gt; is instance of &lt;code&gt;django.dispatch.Signal&lt;/code&gt; instead of plain &lt;code&gt;object()&lt;/code&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=kCh9jKRLYRU:qFvSPXJS1kU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=kCh9jKRLYRU:qFvSPXJS1kU:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=kCh9jKRLYRU:qFvSPXJS1kU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?i=kCh9jKRLYRU:qFvSPXJS1kU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=kCh9jKRLYRU:qFvSPXJS1kU:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carefulweb/~4/kCh9jKRLYRU" height="1" width="1"/&gt;</content><feedburner:origLink>http://carefulweb.com/blog/2008/08/14/new-way-catch-django-signals/</feedburner:origLink></entry><entry><id>http://carefulweb.com/blog/2008/08/11/django-vs-pylons-development-and-deployment/</id><title type="html">Django vs. Pylons</title><updated>2008-08-11T11:19:17Z</updated><published>2008-08-11T03:50:57Z</published><category term="deployment" /><category term="development" /><category term="django" /><category term="pylons" /><category term="python" /><link href="http://carefulweb.com/blog/2008/08/11/django-vs-pylons-development-and-deployment/" rel="self" /><link href="http://feedproxy.google.com/~r/carefulweb/~3/_jMjuXM6ywA/" rel="alternate" /><content type="html">&lt;p&gt;It is a short post-though about two popular Python frameworks. This is my personal experience and some&amp;nbsp;analytics.
&lt;/p&gt;
&lt;p&gt;Well, if you building long-term project, for example some social network (oh again), usually you need &lt;strong&gt;rapid prototyping&lt;/strong&gt; and then &lt;strong&gt;step-by-step (iteration) development&lt;/strong&gt;. For prototyping you need more and more components, which you can replace or customize later. For iteration-based development you need to setup release deployment and testing automation (aka buildbot). Important thing that you have deployments on own infrastructure  and you can build it once and then forget. So Django is number one solution for the component-based model (aka&amp;nbsp;apps).
&lt;/p&gt;
&lt;p&gt;Other case is when you creating an application which would be highly redistributable, for example blog or e-shop engine. It is really hard (for today) to setup quickly django applications and lots of people is aware of hand-made installations (like terminal commands, etc). Pylons has a better deployment tool (paste) that helps with redistribution of projects and better project/app file&amp;nbsp;layout.
&lt;/p&gt;
&lt;p&gt;It is main reason why there are still not so much complete django&amp;nbsp;applications.
&lt;/p&gt;
&lt;p&gt;I thinking to use both for different cases, but anyway large projects is a Django&amp;nbsp;way.
&lt;/p&gt;
&lt;p&gt;At last my top three django components:
    1 &lt;a href="http://www.djangoproject.com/documentation/cache/"&gt;Django’s cache framework&lt;/a&gt;;
    2. &lt;a href="http://www.djangoproject.com/documentation/authentication/"&gt;User authentication in Django |&lt;/a&gt;; 
    3. &lt;a href="http://www.djangoproject.com/documentation/testing/"&gt;Testing Django applications &lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=_jMjuXM6ywA:E09l0ZKEDiI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=_jMjuXM6ywA:E09l0ZKEDiI:I9og5sOYxJI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=I9og5sOYxJI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=_jMjuXM6ywA:E09l0ZKEDiI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?i=_jMjuXM6ywA:E09l0ZKEDiI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/carefulweb?a=_jMjuXM6ywA:E09l0ZKEDiI:cGdyc7Q-1BI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/carefulweb?d=cGdyc7Q-1BI" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/carefulweb/~4/_jMjuXM6ywA" height="1" width="1"/&gt;</content><feedburner:origLink>http://carefulweb.com/blog/2008/08/11/django-vs-pylons-development-and-deployment/</feedburner:origLink></entry></feed>
