<?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:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUcER3g8eyp7ImA9WhRQEko.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260</id><updated>2011-12-07T15:50:06.673Z</updated><category term="nlp" /><category term="yahoo" /><category term="minecraft" /><category term="news" /><category term="python" /><category term="web" /><category term="coding" /><category term="sigrie" /><category term="debian" /><category term="microsoft" /><category term="irc" /><category term="derren brown" /><category term="mozilla" /><category term="events" /><category term="wow" /><category term="open source" /><category term="django" /><category term="kde" /><category term="google" /><title>Adds and Dishes</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://addsanddishes.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>62</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AddsAndDishes" /><feedburner:info uri="addsanddishes" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUQFSHozeip7ImA9WhdWFE8.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-3396871659090168975</id><published>2011-09-07T20:21:00.004+01:00</published><updated>2011-09-07T20:21:59.482+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-07T20:21:59.482+01:00</app:edited><title>Hm. I forgot you could tempt me with things I want.</title><content type="html">Since the Diablo III client has leaked, it's time to publicly release what used to be a small hack to automatically download WoW patches.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://github.com/adys/patchdl"&gt;https://github.com/adys/patchdl&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
patchdl is a simple script that emulates the Blizzard Launcher's interaction with the patch servers and outputs a list of files to download.&lt;br /&gt;
&lt;br /&gt;
Right now it outputs wget command lines because I don't really know what else to make it do - I don't really want it to download files automatically.&lt;br /&gt;
By default it checks for WoW MPQs, but it can download Diablo III MPQs as well. It "could" download Starcraft II MPQs but the whole thing is very different there.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
adys@azura ~/src/git/patchdl % ./main.py&lt;br /&gt;
WoW::enUS&lt;br /&gt;
No new files&lt;br /&gt;
&lt;br /&gt;
Of course, it outputs "No new files" because I already have all the MPQs downloaded.&lt;br /&gt;
You can pass --client and --server parameters in order to change the client or server version - for WoW (and likely D3) that basically means --client=2 if you want to tell the server that your client is PTR, and --server=2 if you want the server to tell you about PTR files. (--client=1 --server=2 sort of means "My client is Live, I want the PTR files for it").&lt;br /&gt;
&lt;br /&gt;
But I'm sure all the vultures reading this post just want to know how to download Diablo 3 MPQs ;) So it's as simple as this:&lt;br /&gt;
&lt;br /&gt;
&lt;br class="Apple-interchange-newline" /&gt;adys@azura ~/src/git/patchdl % ./main.py D3&lt;br /&gt;
D3::enUS&lt;br /&gt;
No new files&lt;br /&gt;
&lt;br /&gt;
No, I won't give you the links to the MPQs. Install Python yourself. :)&lt;br /&gt;
&lt;br /&gt;
Moving to Leicester in 12 days. Eeeek.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-3396871659090168975?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9NeVqwPYKlqMwkGTVIZcQwXwooM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9NeVqwPYKlqMwkGTVIZcQwXwooM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9NeVqwPYKlqMwkGTVIZcQwXwooM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9NeVqwPYKlqMwkGTVIZcQwXwooM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/GECJEj0Ugr0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/3396871659090168975/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=3396871659090168975" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/3396871659090168975?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/3396871659090168975?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/GECJEj0Ugr0/hm-i-forgot-you-could-tempt-me-with.html" title="Hm. I forgot you could tempt me with things I want." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/09/hm-i-forgot-you-could-tempt-me-with.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkIEQXg7cSp7ImA9WhZaFEo.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6069210523657715922</id><published>2011-07-01T00:58:00.002+01:00</published><updated>2011-07-01T01:01:40.609+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T01:01:40.609+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><category scheme="http://www.blogger.com/atom/ns#" term="google" /><title>You can lie like that? That is so cool...</title><content type="html">Google+ is really nice. I won't go in details here, but overall, the integration is great and the feel of the whole website is solid. Finally a good excuse to get rid of facebook/twitter accs :)&lt;br /&gt;I'm hoping for a better integration with Buzz over time, and account merging. And the black navbar is still terrible.&lt;br /&gt;&lt;br /&gt;On to whines of the day.&lt;br /&gt;First of all, MIME type pollution is stupid and annoying.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;mime-type type="virtual/bluedevil-input"&amp;gt;&amp;lt;/mime-type&amp;gt;&lt;br/&gt;&lt;br /&gt;  &amp;lt;mime-type type="virtual/bluedevil-audio"&amp;gt;&amp;lt;/mime-type&amp;gt;&lt;br/&gt;&lt;br /&gt;  &amp;lt;mime-type type="virtual/bluedevil-sendfile"&amp;gt;&amp;lt;/mime-type&amp;gt;&lt;br /&gt;&lt;/pre&gt;Really? Come on.&lt;br /&gt;&lt;br /&gt;Second of all, the kde-git docs are *still* terrible. It's improved a bit, but searching for them still leads to old, outdated gitorious repositories and all. Pretty sad.&lt;br /&gt;&lt;br /&gt;Finally, Blogger still disgusts me in every possible way.&lt;br /&gt;The interface is still ugly and unresponsive, signing in with a Google account is still a horrible process, it's still impossible to paste code properly and it still forces the user onto a specific language through geoip.&lt;br /&gt;&lt;br /&gt;Bah.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6069210523657715922?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LY3hLPsAI0yXFWQh9aLvWbtAA6s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LY3hLPsAI0yXFWQh9aLvWbtAA6s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LY3hLPsAI0yXFWQh9aLvWbtAA6s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LY3hLPsAI0yXFWQh9aLvWbtAA6s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/vf1JTese-rE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6069210523657715922/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6069210523657715922" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6069210523657715922?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6069210523657715922?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/vf1JTese-rE/you-can-lie-like-that-that-is-so-cool.html" title="You can lie like that? That is so cool..." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/07/you-can-lie-like-that-that-is-so-cool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8MQn46fCp7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-8648465044861384981</id><published>2011-05-20T19:08:00.000+01:00</published><updated>2011-05-20T19:08:03.014+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-20T19:08:03.014+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><title>I'm... I'm not... I'm.. not.. I'm not from Mars...</title><content type="html">I got really fed up with KMix.&lt;br /&gt;
&lt;br /&gt;
I know it's just a sound applet. I know there are hundreds of different configurations to support. I know all that.&lt;br /&gt;
But the most common configuration should always be supported in the most simple way.&lt;br /&gt;
&lt;br /&gt;
With that said, here comes &lt;a href="https://github.com/adys/rattle"&gt;Rattle&lt;/a&gt;. Right now it's a simple PulseAudio volume applet in PySide. I could make it in C and link it against no unnecessary libs, just make sure it's as efficient as possible, but I really don't care anymore. I grabbed libpulse from gnome-volume-applet and.. cleaned it up.&lt;br /&gt;
I'll probably continue clean it up and have something decent out of it, but right now this is all it is: A docked volume icon in PySide. It requires PySide, Python 2.7, a system tray, systray wheel events, xdg audio-volume- icons and Pulseaudio -- apart from PySide, this would be available by default in most distros. It only supports one volume channel with no bells and whistles. Main feature being that it doesn't consume 300 megabytes of memory like KMix does.&lt;br /&gt;
&lt;br /&gt;
Anyway, enough about our bells.&lt;br /&gt;
Mentalist and Castle Season 3 finales are both up, they're both spectacular. Burn Notice and Futurama both return in June, Torchwood and White Collar both return in July.&amp;nbsp;I'll be in Romania this summer; can't wait... that's going to be a fun backlog to get back to.&lt;br /&gt;
&lt;br /&gt;
You know what else is coming this summer?&amp;nbsp;&lt;a href="http://store.steampowered.com/agecheck/app/57900/"&gt;Duke Nukem Forever&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Also interesting is the recent AOL move to XMPP, perhaps one day with a full protocol move too but for now I'm enjoying this quite a bit.&lt;br /&gt;
&lt;br /&gt;
I was planning to go to BlizzCon 2011 but the events are really uninteresting this year, and a lot of people aren't going. So scratch it; I'll save for 2012 and more amazingness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-8648465044861384981?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jawJtFvwSSsYFUlbFuuaTrm0p1U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jawJtFvwSSsYFUlbFuuaTrm0p1U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jawJtFvwSSsYFUlbFuuaTrm0p1U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jawJtFvwSSsYFUlbFuuaTrm0p1U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/nV66GJ9r2qY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/8648465044861384981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=8648465044861384981" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/8648465044861384981?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/8648465044861384981?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/nV66GJ9r2qY/im-im-not-im-not-im-not-from-mars.html" title="I'm... I'm not... I'm.. not.. I'm not from Mars..." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/05/im-im-not-im-not-im-not-from-mars.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4HQn45cCp7ImA9WhZXEEU.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-7898379395962571894</id><published>2011-04-29T15:55:00.000+01:00</published><updated>2011-04-29T15:55:33.028+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-29T15:55:33.028+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><title>The dirt looks too much like cake.</title><content type="html">Natty being finally released, I decided to take a look at why all my GTK apps were still ugly as sin on KDE.&lt;div&gt;As it turns out, Qt-GTK was writing to&amp;nbsp;~/.gtkrc-2.0-kde4. export | grep gtk revealed the following:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;declare -x GTK2_RC_FILES="/etc/gtk-2.0/gtkrc:/home/adys/.gtkrc-2.0::/home/adys/.kde/share/config/gtkrc-2.0"&lt;/div&gt;&lt;div&gt;declare -x GTK_RC_FILES="/etc/gtk/gtkrc:/home/adys/.gtkrc::/home/adys/.kde/share/config/gtkrc"&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Moving ~/.gtkrc-2.0-kde4 to ~/.kde/share/config/gtkrc-2.0 solved the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;Svengali next month!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-7898379395962571894?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1x57HdiFCt6yBDAN25UFVhDTT1o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1x57HdiFCt6yBDAN25UFVhDTT1o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1x57HdiFCt6yBDAN25UFVhDTT1o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1x57HdiFCt6yBDAN25UFVhDTT1o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/GgKHHL4cE3o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/7898379395962571894/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=7898379395962571894" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7898379395962571894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7898379395962571894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/GgKHHL4cE3o/dirt-looks-too-much-like-cake.html" title="The dirt looks too much like cake." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/04/dirt-looks-too-much-like-cake.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04HRX47eyp7ImA9WhZRE0o.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6291571655097453868</id><published>2011-04-09T18:11:00.001+01:00</published><updated>2011-04-09T20:05:34.003+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-09T20:05:34.003+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><category scheme="http://www.blogger.com/atom/ns#" term="minecraft" /><title>I'm in an ethical pickle.</title><content type="html">So by now it's pretty obvious to everyone that Minecraft is an interesting business target. I'm somewhat saddened the break I'm getting from working on WoW is on such a small, non-mmo game. In Java.&lt;br /&gt;&lt;br /&gt;Anyone who would analyze it for more than 5 minutes would figure out why it's so successful. Ish. But it's also really addictive, and got me working on interesting mechanics I didn't have the occasion to dabble with before. =)&lt;br /&gt;&lt;br /&gt;I wanted to take the opportunity to advertise the last couple of libraries I worked on a few weeks back.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;https://github.com/Adys/python-mime&lt;br /&gt;python-mime (mime) is a "cross-platform" API to handle MIME types. On *nix, it will try to follow the XDG spec. On Windows, it will read the registry and pray things will work out.&lt;br /&gt;For now, it's read only. I find myself without enough time to implement writing, although I'll eventually need it, at least on Linux.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;https://github.com/Adys/python-irc&lt;br /&gt;python-irc (irc) is an IRC client library in Qt (PySide). It doesn't implement the entire protocol, but the commonly-used parts are already here. SSL is supported. A 30-LOC bot is available as example.&lt;br /&gt;It offers a simple signal/slot-based API, with the main IRCClient class that will spit out IRCChannel and IRCUser instances in its signals.&lt;br /&gt;Note that IRCUsers are never stored as instances, purely as string, for performance reasons.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6291571655097453868?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/N8gwyXXfdykl5F3D3eW9CLm4FyY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8gwyXXfdykl5F3D3eW9CLm4FyY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/N8gwyXXfdykl5F3D3eW9CLm4FyY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/N8gwyXXfdykl5F3D3eW9CLm4FyY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/je_IGEaFzM4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6291571655097453868/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6291571655097453868" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6291571655097453868?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6291571655097453868?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/je_IGEaFzM4/im-in-ethical-pickle.html" title="I'm in an ethical pickle." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/04/im-in-ethical-pickle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4AQXcycSp7ImA9Wx9WE0Q.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-9178541716453965498</id><published>2011-01-18T23:22:00.000Z</published><updated>2011-01-18T23:22:20.999Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-18T23:22:20.999Z</app:edited><title>How do I use the thing?</title><content type="html">One of the many challenges a designer has to overcome is the "thing" problem.&lt;br /&gt;
The more familiar you are with the inner workings of an object (or program), the higher the odds you'll be making assumptions about your users and their knowledge of the object. What may very well be a masterpiece then becomes "the thing".&lt;br /&gt;
In an engine where every cog is important, a designer is often tempted to drift into making some cogs more important, just to end up in a lot of unused work because users have no idea what they are dealing with. "What's the thing in the corner?"&lt;br /&gt;
&lt;br /&gt;
Magicians are faced with a very similar issue when designing their own performances. Spend a few hours or days into the "getting from A to B is impressive" mindset, become blinded with the assumption the audience is still following. Usually ends in a disastrous applause of "Why am I impressed again?" eyebrows.&lt;br /&gt;
There are not enough reminders of how important starting with the effect is. Yet it's so simple. After years, many tricks begin with the "I know this - how do I use it?" mindset, instead of a more elegant "I want this to happen - let's figure out how".&lt;br /&gt;
&lt;br /&gt;
You would think it as common sense, yet in design too, many start asking "what can I do with my knowledge?" instead of "how can I open a coconut with a swiss army knife?".&lt;br /&gt;
&lt;br /&gt;
If it being obvious would make it child play, we would see less "I can make a Facebook clone" and more "I can make Google Cubed". And then maybe you, too, wouldn't have grown tired of seeing the reflection of your amusement in an overly polished Ace of Spades.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-9178541716453965498?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gya0uWYg5UvvSn9BBEAQLLKo9yk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gya0uWYg5UvvSn9BBEAQLLKo9yk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gya0uWYg5UvvSn9BBEAQLLKo9yk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gya0uWYg5UvvSn9BBEAQLLKo9yk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/wE6JLPr_4yA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/9178541716453965498/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=9178541716453965498" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/9178541716453965498?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/9178541716453965498?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/wE6JLPr_4yA/how-do-i-use-thing.html" title="How do I use the thing?" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2011/01/how-do-i-use-thing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEICQX47eip7ImA9Wx5WGEg.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5868125864459879206</id><published>2010-09-30T15:22:00.000+01:00</published><updated>2010-09-30T15:22:40.002+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-30T15:22:40.002+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>Sniffings are okay.</title><content type="html">Starting to prepare for Blizzcon. I'll be at the UI dinner and stay in Boston for three weeks after that.&lt;br /&gt;
&lt;br /&gt;
Okay, first of all: The Mentalist S3 started. Hurray!&lt;br /&gt;
Second of all, I'm still working on multiple miniprojects at the same time. A desktop keyring-enabled authenticator, python bindings for StormLib (with the help of Teomyr), a patchqueue and a huge rework, starting to learn Werkzeug and getting away from Django.&lt;br /&gt;
&lt;br /&gt;
White Collar is pretty good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5868125864459879206?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iOgEpfoqOe6-azu4N2CiJSt2Lno/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iOgEpfoqOe6-azu4N2CiJSt2Lno/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iOgEpfoqOe6-azu4N2CiJSt2Lno/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iOgEpfoqOe6-azu4N2CiJSt2Lno/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/SLtwnmRQMUo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5868125864459879206/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5868125864459879206" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5868125864459879206?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5868125864459879206?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/SLtwnmRQMUo/sniffings-are-okay.html" title="Sniffings are okay." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>3</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2010/09/sniffings-are-okay.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IAQH4-eyp7ImA9WxFVEko.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-2391783809430334042</id><published>2010-06-11T18:08:00.004+01:00</published><updated>2010-06-11T19:05:41.053+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-11T19:05:41.053+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>Iceland corrected!</title><content type="html">That's another year down, give or take a few days.&lt;br /&gt;&lt;br /&gt;A lot of stalling, yet a lot of activity. These past two months especially have been a bit crazy (dare I say cataclysmic?).&lt;br /&gt;&lt;br /&gt;Now what? A couple weeks and a cheap flight away from greener grass. I got my Blizzcon tickets (hurray! The queue has never been so bad...). Bought a new laptop and started packing, I've been staring at the open bag for a few days now. I even got my old PSU back (double-yay! Money not wasted...) and a new external HD.&lt;br /&gt;&lt;br /&gt;Oh how I love github. My most recent addition is the open sourcing of python-bna, a low level Python module to interact with Battle.net mobile authenticator algorithms and servers. How it works is very simple (and less secure than the Blizzard version):&lt;br /&gt;* Initialize a new token by contacting the blizzard servers, with authenticator = bna.getNewSerial()&lt;br /&gt;* The returned value is a dict containing "serial" and "secret" values, which you'll need to store somewhere safe.&lt;br /&gt;* To get an authenticator code, just call bna.getToken(secret)&lt;br /&gt;&lt;br /&gt;You can find the repo here: &lt;a href="http://github.com/Adys/python-bna"&gt;http://github.com/Adys/python-bna&lt;/a&gt; - Maybe I'll document it when I'm bored. Also on the TODOs are time syncs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OK, the real reason I wrote this post was about slugging. Dinnerbone kindly pointed out to me the security flaw in having URL parameters separated the same way as optional URL slugs. Take an object called "tooltip":&lt;br /&gt;* /object/12345/tooltip/&lt;br /&gt;* /object/12345/tooltip/tooltip/&lt;br /&gt;&lt;br /&gt;An optional slug will of course confuse the engine and there is no fix for that without hitting the database (BAD!).&lt;br /&gt;Now, let's imagine you really do want URI parameters to be stored after the slug (you don't want to store them in the GET). What's the only solution?&lt;br /&gt;Changing the slug. In order not to break the style guidelines, you cannot use /object/12345-tooltip/tooltip/. That doesn't mean the idea is not good. My personal favourite is checking against a blacklist (eek, DRY warning) and, for exact matches only, prepending the id to the slug. Of course, this can lead to confusing URLs such as /object/12345/12345-tooltip/tooltip/... but given a small blacklist (GET helps) and no user input, that would happen extremely rarely (if at all).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's all, folks. See you on the other side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-2391783809430334042?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/d9bCddKUDwgxLwwuLZG--2JIuDU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d9bCddKUDwgxLwwuLZG--2JIuDU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/d9bCddKUDwgxLwwuLZG--2JIuDU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/d9bCddKUDwgxLwwuLZG--2JIuDU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/i3stFpS54-0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/2391783809430334042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=2391783809430334042" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2391783809430334042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2391783809430334042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/i3stFpS54-0/iceland-corrected.html" title="Iceland corrected!" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2010/06/iceland-corrected.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEQBSH8zfSp7ImA9WxBUFUo.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-7997263335560486645</id><published>2010-03-02T23:22:00.002Z</published><updated>2010-03-02T23:25:59.185Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-02T23:25:59.185Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>It's fake, mon.</title><content type="html">After a bumpy road, lots of coding, recoding, rewriting and polishing, the originally wdbc-intended structures turned into an abstract structure engine.&lt;div&gt;I'm also very happy with its current state. This is why I've decided to release it under the permissive BSD license.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;What are its features?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;* Extremely lightweight. 3 files, less than 10 KiB including one example file.&lt;/div&gt;&lt;div&gt;* Extremely extensible. You can easily and separately patch methods into the structure Skeletons, add new fields and so on.&lt;/div&gt;&lt;div&gt;* Describe rather than parse. One of the core ideas was to parse a file separately from their description. The description stays entirely abstract.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How add structures?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create a structure file and from structures import *. Define a new structure like this:&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; class MyStructure(Structure):&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... fields = Skeleton(&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... ... IntegerField("field_one"),&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... ... IntegerField("field_two"),&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... ... StringField("name"),&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ...)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to use them?&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Initialize your structure with MyStructure(build=0)&lt;/div&gt;&lt;div&gt;Build argument is optional. It's only used if you use multibuild structures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To use it, iterate over the structure (just like a list) while reading/writing your file. Example:&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; for field in MyStructure():&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... value = struct.unpack(field.char, f.read(field.size))&lt;/div&gt;&lt;div&gt;&gt;&gt;&gt; ... print field.to_python(value, None)&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;How to add new field types?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Just subclass Field, or any of its relevant current subclasses (IntegerField, StringField, ...).&lt;/div&gt;&lt;div&gt;For custom behaviour, you can implement from_python and to_python methods (there are two examples in the provided fields.py).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will try to write some documentation and improve the module as much as I can. Meanwhile, I'm looking for feedback. There's probably stuff that's still tied to the wdbc parser, or features you'd like to see, ...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Enjoy it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://db.mmo-champion.com/adys/python-structures.tar.gz"&gt;http://db.mmo-champion.com/adys/python-structures.tar.gz&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-7997263335560486645?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f63cYsNdbXc5vK8Ip8Z29lCLZoo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f63cYsNdbXc5vK8Ip8Z29lCLZoo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f63cYsNdbXc5vK8Ip8Z29lCLZoo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f63cYsNdbXc5vK8Ip8Z29lCLZoo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/1ukU6LASVn0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/7997263335560486645/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=7997263335560486645" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7997263335560486645?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7997263335560486645?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/1ukU6LASVn0/after-bumpy-road-lots-of-coding_02.html" title="It's fake, mon." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>6</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2010/03/after-bumpy-road-lots-of-coding_02.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkQCRHg7fCp7ImA9WxBXE04.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6050018347186251204</id><published>2010-01-24T13:06:00.000Z</published><updated>2010-01-24T13:06:05.604Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-24T13:06:05.604Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Score One for Science.</title><content type="html">(Happy new year, ha ha.)&lt;br /&gt;
&lt;br /&gt;
Sigrie 2.2.0 released. 3.0 is on the way, as soon as I finish integrating some of the user data. What's still to come?&lt;br /&gt;
- Modelviewer. Thanks to Vjeux, I have the necessary javascript to get working on my implementation. Plan is still to use WebGL, so far looks great.&lt;br /&gt;
- More userdata. Locations for example. Once a couple of bugs are ironed out, I'll push a bunch of them.&lt;br /&gt;
- More useless things. Flight paths for example.&lt;br /&gt;
&lt;br /&gt;
Recently got a bunch of improvements done on the parser, too. Thanks to Andrei, logging and attributes are handled a lot better. I also reimplemented bitmasks after the changes. You can now do item[12345].required_classes.mage == true, stuff like that.&lt;br /&gt;
"But wait, there's more!".. preloading and maybe (haha) parsing in C++. What's still keeping me off is the linking hell it's going to be to have Python and C++ living together like I'd like it to. I should also use pySide for the gui, it's likely going to be without changes.&lt;br /&gt;
&lt;br /&gt;
Oh I think my PSU is dead. Which really sucks. I'm still trying to figure it out though. New year means new hardware (no it doesn't!?), so I got myself a nice p55 and an i7 860. Will try them out tomorrow if I get the chance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6050018347186251204?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Dz2TVofyKN6Gx1D867T11Z7fXmM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dz2TVofyKN6Gx1D867T11Z7fXmM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Dz2TVofyKN6Gx1D867T11Z7fXmM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Dz2TVofyKN6Gx1D867T11Z7fXmM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/KYnPbFLTaQ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6050018347186251204/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6050018347186251204" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6050018347186251204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6050018347186251204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/KYnPbFLTaQ0/score-one-for-science.html" title="Score One for Science." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2010/01/score-one-for-science.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8GSXw_fCp7ImA9WxNVFUo.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6226097882503760179</id><published>2009-10-26T16:15:00.001Z</published><updated>2009-10-26T16:17:08.244Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-26T16:17:08.244Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>I'm taking this loop off.</title><content type="html">Wave is awesome, hope more people will get in soon. I've migrated a lot of stuff down there which I don't regret one bit. It's mostly stable, but still lacks features.&lt;br /&gt;&lt;br /&gt;I was asked for it earlier on, since I had to use it elsewhere recently here's the snippet I use to slugify strings.&lt;br /&gt;&lt;br /&gt;strin = """ '".,?!:;%*#&amp;amp;+=()[]&amp;lt;&amp;gt;/"""&lt;br /&gt;strout =  "---------------------/"&lt;br /&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;def slugify(txt):&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;trans = maketrans(strin, strout)&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;txt = unicode(txt)&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;txt = normalize("NFKD", txt).encode("ascii", "ignore").strip().lower()&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;txt = txt.replace("'s", "s").translate(trans)&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;txt = "-".join(seg for seg in txt.split("-") if seg)[:50].rstrip("-")&lt;br /&gt;&lt;/span&gt;&lt;span style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;... &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;return txt&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6226097882503760179?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/z7cPHctcXEfueVYJO1HW379cl7k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z7cPHctcXEfueVYJO1HW379cl7k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/z7cPHctcXEfueVYJO1HW379cl7k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/z7cPHctcXEfueVYJO1HW379cl7k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/PSMlTlHtM0I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6226097882503760179/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6226097882503760179" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6226097882503760179?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6226097882503760179?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/PSMlTlHtM0I/im-taking-this-loop-off.html" title="I'm taking this loop off." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/10/im-taking-this-loop-off.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MBQX05eSp7ImA9WxNQGUg.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6531342475864603499</id><published>2009-09-26T11:04:00.000+01:00</published><updated>2009-09-26T11:04:10.321+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-09-26T11:04:10.321+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wow" /><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>The way from 2.0</title><content type="html">Sigrie 2.0 is up and running since a few days.&lt;br /&gt;
Version numbers are usually of little importance. I like the way Chrome handles them.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;BlizzCon obviously slowed me down with updates on Sigrie, which is why I ended up not releasing 1.2 and skipping to 2.0.&lt;br /&gt;
&lt;/div&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;br /&gt;
&lt;/div&gt;The&amp;nbsp;&lt;a href="http://db.mmo-champion.com/changelog"&gt;changelog&lt;/a&gt;&amp;nbsp;is up, many changes are backend. A lot of necessary cleanup. Slowly paving the way to a better tooltip engine; tooltips should be the best they possibly can.&lt;br /&gt;
&lt;br /&gt;
What's to come? Well, high on priority list are heirlooms. Similarly to the new linkstrings, heirlooms will have support for tooltips of any level.&lt;br /&gt;
Loot tables are coming as well. I'm still trying to think of the sanest way to store them.&lt;br /&gt;
Maps/locations are on the short-term todo list. I'm working on them every day and should come just after heirlooms.&lt;br /&gt;
&lt;br /&gt;
On a longer time frame, a WebGL modelviewer prototype is planned. It should make for a very strong testcase for both Gecko's and Webkit's WebGL engine.&lt;br /&gt;
&lt;br /&gt;
Looking forward, now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6531342475864603499?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/po0f1_IUfI7zUHrDHa-F5aj3ORM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/po0f1_IUfI7zUHrDHa-F5aj3ORM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/po0f1_IUfI7zUHrDHa-F5aj3ORM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/po0f1_IUfI7zUHrDHa-F5aj3ORM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/O4viQq5frOA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6531342475864603499/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6531342475864603499" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6531342475864603499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6531342475864603499?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/O4viQq5frOA/way-from-20.html" title="The way from 2.0" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/09/way-from-20.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUQCR3o6fyp7ImA9WxNSFE0.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-6593889184268147270</id><published>2009-08-26T14:17:00.006+01:00</published><updated>2009-08-27T22:09:26.417+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-27T22:09:26.417+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wow" /><category scheme="http://www.blogger.com/atom/ns#" term="news" /><category scheme="http://www.blogger.com/atom/ns#" term="events" /><title>I don't think anyone has seen this before, we actually beat them to the punch!</title><content type="html">&lt;p style="font-size:13px;"&gt;BlizzCon was amazing. Nothing unexpected there. I had lots of fun; visiting the US was an unique experience (although a bit short). The journey from Athens was... long, to say the least -- 14 hours wait in Heathrow, sleeping on chairs with aircon on.&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;"Expect something... Cataclysmic!"&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;The leak was a pretty big spoiler. I'm not going into Blizzard politics and whatever was behind it, but either way that didn't stop anyone from having fun. Cataclysm going to be amazing. I played it a bit, got some data and all... it's really gonna be great.&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;"Now you can panic."&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;The concert was slightly disappointing. Comparing it to the WWI, the ambiance wasn't the same. Twenty-seven thousand people doing less noise than a group of 6000. You could really feel it in Sam's presentation, too.&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;The panels were all great. There is so much I want to say, but not until september.&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;I'm going to work on Sigrie again. Tabs are still not pushed, and there's a bunch of fixes that need doing before the expansion. Got a pretty good area of work going on. Sigrie 2.0 will be out hopefully this week.&lt;/p&gt;&lt;p style="font-size: 13px;"&gt;PS: Blogger Editor is awful.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-6593889184268147270?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9Jjy0R-x-EHujIWbPJnvKc7Zzk0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Jjy0R-x-EHujIWbPJnvKc7Zzk0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9Jjy0R-x-EHujIWbPJnvKc7Zzk0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9Jjy0R-x-EHujIWbPJnvKc7Zzk0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/wF67o8jZ6gY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/6593889184268147270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=6593889184268147270" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6593889184268147270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/6593889184268147270?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/wF67o8jZ6gY/blizzcon-was-amazing.html" title="I don't think anyone has seen this before, we actually beat them to the punch!" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/08/blizzcon-was-amazing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8EQHo9eSp7ImA9WxJaGUg.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5982970486277271208</id><published>2009-08-11T02:33:00.001+01:00</published><updated>2009-08-11T02:40:01.461+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-08-11T02:40:01.461+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="events" /><title>BlizzCon 2009</title><content type="html">I've been getting prepared for BlizzCon. Most of everything is ready; I'll just have a 14 hour wait at Heathrow. Other than that, I'm pretty excited!&lt;br /&gt;
&lt;br /&gt;
Sigrie 1.2.1 and 1.2.2&amp;nbsp;&lt;a href="http://db.mmo-champion.com/changelog"&gt;released&lt;/a&gt;. I've been working for a while on complete support for custom WDB structures. That, itself, wasn't hard. However, some refactoring is still necessary. Well okay, lots of cleaning up to do, but still!&lt;br /&gt;
&lt;br /&gt;
Been getting some Webkit testcases done. I'll publish a dozen or so when I get some time (read: after BlizzCon).&lt;br /&gt;
&lt;br /&gt;
I'll see you all there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5982970486277271208?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/n94mudrRDmpQ1w70VyLk289XR5A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n94mudrRDmpQ1w70VyLk289XR5A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/n94mudrRDmpQ1w70VyLk289XR5A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/n94mudrRDmpQ1w70VyLk289XR5A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/9MU6gnQjjDY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5982970486277271208/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5982970486277271208" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5982970486277271208?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5982970486277271208?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/9MU6gnQjjDY/blizzcon-2009.html" title="BlizzCon 2009" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/08/blizzcon-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcEQngyeip7ImA9WxFTFUs.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5016995988536314820</id><published>2009-07-20T09:52:00.001+01:00</published><updated>2010-04-06T16:16:43.692+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-06T16:16:43.692+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><title>Don't trust QuerySets</title><content type="html">I messed up pretty bad on this one. I should've seen it coming, too; which is why I'm sharing it today.&lt;br /&gt;&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt; def get_prev_next_by_id(self):&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;    next = self.__class__.objects.filter(id__gt=self.id).order_by("id")&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;    prev = self.__class__.objects.filter(id__lt=self.id).order_by("-id")&lt;br /&gt;&amp;gt;&amp;gt;&amp;gt;    return prev and prev[0], next and next[0]&lt;br /&gt;&lt;br /&gt;Apart from duplicate logic, this looks harmless, right?&lt;br /&gt;QuerySets evaluate on list(), repr() and str()/unicode(). What's expected here is a LIMIT 1 when the query gets sliced.&lt;br /&gt;&lt;br /&gt;What actually happens: The entire table gets queried in two lines.&lt;br /&gt;Needless to say, this crashed pretty bad.&lt;br /&gt;Problem is, bool() evaluates the query. Is it a bug? I don't know, I think bool() should use COUNT. Django devs think 10 different things.&lt;br /&gt;COUNT or not, this query wouldn't be efficient either way. Best have a slice ([:1]) on it. The query will still get evaluated on bool(), but it'll be harmless.&lt;br /&gt;&lt;br /&gt;Bottom line: Don't trust QuerySets. They're amazing but very sneaky.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5016995988536314820?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pyiKP5MJNBjlbOnheEzCJKrzJac/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pyiKP5MJNBjlbOnheEzCJKrzJac/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pyiKP5MJNBjlbOnheEzCJKrzJac/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pyiKP5MJNBjlbOnheEzCJKrzJac/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/jWShWAA3he0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5016995988536314820/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5016995988536314820" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5016995988536314820?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5016995988536314820?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/jWShWAA3he0/dont-trust-querysets.html" title="Don't trust QuerySets" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/07/dont-trust-querysets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IASHY9fCp7ImA9WxJUGEQ.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-743282698695922997</id><published>2009-07-18T05:32:00.001+01:00</published><updated>2009-07-18T05:32:29.864+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-18T05:32:29.864+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Sigrie 1.1</title><content type="html">New release! Bigger one this time with the addition of latest additions and json serialization.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Added a &lt;a href="http://db.mmo-champion.com/latest"&gt;Latest Additions&lt;/a&gt; page! Works with almost everything stored in the database, including items, spells, achievements,&lt;br /&gt;quests, item sets, creatures, titles, zones and instances.&lt;/li&gt;&lt;li&gt;Added ability to lookup a model by its name (case-insensitive). &lt;a href="http://db.mmo-champion.com/i/Bijou's%20Belongings"&gt;Example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;JSON serialization for single models is available. &lt;a href="http://db.mmo-champion.com/i/thunderfury/json"&gt;Example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added __matches and __imatches lookup filters, which matches words rather than full strings. &lt;a href="http://db.mmo-champion.com/items/?name__imatches=furious%20deadly"&gt;Example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Added __in lookup filter, iterating through a comma-separated list of values. &lt;a href="http://db.mmo-champion.com/items/?id__in=12345,30007,192"&gt;Example&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The URL backend has been rewritten and is more responsive and reliable.&lt;/li&gt;&lt;li&gt;Django master sync with 11268.&lt;/li&gt;&lt;li&gt;Completed forward-compatibility with Postgres 8.4.&lt;/li&gt;&lt;li&gt;Lots of bugfixes.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-743282698695922997?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5C9cB6wH5simXRV1GYO_FjHdjq0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5C9cB6wH5simXRV1GYO_FjHdjq0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5C9cB6wH5simXRV1GYO_FjHdjq0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5C9cB6wH5simXRV1GYO_FjHdjq0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/ip-s7yMdedo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/743282698695922997/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=743282698695922997" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/743282698695922997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/743282698695922997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/ip-s7yMdedo/sigrie-11.html" title="Sigrie 1.1" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/07/sigrie-11.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEAR305eSp7ImA9WxJUE0g.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5844038281977160114</id><published>2009-07-12T01:30:00.000+01:00</published><updated>2009-07-12T01:30:46.321+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-12T01:30:46.321+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Sigrie 1.0.6</title><content type="html">Sigrie 1.0.6 released, with a few new end-features:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Spellstring conditionals are now supported. Examples&amp;nbsp;&lt;a href="http://db.mmo-champion.com/s/2645/ghost-wolf/"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://db.mmo-champion.com/s/66109/rons-test-buff-4/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tags are live and usable! See for yourself:&amp;nbsp;&lt;a href="http://db.mmo-champion.com/tag/i/twin-valkyrs-25-alliance/"&gt;twin-valkyrs-25-alliance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New "heroic" flag, &lt;a href="http://db.mmo-champion.com/items/?heroic=1"&gt;filterable&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Screenshot thumbnails have been moved and are now a lot bigger.&lt;/li&gt;
&lt;li&gt;Some graphical tweaks, mostly on IE.&lt;/li&gt;
&lt;/ul&gt;See you next release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5844038281977160114?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/x90h3n5TJo9ijNUWzc0QHT-P3nc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x90h3n5TJo9ijNUWzc0QHT-P3nc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/x90h3n5TJo9ijNUWzc0QHT-P3nc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/x90h3n5TJo9ijNUWzc0QHT-P3nc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/iPryKzdvYhg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5844038281977160114/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5844038281977160114" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5844038281977160114?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5844038281977160114?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/iPryKzdvYhg/sigrie-106.html" title="Sigrie 1.0.6" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/07/sigrie-106.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEFQHg4fyp7ImA9WxJVF0g.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-2911406794286062288</id><published>2009-07-05T01:10:00.000+01:00</published><updated>2009-07-05T01:10:11.637+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-05T01:10:11.637+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>Remote closed the connection</title><content type="html">Devcub has closed down after an uptime of 462 days (out of 554 full uptime, totalling 1 reboot).&lt;br /&gt;
&lt;br /&gt;
Irrelevant, I know. But it's been quite an experience!&lt;br /&gt;
&lt;br /&gt;
Oh, and Debian is ahead for once. Postgres 8.4 has been released and is already in sid!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-2911406794286062288?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/XpPFOvQJx8IkkR4JEtB45tBde8g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XpPFOvQJx8IkkR4JEtB45tBde8g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/XpPFOvQJx8IkkR4JEtB45tBde8g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/XpPFOvQJx8IkkR4JEtB45tBde8g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/4BRjxlOQcgI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/2911406794286062288/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=2911406794286062288" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2911406794286062288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2911406794286062288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/4BRjxlOQcgI/remote-closed-connection.html" title="Remote closed the connection" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/07/remote-closed-connection.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUMSH04eip7ImA9WxJVFkk.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-7090798843842171391</id><published>2009-07-03T20:11:00.000+01:00</published><updated>2009-07-03T20:11:29.332+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-03T20:11:29.332+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Sigrie 1.0.5</title><content type="html">New minor release. Most of it in the changes were either internal or pure optimizations. A couple of things however:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Screenshots can be uploaded by admins. Example&amp;nbsp;&lt;a href="http://db.mmo-champion.com/i/monster-omelet/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Menus have been updated to match the 3.2 PTR categories&lt;/li&gt;
&lt;li&gt;Canonical URLs are now supported. They should be on almost every page, but only detailviews actually make use of them. Examples&amp;nbsp;&lt;a href="http://db.mmo-champion.com/i/monster-omelet/"&gt;here&lt;/a&gt;,&amp;nbsp;&lt;a href="http://db.mmo-champion.com/i/12218/monster-omelet/"&gt;here&lt;/a&gt;,&amp;nbsp;&lt;a href="http://db.mmo-champion.com/i12218/"&gt;here&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="http://db.mmo-champion.com/item/12218/foobar/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Django master sync with 11178.&lt;/li&gt;
&lt;/ul&gt;I'm hoping to get 1.1 out by 3.2 live release, but I can't be as productive on this laptop. A bunch of JS fixes coming up hopefully soon, maybe a better filter interface, ...&lt;br /&gt;
&lt;br /&gt;
Cheers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-7090798843842171391?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/49v_J9S_6Rz8bC0PcIlQ-j7HVC8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/49v_J9S_6Rz8bC0PcIlQ-j7HVC8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/49v_J9S_6Rz8bC0PcIlQ-j7HVC8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/49v_J9S_6Rz8bC0PcIlQ-j7HVC8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/Z72ng3nFK3U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/7090798843842171391/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=7090798843842171391" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7090798843842171391?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/7090798843842171391?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/Z72ng3nFK3U/sigrie-105.html" title="Sigrie 1.0.5" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/07/sigrie-105.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcGQXwyeSp7ImA9WxJVEk8.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5449769212508649376</id><published>2009-06-28T23:10:00.001+01:00</published><updated>2009-06-28T23:10:20.291+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-28T23:10:20.291+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Poor source code... can't even take it.</title><content type="html">Leaving for France in a few hours. I'll have two weeks of rest, might even be able to pull some stuff done.&lt;br /&gt;&lt;br /&gt;Sigrie's been updated again, data updates are easier and I'll make them even easier in the days to come. There is still a great deal of work to do in the administration panel (thanks to Django, I didn't have to actually do anything to get a very good admin panel sorted).&lt;br /&gt;&lt;br /&gt;For now, almost everything is up to date. I still need to implement some stuff in the spellstrings, though. For example, &lt;a href="http://db.mmo-champion.com/s/65422/food/"&gt;$floor&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Holiday reqs are up, too; and &lt;a href="http://db.mmo-champion.com/items/?required_holiday__gt=0"&gt;filterable&lt;/a&gt;. I might work on the filter/feature docs if I get time.&lt;br /&gt;&lt;br /&gt;See you in two weeks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5449769212508649376?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OZG_x2R_XA025a27h9Jj-SNkII4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OZG_x2R_XA025a27h9Jj-SNkII4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OZG_x2R_XA025a27h9Jj-SNkII4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OZG_x2R_XA025a27h9Jj-SNkII4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/1MWtxNMyLmY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5449769212508649376/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5449769212508649376" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5449769212508649376?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5449769212508649376?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/1MWtxNMyLmY/poor-source-code-cant-even-take-it.html" title="Poor source code... can't even take it." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/06/poor-source-code-cant-even-take-it.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYASXYyeCp7ImA9WxJWGUs.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-4057580063998121384</id><published>2009-06-25T20:09:00.001+01:00</published><updated>2009-06-25T22:09:08.890+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-25T22:09:08.890+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="wow" /><category scheme="http://www.blogger.com/atom/ns#" term="sigrie" /><title>Sigrie is Alive</title><content type="html">It's finally officially released.&lt;br /&gt;&lt;a href="http://db.mmo-champion.com/"&gt;http://db.mmo-champion.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Creating a database working with WoW's format without breaking the design on the way is really not an easy task.&lt;br /&gt;Some will know that the project has been in the works for almost two years now. It's been recoded three times from scratch. The last attempt in late 2008, using the Django framework, was the right shot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;However Django was not completely convenient. I had to modify the core for multiple features that... aren't really pretty. But hey, it's live and it's alive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm so happy I got to the end of this design nightmare. I'm working on a C++ port of the wdbc reader, which will act as a Python module. It's a great experience.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hope you'll like it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-4057580063998121384?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/fw8W2Vcs41CI9lBU7u3FvZZBdYc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fw8W2Vcs41CI9lBU7u3FvZZBdYc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/fw8W2Vcs41CI9lBU7u3FvZZBdYc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/fw8W2Vcs41CI9lBU7u3FvZZBdYc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/g0PQ6EKZWdA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/4057580063998121384/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=4057580063998121384" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/4057580063998121384?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/4057580063998121384?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/g0PQ6EKZWdA/sigrie-is-alive.html" title="Sigrie is Alive" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/06/sigrie-is-alive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYFQ308cCp7ImA9WxJWFUQ.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-2665930190381842815</id><published>2009-06-21T14:48:00.000+01:00</published><updated>2009-06-21T14:48:32.378+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-21T14:48:32.378+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="kde" /><title>Some KDE usability annoyances</title><content type="html">KDE is great, and really fast, but ...&lt;br /&gt;
&lt;br /&gt;
* Why is Plasma's "Resize Widget" control so awkward? Why can't at least SOME widgets (such as folderview and webbrowser) have real corner-resizing? The current implementation makes it so you can only resize in two directions instead of four.&lt;br /&gt;
&lt;br /&gt;
* Why, why, why reinvent the wheel?&lt;br /&gt;
=&amp;gt; Default behaviour in Dolphin is to show a context menu when I drag a file. I want to set it to "move" by default, and have the context menu on shift (which currently moves the file). Why's it so hard to do that?&lt;br /&gt;
=&amp;gt; Isn't there SOME way to get a real desktop back? Using a plasma widget for it is horrible; I got two screens, I want to make the best out of both.&lt;br /&gt;
&lt;br /&gt;
* Speaking of dual-screen, plasma widgets are extremely buggy with them. it's near-impossible to drag a widget from one screen to another. That's alpha software though.&lt;br /&gt;
&lt;br /&gt;
* Dolphin again, "Show Hidden Files" should at least be in the right-click context menu of the current folder.&lt;br /&gt;
&lt;br /&gt;
* And Dolphin still and ever. File symlinks got a link arrow tag image; why not folders?&lt;br /&gt;
&lt;br /&gt;
* Oh good god. The "Apply" stuff is eye-gounging. Please tell me there is a way to get the gnome "automatically applies" behaviour. Apply should be kept for extreme cases (such as an action requiring some kind of restart, ...). If I change the color of some element, I'm not going to suddenly change opinion in the second more I need to click Apply; and even if I will, that's what Cancel is for!&lt;br /&gt;
&lt;br /&gt;
* Why in someone sane's name are Keyboard &amp;amp; Mouse options in "Computer Administration"... those are user-specific settings; or should be.&lt;br /&gt;
&lt;br /&gt;
* System Settings again. The KDE team had some nice thing going with their control panel, but currently I can't do two things at the same time... such as changing a wallpaper while I'm reconfiguring the mouse options. The panel should either spawn new processes when opening a config app, or at least I should be able to open two different System Settings processes.&lt;br /&gt;
&lt;br /&gt;
* The "Software Updates" is a prime example of developer logic in a GUI. "Apply all available updates" should NOT be clickable when there is no update to apply. Some other stuff is also confusing ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Maybe more to come, when I'll be bothered to upload screenshots.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-2665930190381842815?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LNgjdpZDm3JpBxBcl4ccDrl4odE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LNgjdpZDm3JpBxBcl4ccDrl4odE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LNgjdpZDm3JpBxBcl4ccDrl4odE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LNgjdpZDm3JpBxBcl4ccDrl4odE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/zRRdM_j-0-U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/2665930190381842815/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=2665930190381842815" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2665930190381842815?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/2665930190381842815?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/zRRdM_j-0-U/some-kde-usability-annoyances.html" title="Some KDE usability annoyances" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/06/some-kde-usability-annoyances.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcDSHw_fyp7ImA9WxJXE0U.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-3397749242282170266</id><published>2009-06-07T14:40:00.003+01:00</published><updated>2009-06-07T14:41:19.247+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-07T14:41:19.247+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>If you don't have a back pocket... improvise.</title><content type="html">Another year gone.&lt;br /&gt;&lt;br /&gt;It felt slightly slower this time, with spikes I really enjoyed :)&lt;br /&gt;I've gotten a lot of stuff done; some of my bigger projects are completed or nearing completion.&lt;br /&gt;England was great.&lt;br /&gt;&lt;br /&gt;New projects arising, hopes for 2010 and good news all around. Now if only I could enjoy a better climate :)&lt;br /&gt;&lt;br /&gt;Smiles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-3397749242282170266?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/VZB-vff2aboQX48LzHijHG_oDo4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZB-vff2aboQX48LzHijHG_oDo4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/VZB-vff2aboQX48LzHijHG_oDo4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/VZB-vff2aboQX48LzHijHG_oDo4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/CeHD2GM4m7E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/3397749242282170266/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=3397749242282170266" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/3397749242282170266?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/3397749242282170266?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/CeHD2GM4m7E/if-you-dont-have-back-pocket-improvise.html" title="If you don't have a back pocket... improvise." /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/06/if-you-dont-have-back-pocket-improvise.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcFSXk4eSp7ImA9WxJQF0s.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-5902790833567508565</id><published>2009-05-31T10:26:00.000+01:00</published><updated>2009-05-31T10:26:58.731+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-31T10:26:58.731+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="news" /><title>Hi it's Vince with Django</title><content type="html">This month has been *great*. Got a lot of work done, went to London (was absolutely lovely) and Dover (less lovely but still awesome!).&lt;br /&gt;
&lt;br /&gt;
I really, really can't wait to go back to Britain. I'll be trying to get a flat around Bristol later this year I think.&lt;br /&gt;
&lt;br /&gt;
Most of all I had lots of fun. Now I'm back in Athens, with the good old 40 degrees outside.. urgh =P&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So I've worked on DurationFields in Django and they're almost ready to send to trunk. They won't make 1.2 release so I will wait until then to send anything.&lt;br /&gt;
&lt;br /&gt;
The add-on is almost finished, the web interface is complete (pretty much, lacking navigation atm)... I should be busy fixing bugs, but I'm waiting for the js coder to finish some work (what an excuse, I know).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Lastly, I will be going to BlizzCon this year. Back in France for two weeks around the 29th of June, then to California the 20th of August (oh dammit, need to book the plane tickets already).&lt;br /&gt;
&lt;br /&gt;
That's all for the unrelated news for today. Toodles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-5902790833567508565?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/R_OgaNvbxAgD_VWIdf6V21W9rVU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R_OgaNvbxAgD_VWIdf6V21W9rVU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/R_OgaNvbxAgD_VWIdf6V21W9rVU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/R_OgaNvbxAgD_VWIdf6V21W9rVU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/-41B77PSipo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/5902790833567508565/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=5902790833567508565" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5902790833567508565?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/5902790833567508565?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/-41B77PSipo/hi-its-vince-with-django.html" title="Hi it's Vince with Django" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/05/hi-its-vince-with-django.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQGQn8_eCp7ImA9WxJREE8.&quot;"><id>tag:blogger.com,1999:blog-5943977018448101260.post-4820251937076221317</id><published>2009-05-11T07:28:00.000+01:00</published><updated>2009-05-11T07:28:43.140+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-11T07:28:43.140+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="django" /><category scheme="http://www.blogger.com/atom/ns#" term="python" /><title>DurationFields</title><content type="html">Worked on DurationFields lately, both in the WDBC parser and Django.&lt;br /&gt;
The parser implementation was simple enough...&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; class DurationField(IntegerField):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; units = {&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "years": 31556925993600, # 52.177457 * (7*24*60*60*1000*1000)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "months": 2629743828768, # 4.34812141 * (7*24*60*60*1000*1000)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "weeks": 604800000000, # 7*24*60*60*1000*1000&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; "days": 86400000000, # 24*60*60*1000*1000&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; "hours": 3600000000, # 60*60*1000*1000&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; "minutes": 60000000, # 60*1000*1000&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "seconds": 1000000, # 1000*1000&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "milliseconds": 1000,&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; "microseconds": 1,&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; def __init__(self, name="", unit="seconds", **kwargs):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; IntegerField.__init__(self, name, unit=unit, **kwargs)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if unit not in self.units:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; raise ValueError&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; self.unit = unit&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; if hasattr(self, "value"):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; self.duration = self.timedelta(self.value)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; def timedelta(self, value):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; return timedelta(microseconds=value*self.units[self.unit])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Django's was trickier though, cf ticket 2443. Well, not the implementation itself, but the UI design. The idea was to be able to specify a date the most natural way possible. A friend came up with the idea of parsing a string like this:&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; def from_timedelta(value):&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; if not value:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return u"0 sec"&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; vals = []&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; mis = value.days * 24 * 3600 * 1000000 + value.seconds * 1000000 + value.microseconds&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; for k in values_in_microseconds:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if mis &amp;gt;= values_in_microseconds[k]:&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; diff, mis = divmod(mis, values_in_microseconds[k])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; vals.append("%d%s" % (diff, k))&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; return u" ".join(vals)&lt;br /&gt;
&lt;br /&gt;
What this lets you do is specify a string, such as "1w 3d 10h 50s", and get it parsed into 1 week + 3 days + 10 hours + 50 seconds.&lt;br /&gt;
Everything is working, I'm quite happy about it, but there is still some work to do on the Django side.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5943977018448101260-4820251937076221317?l=addsanddishes.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UIMx0lXFhVJaao00xPgS-h-eWWw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UIMx0lXFhVJaao00xPgS-h-eWWw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UIMx0lXFhVJaao00xPgS-h-eWWw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UIMx0lXFhVJaao00xPgS-h-eWWw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AddsAndDishes/~4/scNbrLXcMB4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://addsanddishes.blogspot.com/feeds/4820251937076221317/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5943977018448101260&amp;postID=4820251937076221317" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/4820251937076221317?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5943977018448101260/posts/default/4820251937076221317?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AddsAndDishes/~3/scNbrLXcMB4/durationfields.html" title="DurationFields" /><author><name>Jerome Leclanche</name><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-K8bI44JHNvs/AAAAAAAAAAI/AAAAAAAABBg/jRRznI5Uxdc/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://addsanddishes.blogspot.com/2009/05/durationfields.html</feedburner:origLink></entry></feed>

