<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5400308</id><updated>2011-12-06T14:46:59.454-05:00</updated><category term='crevette'/><category term='2009'/><category term='Fedora'/><category term='gnome3'/><category term='solution'/><category term='Bravia'/><category term='skulenight'/><category term='skidiving'/><category term='cellphone'/><category term='Iranian'/><category term='bug'/><category term='Dan Bern'/><category term='watch'/><category term='elections'/><category term='fonts'/><category term='toronto'/><category term='cookbook'/><category term='Dave'/><category term='justforfun'/><category term='hinting'/><category term='Baldwin'/><category term='win32'/><category term='glyphtracer'/><category term='redhat'/><category term='incident'/><category term='audio'/><category term='guadec'/><category term='lessig'/><category term='AndyOram'/><category term='git'/><category term='monty'/><category term='spam'/><category term='uk'/><category term='video'/><category term='email'/><category term='unicode'/><category term='ChrisWilson'/><category term='iq'/><category term='2008'/><category term='gnome 2.18'/><category term='xiph.org'/><category term='pgo'/><category term='techshop'/><category term='mug'/><category term='olpc'/><category term='openmoko'/><category term='Boston Summit'/><category term='textlayout'/><category term='dilbert'/><category term='pdf'/><category term='gnome-terminal'/><category term='patents'/><category term='obama'/><category term='gedit'/><category term='drm'/><category term='optimization'/><category term='glib'/><category term='mba'/><category term='jds'/><category term='bithacks'/><category term='Chris Tyler'/><category term='fontforge'/><category term='painting'/><category term='PhotoSynth'/><category term='berlin'/><category term='google'/><category term='baris'/><category term='slides'/><category term='Microsoft'/><category term='onlinux'/><category term='lucasr'/><category term='ickle'/><category term='bug500000'/><category term='kenvandine'/><category term='rhel5'/><category term='wingo'/><category term='wine'/><category term='opentype'/><category term='censorship'/><category term='spellcheck'/><category term='tshirt'/><category term='Boston'/><category term='announcement'/><category term='EitanIsaacson'/><category term='vte'/><category term='typography'/><category term='webkit'/><category term='nokia'/><category term='n800'/><category term='lazyweb'/><category term='survey'/><category term='shell'/><category term='rms'/><category term='animation'/><category term='maintenance'/><category term='Finding Ada'/><category term='code'/><category term='embedded'/><category term='harfbuzz'/><category term='login'/><category term='federico'/><category term='pango'/><category term='tux'/><category term='pangocairo'/><category term='IranNastaliq'/><category term='kde'/><category term='abock'/><category term='copyfight'/><category term='gcds'/><category term='hackfest'/><category term='gnome-session'/><category term='linux-utf8'/><category term='twitter'/><category term='akademy'/><category term='gtk+'/><category term='gcc'/><category term='xdc'/><category term='coffee'/><category term='qt'/><category term='cairo'/><category term='gridfitting'/><category term='Iverson'/><category term='chpe'/><category term='AdaLovelaceDay09'/><category term='gplv3'/><category term='calendar'/><category term='doctorow'/><category term='funny'/><category term='a11y'/><category term='documentation'/><category term='comedy'/><category term='gadgets'/><category term='C'/><category term='apress'/><category term='buildbot'/><category term='Nastaliq'/><category term='packagekit'/><category term='cairotwisted'/><category term='puzzle'/><category term='Persian'/><category term='fontconfig'/><category term='kerning'/><category term='fsf'/><category term='firefox'/><category term='travel'/><category term='andrewcrause'/><category term='mofo'/><category term='utf8'/><category term='overholt'/><category term='randr1.2'/><category term='performance'/><category term='roozbeh'/><category term='leslie'/><category term='ChangeLog'/><category term='winelib'/><category term='soc'/><category term='Hollister'/><category term='g-s-d'/><category term='cfp'/><category term='humor'/><category term='warnings'/><category term='ff3'/><category term='keithp'/><category term='Sony'/><category term='refactoring'/><category term='lrl'/><category term='10year'/><category term='Asimov'/><category term='AFF'/><category term='graffiti'/><category term='behdad'/><category term='stillmotion'/><category term='geek'/><category term='cn tower'/><category term='glasgow'/><category term='blizzard'/><category term='WillieWalker'/><category term='timezone'/><category term='andre'/><category term='intel'/><category term='gnome-panel'/><category term='n&apos;ko'/><category term='hsbc'/><category term='screenshot'/><category term='DavidBolter'/><category term='guenther'/><category term='Teddy bear'/><category term='vista'/><category term='bugzilla'/><category term='motion'/><category term='gsoc'/><category term='Netflix'/><category term='board'/><category term='sari'/><category term='fudconboston2007'/><category term='youtube'/><category term='photos'/><category term='http'/><category term='evolution'/><category term='skydiving'/><category term='gnome'/><category term='litl'/><category term='python'/><category term='amazon'/><category term='GNOME foot logo'/><category term='burningman'/><category term='st patty'/><category term='debian'/><category term='ontariolinuxfest'/><category term='sigh'/><category term='annual report'/><category term='linuxcaffe'/><category term='amsterdam'/><category term='linux'/><category term='luis'/><category term='Whistler'/><category term='gtd'/><category term='Ben'/><category term='meme'/><category term='me'/><category term='cvs'/><category term='office'/><category term='istanbul'/><category term='budget'/><category term='programming'/><category term='California'/><category term='dvcs'/><category term='nazari'/><category term='Mozilla Summit'/><category term='party'/><category term='microwave'/><category term='2.22'/><category term='gopa'/><category term='book'/><category term='ad'/><category term='life'/><category term='nat'/><category term='wishlist'/><category term='running'/><category term='redpothat'/><category term='Iran'/><category term='jobs'/><category term='web2.0'/><category term='vuntz'/><category term='entertainment'/><category term='history'/><category term='desktopsummit'/><category term='GregWilson'/><category term='kellner'/><category term='reiser'/><category term='mozilla'/><category term='digital'/><category term='tehran'/><category term='ghop'/><category term='gtk-doc'/><category term='igalia'/><category term='tbf'/><category term='2.18'/><title type='text'>McEs, A Hacker Life</title><subtitle type='html'>Behdad Esfahbod's daily notes on GNOME, Pango, Fedora, Persian Computing, Bob Dylan, and Dan Bern!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mces.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default?start-index=101&amp;max-results=100'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>480</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5400308.post-4834851612358913483</id><published>2011-11-02T14:43:00.000-04:00</published><updated>2011-11-02T14:43:55.920-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='Iran'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><title type='text'>"Behdad's Calendar" now available at taghvim.info</title><content type='html'>Since &lt;a href="http://behdad.org/"&gt;&lt;code&gt;behdad.org&lt;/code&gt;&lt;/a&gt; is blocked in Iran these days, I went ahead and made my Iranian calendar thingy available at &lt;a href="http://taghvim.info/"&gt;&lt;code&gt;taghvim.info&lt;/code&gt;&lt;/a&gt;.&amp;nbsp; Let me know if it doesn't work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4834851612358913483?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://taghvim.info/' title='&quot;Behdad&apos;s Calendar&quot; now available at taghvim.info'/><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4834851612358913483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4834851612358913483&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4834851612358913483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4834851612358913483'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/11/behdads-calendar-now-available-at.html' title='&quot;Behdad&apos;s Calendar&quot; now available at taghvim.info'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7842866315451922493</id><published>2011-10-08T15:58:00.008-04:00</published><updated>2011-10-10T12:42:18.042-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Finding Ada'/><category scheme='http://www.blogger.com/atom/ns#' term='Boston Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>In Montréal for “Boston” Summit</title><content type='html'>After a crazy Oktoberfest party in Kitchener last night, I woke up at 6:45 this morning, drove back to Toronto, took the ferry to the Island, took a &lt;a href="http://flyporter.com/"&gt;Porter&lt;/a&gt; flight to Montréal, took the &lt;a href="http://www.stm.info/english/info/a-747.htm"&gt;747&lt;/a&gt; downtown, took the 165 up to Queen Mary, walked up the hill to &lt;a href="http://www.polymtl.ca/en/"&gt;Polytechnique&lt;/a&gt; to arrive at the GNOME &lt;a href="https://live.gnome.org/Montreal2011"&gt;“Boston” Summit&lt;/a&gt;.  Found Matthias, Owen, Ryan, and Andreas in the hallway, shook hands and received hugs, and felt right at home!&lt;br /&gt;&lt;br /&gt;Inside, saw Colin and Marina among a few other familiar faces and many new ones.  Marina explained that the reason she looks so sleepy is that she was &lt;a href="http://blogs.gnome.org/marina/2011/10/08/my-ada-lovelace-day-heroines/"&gt;blogging&lt;/a&gt; Ada Lovelace Day last night at 3am.  Which of course reminded me that it was &lt;a href="http://findingada.com/"&gt;Finding Ada&lt;/a&gt; yesterday.  So I thought I hereby list my own pick of women that I have had the pleasure to work with, and who, in my opinion, have made a lasting contribution to GNOME.  Now I don't have to preach these awesome women to this crowd, so I'll just summarize my own experience with them in a two lines.  In no particular order:&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right" src="http://planet.gnome.org/heads/marina.png" /&gt;&lt;a style="font-weight: bold;" href="http://blogs.gnome.org/marina/"&gt;Marina Zhurakhinskaya&lt;/a&gt; has been critical to the Women Outreach Program success and happening in recent years, so for that alone she deserves a special mention.  That's independent of she being part of the every-awesome GNOME Shell team.  Plus, she's so nice and great to hangout with in person.&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right" src="http://planet.gnome.org/heads/stormy.png" /&gt;&lt;a style="font-weight: bold;" href="http://stormyscorner.com/"&gt;Stormy Peters&lt;/a&gt; wrote in her job application for the GNOME Executive Director as part of her responsibilities to be the "mom".  And she delivered!  It was a pleasure being on the board when she was in charge.  Plus, she's so energetic she brightens everyone around her whereever she goes!&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right" src="http://planet.gnome.org/heads/karen.png" /&gt;&lt;a style="font-weight: bold;" href="http://punkrocklawyer.com/"&gt;Karen Sandler&lt;/a&gt; is awesome in spite of being a lawyer!  I have not had the opportunity to work with her in her new role, but at the Software Freedom Law Center, she was a great resource to the GNOME board, and much easier to get hold of than, well, other Free Software lawyers.  Now, I did not actually know about her DJ hobby (check her website!)  and &lt;a href="http://idle.slashdot.org/story/11/04/15/133206/Couple-Sends-Record-Player-Wedding-Invitations"&gt;wedding invitation&lt;/a&gt; until today.  Waiting to run into her here to learn more :-D.&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right" src="https://lh6.googleusercontent.com/-H0pCXRiHnGk/AAAAAAAAAAI/AAAAAAAAAEQ/mliOdWbumE4/photo.jpg?sz=200" /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="https://plus.google.com/109678970602476998949/posts"&gt;Rosanna Yuen&lt;/a&gt;&lt;/span&gt; is hard to find on Planet GNOME, and that's a shame.  Many may not know her, she's sometimes better recognized as &lt;code&gt;zana&lt;/code&gt;.  Fortunately she's been making more regular appearance at GUADEC.  Anyway, it's hard to imagine anything in the Board / Foundation level getting happened without her back-office work.  She moves the money, she keeps the book, she knows what happened in the board five years ago!  Plus, sometimes researches and books the venue for Boston Summit too.&lt;br /&gt;&lt;br /&gt;&lt;img style="float:right" src="http://planet.gnome.org/heads/logos/opw2011.png"&gt;At GUADEC this year, and at the Summit today I had the opportunity to meet a few young ladies rather new to the GNOME family: &lt;b&gt;&lt;a href="http://psconboard.blogspot.com/"&gt;Pat&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a href="http://kittykat3756.wordpress.com/"&gt;Kat&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;&lt;a href="http://fordmeg.blogspot.com/"&gt;Meg&lt;/a&gt;&lt;/b&gt;, and &lt;b&gt;&lt;a href="http://justabovethetagclouds.blogspot.com/"&gt;Nohemi&lt;/a&gt;&lt;/b&gt;: you girls rock! I hope I blog about you for the years to come!&lt;br /&gt;&lt;br /&gt;Went for lunch with Marina and Owen, had a great Thai chicken green curry, and talked food.  I was thinking about a small project to hack on while at the summit and I thought I pickup rewrapping lines in vte / gnome-terminal upon width change.  It's a well-defined well-contained problem, I have a design in mind, and one of the most common requests against vte.  I passed my design past Owen, we agreed that it should work, and I hope that's what I'm going to hack on.  Stay tuned!&lt;br /&gt;&lt;br /&gt;I want to close by a picture of my favorite GNOME artist with the coolest hair style:&lt;br /&gt;&lt;p style="align:center"&gt;&lt;img src="http://behdad.org/blog/mces/image/andreas-meg-montreal.jpg"&gt;&lt;p&gt;&lt;br /&gt;[Woah, long post!  Been a while since I last did that...]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7842866315451922493?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7842866315451922493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7842866315451922493&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7842866315451922493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7842866315451922493'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/10/in-montreal-for-boston-summit.html' title='In Montréal for “Boston” Summit'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-H0pCXRiHnGk/AAAAAAAAAAI/AAAAAAAAAEQ/mliOdWbumE4/s72-c/photo.jpg?sz=200' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4713113421621861638</id><published>2011-09-28T00:54:00.003-04:00</published><updated>2011-09-28T01:05:02.919-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='censorship'/><category scheme='http://www.blogger.com/atom/ns#' term='me'/><category scheme='http://www.blogger.com/atom/ns#' term='roozbeh'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Events of significance for Sep 26 and Sep 27</title><content type='html'>1982: I was born.&lt;br /&gt;&lt;br /&gt;1998: Google was &lt;a href="http://www.blogger.com/%3Ehttp://www.pcworld.com/article/240660/doodle_celebrates_googles_13th_birthday_here_are_13_milestones.html"&gt;born&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;2011: My &lt;a href="http://behdad.org/"&gt;personal website&lt;/a&gt; was filtered in Iran.&lt;br /&gt;&lt;br /&gt;2011: &lt;a href="https://plus.google.com/103402108616868673938/posts"&gt;Roozbeh&lt;/a&gt;  joined Google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4713113421621861638?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4713113421621861638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4713113421621861638&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4713113421621861638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4713113421621861638'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/09/events-of-significance-for-sep-26-and.html' title='Events of significance for Sep 26 and Sep 27'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-9008314473465349367</id><published>2011-08-11T04:45:00.002-04:00</published><updated>2011-08-11T06:34:15.985-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intel'/><category scheme='http://www.blogger.com/atom/ns#' term='textlayout'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='desktopsummit'/><title type='text'>Can I has intel tablet?</title><content type='html'>So I missed the intel party it seems.  I assume the tablets are GLES2-ready and have a fair pixel density.  If that is the case, I can make good use of one for OpenGL-based text rendering I'm experimenting with.  If there are leftovers at the summit, I'd happily take one!&lt;br /&gt;&lt;br /&gt;kthxbye :)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-9008314473465349367?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/9008314473465349367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=9008314473465349367&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9008314473465349367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9008314473465349367'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/08/can-i-has-intel-tablet.html' title='Can I has intel tablet?'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6737702115937069417</id><published>2011-08-07T08:24:00.003-04:00</published><updated>2011-08-07T08:26:48.094-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Arrived at the Desktop Summit</title><content type='html'>Just got to the &lt;a href="http://desktopsummit.org/"&gt;Desktop Summit&lt;/a&gt; in Berlin.  It's lovely seeing everyone after two years.&lt;br /&gt;&lt;br /&gt;I'm running &lt;a href="http://www.freedesktop.org/wiki/TextLayout2011"&gt;Text Layout Summit&lt;/a&gt; August 9th to 12th, so come find me for some font and text chat!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6737702115937069417?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6737702115937069417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6737702115937069417&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6737702115937069417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6737702115937069417'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/08/arrived-at-desktop-summit.html' title='Arrived at the Desktop Summit'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7516456656503462152</id><published>2011-05-26T18:46:00.006-04:00</published><updated>2011-05-26T19:00:41.712-04:00</updated><title type='text'>Contributor Agreements</title><content type='html'>It should be clear by now that I've gave up on blogging.  Couple things I found worth writing down for da Nets today:&lt;br /&gt;&lt;br /&gt;By way of GNOME Foundation Board of Directors election discussion I read the this LWN &lt;a href="http://lwn.net/Articles/442782/"&gt;piece&lt;/a&gt; titled "Mark Shuttleworth on companies and free software".  A couple remarks on it:&lt;br /&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;I have a lot of respect for Mark and all, but, is that really what he believes?&lt;/li&gt;&lt;li&gt;Mark would make a great Republican politician!&lt;/li&gt;&lt;li&gt;"Project Harmony", that name has worked in the past.  Twice.  One resulted in Free Qt, the other in Free Java.  What would it do this time?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;In other, more this-worldly, news, &lt;a href="https://toronto.bixi.com/"&gt;Bixi&lt;/a&gt; arrived in Toronto.  It has become my favorite mode of transportation in downtown core.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7516456656503462152?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7516456656503462152/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7516456656503462152&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7516456656503462152'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7516456656503462152'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/05/contributor-agreements.html' title='Contributor Agreements'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7834209549985189467</id><published>2011-04-06T16:19:00.002-04:00</published><updated>2011-04-06T16:23:56.670-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnome3'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GNOME 3.0</title><content type='html'>GNOME 3.0 released.&lt;br /&gt;Slashdot effect observed.&lt;br /&gt;No Slashdot post in sight.&lt;br /&gt;Great job, everyone!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7834209549985189467?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7834209549985189467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7834209549985189467&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7834209549985189467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7834209549985189467'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2011/04/gnome-30.html' title='GNOME 3.0'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6478835619793888681</id><published>2010-11-11T13:40:00.002-05:00</published><updated>2010-11-11T13:55:21.925-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='typography'/><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='opentype'/><title type='text'>CSS3 font goodness</title><content type='html'>Here's a nice blogpost from John Dagget of Firefox fame about the upcoming Firefox 4 supporting CSS3 OpenType font-feature support:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hacks.mozilla.org/2010/11/firefox-4-font-feature-support/"&gt;Firefox 4: OpenType font feature support&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a direct result of the &lt;a href="http://harfbuzz.org/"&gt;HarfBuzz&lt;/a&gt; code I've been working on for the past year or so.  Exciting stuff for the web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6478835619793888681?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6478835619793888681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6478835619793888681&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6478835619793888681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6478835619793888681'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/11/css3-font-goodness.html' title='CSS3 font goodness'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1995908065421550060</id><published>2010-10-22T15:33:00.002-04:00</published><updated>2010-10-22T15:41:51.639-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='xiph.org'/><category scheme='http://www.blogger.com/atom/ns#' term='monty'/><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><category scheme='http://www.blogger.com/atom/ns#' term='digital'/><title type='text'>A Digital Media Primer for Geeks</title><content type='html'>This is a few weeks old, but so good I still wanted to share.  Brought to you by xiph.org and Red Hat and featuring my old colleage, Monty, of xiph.org and Red Hat fame: &lt;a href="http://www.xiph.org/video/vid1.shtml"&gt;A Digital Media Primer for Geeks&lt;/a&gt;.  Looking forward to the followup episodes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1995908065421550060?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1995908065421550060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1995908065421550060&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1995908065421550060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1995908065421550060'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/10/digital-media-primer-for-geeks.html' title='A Digital Media Primer for Geeks'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7362022257501279237</id><published>2010-10-01T21:21:00.003-04:00</published><updated>2010-10-01T21:42:53.406-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bravia'/><category scheme='http://www.blogger.com/atom/ns#' term='Netflix'/><category scheme='http://www.blogger.com/atom/ns#' term='Sony'/><title type='text'>Dear Lazyweb: Netflix on Bravia in Canada</title><content type='html'>Dear LazyWeb,&lt;br /&gt;&lt;br /&gt;With the recent launch of &lt;a href="http://www.netflix.ca/"&gt;Netflix in Canada&lt;/a&gt;, here comes the question I've been unable to answer so far:&lt;br /&gt;&lt;br /&gt;How do I use Netflix on my Bravia-enabled Sony TV or Blu-ray player?  The net suggests that both should be able to play, yet it's not in the menus by default, and the internet gods have not been that helpful so far.&lt;br /&gt;&lt;br /&gt;My current understanding is that the Canadian version of the Sony Bravia products doesn't have the Netflix channel and all I can do is to wait for a firmware update.  Will be glad to be proven wrong.&lt;br /&gt;&lt;br /&gt;kthxbye&lt;br /&gt;b&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7362022257501279237?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7362022257501279237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7362022257501279237&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7362022257501279237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7362022257501279237'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/10/dear-lazyweb-netflix-on-bravia-in.html' title='Dear Lazyweb: Netflix on Bravia in Canada'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2850680383841985726</id><published>2010-07-28T04:19:00.003-04:00</published><updated>2010-07-28T04:22:47.268-04:00</updated><title type='text'>Missing GUADEC</title><content type='html'>My friends in the Hague will slowly start the process of resuming from sleep and dealing with hangover, eventually heading for the conference venue as I write this, because, right, it's GUADEC time, and I'm missing out :-(.&lt;br /&gt;&lt;br /&gt;Hope you all have your best GUADEC so far.  Wish I was there.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://guadec.org/"&gt;&lt;img src="http://guadec.org/img/header-logo.png"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2850680383841985726?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2850680383841985726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2850680383841985726&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2850680383841985726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2850680383841985726'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/07/missing-guadec.html' title='Missing GUADEC'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-9057295362340467556</id><published>2010-06-30T16:39:00.002-04:00</published><updated>2010-06-30T23:52:12.742-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vte'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>June</title><content type='html'>June 18th was my last day at Red Hat.&lt;br /&gt;&lt;br /&gt;I spent last week road-tripping to Eastern Canada with my friends.&lt;br /&gt;&lt;br /&gt;In a couple of weeks I will start working for Google Canada in the Waterloo office.  I will be working for a large part on HarfBuzz as part of the Chrome / ChromeOS team.&lt;br /&gt;&lt;br /&gt;Unfortunately the setup also means that I have to skip this year's GUADEC as I can't get a visa on time :(.&lt;br /&gt;&lt;br /&gt;I will keep my current GNOME duties, namely maintaining the text stack (fribidi, fontconfig, harfbuzz, pango, etc) as well as vte.  The break may give me some time hacking on things I couldn't get the time to hack on before even.  We'll see.&lt;br /&gt;&lt;br /&gt;That's all for June.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-9057295362340467556?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/9057295362340467556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=9057295362340467556&amp;isPopup=true' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9057295362340467556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9057295362340467556'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/06/june.html' title='June'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8224029412313239396</id><published>2010-05-11T12:55:00.003-04:00</published><updated>2010-05-11T13:05:52.668-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dan Bern'/><title type='text'>Dan Bern Live in Los Angeles</title><content type='html'>If you ever enjoyed a &lt;a href="http://danbern.com/"&gt;Dan Bern&lt;/a&gt; song, or generally appreciate good folk-rock music, check out his new album &lt;a href="http://danbern.com/discography.html#liveinlosangeles"&gt;Dan Bern Live in Los Angeles&lt;/a&gt; in which he performs with the &lt;a href="http://en.wikipedia.org/wiki/Common_Rotation"&gt;Common Rotation&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Mike_Viola"&gt;Mike Viola&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The album includes a couple extremely funny new songs: "Most American Men", "Osama in Obamaland", and a lovely performance of some of his classics.  "Beautiful Ride" is from the movie Walk Hard, which he wrote the score for.  Also includes the first official release of "The Fifth Beatle". Trivia: his Dylan mockery in The Fifth Beatle is actually legible in the album, unlike previous live performances.&lt;br /&gt;&lt;br /&gt;Anyway, extremely enjoyable album, highly recommended.  Makes a great gift too.  He's still touring the US, &lt;a href="http://danbern.com/tour.html"&gt;check it out&lt;/a&gt;.  Unfortunately no Toronto :-(.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8224029412313239396?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8224029412313239396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8224029412313239396&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8224029412313239396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8224029412313239396'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/05/dan-bern-live-in-los-angeles.html' title='Dan Bern Live in Los Angeles'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6695173665503797875</id><published>2010-04-23T19:39:00.002-04:00</published><updated>2010-04-23T19:42:53.202-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><category scheme='http://www.blogger.com/atom/ns#' term='fontforge'/><category scheme='http://www.blogger.com/atom/ns#' term='glyphtracer'/><title type='text'>Create a font in less than three minutes with Glyphtracer and FontForge</title><content type='html'>Jussi Pakkanen posted the following to the Fontforge list today:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hi all&lt;br /&gt;&lt;br /&gt;I have written a simple program to help creating fonts from images. It is called Glyphtracer. The basic idea is that you give it an image file containing all your glyphs. The program autodetects glyphs in the picture and allows the user to assign each detected glyph with a Unicode code point. These images are then traced to vectors and written to an SFD file. The rest of the work is then done with FontForge.&lt;br /&gt;&lt;br /&gt;To make things clear, here's a video showing how you can create a font from scratch in about two minutes:&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=T7x6mtptDAY"&gt;http://www.youtube.com/watch?v=T7x6mtptDAY&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Glyphtracer's home page is &lt;a href="http://launchpad.net/glyphtracer"&gt;https://launchpad.net/glyphtracer&lt;/a&gt;. The program is written entirely in PyQT4 and is currently Linux only.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Cool stuff!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6695173665503797875?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6695173665503797875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6695173665503797875&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6695173665503797875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6695173665503797875'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/04/create-font-in-less-than-three-minutes.html' title='Create a font in less than three minutes with Glyphtracer and FontForge'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6332373222975018884</id><published>2010-04-01T03:20:00.002-04:00</published><updated>2010-04-01T03:26:55.120-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>Parsing CSS-style margin attributes</title><content type='html'>Sounds silly, but I found the following construct handy:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  int margin_t, margin_r, margin_b, margin_l;&lt;br /&gt;  switch (sscanf (optarg, "%d %d %d %d",&lt;br /&gt;                  &amp;margin_t, &amp;margin_r,&lt;br /&gt;                  &amp;margin_b, &amp;margin_l))&lt;br /&gt;  {&lt;br /&gt;    case 0: err;&lt;br /&gt;    case 1: margin_r = margin_t;&lt;br /&gt;    case 2: margin_b = margin_t;&lt;br /&gt;    case 3: margin_l = margin_r;&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6332373222975018884?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6332373222975018884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6332373222975018884&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6332373222975018884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6332373222975018884'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/04/parsing-css-style-margin-attributes.html' title='Parsing CSS-style margin attributes'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3348524124075225899</id><published>2010-03-20T11:53:00.000-04:00</published><updated>2010-03-20T12:03:40.224-04:00</updated><title type='text'>Happy Nowrouz</title><content type='html'>Happy &lt;a href="http://en.wikipedia.org/wiki/Nowrouz"&gt;Nowrouz&lt;/a&gt; to all my Iranian friends.  Wishing you all the best in the year to come.&lt;br /&gt;&lt;br /&gt;Last year was the most eventful year of my life.  Looking forward to the next one.&lt;br /&gt;&lt;br /&gt;(I don't have any artistic talent, so no cards from me ;)).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3348524124075225899?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3348524124075225899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3348524124075225899&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3348524124075225899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3348524124075225899'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/03/happy-nowrouz.html' title='Happy Nowrouz'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6948515418682471534</id><published>2010-03-13T00:24:00.003-05:00</published><updated>2010-03-13T00:30:52.774-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtd'/><title type='text'>Reboot</title><content type='html'>I didn't blog for almost three months!  It has been a hectic few months, I've had so much on my plate I could hardly get anything done.  So I spent some time this week unsubscribing from tens of mailing lists, and even more website newsletters, trying to bring my incoming emails considerably down so I can actually get work done.  I think I'm there now.  I'm still on all the core lists relevant to my work (font &amp; text related lists; and haven't unsub'ed from foundation-list yet) and hope to do a better job pushing harfbuzz as well as maintaining pango, fontconfig, and vte.  Anyway, it's easy enough to find my email.  Feel free to send me mail or CC me on discussion I should be reading.  And I try to do a better job of posting what I'm up to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6948515418682471534?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6948515418682471534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6948515418682471534&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6948515418682471534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6948515418682471534'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/03/reboot.html' title='Reboot'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3381879335990137382</id><published>2010-03-12T15:56:00.002-05:00</published><updated>2010-03-12T18:17:11.106-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Stepping down from the GNOME Foundation board</title><content type='html'>When I decided to run for the foundation board in 2006, many of the old timers where not running again and there was the feeling that new people are needed on the board.  The board work has been very educational and rewarding for me, but given other engagements and all the new, capable, people on the board this year, I think it's time for me to step down so I can focus on hacking.&lt;br /&gt;&lt;br /&gt;The board has decided to appoint &lt;a href="http://www.silwenae.org/blog"&gt;Paul Cutler&lt;/a&gt; to take the seat.  Paul has been doing wonders on the marketing team, GNOME Journal, and the sysadmin team. I'm sure this opportunity gives him more ways to contribute to GNOME even more.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3381879335990137382?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3381879335990137382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3381879335990137382&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3381879335990137382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3381879335990137382'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2010/03/stepping-down-from-gnome-foundation.html' title='Stepping down from the GNOME Foundation board'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5026610215786612433</id><published>2009-12-17T05:59:00.003-05:00</published><updated>2009-12-17T06:18:51.599-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='webkit'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Europe, here I come!</title><content type='html'>I wrote my last exam on Tue night and We afternoon headed to the airport to get to Spain for the &lt;a href="http://live.gnome.org/WebKitGtk/Hackfest2009"&gt;WebKitGtk hackfest&lt;/a&gt; at the Igalia offices.  At this time, stuck in Frankfurt airport after missing my connection.&lt;br /&gt;&lt;br /&gt;After the hackfest I'm doing a mini tour of Western Europe, thanks to RailEurope.  Mostly visiting friends and family.  Currently looking like: Frankfurt -&gt; Kassel -&gt; Paris -&gt; Brussels -&gt; Amsterdam -&gt; Hanover -&gt; Berlin -&gt; (Maybe) Zurich.&lt;br /&gt;&lt;br /&gt;Looking forward to meet GNOME guys.  And will blog about hackfest progression.  Before you ask, my mandate for the event is to port WebKit to use the new HarfBuzz API.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5026610215786612433?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5026610215786612433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5026610215786612433&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5026610215786612433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5026610215786612433'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/12/europe-here-i-come.html' title='Europe, here I come!'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-784510048450165794</id><published>2009-12-11T06:24:00.003-05:00</published><updated>2010-01-25T14:46:21.923-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>Lazyweb: Conference organizing/scheduling software</title><content type='html'>Dear Lazyweb:&lt;br /&gt;&lt;br /&gt;What are the best Free Software conference orginizing / scheduling pieces of software?&lt;br /&gt;&lt;br /&gt;We are looking for things more sophisticated than Drupal's conference module.  Two years ago we used &lt;a href="http://expectnation.com/"&gt;expectnation&lt;/a&gt;, a kickass hosted service that &lt;a href="http://times.usefulinc.com/"&gt;Edd Dumbill&lt;/a&gt; kindly offered to GUADEC free of charge.  But we are looking to host our own within the GUADEC infrastructure now that we finally have started looking into building real infrastructure for running GUADEC website on an ongoing basis as opposed to rebuilding it from scratch every year.&lt;br /&gt;&lt;br /&gt;So, please leave comments and share your experience.  Thanks in advance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-784510048450165794?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/784510048450165794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=784510048450165794&amp;isPopup=true' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/784510048450165794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/784510048450165794'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/12/lazyweb-conference-organizingscheduling.html' title='Lazyweb: Conference organizing/scheduling software'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6614439472330484665</id><published>2009-11-25T18:03:00.004-05:00</published><updated>2009-11-25T18:06:12.269-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spam'/><title type='text'>Funny spam</title><content type='html'>Quite slick actually compared to the average spam I get...&lt;br /&gt;&lt;br /&gt;Subject: This is hard for me to say&lt;br /&gt;&lt;br /&gt;This is quite hard for me and I haven't been able to let you know up till now (you'd know why if you knew who I was)...but I have a crush on you.&lt;br /&gt;You'll have to find out who I am though (I'm quite shy and this is without a doubt the bravest thing I've ever done). To help you out I made some videos and pictures with your nickname over my body. The photos and videos are kind of risque so I had to make a name at &lt;a&gt;Black Book&lt;/a&gt; and put them there. My username in the members area is " behdad.esfahbodandme2009" (it's a free website).&lt;br /&gt;But anyway, get on &lt;a&gt;Black Book&lt;/a&gt; and once you are in, take a look for me. I want you to guess who I am and then approach me yourself. Good luck.&lt;br /&gt;&lt;br /&gt;Hugs and kisses, Your secret admirer&lt;br /&gt;&lt;br /&gt;PS. You'll get no extra help by e-mailing me back, so don't try :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6614439472330484665?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6614439472330484665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6614439472330484665&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6614439472330484665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6614439472330484665'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/11/funny-spam.html' title='Funny spam'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6352968415297849864</id><published>2009-11-18T20:01:00.002-05:00</published><updated>2009-11-18T23:07:21.010-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='textlayout'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Pango vs HarfBuzz</title><content type='html'>Since the &lt;a href="http://mces.blogspot.com/2009/11/harfbuzz-hackfest.html"&gt;rewritten HarfBuzz&lt;/a&gt; is shaping up fast and getting lots of Buzz these days, I get asked the same question again and again: "Will HarfBuzz replace Pango?"  This post tries to answer that.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; No, not at all!  Pango is here to stay.  It will change, but only get better.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Long answer:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Pango provides two levels of API: A low-level and a high-level.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Low level API:&lt;/strong&gt; What I can the "three pillars of pango":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;pango_itemize()&lt;/code&gt;: Breaks text into runs that each have the same font, Unicode script, language, direction, and other characteristics.&lt;/li&gt;&lt;li&gt;&lt;code&gt;pango_shape()&lt;/code&gt;: &lt;em&gt;Shapes&lt;/em&gt; a single run of text, given the font, script, language, direction, and other properties.  Shaping means converting Unicode text to positioned &lt;em&gt;glyphs&lt;/em&gt;.&lt;/li&gt;&lt;li&gt;&lt;code&gt;pango_break()&lt;/code&gt;: Does line breaking and other text segmentation (cursor positions, cluster boundaries, word boundaries, and sentence boundaries).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;High-level API:&lt;/strong&gt; Pango's high-level API consists of the &lt;em&gt;PangoLayout&lt;/em&gt; object, aka "here's a piece of text render it in this box I don't care what you do."&lt;br /&gt;&lt;br /&gt;Of these, HarfBuzz only does shaping.  That is, &lt;code&gt;hb_shape()&lt;/code&gt; is functionally equivalent to &lt;code&gt;pango_shape()&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;API implications:&lt;/strong&gt;  Here is how moving to HarfBuzz affects the Pango API:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everything in &lt;code&gt;pango-ot.h&lt;/code&gt; will be deprecated and be a thin wrapper around &lt;code&gt;hb-ot.h&lt;/code&gt;.  This is already done in the &lt;code&gt;harfbuzz-ng-external&lt;/code&gt; branch of Pango.&lt;/li&gt;&lt;li&gt;There will be new API in Pango, perhaps in &lt;code&gt;pango-hb.h&lt;/code&gt; to help extracting various HarfBuzz structures from their Pango equivalents.&lt;/li&gt;&lt;li&gt;&lt;code&gt;pango_shape()&lt;/code&gt; will be a thin wrapper around &lt;code&gt;hb_shape()&lt;/code&gt; (read below).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;strong&gt;Pango Modules:&lt;/strong&gt; &lt;code&gt;pango_shape()&lt;/code&gt; calls into Pango shaper modules to get the actual shaping done.  There are two kinds Pango shaper modules depending on what they do (the API is the same, so Pango doesn't differentiate between the two classes):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bridge modules: The basic-win32.c, basic-atsui.c modules call into another, platform native, shaping system to get the work done.  The external (not integrated in Pango yet) modules basic-graphite.c and basic-m17n.c also do the same for the SIL Graphite and m17n shaping libraries.&lt;/li&gt;&lt;li&gt;On Linux, since there currently is no native shaping engine, Pango has multiple shaping modules, one per script, to do the actual shaping (arabic-fc, syriac-fc, indic-fc, thai-fc, ..., and basic-fc for all the non-complex scripts).&lt;/li&gt;&lt;/ul&gt;Now, as HarfBuzz becomes &lt;em&gt;the&lt;/em&gt; shaping engine on Linux, all those script-specific modules will be removed and basic-fc will simply call into &lt;code&gt;hb_shape()&lt;/code&gt;.  That's indeed what the basic-fc.c in the &lt;code&gt;harfbuzz-ng-external&lt;/code&gt; does.&lt;br /&gt;&lt;br /&gt;Later on, when we add support for native win32, CoreText, Graphite, and m17n to HarfBuzz, all those other modules will also be replaced by HarfBuzz-calling equivalents.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Which one to use:  Pango or HarfBuzz?&lt;/strong&gt;  Depends.&lt;br /&gt;&lt;br /&gt;PangoLayout is designed to be the 'render this text in this box I don't care how' kind of API.  That's a perfect fit for GUI toolkits like GTK+, but not suitable for lots of other uses, for example:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web browsers&lt;/li&gt;&lt;li&gt;Word processors&lt;/li&gt;&lt;li&gt;Designer tools&lt;/li&gt;&lt;li&gt;Font design tools&lt;/li&gt;&lt;li&gt;Terminal emulators&lt;/li&gt;&lt;li&gt;Batch document processors&lt;/li&gt;&lt;li&gt;TeX engines&lt;/li&gt;&lt;/ul&gt;while in many of those cases PangoLayout can be &lt;em&gt;made&lt;/em&gt; to work (with much pain, mind you), Pango still provides the lower level API and lots of other bits and pieces to get something going.  What it doesn't give full control on however is font selection, which happens to be a deal-breaker for many of those usecases (browsers following CSS rules, etc).&lt;br /&gt;&lt;br /&gt;So, each of those kinds of applications need to assess the pros and cons of using Pango vs using HarBuzz and providing all the other bits themselves.  For example, HarfBuzz &lt;em&gt;doesn't&lt;/em&gt; provide:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An itemizer&lt;/li&gt;&lt;li&gt;A Unicode Bidirection Algorithm implementation&lt;/li&gt;&lt;li&gt;A Unicode Line Breaking implementation&lt;/li&gt;&lt;li&gt;Glyph rasterization&lt;/li&gt;&lt;li&gt;Glyph metrics information&lt;/li&gt;&lt;li&gt;etc&lt;/li&gt;&lt;/ul&gt;There's also a hybrid use possible: to borrow those pieces from Pango on platforms that it's feasable, but drive HarfBuzz directly.  It all depends.  When in doubt, ask!  We have a mailing list.&lt;br /&gt;&lt;br /&gt;That said, Firefox will use HarfBuzz as soon as it's ready (there are patches circulating around).  Google is using old HarfBuzz for their Webkit and will port to the new one.  I'm also attending the Webkit-GTK hackfest in December to port that to the new HarfBuzz.  We'll work towards sharing the HarfBuzz-dealing code among Webkit backends.&lt;br /&gt;&lt;br /&gt;This is already a long post.  Let me finish now.  Hope I made it a tiny bit more clear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6352968415297849864?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6352968415297849864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6352968415297849864&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6352968415297849864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6352968415297849864'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/11/pango-vs-harfbuzz.html' title='Pango vs HarfBuzz'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7517687670574839932</id><published>2009-11-15T17:14:00.000-05:00</published><updated>2009-11-15T17:16:12.850-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='copyfight'/><title type='text'>On Unexpected Hanging Paradox and applications in law enforcement</title><content type='html'>&lt;em&gt;[Note: this post has nothing to do with the ongoing &lt;a href="http://news.google.com/news/search?aq=f&amp;amp;pz=1&amp;amp;cf=all&amp;amp;ned=ca&amp;amp;hl=en&amp;amp;q=iran+executions"&gt;executions in Iran&lt;/a&gt;.]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Unexpected_hanging_paradox"&gt;Unexpected hanging paradox&lt;/a&gt; is a well-known alleged logical paradox  about a prisoner's response to an unusual death sentence.  To quote Wikipedia, here is the statement of the paradox:&lt;blockquote&gt;A judge tells a condemned prisoner that he will be hanged at noon on one weekday in the following week but that the execution will be a surprise to the prisoner. He will not know the day of the hanging until the executioner knocks on his cell door at noon that day. Having reflected on his sentence, the prisoner draws the conclusion that he will escape from the hanging. His reasoning is in several parts. He begins by concluding that the "surprise hanging" can't be on a Friday, as if he hasn't been hanged by Thursday, there is only one day left - and so it won't be a surprise if he's hanged on a Friday. Since the judge's sentence stipulated that the hanging would be a surprise to him, he concludes it cannot occur on Friday. He then reasons that the surprise hanging cannot be on Thursday either, because Friday has already been eliminated and if he hasn't been hanged by Wednesday night, the hanging must occur on Thursday, making a Thursday hanging not a surprise either. By similar reasoning he concludes that the hanging can also not occur on Wednesday, Tuesday or Monday. Joyfully he retires to his cell confident that the hanging will not occur at all. The next week, the executioner knocks on the prisoner's door at noon on Wednesday — which, despite all the above, will still be an utter surprise to him. Everything the judge said has come true.&lt;/blockquote&gt;&lt;br /&gt;This has intrigued me again and again and I could never come to peace with it.  While researching this recently I came across &lt;a href="http://math.mit.edu/~tchow/unexpected.pdf"&gt;this paper&lt;/a&gt; which is a non-exhaustive survey of various tries to model the paradox.  Great read.&lt;br /&gt;&lt;br /&gt;Today I came across a blog post by &lt;a href="http://en.wikipedia.org/wiki/Ed_Felten"&gt;Ed Felten&lt;/a&gt; called &lt;a href="http://www.freedom-to-tinker.com/blog/felten/targeted-copyright-enforcement-deterring-many-users-few-lawsuits"&gt;Targeted Copyright Enforcement: Deterring Many Users with a Few Lawsuits&lt;/a&gt;.  While I find it very disturbing that a scientist like Ed Felten may be helping RIAA better screw people by their copyvio lawsuits, the puzzle and the solution provided are well worth a read.  Not irrelevant to the Hanging Paradox, though in this case the reasoning may actually work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7517687670574839932?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7517687670574839932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7517687670574839932&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7517687670574839932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7517687670574839932'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/11/on-unexpected-hanging-paradox-and.html' title='On Unexpected Hanging Paradox and applications in law enforcement'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1860485386256734480</id><published>2009-11-04T14:20:00.004-05:00</published><updated>2009-11-04T14:26:30.856-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><category scheme='http://www.blogger.com/atom/ns#' term='litl'/><title type='text'>litl by litl</title><content type='html'>Finally &lt;a href="http://www.litl.com/"&gt;litl&lt;/a&gt;'s product is out: it's a &lt;i&gt;webbook&lt;/i&gt;.  The easel mode looks quite interesting, and reading their website, it looks like the kind of gadget/netbook/appliance I'd be more than happy to have around (in a theoretical family setting, not /me as lone hacker).&lt;br /&gt;&lt;br /&gt;But at the starting price of $700, I'm not sure who they are targeting.  Sounds like Apple customers...  And that does not include the remote or the HDMI cable.  And the twinpack offers exactly $0 dollars discount over buying two units separately.  I found these very cheap of them.  Otherwise it all looks very promising.&lt;br /&gt;&lt;br /&gt;While at gadgets, anyone knows whether n900 will have a developer program?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1860485386256734480?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1860485386256734480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1860485386256734480&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1860485386256734480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1860485386256734480'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/11/litl-by-litl.html' title='litl by litl'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7396036798348643891</id><published>2009-11-04T11:55:00.004-05:00</published><updated>2009-11-04T14:20:02.707-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='textlayout'/><category scheme='http://www.blogger.com/atom/ns#' term='hackfest'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><title type='text'>HarfBuzz HackFest</title><content type='html'>Here is a quick update re &lt;a href="http://freedesktop.org/wiki/Software/HarfBuzz"&gt;HarfBuzz&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;During May and August I finished rewriting the OpenType Layout engine to use mmap()ed font files.  This is in Pango 1.26.x already.  Pango and fontconfig also received a lot more optimization love.  That deserves a long and separate blogpost.  The net result is that the text stack's &lt;strong&gt;memory usage is considerably lower&lt;/strong&gt; now.  &lt;strong&gt;All this goodness will be in the upcoming Fedora 12&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;In October, I attended the &lt;a href="http://freedesktop.org/wiki/Software/HarfBuzz"&gt;33rd Internationalization and Unicode Conference&lt;/a&gt; in San Jose to present the free software text stack (&lt;a href="http://behdad.org/download/Presentations/slippy/freetextstack_slides.pdf"&gt;useless slides&lt;/a&gt;) as well as present and promote HarfBuzz (&lt;a href="http://behdad.org/download/Presentations/slippy/harfbuzz_slides.pdf"&gt;useless slides&lt;/a&gt;).  That was a very fruitful event and I received lots of interest from many major industry players.  With the liberal license that we are releasing HarfBuzz under, we expect broad adoption, which is exactly what we are looking for.&lt;br /&gt;&lt;br /&gt;This week, Jonathan Kew and myself are having a small HarfBuzz HackFest here in Mozilla's Toronto office.  Here's what we have got done so far:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jonathan has a version of Firefox using harfbuzz-ng (the codename for the rewrite) that has advanced layout features controlable through CSS.  Very very cool stuff.  He updated it to the latest harfbuzz-ng code.&lt;/li&gt;&lt;li&gt;I ripped harfbuzz-ng out of the Pango tree and into a standalone module.  Finally!  Took a couple hours of git surgery plus ten minutes to put together an autotools build system.  Git clone URL is &lt;a href="git://git.freedesktop.org/%7Ebehdad/harfbuzz-ng"&gt;this&lt;/a&gt;.  The harfbuzz-ng-external branch in Pango uses that as an external module.  The plan is to reach a stable 1.0 release of harfbuzz-ng before next stable GNOME and most probably, Pango will require harfbuzz unconditionally (that is, on all platforms).  Note that harfbuzz is NOT tied to FreeType, so you can use it with any rasterizer you have around.&lt;/li&gt;&lt;li&gt;We fixed all portability issues Jonathan had faced when compiling harfbuzz-ng with MSVC.&lt;/li&gt;&lt;li&gt;Jonathan is working on the shaper side, while I'm working on the API and pulling it all together.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I added glue code for using harfbuzz-ng with glib, ICU, and FreeType.&lt;/li&gt;&lt;li&gt;Lots of API and design review.&lt;/li&gt;&lt;/ul&gt;At the rate this is developing, by the end of the week we should have basic shaper (Latin, Cyrillic, CJK, ...) and Arabic+Syriac working perfectly and tackling Indic family.  We're closer to 1.0 than you may think!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7396036798348643891?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7396036798348643891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7396036798348643891&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7396036798348643891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7396036798348643891'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/11/harfbuzz-hackfest.html' title='HarfBuzz HackFest'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-773927163302703063</id><published>2009-08-19T13:48:00.002-04:00</published><updated>2009-08-19T17:26:05.313-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='drm'/><category scheme='http://www.blogger.com/atom/ns#' term='copyfight'/><title type='text'>Canadians: make your voice heard</title><content type='html'>To all my Canadian friends:&lt;br /&gt;&lt;br /&gt;As you may know the Canadian government is currently seeking public opinion on the various Canadian copyright and DRM proposals on the table.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ow.ly/kAuD"&gt;Here&lt;/a&gt; is a guide to writing an effective entry to them (PDF).  Takes five minutes only.&lt;br /&gt;&lt;br /&gt;Thanks&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-773927163302703063?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/773927163302703063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=773927163302703063&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/773927163302703063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/773927163302703063'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/08/canadians-make-your-voice-heard.html' title='Canadians: make your voice heard'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4571498378634128270</id><published>2009-07-28T15:08:00.002-04:00</published><updated>2009-07-28T15:10:01.250-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='gcds'/><title type='text'>GCDS / GUADEC slides and videos</title><content type='html'>&lt;a href="http://people.canonical.com/~jriddell/gcds-presentations-2009/"&gt;Slides&lt;/a&gt;. &lt;a href="http://www.geeksoc.org/gcds/"&gt;Videos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If your slides are not there, send them in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4571498378634128270?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4571498378634128270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4571498378634128270&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4571498378634128270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4571498378634128270'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/07/gcds-guadec-slides-and-videos.html' title='GCDS / GUADEC slides and videos'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2783874058554383965</id><published>2009-07-06T02:06:00.004-04:00</published><updated>2009-07-06T03:00:02.678-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>GCDS days 0,1,2, GUADEC day 1</title><content type='html'>Lots going on here in Las Palmas de Gran Canaria.  Here's my update as of Monday 7AM while I wait for breakfast to be served:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Done so far:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All day old+new GNOME &lt;a href="http://www.vuntz.net/journal/post/2009/07/03/GNOME-Foundation-Board-Meeting-at-GUADEC"&gt;meeting&lt;/a&gt;, featuring Rosanna this year.  On my defense, I was jetlagged and had to take that nap.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Opening party sponsored by Canonical.  Got to see many many old and new faces and partied till 3AM, at which point we walked on the beach back to our hotel rooms.&lt;/li&gt;&lt;li&gt;Still managed to wake up at 8:30 and sit on the opening panel at 10.  Though Vincent &lt;a href="http://www.vuntz.net/journal/post/2009/07/04/GUADEC-tidbits-1"&gt;thinks&lt;/a&gt; that I was quite sleepy,&lt;/li&gt;&lt;li&gt;Sat through morning keynotes.  Loved Walter Bender's presentation tool.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Had board meeting with RMS over lunch.  As usual, he ordered for everyone and it was pretty good.  We talked about a couple issues.  Nothing surprising.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Took an afternoon nap and woke up to prepare for my talk 10AM the next day.  Finally started typing around midnight, and my performance didn't hit its peak until 3AM or so.  Skipped sleep and finished the slides right on time at 8:30AM.  The actual &lt;a href="http://behdad.org/download/Presentations/slippy/stateoftext_slides.pdf"&gt;slides&lt;/a&gt; didn't make more than 30 min to prepare since I used &lt;a href="http://cgit.freedesktop.org/%7Ebehdad/slippy/"&gt;slippy&lt;/a&gt; again.  For the first time however, I first wrote a paper about what I wanted to talk about: &lt;a href="http://behdad.org/text"&gt;State of Text Rendering&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Got to the venue, took us ten minutes to find the room, right on time, first session, 10AM, no surprise: no one there.  I knew these back-to-back 30min slots are going to be a pain (I didn't decide).  Anyway, projector issues, and people just starting to come in, I started at 10:15AM and managed to skip enough stuff to finish on time at 10:30.  But &lt;a href="http://mjg59.livejournal.com/"&gt;Matthew&lt;/a&gt; didn't show up until 10:50, so I had to entertain people and do a demo of Matthew's stuff.  Was good to see &lt;a href="http://behindkde.org/people/tron/"&gt;Simon Hausmann&lt;/a&gt; again.&lt;/li&gt;&lt;li&gt;Sat through the Poppler talk and finally met Albert&lt;em&gt;&lt;/em&gt; Astals Cid, the Poppler maintainer.  Another benefit of co-location.&lt;/li&gt;&lt;li&gt;Attended the real GUADEC opening in the afternoon with Owen's GNOME Shell keynote.  Neat stuff.  Got to start playing with it.&lt;/li&gt;&lt;li&gt;MIA: Had to skip the Nokia party.  I hear it was one of the better GUADEC parties, with some real action going on and what not.  Oh well.  Hopefully I'll make up for it at the Igalia party tonight :-D.&lt;/li&gt;&lt;li&gt;Actually wrote my school paper about my pre-election activities.   Finished by the deadline which at 5AM.  Pretty happy about it.  May clean it up and publish it here later.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Still TODO:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Meet with Rosanna, Stormy, and J5 today to prepare the foundation finance presentation for adboard and AGM.&lt;/li&gt;&lt;li&gt;Advisory board meeting all day tomorrow (downstairs in Fataga).&lt;/li&gt;&lt;li&gt;Prepare GUADEC+Akademy survey to hand out later in the week to see what we are supposed to do for next year.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GNOME+KDE board meeting to discuss next year plans among other things.&lt;/li&gt;&lt;li&gt;GNOME Foundation AGM on Thursday 10AM.  Ugh, first session again.  Hope it's not a no show.  Please be there!&lt;/li&gt;&lt;li&gt;Meet with Albert to discuss fontconfig issues in Poppler as well as better PDF text extraction.&lt;/li&gt;&lt;li&gt;Meet with &lt;a href="http://aruiz.typepad.com/siliconisland/"&gt;Alberto&lt;/a&gt; to discuss/design new font chooser dialog.&lt;/li&gt;&lt;li&gt;Meet with &lt;a href="http://www.robster.org.uk/blog"&gt;Robster&lt;/a&gt; to make him learn how to use &lt;a href="http://cgit.freedesktop.org/%7Ebehdad/slippy/"&gt;slippy&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Meet with Simon Hausmann to discuss HarfBuzz progress.&lt;/li&gt;&lt;li&gt;Meet with &lt;a href="http://blogs.gnome.org/jrb"&gt;Jonathan&lt;/a&gt; since we're both here.&lt;/li&gt;&lt;li&gt;Meet with &lt;a href="http://blog.fishsoup.net/"&gt;Owen&lt;/a&gt; and &lt;a href="http://blogs.gnome.org/bratsche"&gt;Cody&lt;/a&gt; for a quick Pango BoF, discussing extended attributes and extending markup as well as HarfBuzz plans.&lt;/li&gt;&lt;li&gt;Perhaps do a BoF on Iran situation since that's the first thing everyone asks.  Drop me a line if you're interested.&lt;/li&gt;&lt;/ul&gt;Humm, anything I'm missing?  Poke me if we should meet.  Now to breakfast.  I'll give fixing my sleeping schedule another try next.  Good morning everyone in the mean time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2783874058554383965?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2783874058554383965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2783874058554383965&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2783874058554383965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2783874058554383965'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/07/gcds-days-012-guadec-day-1.html' title='GCDS days 0,1,2, GUADEC day 1'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6632255645676441183</id><published>2009-07-03T11:51:00.002-04:00</published><updated>2009-07-03T12:56:21.208-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>GUADEC Day 0</title><content type='html'>Had an excellent afternoon in Amsterdam with my old buddy Mehrdad.  Well, the first officer at the Amsterdam border didn't want to let me although I had a Schengen visa, the second one was happy to do so.&lt;br /&gt;&lt;br /&gt;Anyway, got to Gran Canaria last night just before midnight, but my luggage decided to spend a night in Barcelona...&lt;br /&gt;&lt;br /&gt;Was in board meeting all day today.  Vincent is working on sending out the minutes right away.&lt;br /&gt;&lt;br /&gt;Looking forward to meeting everyone at the opening party tonight at 9.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6632255645676441183?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6632255645676441183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6632255645676441183&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6632255645676441183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6632255645676441183'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/07/guadec-day-0.html' title='GUADEC Day 0'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2550429987729648988</id><published>2009-07-03T05:44:00.001-04:00</published><updated>2009-07-03T07:11:13.864-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>GUADEC: Where are you staying?</title><content type='html'>Fill it in: &lt;a href="http://live.gnome.org/GUADEC/2009/Rooms"&gt;l.g.o/GUADEC/2009/Rooms&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2550429987729648988?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2550429987729648988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2550429987729648988&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2550429987729648988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2550429987729648988'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/07/guadec-where-are-you-staying.html' title='GUADEC: Where are you staying?'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3586769895598351319</id><published>2009-06-28T19:08:00.003-04:00</published><updated>2009-06-28T19:10:12.932-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='amsterdam'/><title type='text'>Amsterdam on Thursday</title><content type='html'>On my looong way to Gran Canaria Desktop Summit later this week I'll have a six-hour afternoon stop in Amsterdam, perfect for grabbing lunch and a walk around town.  Anyone interested drop me a line.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;behdad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3586769895598351319?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3586769895598351319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3586769895598351319&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3586769895598351319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3586769895598351319'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/amsterdam-on-thursday.html' title='Amsterdam on Thursday'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4131393342470638596</id><published>2009-06-19T13:15:00.001-04:00</published><updated>2009-06-19T13:17:43.793-04:00</updated><title type='text'>"The Wall"</title><content type='html'>To the friend or friend-of-friend in Toronto who borrowed my "Pink Floyd  The Wall" DVD please return it ASAP.  It was gift, and I want to watch it again this weekend.  Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4131393342470638596?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4131393342470638596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4131393342470638596&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4131393342470638596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4131393342470638596'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/wall.html' title='&quot;The Wall&quot;'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7224679897799139803</id><published>2009-06-18T11:26:00.002-04:00</published><updated>2009-06-18T11:26:36.309-04:00</updated><title type='text'>The Times They Are A-Changin'</title><content type='html'>"The line it is drawn, the curse it is cast,&lt;br /&gt; The slow one now will later be fast,&lt;br /&gt; As the present now will later be past,&lt;br /&gt; The order is rapidly fading&lt;br /&gt; And the first one now will later be last,&lt;br /&gt; for The Times They Are A-Changin' "&lt;br /&gt;--Bob Dylan, 1963&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7224679897799139803?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7224679897799139803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7224679897799139803&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7224679897799139803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7224679897799139803'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/line-it-is-drawn-curse-it-is-cast-slow.html' title='The Times They Are A-Changin&apos;'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3731702375250569386</id><published>2009-06-10T17:08:00.002-04:00</published><updated>2009-06-10T18:21:41.671-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fontconfig'/><title type='text'>If you see Keith Packard, say hello</title><content type='html'>Tell him to give me commit access to fontconfig.  He stopped responding to my multiple pings and other messages a while ago.&lt;br /&gt;&lt;br /&gt;The last fontconfig release happened over a year ago.  I've been hacking on fontconfig and reviewing and committing patches submitted by others since August, and &lt;a href="http://lists.freedesktop.org/archives/fontconfig/2009-March/003137.html"&gt;my tree&lt;/a&gt; has accumulated 190 commits so far, and touches about 7000 lines of code.&lt;br /&gt;&lt;br /&gt;My tree fixes more than half of the bugs open in upstream bugzilla.  It also includes many many performance improvements.  Consumes less memory.  Has a FcFontSort() call four times faster.  And adds many new features as well as support for many new languages.&lt;br /&gt;&lt;br /&gt;It also adds features needed for &lt;a href="http://blogs.gnome.org/hughsie/2008/12/01/packagekit-and-pango-are-now-friends/"&gt;automatic font installation&lt;/a&gt; using PackageKit.  This feature is &lt;a href="https://fedoraproject.org/wiki/Features/AutoFontsAndMimeInstaller"&gt;included&lt;/a&gt; in Fedora 11, which means my tree is shipped in F11.  Other distros however are waiting for a tarball without "behdad" in the version tag before updating.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;behdad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3731702375250569386?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3731702375250569386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3731702375250569386&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3731702375250569386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3731702375250569386'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/if-you-see-keith-packard-say-hello.html' title='If you see Keith Packard, say hello'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1976705660764647016</id><published>2009-06-03T10:00:00.001-04:00</published><updated>2009-06-03T06:02:28.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME foot logo'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Love GNOME?  Show Your Support!</title><content type='html'>The new &lt;a href="http://www.gnome.org/friends/"&gt;Friends of GNOME&lt;/a&gt; program that was launched in January have been a great success.  I for one have certainly been &lt;a href="http://mces.blogspot.com/2009/03/lots-of-gnome-happenings.html"&gt;feeling the love&lt;/a&gt;.  &lt;a href="http://www.stormyscorner.com/"&gt;Stormy&lt;/a&gt; will be posting stats this week.&lt;br /&gt;&lt;br /&gt;In the mean time, if you use and enjoy &lt;a href="http://www.gnome.org/"&gt;GNOME&lt;/a&gt;, here's a few different ways you can support it:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.gnome.org/friends/"&gt;&lt;img style="float: right;" src="http://www.gnome.org/friends/banners/fog-120x240.png" alt="Become a Friend of GNOME" border="0" /&gt;&lt;/a&gt;If you have not already, opt in the &lt;a href="http://www.gnome.org/friends/"&gt;Adopt a Hacker&lt;/a&gt; monthly subscription.  It's the easiest way to contribute to GNOME in a sustained and affordable way.  Like they say, what are you waiting for? :)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you prefer one-time donations, you can &lt;a href="http://www.gnome.org/friends/"&gt;do that too&lt;/a&gt;.  Remember, GNOME is a registered non-profit and donations are tax-deductible in the US.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;You can also support GNOME by letting your friends know about it.  Just go to &lt;a href="http://www.gnome.org/friends/promote.html"&gt;this&lt;/a&gt; page and post one of the badges to your blog or website.  Thanks in advance!&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Finally, as a special offer, the first person to donate to GNOME in the Philanthropist level ($1200 or more) will receive the following framed art work with an engraved plaque recognizing your contribution:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://behdad.org/blog/mces/image/2gnome-ram-award-you.jpg" title="Click for larger size"&gt;&lt;img src="http://behdad.org/blog/mces/image/5gnome-ram-award-you.jpg" /&gt;&lt;/a&gt;&lt;br&gt;&lt;span style="font-size: smaller"&gt;(Click to enlarge)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;The frame is 13"x18" and comes with over 4GB of ram!  Perfect for a GNOME-Friendly office.  If you attend GUADEC this year, it will be handed to you by the GNOME Foundation board of directors there.  If not, we'll make other arrangements.  Contact me at behdad-gnome-org to claim.  First come first serve!&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/5400308-1976705660764647016?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1976705660764647016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1976705660764647016&amp;isPopup=true' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1976705660764647016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1976705660764647016'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/love-gnome-show-your-support.html' title='Love GNOME?  Show Your Support!'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2826198255776977239</id><published>2009-06-01T18:20:00.002-04:00</published><updated>2009-06-01T18:32:19.730-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ad'/><category scheme='http://www.blogger.com/atom/ns#' term='hsbc'/><title type='text'>"Your Point of View"</title><content type='html'>If you travel frequently, chances are you've seen many of the HSBC "Your Point of View" airport ads already.  Everytime I'm boarding an aircraft or getting out of mine I enjoy them and want to blog about them, but by the time I have internet access I've already forgotten.&lt;br /&gt;&lt;br /&gt;So I was delighted to finally look them up and find them &lt;a href="http://www.yourpointofview.com/page03.html"&gt;here&lt;/a&gt;.  They are truly brilliant.  Here's a couple favorites of mine:&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://www.yourpointofview.com/img/old_preview/pleasure.jpg" style="width: 80%" /&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://www.yourpointofview.com/img/old_preview/trendy.jpg" style="width: 80%" /&gt;&lt;br&gt;&lt;br&gt;&lt;img src="http://www.yourpointofview.com/img/old_preview/unbearable.jpg" style="width: 80%" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2826198255776977239?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2826198255776977239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2826198255776977239&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2826198255776977239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2826198255776977239'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/06/your-point-of-view.html' title='&quot;Your Point of View&quot;'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6894240287741780920</id><published>2009-05-14T22:57:00.000-04:00</published><updated>2009-05-14T22:57:39.025-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>GUADEC schedule now available, 2009 edition</title><content type='html'>Ok, we're finally ready to share with you the final GUADEC 2009 schedule:&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://behdad.org/blog/mces/images/guadec-2009-schedule.jpg"&gt;&lt;/p&gt;&lt;p&gt;Err, I mean, &lt;a href="http://www.gnome.org/~behdad/guadec/2009/schedule/"&gt;GUADEC 2009 schedule&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Expect minor changes, but this is basically it.  We'll add the Saturday schedule in ASAP.  Lightning talks go there as well as keynotes.  For more information about non-GUADEC activities see &lt;a href="http://www.grancanariadesktopsummit.org/node/10"&gt;the main site&lt;/a&gt; for the event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6894240287741780920?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6894240287741780920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6894240287741780920&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6894240287741780920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6894240287741780920'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/05/guadec-schedule-now-available-2009.html' title='GUADEC schedule now available, 2009 edition'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4326261446616010137</id><published>2009-05-14T21:21:00.002-04:00</published><updated>2009-05-14T21:41:22.432-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='doctorow'/><category scheme='http://www.blogger.com/atom/ns#' term='stillmotion'/><title type='text'>Cory Doctorow at the White Pine Awards</title><content type='html'>&lt;image style="float: right" src="http://behdad.org/blog/mces/image/cory-whitepine.jpg" title="Cory Doctorow holding the White Pine award"&gt;By pure chance I got to know that Cory Doctorow will be in Toronto to attend the &lt;a href="http://www.accessola.com/forest2009/WhitePine/&lt;br /&gt;"&gt;White Pine award&lt;/a&gt; ceremony, part of Ontario Library Association's "Forest of Reading" program.&lt;br /&gt;&lt;br /&gt;So I went to Harbourfront Centre yesterday and was delighted to see &lt;strong&gt;&lt;a href="http://craphound.com/littlebrother/"&gt;Little Brother&lt;/a&gt;&lt;/strong&gt; win the White Pine award, making it the popular choice among Ontario's high-school students.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://en.wikipedia.org/wiki/Stop-motion"&gt;stop-motion&lt;/a&gt; / &lt;a href="http://en.wikipedia.org/wiki/Still-Motion"&gt;still-motion&lt;/a&gt; video I put together:&lt;/p&gt;&lt;p align="center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7V_i5j5IFSw&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/7V_i5j5IFSw&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br/&gt;&lt;a href="http://www.youtube.com/watch?v=7V_i5j5IFSw"&gt;YouTube&lt;/a&gt; &lt;a href="http://www.vimeo.com/4644828"&gt;Vimeo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4326261446616010137?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4326261446616010137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4326261446616010137&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4326261446616010137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4326261446616010137'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/05/cory-doctorow-at-white-pine-awards.html' title='Cory Doctorow at the White Pine Awards'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4994035816958020722</id><published>2009-05-12T00:44:00.002-04:00</published><updated>2009-05-12T00:50:02.338-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='running'/><title type='text'>Marathon?</title><content type='html'>&lt;a href="http://blogs.gnome.org/bolsh/2009/05/11/run-a-marathon-check/"&gt;Two&lt;/a&gt; &lt;a href="http://www.gnome.org/~csaavedra/news-2009-05.html#D10"&gt;posts&lt;/a&gt; about running Marathons on Planet GNOME tonight.  Congrats to Dave for finishing his first Full Marathon in 3h26'33 and Claudio for doing his first Half in 2h25'!&lt;br /&gt;&lt;br /&gt;Can't help by sharing my own plans.  I was training for a Full last Summer but managed to injure my feet in my 26km run.  Well, shedding the gained weight right now and planning to start training in a week.  I'm aiming for the September / October races around Toronto.  We'll see...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4994035816958020722?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4994035816958020722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4994035816958020722&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4994035816958020722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4994035816958020722'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/05/marathon.html' title='Marathon?'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1720863745464112444</id><published>2009-05-01T16:35:00.005-04:00</published><updated>2009-05-04T18:21:32.443-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mba'/><title type='text'>Back to School</title><content type='html'>Last Saturday I sat all day through the first session of my Managerial Negotiations class, the first course in the &lt;a href="http://www.rotman.utoronto.ca/eveningmba/"&gt;part-time MBA program&lt;/a&gt; I just started.&lt;br /&gt;&lt;br /&gt;It's a three year program that fits perfectly in my habit of major-change-every-three-years life cycle.&lt;br /&gt;&lt;br /&gt;Pretty excited to join Rotman.  If you've read &lt;a href="http://en.wikipedia.org/wiki/The_Opposable_Mind"&gt;The Opposable Mind&lt;/a&gt;, you know what I mean.  It shouldn't affect my other duties in a measurable way.  Or so I hope.  Plus, I try to blog about what I learn as I learn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1720863745464112444?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1720863745464112444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1720863745464112444&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1720863745464112444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1720863745464112444'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/05/back-to-school.html' title='Back to School'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-9057279100228503335</id><published>2009-04-29T15:11:00.003-04:00</published><updated>2009-04-29T15:18:33.873-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Git Tips and Tricks</title><content type='html'>Good to see GNOME &lt;a href="http://hoegsberg.blogspot.com/2009/04/git-day-plus-week.html"&gt;happily using git&lt;/a&gt;.  It turned out to be a surprisingly smooth process.  Thanks &lt;a href="http://hoegsberg.blogspot.com/"&gt;krh&lt;/a&gt; and &lt;a href="http://blog.fishsoup.net/"&gt;owen&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Some of us have been busy working on the &lt;a href="http://live.gnome.org/Git"&gt;docs&lt;/a&gt;.  There's still a lot to write, edit, and polish (help appreciated!).  My favorite page is the &lt;a href="http://live.gnome.org/Git/Tips"&gt;Git Tips and Tricks&lt;/a&gt;.  I learned a couple new tricks myself, so thought I share.   Add yours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-9057279100228503335?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/9057279100228503335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=9057279100228503335&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9057279100228503335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/9057279100228503335'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/04/git-tips-and-tricks.html' title='Git Tips and Tricks'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3783553075319490834</id><published>2009-03-25T17:21:00.000-04:00</published><updated>2009-03-27T17:22:53.159-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='gsoc'/><category scheme='http://www.blogger.com/atom/ns#' term='elections'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Lots of GNOME happenings</title><content type='html'>Many good things have been happening around GNOME.  Others have already blogged about most of them, so I cheat and link frequently.&lt;/p&gt;&lt;h2&gt;A Very Late “Happy New Release”&lt;/h2&gt;&lt;p&gt;The release team did it again: GNOME 2.26 was release&lt;br /&gt;d on &lt;strong&gt;March 18th&lt;/strong&gt;, on schedule to the day.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://library.gnome.org/misc/release-notes/2.26/"&gt;&lt;img src="http://behdad.org/blog/mces/image/two-twenty-six.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks everyone involved: translators, developers, release engineers, and release note authors.&lt;br /&gt;&lt;br /&gt;Humm, darn, I just remember that I didn't hold a release party this time.  What a shame.  I sure have been busy.  More on that later.&lt;/p&gt;&lt;h2&gt;Google Summer of Code&lt;/h2&gt;&lt;p&gt;It's that time of the year again.  GNOME is participating in &lt;a href="http://code.google.com/soc/"&gt;Google Summer of Code&lt;/a&gt; 2009.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://live.gnome.org/SummerOfCode2009"&gt;&lt;img src="http://behdad.org/blog/mces/image/summer-of-code-2009.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The deadline for submitting student applications is &lt;strong&gt;April 3rd&lt;/strong&gt;.  For more information (for both students and mentors) as well as project ideas &lt;a href="http://live.gnome.org/SummerOfCode2009"&gt;check here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I decided not to run &lt;a href="http://www.cairographics.org/"&gt;cairo&lt;/a&gt; for GSoC again.  And I'm not involved in the GNOME GSoC organization.  That makes this year the first GSoC that I have no involvement in.  I plan to pick up again next year.  That said, I'll be in a GSoC panel at &lt;a href="http://www.toronto.edu/"&gt;UofT&lt;/a&gt; next Tuesday March 31st, in GB244.  Students welcome.&lt;/p&gt;&lt;h2&gt;GUADEC Call for Participation&lt;/h2&gt;&lt;p&gt;The &lt;a href="http://www.grancanariadesktopsummit.org/"&gt;Gran Canaria Desktop Summit&lt;/a&gt; website is finally up and running.  Which means, you can register for GUADEC now.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://grancanariadesktopsummit.org/"&gt;&lt;img src="http://behdad.org/blog/mces/image/grancanria.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href="http://grancanariadesktopsummit.org/node/43"&gt;Call for Participation&lt;/a&gt; is also up.  &lt;strong&gt;April 10&lt;/strong&gt; is the deadline for submissions.  So, hurry up!  Bastien, Emmanuele, Paul, Ross, Ryan, as well as myself will review the submissions.&lt;br /&gt;&lt;br /&gt;The conference layout is going to be different this year, which makes scheduling harder.  Earlier-than-last-night-and-late submissions are highly appreciated.  Yes, I'm talking to &lt;strong&gt;You ☟&lt;/strong&gt;.&lt;/p&gt;&lt;h2&gt;Next Foundation Elections&lt;/h2&gt;&lt;p&gt;The current GNOME Foundation Board of Directors' term ends on &lt;strong&gt;June 30th&lt;/strong&gt;.  Which means elections will be coming up in a month or two as &lt;a href="http://www.vuntz.net/journal/post/2009/03/24/Next-GNOME-Foundation-Elections"&gt;Vincent&lt;/a&gt; explains.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://foundation.gnome.org/"&gt;&lt;img src="http://behdad.org/blog/mces/image/gnome-foundation-banner.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Take a couple minutes and read his post again if you are passionate about GNOME.&lt;br /&gt;&lt;br /&gt;The board work can be frustrating at times, but in the long run it can be quite rewarding.  While I miss the days that I could focus on coding and let others worry about organization, money, etc, I'll be running again this year.&lt;/p&gt;&lt;h2&gt;Friends of GNOME Love &lt;span style="color:red;"&gt;♥&lt;/span&gt;&lt;/h2&gt;&lt;p&gt;In January we &lt;a href="http://blogs.gnome.org/lucasr/2009/01/14/new-friends-of-gnome/"&gt;launched&lt;/a&gt; the new &lt;a href="http://www.gnome.org/friends/"&gt;Friends of GNOME&lt;/a&gt; website.  The main feature of the new site has an option for recurring donations, called &lt;strong&gt;Adopt a Hacker&lt;/strong&gt;.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.gnome.org/friends/"&gt;&lt;img src="http://behdad.org/blog/mces/image/friend-of-gnome.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The fun part about the Adopt a Hacker option is that you get to choose your favorite hacker from a list of about a dozen hackers, and the adopted hacker will send you a postcard as a token of appreciation.&lt;br /&gt;&lt;br /&gt;One thing about the postcard idea is that since we started the program recently, we are still sorting out the logistics and no postcards have been sent out yet.  Which I guess will make receiving it more unexpected for our friends, and hopefully more delightful.&lt;br /&gt;&lt;br /&gt;I certainly felt that way when I came back from vacation a few weeks ago and found this in my mail box:&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://behdad.org/blog/mces/image/love-postcard.png" /&gt;&lt;/p&gt;&lt;p&gt;The back of the card reads:&lt;/p&gt;&lt;blockquote&gt;Hi!&lt;br /&gt;I recently joined this&lt;br /&gt;adopt-a-hacker programme&lt;br /&gt;It is something about post&lt;br /&gt;cards.  I think I am&lt;br /&gt;supposed to send you&lt;br /&gt;one?  See you soon.&lt;br /&gt;&lt;span style="margin-left: 6em;"&gt;R&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;Thanks you R from Zürich.  Now I owe you two.  And I feel adopted!&lt;br /&gt;&lt;br /&gt;So, what are you waiting for?  &lt;a href="http://www.gnome.org/friends/"&gt;Adopt a Hacker&lt;/a&gt; today!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3783553075319490834?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3783553075319490834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3783553075319490834&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3783553075319490834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3783553075319490834'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/03/lots-of-gnome-happenings.html' title='Lots of GNOME happenings'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8184427407324338731</id><published>2009-03-24T22:57:00.004-04:00</published><updated>2009-03-25T00:44:02.906-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AdaLovelaceDay09'/><title type='text'>Finding Ada: Leigh Honeywell</title><content type='html'>Happy &lt;a href="http://findingada.com/"&gt;Ada Lovelace Day&lt;/a&gt;!  I like to dedicate this blog post to a tech heroine of mine in Toronto, &lt;a href="http://hypatia.ca/"&gt;Leigh 'hypatia' Honeywell&lt;/a&gt;.&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/yarnivore/3321946186/"&gt;&lt;img src="http://farm4.static.flickr.com/3561/3321946186_ef81273fc7_d.jpg"&gt;&lt;br&gt;"headshot for Leigh"&lt;br&gt;by Leigh Honeywell&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I think I first met Leigh at Jeff Waugh's &lt;a href="http://mces.blogspot.com/2005/10/gnome-and-ubuntu-talk-jeff-waugh-in.html"&gt;talk in Toronto&lt;/a&gt;.  I met her again at &lt;a href="http://linuxcaffe.ca/"&gt;Linux Caffe&lt;/a&gt; a few times over the years.  She's full of awesome, but what makes her my heroine is her recent work founding and running &lt;a href="http://hacklab.to/"&gt;hacklab.to&lt;/a&gt;.  I can't do justice describing how awesome she is.  Simply go to the &lt;a href="http://hacklab.to/"&gt;hacklab.to&lt;/a&gt; website and read about what she's up to.&lt;br /&gt;&lt;br /&gt;Anyway.  Good job girl.  Way to go!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8184427407324338731?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8184427407324338731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8184427407324338731&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8184427407324338731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8184427407324338731'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/03/finding-ada-leigh-honeywell.html' title='Finding Ada: Leigh Honeywell'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1663841501139660891</id><published>2009-01-29T16:47:00.004-05:00</published><updated>2009-01-29T17:19:27.041-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lazyweb'/><title type='text'>Dear Lazyweb: RSI therapy around Toronto</title><content type='html'>I've wanted to ask about this for years:  Anyone knows any doctors around Toronto who know what to do about &lt;a href="http://en.wikipedia.org/wiki/Repetitive_strain_injury"&gt;RSI&lt;/a&gt;?  A few years ago I had wrist issues but got over that.  These days my fingers are killing me...  Constant pain, even when I'm not typing...  And yes, I have good keyboard, I take regular breaks, I stretch, I use stress balls, ...&lt;br /&gt;&lt;br /&gt;Thanks in advance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1663841501139660891?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1663841501139660891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1663841501139660891&amp;isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1663841501139660891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1663841501139660891'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/01/dear-lazyweb-rsi-therapy-around-toronto.html' title='Dear Lazyweb: RSI therapy around Toronto'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2483867882421026895</id><published>2009-01-23T15:43:00.001-05:00</published><updated>2009-01-23T15:56:14.610-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rms'/><title type='text'>Richard Stallman Canadian Tour</title><content type='html'>Noticed that RMS is doing a Canadian tour these days.  &lt;a href="http://www.fsf.org/events/rms-speeches.html"&gt;Scheduled&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2483867882421026895?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2483867882421026895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2483867882421026895&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2483867882421026895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2483867882421026895'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/01/richard-stallman-canadian-tour.html' title='Richard Stallman Canadian Tour'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3402883091730538229</id><published>2009-01-07T18:23:00.002-05:00</published><updated>2009-01-07T18:29:55.469-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animation'/><title type='text'>Two short anims</title><content type='html'>Via my brother &lt;a href="http://behnam.esfahbod.info/"&gt;Behnam&lt;/a&gt;:&lt;ul&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.tomidland.no/corewars2.php?mnu=pop"&gt;Corewars 2&lt;/a&gt;:&lt;/strong&gt; "a shortfilm parody", featuring the Shadowman himself&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.tomidland.no/patamat.php?mnu=pop"&gt;To gode naboer - Data&lt;/a&gt;:&lt;/strong&gt; A funny modern-day Pat 'n Mat animation&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/5400308-3402883091730538229?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3402883091730538229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3402883091730538229&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3402883091730538229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3402883091730538229'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/01/two-short-anims.html' title='Two short anims'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-444514821707490496</id><published>2009-01-03T22:41:00.001-05:00</published><updated>2009-01-03T22:43:25.864-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dvcs'/><category scheme='http://www.blogger.com/atom/ns#' term='survey'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GNOME DVCS Survey Results</title><content type='html'>In December I ran a distributed version control system survey for GNOME.  From the survey opening page:&lt;blockquote&gt;Thank you for taking the GNOME DVCS Survey.  This survey is run on behalf of the GNOME Foundation board of directors, release team, and sysadmin team. The GNOME project is planning a possible move from SVN to a distributed version control system in 2009.  The contenders for the system to use are bzr, git, and hg.  The aim of the survey is to help us better understand familiarity and preferences of our active contributor base regarding the future version control system for GNOME.  The survey results will be informational and will be sent to foundation-list and desktop-devel-list upon completion.&lt;/blockquote&gt;GNOME contributors with an SVN account who had an SSH key installed on their account were invited to fill in the survey.  A total of 1083 account holders were invited, and 579 filled in the survey.  The survey results are now available to the public &lt;a href="http://www.gnome.org/~behdad/dvcs-survey/"&gt;here&lt;/a&gt;.  &lt;a href="http://blogs.gnome.org/newren/"&gt;Elijah&lt;/a&gt; did an initial analysis of the data.  His analysis also includes the survey questions and answers.  Find it &lt;a href="http://blogs.gnome.org/newren/2009/01/03/gnome-dvcs-survey-results/"&gt;here&lt;/a&gt;.  If you analyze the results, please leave a comment on this post linking to your analysis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-444514821707490496?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/444514821707490496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=444514821707490496&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/444514821707490496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/444514821707490496'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2009/01/gnome-dvcs-survey.html' title='GNOME DVCS Survey Results'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8393502286884624064</id><published>2008-12-27T21:01:00.006-05:00</published><updated>2008-12-28T01:00:58.052-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vte'/><category scheme='http://www.blogger.com/atom/ns#' term='gcc'/><category scheme='http://www.blogger.com/atom/ns#' term='warnings'/><title type='text'>Year-end Cleaning (ie. on warning options)</title><content type='html'>Benjamin Otte recently &lt;a href="http://blogs.gnome.org/otte/2008/12/22/warning-options/"&gt;blogged&lt;/a&gt; about compiler warning options.  Now, to use or not to use &lt;code&gt;-Werror&lt;/code&gt; is something Benjamin and I have wasted hours discussing, but that's not the point here.&lt;br /&gt;&lt;br /&gt;The reason that I thought I blog and link to his post is that compiler warnings are very useful tools for writing good code.  These days, when I run my C code, it typically works the first time.  That's not as much a complement to me as it is to my compiler.  That's because by the time I finish fixing all the warnings, all the trivial bugs are gone too.  Any C programmer must have a large set of warning options he enables, and here is mine:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;-fno-common&lt;br /&gt; -Wall&lt;br /&gt;-Wdeclaration-after-statement&lt;br /&gt;-Wextra&lt;br /&gt;-Wformat=2&lt;br /&gt;-Winit-self&lt;br /&gt;-Winline&lt;br /&gt;-Wpacked&lt;br /&gt;-Wp,-D_FORTIFY_SOURCE=2&lt;br /&gt; -Wpointer-arith&lt;br /&gt;-Wlarger-than-65500&lt;br /&gt;-Wmissing-declarations&lt;br /&gt;-Wmissing-format-attribute&lt;br /&gt;-Wmissing-noreturn&lt;br /&gt;-Wmissing-prototypes&lt;br /&gt;-Wnested-externs&lt;br /&gt;-Wold-style-definition&lt;br /&gt;-Wredundant-decls&lt;br /&gt;-Wsign-compare&lt;br /&gt; -Wstrict-aliasing=2&lt;br /&gt;-Wstrict-prototypes&lt;br /&gt;-Wswitch-enum&lt;br /&gt;-Wundef&lt;br /&gt;-Wunreachable-code&lt;br /&gt;-Wunsafe-loop-optimizations&lt;br /&gt;-Wwrite-strings&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;These ones I've used in the past but have disabled for one reason or the other:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;-Wbad-function-cast&lt;br /&gt;-Werror-implicit-function-declaration&lt;br /&gt;-Wfloat-equal&lt;br /&gt;-Wmissing-field-initializers&lt;br /&gt;-Wmissing-include-dirs&lt;br /&gt;-Wswitch-default&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;There are two that stand out: &lt;code&gt;-fno-common&lt;/code&gt; is not a warning flag strictly speaking, but it's as good as one.  &lt;code&gt;-Wp,-D_FORTIFY_SOURCE=2&lt;/code&gt; is not a warning flag either, but it enables some extra checks in glibc headers.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.gnome.org/otte/2008/12/22/warning-options/"&gt;Benjamin's post&lt;/a&gt; explains each warning he uses and why it's a good idea.  When in doubt, &lt;code&gt;man gcc&lt;/code&gt; is your friend.&lt;br /&gt;&lt;br /&gt;Now, the trick to using these is to always remember that these are warnings.  Some will trigger in very legitimate code.  That's why &lt;code&gt;-Werror&lt;/code&gt; is evil.  Warning flags are a very personal thing.  I don't like cluttering code I maintain with them.&lt;br /&gt;&lt;br /&gt;Anyway, I went ahead and fixed all warnings that Pango and Vte compilation generated.  Now I can see if my new code generates a warning.  Yay.&lt;br /&gt;&lt;br /&gt;Speaking of vte, it has been seeing some new development.  Last month I wrote a pangocairo rendering backend for it.  Later I implemented support for &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=149631"&gt;combining characters&lt;/a&gt;.  That wasn't easy as the vte code has a one-char-per-cell model hardcoded all over the code.  I retro-fitted more-than-one-char-per-cell on it vy using a new data type called &lt;a href="http://svn.gnome.org/viewvc/vte/trunk/src/vteunistr.c?view=markup"&gt;vteunistr&lt;/a&gt;.  ChPe has been adding new API, including adding GObject properties.  And we all have been ripping old code out.  Here is the summary of changes for the past six weeks:&lt;pre&gt;99 files changed, 6317 insertions(+), 14094 deletions(-)&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8393502286884624064?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8393502286884624064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8393502286884624064&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8393502286884624064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8393502286884624064'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/12/year-end-cleaning-ie-on-warning-options.html' title='Year-end Cleaning (ie. on warning options)'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6795740772233841834</id><published>2008-12-10T15:13:00.006-05:00</published><updated>2008-12-10T17:24:58.047-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='login'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-session'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-panel'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Improving Login Time, Part 3: bootcharting</title><content type='html'>Been a while since last instalment.  So, having tightened up gnome-settings-daemon, I headed to get an overview of the entire login process, using the venerable &lt;a href="http://www.bootchart.org/"&gt;bootchart&lt;/a&gt;.  Before I jump in, bootchart is cool and everything, but if someone wants a smallish project to hack on, port the bootchart graphing tool from Java to pycairo.  It's some 5k lines of code and should shrink considerably.  Then we can make an interactive tool based on that and other pycairo scripts we have.  I can see how that can turn into a profiler thingy in the long run...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/1.gnome-session.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/1.gnome-session.small.png" /&gt;&lt;/a&gt; For this assignment I updated my home machine to latest Fedora 10, created a new user, and bootcharted gnome-session in a warm login.  I got the chart at right (click to enlarge).  Lets see how it looks:&lt;ul&gt;&lt;li&gt;The CPU becomes idle at 18 seconds in.  The little activity lingering after is the bootchart overhead.  That's a long time to log in!&lt;/li&gt;&lt;li&gt;Doh, the CPU becomes idle for a couple of seconds in the middle.&lt;/li&gt;&lt;li&gt;There's intense CPU activity periods caused by a many processes, namely, gnome-settings-daemon, wnck-applet, clock-applet, gdm-user-switch, and less intense in gnome-panel, nautilus, notification-daemon, and sealert.&lt;/li&gt;&lt;li&gt;gnome-settings-daemon is terminating!&lt;/li&gt;&lt;/ul&gt;This doesn't look right.  Lets look at inside:&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The CPU idle time&lt;/h3&gt;Let me quote parts of &lt;a href="http://mces.blogspot.com/2008/10/improving-login-time-part-1-gnome.html"&gt;my first post&lt;/a&gt; about how gnome-session works: &lt;blockquote&gt;To transition to the next phase, the current phase should either complete or time out. A phase is complete when all apps associated with the phase signal completion. An app can signal completion in a variety of ways, the simplest of which being that the process terminates. A phase times out after ten seconds. Description for the phases as well as a more a longer version of this condensed overview is available in gnome-session/gnome-session/README.&lt;/blockquote&gt;  With that in mind, the two second idle looks a hell lot like a phase timeout.  Inspecting &lt;code&gt;~/.xsession-errors&lt;/code&gt; and searching for gnome-session confirms that:&lt;pre style="font-size: smaller;"&gt;gnome-session: Application 'libcanberra-login-sound' failed to register before timeout&lt;/pre&gt;Oh oh! &lt;code&gt;/usr/share/gnome/autostart/libcanberra-login-sound.desktop&lt;/code&gt; is where this &lt;em&gt;application&lt;/em&gt; lives, and it contains these lines:&lt;pre style="font-size: smaller;"&gt;Exec=/usr/bin/canberra-gtk-play --id="desktop-login" --description="GNOME Login"&lt;br /&gt;AutostartCondition=GNOME /desktop/gnome/sound/event_sounds&lt;br /&gt;X-GNOME-Autostart-Phase=Desktop&lt;/pre&gt;That is, it runs &lt;code&gt;canberra-gtk-play&lt;/code&gt; in the Desktop phase of gnome-session.  So what's happening?  gnome-session is waiting for canberra-gtk-play to finish playing login sound, how cool is that!?  Not only gnome-session waits for it to finish playing, even when it does (after five seconds), gnome-session fails to notice that.  So it waits another five seconds until the phase times out and it proceeds to the next phase.  To verify this, note that in the graph, canberra-gtk-play starts at about 3.2 seconds in, and the CPU picks up activity again, at 13.2.&lt;br /&gt;&lt;br /&gt;Why does it happen?  Shouldn't gnome-session at least continue after the five-second playing is over?  Well, yes according to the README document, no according to the code:&lt;pre style="font-size: smaller;"&gt;  if (manager-&gt;priv-&gt;phase == GSM_MANAGER_PHASE_INITIALIZATION) {&lt;br /&gt;       /* Applications from Initialization phase are considered&lt;br /&gt;        * registered when they exit normally. This is because&lt;br /&gt;        * they are expected to just do "something" and exit */&lt;br /&gt;       app_registered (app, manager);&lt;br /&gt;}&lt;/pre&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/2.gnome-session.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/2.gnome-session.small.png" /&gt;&lt;/a&gt; So, only Initialization phase was handled that way.  Not hard to fix.  Bug &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=563640"&gt;filed&lt;/a&gt;, &lt;a href="http://bugzilla.gnome.org/attachment.cgi?id=124315&amp;amp;action=view"&gt;patch&lt;/a&gt; submitted.  Then I also patched libcanberra to add a --background option to canberra-gtk-play.  &lt;a href="https://tango.0pointer.de/pipermail/libcanberra-discuss/2008-December/000145.html"&gt;Reported&lt;/a&gt; and &lt;a href="https://tango.0pointer.de/pipermail/libcanberra-discuss/attachments/20081207/805fb937/attachment.txt"&gt;patch&lt;/a&gt; submitted.  There is an alternate, much shorter, fix: move login sound to Application phase which is the last phase.  Applications in the Application phase are not required to notify the session of their startup.  That's a one line fix.  The gnome-session fix is still a good thing to do.  Anyway, with that fixed I got down from 18 to 13 seconds.  Not bad!&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The Mess&lt;/h3&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/3.gnome-panel.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/3.gnome-panel.small.png" /&gt;&lt;/a&gt; Lets see what's making the login take that long.  The last batch of processes to start are the panel applets (clock-applet, wcnk-applet, trashapplet, gdm-user-switch, and notification-area) that start around 8 seconds in.  The panel on the other hand starts at 3.  What is the panel doing for those 5 seconds?!  Time to switch tools and take a look inside panel.  Federico &lt;a href="http://www.gnome.org/%7Efederico/news-2008-02.html#panel-startup-2"&gt;looked&lt;/a&gt; at it in February, so I reused his patch and added more annotations as needed.  The image at right is the first timeline view of what's happening inside gnome-panel.  There are three large gaps there.  The first one is the linker working hard.  The second one is gnome_program_init().  I have absolutely no idea why those two are taking so long.  Those two are very unstable though and go up and down in different runs.  I will look into them later.&lt;br /&gt;&lt;br /&gt;But the largest gap by far is the third one, which happens inside the first size_request(), and after I added enough annotations, it became clear that it's happening when pango is measuring fonts for the first time.  Ouch!  Checking the &lt;code&gt;strace&lt;/code&gt; log, it becomes clear that fontconfig is opening three East Asian fonts.  Why?  It's not supposed to.  Well, at least not if its cache is up to date.  I then run &lt;code&gt;fc-match&lt;/code&gt; and observe that it takes over a second.  I try &lt;code&gt;fc-cache&lt;/code&gt; and it errs about not being able to update cache for two East Asian font directories on my system.  Humm, this is a first for me, although I confess I get reports about situations like this all the time...  Reading more log, it appeared that opening cache files in &lt;code&gt;~/.fontconfig&lt;/code&gt; was failing as Permission denied!  Weird stuff.  Inspecting ~/.fontconfig revealed the reason: It had the following permissions: &lt;code&gt;drw-rw-r--&lt;/code&gt;.  Where did the &lt;code&gt;x&lt;/code&gt; permissions go?  This was a new user account, so the first process to call into fontconfig would have been gnome-settings-daemon.  Oh my!  In one of my patches from &lt;a href="http://mces.blogspot.com/2008/11/improving-login-time-part-2-gnome.html"&gt;the last round&lt;/a&gt;, I had replaced a call to the glibc function &lt;code&gt;daemon()&lt;/code&gt; with custom code that I lifted from &lt;a href="http://preload.sf.net/"&gt;preload&lt;/a&gt;, which I had lifted from some other daemon back in 2005.  Anyway, seems like the daemonizing code there had a &lt;code&gt;umask (0177);&lt;/code&gt; call in it, and no one's eyes ever caught the bug there.  That mask is fine for files, but directories created under that are absolutely useless.  And since Nov 25 we backported those changes into Fedora 10!  Chaos!  I had to go clean that up.  Filed and fixed the &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=563543"&gt;bug&lt;/a&gt; in g-s-d first, and pushed fixed versions in F10 and rawhide.  Then filed &lt;a href="https://bugs.freedesktop.org/show_bug.cgi?id=18934"&gt;bug&lt;/a&gt; with fontconfig to fix it there too.  Will look into that this week.&lt;br /&gt;&lt;br /&gt;Next question was, why wasn't the system font cache updated anyway?  Normally the users should not need to cache anything unless they have installed fonts in their home directory.  I checked the RPM spec for the offending font packages.  Dang, the spec files had a &lt;code&gt;umask 0133&lt;/code&gt; before calling &lt;code&gt;fc-cache&lt;/code&gt;.  Oops.  Removed those and pushed updates out.  However, that does *not* justify it as fc-cache doesn't need to create any directory when updating system-wide caches.  That's still a mystery.  Got to reinstall the broken RPMs to see what's going on.&lt;br /&gt;&lt;br /&gt;Anyway, I then looked into gnome-settings-daemon to see why it was crashing.  It was gstreamer crashing it.  As I &lt;a href="http://mces.blogspot.com/2008/10/improving-login-time-part-1-gnome.html"&gt;found&lt;/a&gt; last time, gstreamer initialization forks and tries to update the cache.  The fork being there to not crash the parent process in case a plugin goes south.  However, if updating the cache fails in the child process, it then retries from the parent.  If that fails too, it just exits!  The reason it wasn't updating the cache successfully?  The same umask(0177).  Now I remember,  I can actually blame &lt;a href="http://www.vuntz.net/"&gt;Vincent&lt;/a&gt;!  When he was releasing GNOME 2.25.1.  IRC log from November 5th:&lt;br /&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; hrm, 2.25.1 doesn't look that good&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: my friend!&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: you're the one who touched main() in g-s-d&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: g-s-d starts and quits after a while, so I have no theme, etc.&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; vuntz: huh?&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; vuntz: you mean the child dies?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: I don't know, I just don't have any theme&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; works fine here&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; do a ps&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; see if it's running&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; and look for g-s-d in .xsession-errors&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: so, with gdb, I can see the theme applying after the fork()&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; and disappearing on exit()&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; disappearing on exit?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; back to default theme when the parent exits&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; so I guess the child exits too&lt;br /&gt;&lt;b style="color: rgb(6, 37, 133);"&gt;***behdad&lt;/b&gt; wonders whether it has to do with broken pipes&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; I'd guess so...&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; I did try to handle sigchld&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; ok, I need a definite answer to whether the child is running or not :)&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; it does not run after the parent exits, at least&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; humm&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; does your .xsession-errors hint why?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: nothing&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; umm&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: now I can blame you if I don't release 2.25.1 today, instead of blaming my headache :-)&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; humm&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; lemme see how to debug&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; does gdb tell why it exits?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: can I debug the child with gdb?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; oh, I guess I can just attach it&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; yeah&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; interesting&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; [gnome-settings-] &lt;defunct&gt;&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; that's what I have in ps after the fork&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; defuncts are zombies?&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; if you are still keeping parent live in gdb, that's expected after a child crash.&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; the question really is why it crashes.&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; but why is the theme still applied?&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; vuntz: ok&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; run with --no-daemon?&lt;br /&gt;&lt;b style="color: rgb(42, 146, 5);"&gt;mclasen:&lt;/b&gt; vuntz: gdb has a  setting to follow the child on fork&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: ah. It fails because gstreamer fails to init. Baah&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; bah&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; yeah, stupid gstreamer&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; forks and tries to initialize in child&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; then if that fails, tries to do the same in parent!&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; remove your gstreamer binary cache and recreate I guess&lt;br /&gt;&lt;b style="color: rgb(6, 37, 133);"&gt;***behdad&lt;/b&gt; goes back to writing blog post&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; vuntz: you fixed your gsd?&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; behdad: nah, but I'm sure it's a gstreamer issue now&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; ugh&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; ok, lemme know&lt;br /&gt;&lt;b style="color: rgb(22, 86, 158);"&gt;behdad:&lt;/b&gt; I'm writing to gstreamer devel about their cache right now&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; there's no cache for this user, fwiw&lt;br /&gt;&lt;b style="color: rgb(168, 47, 47);"&gt;vuntz:&lt;/b&gt; so...&lt;br /&gt;&lt;/defunct&gt;&lt;/div&gt;&lt;br /&gt;We totally had the bug in our hand and let it go.  Looked so innocent for sure.  Not very clear who let it go.  Vincent says he'll sue me for posting this log anyway.&lt;br /&gt;&lt;br /&gt;Later on I also got mail from a Fedora user saying that the umask thing also created problems for him with ORBit.  I already &lt;a href="https://sourceforge.net/mailarchive/forum.php?thread_name=493F00D5.5040900%40behdad.org&amp;amp;forum_name=gstreamer-devel"&gt;reported&lt;/a&gt; to gstreamer devs, and will fix the fontconfig one myself.  If anyone can look into ORBit, that would be great.&lt;br /&gt;&lt;br /&gt;Lesson learned the hard way:  In your library code, when you mkdir(), do a chmod() immediately.  If you have not been doing it before, you may also want to consider trying a chmod if writing to the directory fails.  umask issues have affected many many packages in Fedora before.  Users install RPMs with limited umask and all kind of things break.  better fix it in the libraries and programs, instead of distros adding umask to their specs and getting it wrong...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/4.gnome-panel.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/4.gnome-panel.small.png" /&gt;&lt;/a&gt;Oh, the timing.  Fixing these, the huge gap in the panel shrank drastically, from 1.4 seconds to 0.13 seconds.  130ms is still a long time to spend in fontconfig.  Seems like about 60% of that is just opening and reading/mmap'ing the config and cache files.  That can be improved by reducing the number of files: packaging more font files in the same directory, and avoiding micro config files.  Fortunately Nicolas is on the right track to fix these in Fedora.  The other 40% is spent on the first FcFontSort() call.  I have ideas about how to improve that, and will look into it in the coming days.&lt;br /&gt;&lt;br /&gt;Do we need to call into fontconfig there?  The panel needs to know the height of the default font to calculate the minimum panel height and enforce that.  Sounds like a good idea, but knowing that the panel properties dialog does not let you resize it to below the minimum height, this check is redundant unless you managed to modify the gconf key directly or changed the font size while panel was not running.  In other words, the exceptional case.  If we can avoid that call, g-s-m can go to next phase some 130ms earlier.&lt;br /&gt;&lt;br /&gt;There is another 90ms gap in the graph, and that is GTK+ finding the icon cache to use and loading the panel icon.  Right, the panel has an icon!  If I remove the &lt;code&gt;gtk_window_set_default_icon_name()&lt;/code&gt; call the gap shrinks considerably, but then when you ctrl+alt+tab you won't see the cute gnome-panel icon.  Donno, maybe we can set the icon later to avoid holding the entire session back for 90ms.&lt;br /&gt;&lt;br /&gt;Lets step back and look though.  fontconfig cache, gstreamer plugin cache, icon cache.  We've got so many caches, which actually do wonders, but just finding and opening them still takes a lot of time.  The gstreamer case is easy to fix since it has a single cache file in a single directory, it's just that it currently is doing unnecessary checks.  The fontconfig and icon caches are harder to fix.  The libraries have to look into multiple directories and read multiple config files to use the cache.  It stinks.  There used to be a short period of time that fontconfig generated one fat cache file for all the fonts. That's a terrible idea when you need to regenerate the cache every time a new font is installed.  But what if we had a "git gc"-like mode to merge multiple cache files into one?  New font dirs will go into new cache files, until next time, either manually or automatically, &lt;code&gt;fc-cache --compact&lt;/code&gt; is invoked...  I'll think about it.&lt;br /&gt;&lt;br /&gt;I said "holding the entire session back" twice in previous paragraphs.  This was not actually happening: gnome-panel was registering with the session as first thing in its main() (it's implied in the gnome_program_init() call), and the session was taking that as "I'm ready, go to next phase".  Which means that Nautilus may start up and draw icons before the panel has had a chance to set its struts.  Net result is that Nautilus icons will jump down when the panel gets to set up the struts.  So I &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=563635"&gt;wrote&lt;/a&gt; patch for that.  But that didn't fix the problem, another bug was in the play.  Two hours of debugging later, I &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=554343#c8"&gt;fixed&lt;/a&gt; that too.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The rest&lt;/h3&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/5.gnome-session.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/5.gnome-session.small.png" /&gt;&lt;/a&gt; With this mess cleaned, login time is back down to a sane 5.5s.  gnome-panel is not taking much CPU time anymore.  Nautilus some.  Other than those, two things stand out: &lt;code&gt;python&lt;/code&gt; and &lt;code&gt;sealert&lt;/code&gt;.  sealert is an applet to "View &amp;amp; interpret SELinux denials".  It's written in python.  Worse, when starting, it calls over D-BUS to start a server instance of itself, in another python process, and the two wait for SELinux denials to happen so they can report it to you using notification-daemon bubbles... for you to click and dismiss.  Srsly, what the heck is Aunt Tillie to do with them?  Forget Aunt Tillie, what is even a tech-savvy user to do with them?  We were at the Fedora 10 &lt;a href="http://overholt.ca/wp/?p=112"&gt;release party&lt;/a&gt; in Seneca a couple weeks ago and a user asked me what these bubbles are.  I explained to him, and he said "I just close them because they happen all the time".  Which is true.  It's great if you are debugging why your HTTP server does not serve your files, but is it good for anything else?  Certainly not enough to be enabled by default.  Please, disable sealert by default and help save the planet.   In the mean time, I also &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=563642"&gt;proposed&lt;/a&gt; adding an additional phase to gnome-session which would run after the Application phase and is for starting processes that do not render to the desktop immediately, because those can start at the end, to give a better perception of desktop having loaded completely.  sealert technically falls into that category.  In practice however, it pops up a bubble before the login is done.  In many setups at least.&lt;br /&gt;&lt;br /&gt;I think the same argument also applies to the &lt;code&gt;kerneloops-applet&lt;/code&gt;.  Maybe enable these in Rawhide so people report bugs, but disable them in stable release.  I'm pretty sure that's the right thing to do.  kerneloops-applet is quite light on the CPU though.  Removing sealert, kerneloops-applet, and some other lightweight tasks that I don't need, I get down to 4.5 seconds.  The biggest CPU consumer now is Nautilus, and it's taking three seconds to settle down.  Federico &lt;a href="http://www.gnome.org/%7Efederico/news-2006-03.html#login-time-1"&gt;looked&lt;/a&gt; into it before, and I will too at some point.  But I first want to fix fontconfig.  The &lt;acronym title="return on investment"&gt;ROI&lt;/acronym&gt; on that is huge: every application startup can become something between 50ms to 100ms faster if I my ideas work out.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Big picture&lt;/h3&gt;One wise Federico once &lt;a href="http://www.gnome.org/%7Efederico/docs/2007-02-FOSDEM/html/img25.html"&gt;said&lt;/a&gt; "Set concrete goals", although people now attribute that wisdom to &lt;a href="http://lwn.net/Articles/299483/"&gt;Arjan&lt;/a&gt; these days.  Regardless, let's set a concrete goal: I want to make Fedora default install, new user, warm login in three second.  That may not happen next year, but that's where we need to be if we ever want to boot, say, in 15 seconds.  Why optimize warm login when cold is so much worse?  Because to make cold login go under 5 seconds, one first has to make warm do that.  My other argument is that ideally people suspend their computer instead of shutting down, so first boot is the wrong thing to optimize.  Warm login on the other hand is still common in multi-user systems.  Moreover, my hope is that a 3 second warm login plus opportunistic preload'ing at login screen will give us a first login of about 5 seconds.  Long road to there; we will see.  By the way, 3.5 years later, Federico's GUADEC &lt;a href="http://www.gnome.org/%7Efederico/docs/2006-GUADEC/how-much-faster/index.html"&gt;keynote&lt;/a&gt; is still pure gold.&lt;br /&gt;&lt;br /&gt;How would we get there?  By making fontconfig not suck 100ms for each application.  By fixing Nautilus, whatever it is doing that it shouldn't.  By getting rid of libgnome dependencies.  By figuring out why linking is so slow.  And by not running sealert and other unnecessary stuff.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/6.gnome-session.cold.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/6.gnome-session.cold.small.png" /&gt;&lt;/a&gt; To keep things in perspective, lets have a quick look at cold login to see what's there to optimize.  The image at right shows a cold login of the same desktop I used above.   Lots of I/O, and 14 seconds login time.  The CPU goes way down for extend periods of time, when panel, Nautilus, pulseaudio, and python are all doing heavy I/O.  No idea what they are reading, but looks like something that should be possible to fix.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gnome.org/%7Ebehdad/login/3/7.gnome-session.preload.png"&gt;&lt;img style="float: right;" src="http://gnome.org/%7Ebehdad/login/3/7.gnome-session.preload.small.png" /&gt;&lt;/a&gt; This next one is with preload running.  Down to 12 seconds.  Not much really.  Looks like it failed to preload anything that those four I/O-heavy processes use.  No wonder, because preload can only preload stuff that are mmap()ed.  That mostly translates to shared libraries.  A more advanced prefetching solution, like Harold's readahead_collector that monitors all I/O will be able to solve this.  Oh, Harold by the way &lt;a href="http://www.harald-hoyer.de/personal/blog/fedora-10-disk-io"&gt;blogged&lt;/a&gt; recently about using &lt;a href="http://sourceware.org/systemtap/"&gt;systemtap&lt;/a&gt; to measure boot-time I/O.  He's actually looking at me to fix gconf I/O issues, and that's exactly what I'm going to do with his script when I get to that stage.&lt;br /&gt;&lt;br /&gt;If you read this far, I owe you your beverage of choice.  Find me at &lt;a href="http://www.grancanariadesktopsummit.org/"&gt;GUADEC+Akademy&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6795740772233841834?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6795740772233841834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6795740772233841834&amp;isPopup=true' title='38 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6795740772233841834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6795740772233841834'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/12/improving-login-time-part-3.html' title='Improving Login Time, Part 3: bootcharting'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>38</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1112905483028846079</id><published>2008-12-01T16:17:00.002-05:00</published><updated>2008-12-01T16:25:06.097-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='akademy'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><title type='text'>GUADEC+Akademy News</title><content type='html'>We are making some progress on the joint GUADEC+Akademy conference organization.  Time for a quick post.&lt;br /&gt;&lt;br /&gt;Last week we &lt;a href="http://www.gnome.org/press/releases/2008-11-25-grancanaria.html"&gt;announced&lt;/a&gt; the dates for the joint GUADEC+Akademy conference: July 3..11.&lt;br /&gt;&lt;br /&gt;Today the local team set up a twitter account for the event.  Follow &lt;a href="https://twitter.com/GCDS_2009"&gt;it&lt;/a&gt; to stay tuned!&lt;br /&gt;&lt;br /&gt;In two weeks teams from GNOME and KDE will meet with the local organizers on the spot to further work on organization.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.grancanariadesktopsummit.org/index.php/Main_Page"&gt;Combined event site&lt;/a&gt;.  We should be updating guadec.org soon.&lt;br /&gt;&lt;br /&gt;I also like to thank three long time GNOME lovers who kindly accepted to represent the board in GUADEC organization for next year: &lt;a href="http://aruiz.typepad.com/siliconisland/"&gt;Alberto Ruiz&lt;/a&gt;, Chema Casanova, and &lt;a href="http://blogs.gnome.org/bolsh"&gt;Dave Neary&lt;/a&gt;.  We all owe them beer in July.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1112905483028846079?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1112905483028846079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1112905483028846079&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1112905483028846079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1112905483028846079'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/12/guadecakademy-news.html' title='GUADEC+Akademy News'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8112064595007598028</id><published>2008-11-25T13:14:00.003-05:00</published><updated>2008-11-25T13:22:06.858-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='cairotwisted'/><category scheme='http://www.blogger.com/atom/ns#' term='pangocairo'/><category scheme='http://www.blogger.com/atom/ns#' term='cairo'/><title type='text'>Text-on-path with cairo</title><content type='html'>Cairotwisted is the name a piece of code I wrote using pangocairo to lay text on a path.  Over the years many people have found it useful, so here is a public post to make sure it's easier to find on the interwebs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/behdad/3058628981/" title="cairotwisted"&gt;&lt;img src="http://farm4.static.flickr.com/3153/3058628981_4e496299e0_m.jpg" width="240" height="192" alt="cairotwisted" style="float:right" /&gt;&lt;/a&gt;&lt;br /&gt;The code is shipped in Pango tarball under examples/cairotwisted.c and can be browsed &lt;a href="http://svn.gnome.org/viewvc/pango/trunk/examples/cairotwisted.c?view=markup"&gt;here&lt;/a&gt;.  Click on the thumbnail to see the full size image output.&lt;br /&gt;&lt;br /&gt;At the core of it there is a function to map one path &lt;em&gt;onto&lt;/em&gt; another one.  This is done by parameterizing the second path and computing it's gradient (see &lt;a href="http://svn.gnome.org/viewvc/pango/trunk/examples/cairotwisted.c?view=markup"&gt;the code&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Parameterizing a Bezier curve uniformly is not easy though.  I currently flatten curves to lines and use that, but that has its own down sides as the error introduced in the gradient can magnify out of bound.  Any ideas?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8112064595007598028?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8112064595007598028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8112064595007598028&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8112064595007598028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8112064595007598028'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/11/text-on-path-with-cairo.html' title='Text-on-path with cairo'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3153/3058628981_4e496299e0_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8255193682362593228</id><published>2008-11-07T00:35:00.001-05:00</published><updated>2008-11-07T00:38:21.065-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='g-s-d'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Improving Login Time, Part 2: gnome-settings-daemon fixed</title><content type='html'>Thanks everyone for your comments on my &lt;a href="http://mces.blogspot.com/2008/10/improving-login-time-part-1-gnome.html"&gt;previous poinst&lt;/a&gt;.  Those issues have been keeping me quite busy.  And as soon as I thought I'm done, the cleaned up plot showed some new rather empty areas that now were standing out, so I &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559162"&gt;added&lt;/a&gt; some new annotations and continued optimizing.  Well, I think I'm at a point that I can't make it any faster, so here we go.&lt;br /&gt;&lt;br /&gt;Regarding the architecture, I made the parent process wait until the child initializes all the plugins and exit only when the child wants to enter its main loop (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559168"&gt;bug 559168&lt;/a&gt;).  This way, plugins can use the already existing g_idle_add() postpone work for after the parent returns.  Note that there is no waiting before the idle callbacks are run.  It's just a way to decide what has to be run before any other processes in the session start, and what can run in parallel with other processes.&lt;br /&gt;&lt;a href="http://behdad.org/blog/mces/image/gnome/login/g-s-d-before.png"&gt;&lt;img style="float:right" src="http://behdad.org/blog/mces/image/gnome/login/g-s-d-before-small.png" alt="Click to enlarge"&gt;&lt;/a&gt;&lt;br /&gt;Lets look at the plot from last time again and go over the hot spots I identified previously:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. linking:&lt;/strong&gt; g-s-d now doesn't link to libgnome directly, so the gap the has shrank now.  However, all the modules still indirectly link to libgnome by way of libgnome-desktop, so the first module loading actually gets the hit now.  Well, that was before I learned that Alex already ripped the libgnome dependency from libgnome-desktop.  I don't have that installed, so the actual situation is better than what I'll show in my &lt;em&gt;after&lt;/em&gt; plot.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=557808"&gt;bug 557808&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. gtk_init:&lt;/strong&gt; As I said there's not much to gain here.  At some point I want to dig in and reduce roundtrips Gtk+ makes.  Owen &lt;a href="http://mail.gnome.org/archives/gtk-devel-list/2003-July/msg00017.html"&gt;did this&lt;/a&gt; in 2003, bringing the number of round trips from 52 down to 23.  I suspect we may have gained some excess fat in the five years since, so an inspection may be in order.  No status change.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. fontconfig_monitor:&lt;/strong&gt; I moved installing the monitors to an idle callback, but also added a direct call to FcInit() in the startup routine, to make sure the fontconfig cache is up to date before a herd of other session applications start and all try to rebuild the cache if it's indeed out of date.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (Part of &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559166"&gt;bug 559166&lt;/a&gt; and &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559550"&gt;bug 559550&lt;/a&gt;). The total time is no different, it's just partially delayed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. mkfontdir:&lt;/strong&gt;  I cleaned up the module to not run mkfontscale or XSetFontPath unless there's any fonts present.  This optimizes the common case where users don't have any per-user fonts installed for the legacy X font system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559163"&gt;bug 559163&lt;/a&gt;). Nothing left of it on the plot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. mousetweaks:&lt;/strong&gt;  Fixed it to not try to stop a daemon that we know is not running.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559165"&gt;bug 559165&lt;/a&gt;).  Nothing left of it on the plot.  Also made it start in an idle callback (part of &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559166"&gt;bug 559166&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. init_kbd:&lt;/strong&gt;  Removed the trap+XSync around each individual grab request.  And added a grand one outside the loop.  That did it.  Also start this in idle handler as it doesn't have to be started before other apps.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559164"&gt;bug 559164&lt;/a&gt; and &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559482"&gt;bug 559482&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. acme_volume_new:&lt;/strong&gt;  The awesome gstreamer hackers are working on it.  ensonic told me that they were stat'ing each plugin twice where one would be enough.  That is fixed in trunk/master.  There are other ways to optimize it (not fork, not stat in the first place, etc) and all should be properly fixed in gstreamer.  So I &lt;a href="https://sourceforge.net/mailarchive/forum.php?thread_name=49125BB5.2050501%40behdad.org&amp;forum_name=gstreamer-devel"&gt;wrote to gstreamer-devel&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Awesome gstreamer hackers working on it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. gnome-screensaver:&lt;/strong&gt;  Rodrigo made it start in an idle callback, and I reshuffled it to do its callback after everything else.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;  Fixed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. clipboard_manager:&lt;/strong&gt; Also starts in idle callback now.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (part of &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559166"&gt;bug 559166&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10. xrdb:&lt;/strong&gt;  Plugin disabled by default.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt;  Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=557807"&gt;bug 557807&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That was for issues I identified last time.  Thanks to the very responsive g-s-d maintainer, Jens Granseuer, these patches were all reviewed and committed in a few hours and made it to the 2.25.1 tarball.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I also identified some other hot spots after that I also fixed:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;11. gconf:&lt;/strong&gt;  By auditing the gconf usage of the daemon and the plugins I simply added the most feasible preloading setting on vairous directories.  The effect on the plugins is minimal, but this is visible as a clear win around the beginning of the plots where the daemon is building the list of all the plugins (busy blue-and-brown area), even when you add the preloading time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559167"&gt;bug 559167&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;12. XSync:&lt;/strong&gt; I noticed that a lot of the error-trap+XSync that the keyboard code across many plugins did were actually not necessary.  So a bunch of those were fired too.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559346"&gt;bug 559346&lt;/a&gt; and &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559562"&gt;bug 559562&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;13. more XSync:&lt;/strong&gt; Seems like much of the remaining XSync's or other synchronous X operations (mostly in xkb code) can also wait until the idle handler is run.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed: a11y-keyboard and media-keys plugins are moved to idle callback (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559564"&gt;bug 559564&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;14. GnomeBg:&lt;/strong&gt; A byproduct of the fact that I was running g-s-d in foreground causing Nautilus not just starting, and a bug in gnome-screensaver was causing g-s-d to set background after gnome-screensaver startup.  Now this is normally not a big deal because when g-s-d detects that Nautilus is running it does not set the background.  The fix I committed was needed to make my plot clean though.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed by delaying GnomeBg object creation until needed, essentially ignoring spurious change notifications (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559639"&gt;bug 559639&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;15. status_icon:&lt;/strong&gt; The a11y-keyboard plugin was showing a large gap that I tracked down to an innocient-looking gtk_status_icon_new_from_icon_name().  Indeed, looking at the strace log, this was causing the Gtk+ theme to be looked up in various places and opened, etc, while I knew on my desktop, and on most desktops, the a11y icon is not enabled to be shown by default.  So I made the icon lookup lazy.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Status:&lt;/strong&gt; Fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559558"&gt;bug 559558&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it.  These are all now committed too.  And just when I thought I've exhausted my list of things to fix in g-s-d, I noticed that the daemonization logic in it opens the X display and &lt;em&gt;then&lt;/em&gt; forks and use that same display from the child.  While this seems to have been working fine, it's definitely in the &lt;em&gt;don't-do-it&lt;/em&gt; land.  So that one has to wait until I'm done with this already-long blog post before being fixed (&lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=559695"&gt;bug 559695&lt;/a&gt;).&lt;br /&gt;&lt;a href="http://behdad.org/blog/mces/image/gnome/login/g-s-d-after.png"&gt;&lt;img style="float:right" src="http://behdad.org/blog/mces/image/gnome/login/g-s-d-after-small.png" alt="Click to enlarge"&gt;&lt;/a&gt;&lt;br /&gt;So!  Lets look at the plot after all the fixes above.  The overall time halved.  Lets look at the remaining spots quickly (almost none can be fixed in g-s-d):&lt;br /&gt;&lt;br /&gt;1. Linking the daemon&lt;br /&gt;&lt;br /&gt;2. gtk_init&lt;br /&gt;&lt;br /&gt;3. Preloading plugin data gconf dirs&lt;br /&gt;&lt;br /&gt;4. linking libgnome and other unneeded libs (fixed in libgnome-desktop trunk already)&lt;br /&gt;&lt;br /&gt;5. xrdb: the xrdb plugin is gone.  This very small invocation is needed to set font settings on the server.  This is used by non-GTK+ cairo applications, so I'm hesitant to kill this just yet&lt;br /&gt;&lt;br /&gt;6. fontconfig cache check&lt;br /&gt;&lt;br /&gt;7. xrdb for Xcursor.  Not sure if this one can go away&lt;br /&gt;&lt;br /&gt;8. Linking pulseaudio and other audio libraries&lt;br /&gt;&lt;br /&gt;9. Linking keyboard related libraries&lt;br /&gt;&lt;br /&gt;10. gstreamer cache check&lt;br /&gt;&lt;br /&gt;11. End of daemon initialization.  Parent process exits now.&lt;br /&gt;&lt;br /&gt;12. Relaxing.  X server running mostly.&lt;br /&gt;&lt;br /&gt;13. Installing fontconfig inotify monitors.&lt;br /&gt;&lt;br /&gt;14. Keyboard initialization.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's all for tonight, and for g-s-d.  Next: overall view of the login process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8255193682362593228?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8255193682362593228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8255193682362593228&amp;isPopup=true' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8255193682362593228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8255193682362593228'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/11/improving-login-time-part-2-gnome.html' title='Improving Login Time, Part 2: gnome-settings-daemon fixed'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4082339771812452188</id><published>2008-11-04T22:37:00.001-05:00</published><updated>2008-11-04T23:23:15.866-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='obama'/><title type='text'>Joy</title><content type='html'>Congratulations to all my American friends.  Yes, You Can!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4082339771812452188?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4082339771812452188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4082339771812452188&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4082339771812452188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4082339771812452188'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/11/joy.html' title='Joy'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5342697400756461428</id><published>2008-10-30T02:43:00.001-04:00</published><updated>2008-10-30T02:44:04.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cairo'/><title type='text'>Dutch coin designed using cairo</title><content type='html'>This is fantastic.  Just &lt;a href="http://pythonide.blogspot.com/2008/10/how-to-make-money-with-free-software.html"&gt;read it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;/me wants one&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5342697400756461428?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5342697400756461428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5342697400756461428&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5342697400756461428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5342697400756461428'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/10/dutch-coin-designed-using-cairo.html' title='Dutch coin designed using cairo'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7765927734034422708</id><published>2008-10-29T04:00:00.001-04:00</published><updated>2008-10-29T04:02:08.696-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='g-s-d'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Improving Login Time, Part 1: gnome-settings-daemon</title><content type='html'>Any true GNOME hacker has to take a shot (multiple shots, mind you) at improving login time.  Federico &lt;a href="http://www.gnome.org/~federico/#improving-login-time"&gt;did it&lt;/a&gt; a couple years ago, and since I want to be like Federico when I grow up, that's just what I've been doing for the past week, and expect to keep doing for the weeks that come.  &lt;br /&gt;&lt;br /&gt;How does login work anyway?  In short, gnome-session is started and it then in turn reads the list of tasks to start from .desktop files.  Each task is marked as belonging to one of a few login &lt;em&gt;phases&lt;/em&gt;, in chronological order:&lt;ul&gt;&lt;li&gt;startup&lt;/li&gt;&lt;li&gt;initialization&lt;/li&gt;&lt;li&gt;window-manager&lt;/li&gt;&lt;li&gt;panel&lt;/li&gt;&lt;li&gt;desktop&lt;/li&gt;&lt;li&gt;application&lt;/li&gt;&lt;/ul&gt;The startup phase belongs to gnome-session itself.  Initialization, then, is the first phase application can sign up to be run in.  To transition to the next phase, the current phase should either complete or time out.  A phase is complete when all apps associated with the phase signal completion.  An app can signal completion in a variety of ways, the simplest of which being that the process terminates.  A phase times out after ten seconds.  Description for the phases as well as a more a longer version of this condensed overview is available in &lt;a href="http://svn.gnome.org/viewvc/gnome-session/trunk/gnome-session/README?view=markup"&gt;gnome-session/gnome-session/README&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The initialization phase is where actual &lt;em&gt;doing stuff&lt;/em&gt; begins, and for this blog entry we will focus on that (to be honest, only part of it).  The mentioned README has this to add about the initialization phase:&lt;blockquote&gt;GSM_SESSION_PHASE_INITIALIZATION is the first phase of "normal" startup (ie, startup controlled by .desktop files rather than hardcoding). It covers low-level stuff like gnome-settings-daemon and at-spi-registryd, that need to be running very early (&lt;strong&gt;before any windows are displayed&lt;/strong&gt;).&lt;/blockquote&gt;Before leaving the quotation, notice the emphasis: "before any windows are displayed".  We'll get back to that.&lt;br /&gt;&lt;br /&gt;The most prominent process started as part of the initialization phase is gnome-settings-daemon.  No wonder, as that single module consists of some fifteen plugins that do all kinds of startup.  In other words, initialization &lt;em&gt;is&lt;/em&gt; gnome-settings-daemon.  Lets dive inside.&lt;br /&gt;&lt;br /&gt;When Jon McCann and co refactored gnome-settings-daemon into plugins, they also added profiling annotation hooks that can be used for &lt;a href="http://www.gnome.org/~federico/hacks/index.html#performance-scripts"&gt;Federico-style timeline plotting&lt;/a&gt;.  So what I did was rebuilding g-s-d, hooking up strace, and drawing the results.  All this on my home machine that is rather beefy and otherwise underutilized.&lt;br /&gt;&lt;br /&gt;I did one thing wrong, I forgot to send the strace background, so my mock g-s-d was not terminating and hence kept gnome-session waiting for it for ten seconds and finally giving up on the phase and moving on.  The net result was that g-s-d was run solo with no other process racing with it for the CPU.  That, and doing warm logins, meant my timings where very predictable and consistently reproducible.  In this scenario g-s-d becomes idle in just short of one second.  In a more real scenario of sending the strace to the background, it takes more like 2.5s.  But that's beyond the point.  By letting g-s-d run as fast as it can, it's easier to spot what's slow, as those are sure to stand out.&lt;br /&gt;&lt;br /&gt;Before getting any further, I stopped and asked myself "is this worth optimizing?"  A good question to ask before any optimization work is to start.  My immediate response was: "sure, if we I can cut that 1s in half, that's about 10% saving on a 5s login time".  After five seconds of thinking I wondered: "but isn't g-s-d forking and returning in the parent immediately?  A .5s saving in g-s-d idle time means little for the login time as a whole."  And that's mostly true, but hey, aren't the initialization phase processes supposed to set things that need to be done before any windows are shown?  And by forking and returning early, g-s-d is actually not doing that.  I can already see how, for example, the xsettings plugin in g-s-d comes up and sets the font rendering settings of the display, causing a redraw in any Gtk+ applications already started.  It would be much better to make g-s-d actually do essential initialization as fast as it can, return in the parent, then take its time doing other work that does not have to be done before windows are shown.  That's what I'm planning to make it do.  In light of that plan, lets see how tight or loose things currently actually are.&lt;br /&gt;&lt;br /&gt;Without any further rambling, here is the plot of gnome-session-daemon as shipped in Fedora rawhide starting up.  The only modifications I have made is adding more annotations for the plot.&lt;br /&gt;&lt;a href="http://www.gnome.org/~behdad/login/g-s-d-before.png"&gt;&lt;img style="float:right" src="http://www.gnome.org/~behdad/login/g-s-d-before-small.png" alt="Click to enlarge"&gt;&lt;/a&gt;&lt;br /&gt;After studying the plot and the underlying log and code I identified ten hotspots and plans to fix them.  The hotspots are named in the plot.  The names are not readable in the small version included here (click for full version), so I have also numbered them:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. linking:&lt;/strong&gt; This is pretty much the cost of loading 67 shared libraries that g-s-d currently directly or indirectly links to.  There's not much we can do immediately to make the linker faster.  We can try to link to fewer libraries however.  Seems like we don't really need libgnome.  Chopping that spares some 20 of that 67.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; mccann already filed &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=557808"&gt;Bug 557808 – don't use libgnome&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. gtk_init:&lt;/strong&gt; There's not much to do here right away, except that I want to profile gtk+ initialization sometime to see if we can improve it.  It's not long, but any saving benefits every application, so it's worth pursuing.  No resolution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. fontconfig_monitor:&lt;/strong&gt; This one is so embarrassing.  It's my single commit to g-s-d, and it takes the longest time in the plot.  What this code does is to add gio/inotify monitors on all font directories and configuration files known by fontconfig for change notification so it can 1) rebuild the fontconfig cache and 2) signal applications to reload their font configurations.&lt;br /&gt;&lt;br /&gt;Now, it's a good idea to make sure fontconfig cache is current before other applications start and each try to rebuild the cache, but installing the monitors can wait.  It's one of those things that is equally as good if done 10s into the login.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; Only check that fontconfig cache is current.  Defer installing file monitors to idle time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. mkfontdir:&lt;/strong&gt;  This one's so bogus.  We scan two directories and cleanup symlinks for "cursor fonts" we may have created before.  Then if there's any cursor font set in gconf, we create a symlink for it, then call mkfontdir (that in turn calls mkfontscale, which does a bunch of stats on nonexisting files and directories, etc) and get and set the X server font path.  All that work even if there is no cursor fonts set..&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; Skip spawning mkfontdir and setting the server font path if there is no cursor font set.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. mousetweaks:&lt;/strong&gt;  This one's my favorite.  According to the man page, "mousetweaks is a daemon that provides various mouse  features  for  the GNOME desktop.  It depends on the Assistive Technology Service Provider Interface (AT-SPI)."  What the g-s-d plugin does is to monitor the relevant gconf keys, and start/stop the mousetweaks daemon on demand.&lt;br /&gt;&lt;br /&gt;On a typical desktop with no tweaks configured (%99+), it spawns "mousetweaks -s", which means "stop the running daemon, if any".  The mousetweaks process then starts up, initializes a bunch of stuff, including the a11y stuff (not the fastest stuff it seems), tries to find a running daemon, fail, and silently exit.  So much for so little.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; Don't spawn mousetweaks if no tweaks configured.  In other words, don't spawn "mousetweaks -s" unless we know a daemon is running.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. init_kbd:&lt;/strong&gt;  This one was harder to figure out.  There was no big fat thing going on.  Instead, there is a look over some 20 different &lt;em&gt;media keys&lt;/em&gt;, for each of them some gconf reading and a &lt;em&gt;grab_key&lt;/em&gt; operation.&lt;br /&gt;&lt;br /&gt;The gconf stuff as my plot agrees is not the bottleneck as the code already does a one-level-deep preloading on the gconf directory.  The grab_key invocations however each take real time, and they add up.  Looking into what grab_key does is revealing: for each combination of the ignored modifiers, for each screen, it does the usual "push error handler on display; do something with display; flush the display; pop and see if any errors happen".  Multiplied by the number of keys, that's a bunch of X display flushes while we're not really interested in pass/fail status of individual operations.  &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; Do one "push; do; flush; pop" instead of many.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. acme_volume_new:&lt;/strong&gt;  What's happening here is that to be able to control volume and other mixer properties, we end up initializing gstreamer.  Which in turn wants to ensure that its binary cache of plugins is up to date, so &lt;em&gt;it forks and stats all the plugins&lt;/em&gt;.  Ouch!&lt;br /&gt;&lt;br /&gt;Now, making sure the gstreamer cache is up to date before every other application starts using it is a good idea, but it doesn't have to be so painful!&lt;br /&gt;&lt;br /&gt;Whether it's that no one has got to fix it yet, or if there's good reasons for the binary cache not to simply store the timestamps of the folders and compare that instead of doing stat on every plugin on every startup of every gstreamer-using application, I don't know.  I won't judge.  Love to hear the issues.  But experience with Pango and fontconfig tell me that a more decent cache can be done and indeed should be done.&lt;br /&gt;&lt;br /&gt;The fontconfig cache, admittedly, becomes really hairy at times (time skews, anyone?), but much, much, much much, better than if fontconfig stated any and every font on startup!&lt;br /&gt;&lt;br /&gt;I also have no idea why it gstreamer forks for the cache check.  I could think of not polluting the current process or risk crashing it.  BUT!  If the forked process fails validating the cache, it then retries in process!  Oh well...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt; Awesome gstreamer hackers, please fix your cache!  In the mean time, forcing gstreamer to not fork may help (can be done by setting an env var).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;8. gnome-screensaver:&lt;/strong&gt;  Not sure why gnome-screensaver is so heavy to start up.  That's for another session.  But, who cares if gnome-screensaver starts 10s into the session?  Right, you got it, it does not have to be started before all other windows.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;  Start at idle time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;9. clipboard_manager:&lt;/strong&gt;  This one also baffles me.  It's a bunch of X roundtrips.  Shouldn't take that long.  Anyway, given how clipboard managers work (they are useful when the app holding the clipboard content is existing), no one would really notice if we started it 10s into the session.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;  Start at idle time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;10. xrdb:&lt;/strong&gt;  The xrdb brokenness (it calls gcc!) is a well-known and well-studied issue.  According to mclasen the only reason we kept doing it was xemacs, but allegedly that uses Gtk+ these days.  Is there any other reason we should be doing xrdb in g-s-d in 2009?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resolution:&lt;/strong&gt;  mccann filed &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=557807"&gt;Bug 557807 – disable xrdb plugin by default&lt;/a&gt;.  Isn't he awesome?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's tonight's ten commandments, err, resolutions.  I have already started hacking the new architecture in g-s-d and patching the plugins as described above.  There are more plugins, and each can use a quick remove.  In general any plugin that does "set XYZ and hook up for change notifications on it" can be split up to do the change-notification hookup at idle time if that part consumes considerable time.  That pretty much rounds it up for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7765927734034422708?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7765927734034422708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7765927734034422708&amp;isPopup=true' title='23 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7765927734034422708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7765927734034422708'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/10/improving-login-time-part-1-gnome.html' title='Improving Login Time, Part 1: gnome-settings-daemon'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>23</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3972104091538309649</id><published>2008-10-27T20:16:00.000-04:00</published><updated>2008-10-27T19:30:25.274-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Fedora'/><category scheme='http://www.blogger.com/atom/ns#' term='onlinux'/><title type='text'>Fedora at the Ontario Linux Festival</title><content type='html'>I drove to Niagara Falls on Friday evening to pick up the Fedora event box from Brian Powell.  Being in falls and having a good time also meant that I was later for the conference on Saturday, but not much.&lt;br /&gt;&lt;br /&gt;So that's how Satruday was spent.  Deepak and myself were manning the Fedora booth at the second &lt;a href="http://onlinux.ca/"&gt;Ontario Linux Festival&lt;/a&gt;, with Andrew doing the same for Eclipse.  It turned out to be great fun though, as Paul Frields and Greg DeKoenigsberg were around.  We opened the event box and pimped up the booth, and soon after the traffic flowed in.&lt;br /&gt;&lt;br /&gt;We Fedora 9 Live CD and DVD to hand out, couple olpc laptops, and a brand new X61 tablet that is Behnam's but arrived at my address on Friday afternoon.  We set up a USB stick and the tablet did its first boot ever, in Fedora, and before long people were awed by the pressure-sensitive effects of the GIMP and the tablet stylus.  Later in the afternoon we installed &lt;a href="http://xournal.sourceforge.net/"&gt;Xournal&lt;/a&gt; and that provided us with a second round of excitement.  The state of tablet support sdaly seems to not have changed a bit since &lt;a href="http://tieguy.org/blog/2006/09/09/the-state-of-tablet-software-in-linux/"&gt;Luis summarized it&lt;/a&gt; two years ago.  Namely, hand-writing recognition is still a completely missing piece.&lt;br /&gt;&lt;br /&gt;All in all, the booth was a great success.  Compared to last year, I think we got, like, five times the traffic at the Fedora booth, if not more.  Was a pleasure to meet old and new friends, and generally, a good conference day close to home!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://marilyn.frields.org:8080/~paul/wordpress/?p=1243"&gt;Paul's summary&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3972104091538309649?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3972104091538309649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3972104091538309649&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3972104091538309649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3972104091538309649'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/10/fedora-at-ontario-linux-festival.html' title='Fedora at the Ontario Linux Festival'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3772204392587905135</id><published>2008-10-27T20:00:00.000-04:00</published><updated>2008-10-27T19:30:01.524-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='http'/><category scheme='http://www.blogger.com/atom/ns#' term='web2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='lazyweb'/><category scheme='http://www.blogger.com/atom/ns#' term='calendar'/><title type='text'>Timezone in HTTP Header</title><content type='html'>&lt;em&gt;[I have been thinking about this problem in the back of my head for the past few months.  A Lazyweb request is in order.]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Dear Lazyweb:&lt;br /&gt;&lt;br /&gt;Web services are used from all over the globe.  How is it that the HTTP request does not include the timezone the request is coming from?&lt;br /&gt;&lt;br /&gt;Context: A few years ago I wrote a multi-system calendar widget in PHP, called &lt;a href="http://behdad.org/calendar"&gt;Behdad Calendar&lt;/a&gt;.  It has many Iranians users in and out of Iran.  Since the service is run on my web server somewhere in the western world, most Iranians in Iran see the date wrong for about one-third of the day.&lt;br /&gt;&lt;br /&gt;My first response to this was "cool, I just need to adjust to the user's timezone which I can easily find somewhere in the HTTP request".  Then I failed to find that.  Then I noticed the stupid pattern: any complex-enough web application asks me to enter my timezone.  Something my browser perfectly knows already.&lt;br /&gt;&lt;br /&gt;So, why is that?  How to fix it?  Is there anything I've been missing?&lt;br /&gt;&lt;br /&gt;[Before someone mentions, yes, some hosting companies will start blocking out Iranian users based on their uniquely distinct +3:30 timezone.  Then again, Iranians are used to using anonymizers to work around various filters, originated in Iran or out.]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3772204392587905135?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3772204392587905135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3772204392587905135&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3772204392587905135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3772204392587905135'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/10/timezone-in-http-header.html' title='Timezone in HTTP Header'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8204005596863028136</id><published>2008-10-15T15:24:00.003-04:00</published><updated>2008-10-15T15:26:53.116-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GNOME Job Posting Board</title><content type='html'>Many GNOME-friendly companies have job openings that they announce either on blogs, IRC, or random mailing list.&lt;br /&gt;&lt;br /&gt;Many GNOME hackers look for jobs and they crawl blogs, mailing lists, or ask on IRC.&lt;br /&gt;&lt;br /&gt;Now there is a central place that community members can post GNOME-related job openings, and job seekers can subscribe to.  Nothing fancy, a good old wiki page: &lt;a href="http://live.gnome.org/Jobs"&gt;Jobs&lt;/a&gt;.  Populate!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8204005596863028136?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8204005596863028136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8204005596863028136&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8204005596863028136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8204005596863028136'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/10/gnome-job-posting-board.html' title='GNOME Job Posting Board'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4939443239611976885</id><published>2008-08-14T17:28:00.003-04:00</published><updated>2008-08-14T17:36:33.755-04:00</updated><title type='text'>A good day for Free Software</title><content type='html'>Red Hat's Rob Tiller, Vice President and Assistant General Counsel, IP, writes in a &lt;a href="http://www.press.redhat.com/2008/08/14/software-licensing-train-wreck-averted/"&gt;blog post&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;The Federal Circuit not only corrected the error of the trial court, but also provided a short primer on open source projects and licensing. It explained that such licensing “has become a widely used method of creative collaboration that serves to advance the arts and sciences in a manner and at a pace that few could have imagined just a few decades ago.” The appeals court acknowledged that with open source “software programs can often be written and debugged faster and at lower cost than if the copyright holder were required to do all the work independently.” The court also wrote about the substantial economic benefits associated with free and open source software, including product improvements from independent sources.&lt;br /&gt;...&lt;br /&gt;As to the licensing issue, &lt;strong&gt;the Federal Circuit correctly determined that the Artistic License was enforceable through copyright law&lt;/strong&gt;, because the relevant restrictions were conditions rather than mere covenants. The more important point is the general one that “copyright holders who engage in open source licensing have the right to control the modification and distribution of copyrighted material.” The court found that an open source licensor’s choice to impose requirements such as disclosure and an explanation of changes, instead of requiring monetary payment, was entitled to legal recognition.&lt;/blockquote&gt;&lt;br /&gt;Congrats to all involved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4939443239611976885?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4939443239611976885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4939443239611976885&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4939443239611976885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4939443239611976885'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/08/good-day-for-free-software.html' title='A good day for Free Software'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2162921344736635577</id><published>2008-07-31T13:16:00.003-04:00</published><updated>2008-07-31T13:54:24.037-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Whistler'/><category scheme='http://www.blogger.com/atom/ns#' term='Mozilla Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Stuck in Whistler</title><content type='html'>In Whistler for &lt;a href="http://summit.mozilla.org/"&gt;Mozilla Summit&lt;/a&gt;.  The summit ends today.  Original plan was to do some cycling in the mountains tomorrow morning, and head back to Vancouver at 3pm, spend the weekend with friends in Vancouver.&lt;br /&gt;&lt;br /&gt;BUT!  The night before last one &lt;strong&gt;there was a massive rock slide&lt;/strong&gt; blocking the main road from Whistler back to Vancouver (&lt;a href="http://flickr.com/photos/46282608@N00/2717561157/sizes/o/"&gt;aerial photo&lt;/a&gt;, &lt;a href="http://www.canada.com/vancouversun/news/story.html?id=4d2f2262-e433-42e4-b27f-a3228f38df3f"&gt;news story&lt;/a&gt;, &lt;a href="http://www.xulplanet.com/ndeakin/item/14"&gt;interesting blogpost&lt;/a&gt;) and it takes at least five days to clear it up.  The &lt;a href="https://bugzilla.mozilla.org/attachment.cgi?id=331814"&gt;alternate route&lt;/a&gt; is 8 hours long, so they have rescheduled all the buses.  I'm now on the 3am bus on Friday, which hopefully means I can sleep on the bus after the party.  Beats having to wakeup and catch the 8am one and be bored on the bus for a good part of the day.&lt;br /&gt;&lt;br /&gt;So I thought I attend my sessions this morning and head out in the afternoon to do some cycling, be back in time for the party.  BUT!  Woke up this morning to learn that power is out for at least a few hours.  &lt;strong&gt;A laundry truck hit the&lt;br /&gt;transformer.&lt;/strong&gt;  Yay!  Got a couple more hours of &lt;a href="http://batterygeek.net/"&gt;battery&lt;/a&gt; life.  Funny thing is that wifi works.&lt;br /&gt;&lt;br /&gt;Finally, I didn't notice that the &lt;a href="http://wiki.mozilla.org/Summit2008/Sessions/Schedule"&gt;schedule&lt;/a&gt; for today starts half-hour earlier than previous days.  So missed breakfast too.  Have to run out, get breakfast, get &lt;a href="http://www.starbucks.com/retail/nutrition_beverage_detail.asp?selproducts={97b5582d-25ac-452b-920c-857f5f83c616}&amp;straction=getdefault"&gt;real coffee&lt;/a&gt;, and plan the rest of my stay here.  But found some nagging first quite refreshing :).&lt;br /&gt;&lt;br /&gt;Anyway, having tons of fun.  I'm sure if the summit was in the winter, we could expect lots of &lt;a href="http://www.imdb.com/title/tt0081505/"&gt;The Shining&lt;/a&gt; flashbacks at the hotel. :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2162921344736635577?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2162921344736635577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2162921344736635577&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2162921344736635577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2162921344736635577'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/07/stuck-in-whistler.html' title='Stuck in Whistler'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3885699927257249818</id><published>2008-07-15T10:59:00.000-04:00</published><updated>2008-07-15T20:00:11.088-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='party'/><category scheme='http://www.blogger.com/atom/ns#' term='tehran'/><title type='text'>Firefox party in Tehran</title><content type='html'>In Tehran currently, for post-GUADEC vacation and sister's wedding (will post photos).&lt;br /&gt;&lt;br /&gt;I'll be at &lt;a href="http://mozillaparty.com/en-US/events/view/176"&gt;this Firefox party&lt;/a&gt; on Thursday afternoon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3885699927257249818?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3885699927257249818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3885699927257249818&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3885699927257249818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3885699927257249818'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/07/firefox-party-in-tehran.html' title='Firefox party in Tehran'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1311697851246325474</id><published>2008-07-06T04:09:00.005-04:00</published><updated>2008-07-06T12:06:54.916-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='istanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Setting the record straight</title><content type='html'>In Heathrow for another hour, then will arrive in Istanbul for &lt;a href="http://guadec.org/"&gt;GUADEC&lt;/a&gt;.  I'm staying at Golden Horn.  Guys, lets meet at the lobby around 9PM for mild beer tasting.&lt;br /&gt;&lt;br /&gt;Also, it's a shame to read "Ista&lt;b&gt;m&lt;/b&gt;bul" on pgo so frequently.  Please, write "Ista&lt;b&gt;n&lt;/b&gt;bul", read as you wish :).&lt;br /&gt;&lt;br /&gt;Can't wait to meet everyone...  For those of you not coming this year, sorry guys, have to live with it for a week.  I'm talking to you sri :-D.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; There are two Golden Horn hotels.  I'm in the Sultanahmet one.  But gather in the lobby of either one and you'll find enough familiar faces to go out drinking with.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1311697851246325474?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1311697851246325474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1311697851246325474&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1311697851246325474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1311697851246325474'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/07/setting-record-straight.html' title='Setting the record straight'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7096293955031240239</id><published>2008-06-24T11:20:00.000-04:00</published><updated>2008-06-24T11:21:08.315-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='akademy'/><category scheme='http://www.blogger.com/atom/ns#' term='2009'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Akademy+GUADEC *2009* Hosting Proposals</title><content type='html'>In response to our &lt;a href="http://www.gnome.org/press/releases/2008-04-22-akademy-guadec.html"&gt;joint call-for-bids&lt;/a&gt; earlier this year, the GNOME Foundation and KDE e.V. boards received three proposals tohost Akademy+GUADEC 2009. The bids are available for review &lt;a href="http://www.gnome.org/~behdad/akademy+guadec-2009-bids"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The boards did not receive any separate bids for Akademy-only or GUADEC-only hosting.  Which proves again, how excited the community is about the joint conference.  Note that we got only one bid for GUADEC 2008, and two bids for the year before that.&lt;br /&gt;&lt;br /&gt;At this time we are soliciting comments from the GNOME community and other GUADEC regulars.  Please use the thread on foundation-list to submit your comments.  The review period closes on July 4th, in preparation for making a decision in Istanbul.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Behdad&lt;br /&gt;On behalf of GNOME Foundation and KDE e.V. boards&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7096293955031240239?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7096293955031240239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7096293955031240239&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7096293955031240239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7096293955031240239'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/06/akademyguadec-2009-hosting-proposals.html' title='Akademy+GUADEC *2009* Hosting Proposals'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-698561438717278418</id><published>2008-06-17T13:59:00.002-04:00</published><updated>2008-06-17T14:33:06.673-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ff3'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='party'/><category scheme='http://www.blogger.com/atom/ns#' term='toronto'/><category scheme='http://www.blogger.com/atom/ns#' term='mozilla'/><title type='text'>Mozilla Toronto Firefox 3 Launch Party Tonight</title><content type='html'>Open party at the Mozilla Toronto office.  Free as in Free Beer.  RSVP &lt;a href="http://mozillaparty.com/en-US/events/view/182"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;UPDATE: &lt;a href="http://www.mozilla.com/en-US/firefox/?p=downloadday"&gt;download&lt;/a&gt; Firefox 3 before 17:00 UTC on June 18, 2008 to help make a Guinness World Record of most downloads in a day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-698561438717278418?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/698561438717278418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=698561438717278418&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/698561438717278418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/698561438717278418'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/06/mozilla-toronto-firefox-3-launch-party.html' title='Mozilla Toronto Firefox 3 Launch Party Tonight'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5879958498641981425</id><published>2008-06-09T19:56:00.002-04:00</published><updated>2008-06-09T20:05:34.133-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk+'/><title type='text'>GTK+ modules to the rescue</title><content type='html'>GTK+ has this very simple module API: &lt;code&gt;gtk_module_init()&lt;/code&gt; is called to initialize the module.&lt;br /&gt;&lt;br /&gt;GTK+ modules are a very easy and effective way to add functionality to GTK+ that requires features from components way higher in the stack.  They can also be quite handy as debugging tools.&lt;br /&gt;&lt;br /&gt;Say, we want to measure it takes for an application to finish starting up.  I've seen many people do this in one of two ways:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add an idle callback to the application code and recompile&lt;/li&gt;&lt;li&gt;Using a stopwatch&lt;/li&gt;&lt;/ul&gt;I wrote &lt;a href="http://www.gnome.org/~behdad/idle/idle.c"&gt;a small gtk module&lt;/a&gt; (accompanying &lt;a href="http://www.gnome.org/~behdad/idle/Makefile"&gt;Makefile&lt;/a&gt;) to do just that.  The whole thing is only 50 lines.  You can run it with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IDLE_ACTION="time" for it to print time it takes from gtk init to the idle callback&lt;/li&gt;&lt;li&gt;IDLE_ACTION="quit" for it to call &lt;code&gt;gtk_main_quit()&lt;/code&gt; in the idle callback&lt;/li&gt;&lt;li&gt;IDLE_ACTION="kill" for it to send &lt;code&gt;SIGINT&lt;/code&gt; to the process in the idle callback&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/5400308-5879958498641981425?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5879958498641981425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5879958498641981425&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5879958498641981425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5879958498641981425'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/06/gtk-modules-to-rescue.html' title='GTK+ modules to the rescue'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2142846854347607245</id><published>2008-06-02T04:42:00.003-04:00</published><updated>2008-06-02T04:46:20.751-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk+'/><category scheme='http://www.blogger.com/atom/ns#' term='packagekit'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='fonts'/><title type='text'>Online font installation</title><content type='html'>Just submitted patches for &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=536185"&gt;GTK+&lt;/a&gt; and &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=490374"&gt;gnome-settings-daemon&lt;/a&gt; to monitor all fontconfig configuration and react to changes.&lt;br /&gt;&lt;br /&gt;What this means is that with the patches in place:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Modifying ~/.fonts.conf takes effect in all running applications immediately (ok, withing three seconds),&lt;/li&gt;&lt;li&gt;Installing missing fonts will make hexboxes automagically turn into real text rendered using the newly installed font.&lt;/li&gt;&lt;/ul&gt;Interestingly, no changes in Pango were needed.&lt;br /&gt;&lt;br /&gt;Next step, detect missing fonts and make &lt;a href="http://www.packagekit.org/"&gt;PackageKit&lt;/a&gt; show a notification offering to install needed fonts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2142846854347607245?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2142846854347607245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2142846854347607245&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2142846854347607245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2142846854347607245'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/06/online-font-installation.html' title='Online font installation'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8550260866513927292</id><published>2008-06-02T03:57:00.001-04:00</published><updated>2008-06-02T03:58:53.706-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Real GNOME Hackers</title><content type='html'>are older in &lt;a href="http://bugzilla.gnome.org/page.cgi?id=points.html"&gt;bugzilla points&lt;/a&gt; than in real life. (not me)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8550260866513927292?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8550260866513927292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8550260866513927292&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8550260866513927292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8550260866513927292'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/06/real-gnome-hackers.html' title='Real GNOME Hackers'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7701706637787283481</id><published>2008-05-29T17:19:00.003-04:00</published><updated>2008-05-30T01:05:12.115-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='chpe'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome-terminal'/><title type='text'>The one with chpe Rocking!</title><content type='html'>On #gnome-hackers today:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; guys&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; if you see chpe&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; make sure you hug him&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; he pushed more than 100 commits to gnome-terminal today&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; yeah&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;crevette:&lt;/b&gt;&lt;/span&gt; behdad: near 350&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; crevette: yeah, still deleting mail...&lt;br /&gt;&lt;span style="color: rgb(6, 37, 133);"&gt;&lt;b&gt;***behdad&lt;/b&gt;&lt;/span&gt; gave up on reading them&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;crevette:&lt;/b&gt;&lt;/span&gt; hello btw behdad&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt;   Status Whiteboard|                            |[decision][chpe:wontfix]&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; haha&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; :)&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; hey crevette&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; I have no idea what he's been doing&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; but this all looks SO GREAT&lt;br /&gt;&lt;span style="color: rgb(151, 147, 136);"&gt;bkor:&lt;/span&gt; move to gtkbuilder, etc&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; and he totally gave up on updating ChangeLog btw&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; bkor: much more&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; complete code cleanup&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;bkor:&lt;/b&gt;&lt;/span&gt; behdad: yeah, didn't read it yet&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; removed the terminal widget abstraction&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;bkor:&lt;/b&gt;&lt;/span&gt; behdad: seems to have removed vte abstraction&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; yeah&lt;br /&gt;&lt;span style="color: rgb(151, 147, 136);"&gt;bkor:&lt;/span&gt; hehe&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; which is good&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; but this is proof that we need git....&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; this is a proof that some people are aliens&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; :)&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; crevette: that too&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;bkor:&lt;/b&gt;&lt;/span&gt; behdad: DVCS&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; bkor: political correctness :P&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;bkor:&lt;/b&gt;&lt;/span&gt; behdad: I don't agree&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; I agree :)&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;jonner:&lt;/b&gt;&lt;/span&gt; behdad: what did chpe do?&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; jonner: he commited like a mad on gnome-terminal&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; crevette: about 500 to this moment&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; jonner: ----^&lt;br /&gt;&lt;span style="color: rgb(101, 12, 97);"&gt;jonner:&lt;/span&gt; 500 commits?&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; jonner: yes&lt;br /&gt;&lt;span style="color: rgb(101, 12, 97);"&gt;jonner:&lt;/span&gt; holy...&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; damn&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; we should do a special gnome release just for that&lt;br /&gt;&lt;span style="color: rgb(6, 37, 133);"&gt;&lt;span&gt;***crevette&lt;/span&gt;&lt;/span&gt; always considered chpe like the unknown hero of GNOME&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; he deserves tens of blog post to tell how he is good&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; crevette: he defies fame&lt;br /&gt;&lt;span style="color: rgb(21, 149, 143);"&gt;crevette:&lt;/span&gt; :)&lt;br /&gt;&lt;span style="color: rgb(136, 190, 90);"&gt;pochu:&lt;/span&gt; how can somebody do 500 commits in a single day?&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; someone put this in topic :)&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; pochu: pushed multiple git branches he had sitting around&lt;br /&gt;&lt;span style="color: rgb(101, 12, 97);"&gt;jonner:&lt;/span&gt; probably git-svn (?)&lt;br /&gt;&lt;span style="color: rgb(68, 10, 55);"&gt;Leftmost:&lt;/span&gt; Wow. gnome-terminal could certainly use some cleanup.&lt;br /&gt;&lt;span style="color: rgb(32, 74, 135);"&gt;&lt;b&gt;behdad:&lt;/b&gt;&lt;/span&gt; each having ~50 commits for a cleanup task&lt;br /&gt;&lt;span style="color: rgb(175, 127, 0);"&gt;&lt;b&gt;pochu:&lt;/b&gt;&lt;/span&gt; behdad: ah&lt;br /&gt;&lt;span style="color: rgb(136, 190, 90);"&gt;pochu:&lt;/span&gt; cool anyway :)&lt;br /&gt;&lt;span style="color: rgb(136, 190, 90);"&gt;pochu:&lt;/span&gt; sadly I don't use gnome-terminal :(&lt;br /&gt;&lt;span style="color: rgb(136, 190, 90);"&gt;pochu:&lt;/span&gt; he could have done that in GTK+ or something else ;)&lt;br /&gt;&lt;b&gt;behdad has changed the topic to: chpe meter: &lt;a href="http://tinyurl.com/5yvgc3"&gt;http://tinyurl.com/5yvgc3&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As such I'm giving away the titles of gnome-terminal maintainer and gnome-terminal developer.  I certainly don't fit those anymore.  It's all chpe's now!&lt;br /&gt;&lt;br /&gt;The closest thing to this that ever happened to my modules was what Chris Wilson did to vte.  Fortunately I was successful converting him to a cairo hacker and he has made 600 cairo commits since.  Lets see where chpe shows up next!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7701706637787283481?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7701706637787283481/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7701706637787283481&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7701706637787283481'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7701706637787283481'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/05/on-gnome-hackers-today-behdad-guys.html' title='The one with chpe Rocking!'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2194398432082911842</id><published>2008-05-21T19:53:00.003-04:00</published><updated>2008-05-21T20:26:53.692-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nat'/><category scheme='http://www.blogger.com/atom/ns#' term='justforfun'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Twittable scripts</title><content type='html'>Fascinated by &lt;a href="http://nat.org/"&gt;Nat&lt;/a&gt;'s &lt;a href="http://nat.org/blog/?p=825"&gt;Twittable scripts&lt;/a&gt; &lt;a href="http://nat.org/blog/?p=826"&gt;posts&lt;/a&gt; a few weeks ago, I thought I give the idea a try.&lt;br /&gt;&lt;br /&gt;Here are some easy ones that I mostly converted from C concepts I liked to shell:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;echoes:&lt;/strong&gt; This one echoes itself out.  Kind of a fixed point...&lt;pre&gt;q=\';s=';echo "q=\\$q;s=$q$s$q$s"';echo "q=\\$q;s=$q$s$q$s"&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;pid-randomizer:&lt;/strong&gt; This is one of my favorites in functionality.  Randomizes the process-id space.  Useful on shared systems...  Based on the same idea as echoes.&lt;pre&gt;q=\';s=';sh -c "q=\\$q;s=$q$s$q$s&amp;"';sh -c "q=\\$q;s=$q$s$q$s&amp;"&lt;/pre&gt;Most people recognize the C version better (except for Perl programmers of course):&lt;pre&gt;main(){while(!fork()){}}&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;filler:&lt;/strong&gt; This one I spent a couple nights on to make fit.  It draws the &lt;a href="http://en.wikipedia.org/wiki/Hilbert_curve"&gt;Hilbert space-filling curve&lt;/a&gt;.  My version does it very quickly and has very few alphabetic letters in it:&lt;pre&gt;clear;-(){ printf ".\10\33[\10$((19&amp;gt;&amp;gt;($1)%4&amp;7))";};.(){&lt;br /&gt;set .\ $*\ -$2 -\ $*;[ ${4:5} ]||($1$2;$3$4;$1 +$4;$3;$1 +$4;$3-$4;$1-$2)};. 7 +1&lt;/pre&gt;Nat prefers the version without clear and with a sleep to slow it down:&lt;pre&gt;l(){ sleep .1;printf ".\e[\10$((19&amp;gt;&amp;gt;($1)%4&amp;7))\b";};.(){&lt;br /&gt;set .\ $*\ -$2 l\ $*;[ ${4:5} ]||($1$2;$3$4;$1 +$4;$3;$1 +$4;$3-$4;$1-$2)};. 7 +1&lt;/pre&gt;These work with bash.  No idea about other shells.  Can someone come up with a version with both the clear and the sleep, in less than 140 bytes?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2194398432082911842?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2194398432082911842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2194398432082911842&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2194398432082911842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2194398432082911842'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/05/twittable-scripts.html' title='Twittable scripts'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7636211627535979695</id><published>2008-05-03T14:14:00.003-04:00</published><updated>2008-05-03T14:20:06.091-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GUADEC schedule now available</title><content type='html'>&lt;a href="http://blogs.gnome.org/thos/"&gt;Thomas&lt;/a&gt; is still &lt;a href="http://blogs.gnome.org/thos/2008/05/02/more-guadec-2007-videos/"&gt;uploading&lt;/a&gt; last GUADEC's videos, but...&lt;br /&gt;&lt;br /&gt;The schedule for GUADEC is &lt;a href="http://guadec.expectnation.com/guadec08/public/schedule/grid"&gt;available&lt;/a&gt; now.  There are still a bunch of slots awaiting confirmation from their speakers before showing up in the schedule, but the core days (9th, 10th, 11th) are pretty much complete now.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://expectnation.com/"&gt;Expectnation&lt;/a&gt; made it relatively easy to do the schedule after I upgraded to Firefox 3 (it was painfully slow with FF2 under Linux).  Thank you guys.  Doesn't mean I didn't have to use the pen though.  This is how it was done:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2461419425/" title="GUADEC scheduling worksheet by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2277/2461419425_cce55326f1_m.jpg" width="240" height="181" alt="GUADEC scheduling worksheet" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Still better than &lt;a href="http://flickr.com/photos/rossburton/467140094/"&gt;last year&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7636211627535979695?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7636211627535979695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7636211627535979695&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7636211627535979695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7636211627535979695'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/05/guadec-schedule-now-available.html' title='GUADEC schedule now available'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2277/2461419425_cce55326f1_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4296626317032812126</id><published>2008-04-23T21:17:00.002-04:00</published><updated>2008-04-23T21:35:40.216-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='utf8'/><category scheme='http://www.blogger.com/atom/ns#' term='glib'/><category scheme='http://www.blogger.com/atom/ns#' term='bithacks'/><title type='text'>UTF-8 Bit Manipulation</title><content type='html'>&lt;a href="http://www.advogato.org/person/roozbeh/diary.html?start=150"&gt;Roozbeh&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;My reasoning was that the current code is not worth changing without strong profiling data showing measurable gain in real-world use cases.  That's all.&lt;br /&gt;&lt;br /&gt;Now to your solution and questions.  You approach has two and a half major issues that make it unusable in real code:&lt;ul&gt;&lt;li&gt;As you mention yourself, it uses 64-bit math,&lt;/li&gt;&lt;li&gt;It assumes that shifting an integer more than its width results in zero.  That's undefined by the C language,&lt;/li&gt;&lt;li&gt;It does a "x*3".  On many processors that's best implemented as "(x&lt;&lt;1)+x".&lt;/li&gt;&lt;/ul&gt;So while it theoretically works, using nine integer operations, in practice it's unusable.  Oh, your function produces the exact same values as in the glib table BTW.  That's good.&lt;br /&gt;&lt;br /&gt;Here is my solution that can be written as valid C code using 13 simple 32-bit operations:&lt;pre&gt;def behdad_utf8_skipper(c):&lt;br /&gt;        v = c ^ 0xff&lt;br /&gt;        r = (v &gt; 0xF) &lt;&lt; 2&lt;br /&gt;        v &gt;&gt;= r&lt;br /&gt;        s = (v &gt; 0x3) &lt;&lt; 1&lt;br /&gt;        v &gt;&gt;= s&lt;br /&gt;        r |= s&lt;br /&gt;        r |= (v &gt;&gt; 1)&lt;br /&gt;        return (0x11234561 &gt;&gt; (r &lt;&lt; 2)) &amp; 7&lt;/pre&gt;It's basically a negation followed by a log2 straight from &lt;a href="http://graphics.stanford.edu/~seander/bithacks.html"&gt;bithacks&lt;/a&gt;, followed by a table lookup.  I particularly like the beautiful final constant.&lt;br /&gt;&lt;br /&gt;I leave it to others to measure if this is faster than the lookup-table in glib.  Enjoyed working this out though.  Everyone, go crazy, shove a few ops off!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4296626317032812126?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4296626317032812126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4296626317032812126&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4296626317032812126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4296626317032812126'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/utf-8-bit-manipulation.html' title='UTF-8 Bit Manipulation'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2579280525518589698</id><published>2008-04-22T16:38:00.000-04:00</published><updated>2008-04-22T16:38:25.148-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redhat'/><category scheme='http://www.blogger.com/atom/ns#' term='fsf'/><title type='text'>In the News</title><content type='html'>&lt;em&gt;[I didn't see enough buzz made about these, hence posting.]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Couple inspiring moves by FSF and Red Hat to end software patents:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.press.redhat.com/2008/04/07/red-hat-asks-federal-court-to-limit-patents-on-software/"&gt;Red Hat Asks Federal Court To Limit Patents On Software&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fsf.org/news/amicus-bilski"&gt;An opportunity to End Software Patents: ESP briefs Court in its historic rehearing of the Bilski case&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;While at that, also check out &lt;a href="http://www.press.redhat.com/2008/04/16/whats-going-on-with-red-hat-desktop-systems-an-update/"&gt;What’s Going On With Red Hat Desktop Systems? An Update&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The list in there just doesn't do justice on how important a role Red Hat's Desktop team plays in advancement of the Free Software desktop and laptop experience.  With recent hires like &lt;a href="http://www.advogato.org/person/mjg59/diary/106.html"&gt;Matthew Garrett&lt;/a&gt;, &lt;a href="http://blogs.gnome.org/hughsie/2008/02/18/big-changes/"&gt;Richard Hughes&lt;/a&gt;, and &lt;a href="http://blogs.gnome.org/mccann/2008/04/16/no-horizons/"&gt;William Jon McCann&lt;/a&gt;, you know how serious we are about doing the Right Thing.  I feel so privileged to be part of that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2579280525518589698?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2579280525518589698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2579280525518589698&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2579280525518589698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2579280525518589698'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/in-news.html' title='In the News'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5709506107476377546</id><published>2008-04-22T15:51:00.002-04:00</published><updated>2008-04-22T16:02:16.684-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cn tower'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Climbing CN Tower, check</title><content type='html'>&lt;a href="http://www.flickr.com/photos/behdad/2431508023/" title="CN Tower Climb Time by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3129/2431508023_fd371ebbcf.jpg" style="float: right;" alt="CN Tower Climb Time" height="500" width="270" /&gt;&lt;/a&gt;So, on Saturday, I did &lt;a href="http://mces.blogspot.com/2008/04/help-save-world-and-enjoy.html"&gt;it&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Reached my goal by &lt;a href="http://wwfcentral.ca/NetCommunity/Page.aspx?pid=527&amp;amp;srcid=524&amp;amp;frsid=20457"&gt;raising &lt;/a&gt; $253.67 in about 36 hours, and climbed the 144 floors up in just short of 19 minutes.  Thank you all who sponsored me.  It means a lot to me!&lt;br /&gt;&lt;br /&gt;I woke up at 8:30, took shower, and walked down to the tower.  Had my power bar and energy drink, checked in, and ready to go.  Had to wait in line for an hour to start.&lt;br /&gt;&lt;br /&gt;The climb was pretty smooth.  I'd never done stairs before.  It was easier than I expected.  The stair machine in the gym is nothing close to the real thing.  I started by running up.  Before I knew I was at floor 30.  Then slowed down to my steady speed, keeping a constant heart-bit rate.  Floor 60 to 70 was crowded so had to slow down a bit.  70 to 110 was a bit breathtaking, but ok.  110 up was counting down the floors and before I had a chance to start running to drain my remaining energy I was already at the checkpoint.&lt;br /&gt;&lt;br /&gt;Worst part was that we had to do another 11 floors after the checkpoint to reach the common area.  &lt;em&gt;That&lt;/em&gt; was hard.&lt;br /&gt;&lt;br /&gt;Was a great day.  I spent the rest of the day walking around downtown, having brunch with friends, and otherwise enjoying the sun.  Good times.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5709506107476377546?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5709506107476377546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5709506107476377546&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5709506107476377546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5709506107476377546'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/climbing-cn-tower-check.html' title='Climbing CN Tower, check'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3129/2431508023_fd371ebbcf_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5839981284246561758</id><published>2008-04-17T18:41:00.002-04:00</published><updated>2008-04-17T18:47:35.990-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cn tower'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Help save the world and enjoy!</title><content type='html'>&lt;div style="float: right"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2422121962/" title="cntower by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3121/2422121962_17a8deaef7_m.jpg" width="180" height="240" alt="cntower" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;em&gt;[While people are in the fundraising/donation mood...]&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;On Saturday I will climb the tallest free-standing structure on land in the world as part of the &lt;a href="http://wwfcentral.ca/NetCommunity/Page.aspx?pid=503&amp;srcid=505"&gt;18th Annual Canada Life CN Tower Climb&lt;/a&gt; for &lt;a href="http://www.wwf.ca/"&gt;WWF-Canada&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will be climbing 1776 step in my TEAM GNOME tshirt, aiming for 25 minutes, and with a goal of raising $250 by tomorrow (Friday 18th) night, to help stop global warming.&lt;br /&gt;&lt;br /&gt;So here is your chance to help save the world and enjoy while I'm suffering.  &lt;a href="http://wwfcentral.ca/NetCommunity/Page.aspx?pid=527&amp;srcid=524&amp;frsid=20457"&gt;Sponsor me&lt;/a&gt; now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5839981284246561758?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5839981284246561758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5839981284246561758&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5839981284246561758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5839981284246561758'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/help-save-world-and-enjoy.html' title='Help save the world and enjoy!'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3121/2422121962_17a8deaef7_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7320008969754368335</id><published>2008-04-17T15:26:00.002-04:00</published><updated>2008-04-17T15:48:08.436-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meme'/><category scheme='http://www.blogger.com/atom/ns#' term='vuntz'/><category scheme='http://www.blogger.com/atom/ns#' term='luis'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='abock'/><title type='text'>Aaron is Luis</title><content type='html'>&lt;a href="http://blogs.gnome.org/tthurman/2008/04/17/no-no-i-am-luis/"&gt;You&lt;/a&gt; &lt;a href="http://pvanhoof.be/blog/index.php/2008/04/17/the-i-am-the-real-luis-meme"&gt;guys&lt;/a&gt; &lt;a href="http://log.emmanuelebassi.net/archives/2008/04/being-luis-villa/"&gt;are&lt;/a&gt; &lt;a href="http://www.burtonini.com/blog/computers/i-am-luis-2008-04-17-14-40"&gt;all&lt;/a&gt; &lt;a href="http://blogs.gnome.org/iain/2008/04/17/i-am-luis-villa/"&gt;certainly&lt;/a&gt; &lt;a href="http://tieguy.org/blog/2008/04/16/new-headshot/"&gt;wrong&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://abock.org/"&gt;Aaron&lt;/a&gt; is the real &lt;a href="http://tieguy.org/blog/"&gt;Luis&lt;/a&gt;, and he loves &lt;a href="http://www.vuntz.net/journal/"&gt;Vincent&lt;/a&gt;:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2420953605/" title="Aaron is Luis by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2090/2420953605_5f01ca12b5_o.jpg" width="350" height="699" alt="Aaron is Luis" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7320008969754368335?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7320008969754368335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7320008969754368335&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7320008969754368335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7320008969754368335'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/aaron-is-luis.html' title='Aaron is Luis'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3485728427901363013</id><published>2008-04-16T20:42:00.002-04:00</published><updated>2008-04-16T20:44:29.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='meme'/><category scheme='http://www.blogger.com/atom/ns#' term='pgo'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>History meme</title><content type='html'>Liked this one enough to bother.&lt;br /&gt;&lt;pre&gt;[behdad:0 ~]$ uname -a&lt;br /&gt;Linux behdad.behdad.org 2.6.24.4-64.fc8 #1 SMP Sat Mar 29 09:54:46 EDT 2008 i686 i686 i386 GNU/Linux&lt;br /&gt;[behdad:0 ~]$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head&lt;br /&gt;1429 cd&lt;br /&gt;685 vim&lt;br /&gt;576 ls&lt;br /&gt;377 ll&lt;br /&gt;369 make&lt;br /&gt;349 makenull&lt;br /&gt;192 git&lt;br /&gt;166 grep&lt;br /&gt;120 python&lt;br /&gt;107 evince&lt;/pre&gt;&lt;br /&gt;Where &lt;code&gt;ll&lt;/code&gt; is the Red Hat / Fedora alias for &lt;code&gt;ls -l&lt;/code&gt;, and &lt;code&gt;makenull&lt;/code&gt; is my alias for &lt;code&gt;make &amp;gt;/dev/null&lt;/code&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3485728427901363013?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3485728427901363013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3485728427901363013&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3485728427901363013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3485728427901363013'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/04/history-meme.html' title='History meme'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8480162392970551471</id><published>2008-03-31T12:03:00.000-04:00</published><updated>2008-03-31T04:02:56.680-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='cfp'/><category scheme='http://www.blogger.com/atom/ns#' term='istanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GUADEC CfP closing</title><content type='html'>Have been in Iran visiting family, but "vacationing" in Dubai for an Arabic-domain-names meeting now.&lt;br /&gt;&lt;br /&gt;Just a quick note that you still have a few hours to &lt;a href="http://guadec.org/guadec08/public/cfp/1"&gt;submit&lt;/a&gt; your GUADEC proposals.&lt;br /&gt;&lt;br /&gt;I also want to stress that financial issues should not keep anyone from coming to GUADEC.  If you need sponsorship to get there, register and follow the instructions there &lt;em&gt;now&lt;/em&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8480162392970551471?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8480162392970551471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8480162392970551471&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8480162392970551471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8480162392970551471'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/03/guadec-cfp-closing.html' title='GUADEC CfP closing'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1507043461279594917</id><published>2008-03-17T16:53:00.000-04:00</published><updated>2008-03-17T11:52:49.398-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='st patty'/><category scheme='http://www.blogger.com/atom/ns#' term='guenther'/><category scheme='http://www.blogger.com/atom/ns#' term='annual report'/><category scheme='http://www.blogger.com/atom/ns#' term='mofo'/><category scheme='http://www.blogger.com/atom/ns#' term='2.22'/><category scheme='http://www.blogger.com/atom/ns#' term='budget'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Happy St Patty</title><content type='html'>Of course GNOME has a tshirt for every occasion, and wearing my &lt;a href="http://en.wikipedia.org/wiki/St_Patrick%27s_Day"&gt;St Patrick's Day&lt;/a&gt; one today:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2315763245/" title="GNOME Love tshirt by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3061/2315763245_049a99303c.jpg" width="500" height="321" alt="GNOME Love tshirt" /&gt;&lt;/a&gt;&lt;br/&gt;(could use a &lt;a href="http://en.wikipedia.org/wiki/Shamrock"&gt;shamrock&lt;/a&gt; instead of the heart)&lt;/p&gt;&lt;p&gt;Vincent generously sent me one a few weeks ago.  Thanks dude!&lt;br /&gt;&lt;br /&gt;Currently in Darmstadt.   Starting to blog about happenings last week at the Berlin GTK+ Hackfest before I head to Iran for vacation.  Speaking of Darmstadt, while was here before the hackfest, caught up with &lt;a href="http://blogs.gnome.org/kbrae/"&gt;guenther&lt;/a&gt;.  Always fun to hang out with:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2315763243/" title="guenther by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2048/2315763243_da9a9aed1c.jpg" width="500" height="376" alt="guenther" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;While catching up with missed blog posts, lemme congratulate:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Everyone, for release of &lt;a href="http://www.gnome.org/start/stable"&gt;GNOME 2.22&lt;/a&gt;, like always, on time to the day,&lt;/li&gt;&lt;li&gt;Mozilla Foundation for &lt;a href="http://www.gnome.org/press/releases/2008-03-mofojoins.html"&gt;joining&lt;/a&gt; GNOME Foundation advisory board,&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.gnome.org/lucasr/"&gt;Lucas&lt;/a&gt; for &lt;a href="http://mail.gnome.org/archives/foundation-announce/2008-March/msg00001.html"&gt;releasing&lt;/a&gt; &lt;a href="http://foundation.gnome.org/about/gnome_annual_report_2007.pdf"&gt;GNOME Annual Report 2007&lt;/a&gt;,&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vuntz.net/journal/"&gt;Vincent&lt;/a&gt; for &lt;a href="http://mail.gnome.org/archives/foundation-list/2008-March/msg00038.html"&gt;releasing&lt;/a&gt; GNOME Foundation budget for 2008.&lt;/li&gt;&lt;/ul&gt;Way to go guys!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1507043461279594917?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1507043461279594917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1507043461279594917&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1507043461279594917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1507043461279594917'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/03/happy-st-patty.html' title='Happy St Patty'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3061/2315763245_049a99303c_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8434405001032459349</id><published>2008-02-28T11:11:00.000-05:00</published><updated>2008-02-28T06:45:21.679-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='istanbul'/><category scheme='http://www.blogger.com/atom/ns#' term='announcement'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GUADEC 2008 Website and CFP</title><content type='html'>&lt;img src="http://behdad.org/blog/mces/image/meet-plan-party.png" style="float: right;" /&gt;&lt;br /&gt;Another announcement:&lt;br /&gt;&lt;br /&gt;GUADEC, the annual GNOME conference will be held in Istanbul, Turkey from the 7th to the 12th of July 2008. The conference will bring together the GNOME development and user community and key personalities from businesses and governments, to discuss the future direction of the GNOME project.&lt;br /&gt;&lt;br /&gt;The call for participation in the conference is now open, and will close on March 30th. A variety of presentations and session can be proposed. “Emerging GNOME trends set the dialog at GUADEC. It was Online Desktop last year, and GNOME Mobile the year before that.” said the program chair, Behdad Esfahbod (that would be me), “We are excited to see what the community brings to GUADEC this year.”&lt;br /&gt;&lt;br /&gt;Read the full &lt;a href="http://www.gnome.org/press/releases/guadec2008.html"&gt;announcement&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Something we are doing differently this year is that we are accepting technical keynote proposals.  If you have a great talk in mind, propose it as keynote!  We'll just downgrade it to regular talk if need be.  Now go work on your proposals!&lt;br /&gt;&lt;br /&gt;GUADEC website: &lt;a href="http://www.guadec.org/"&gt;http://www.guadec.org/&lt;/a&gt;&lt;br /&gt;Call for presentations: &lt;a href="http://guadec.org/guadec08/public/cfp/1"&gt;http://guadec.org/guadec08/public/cfp/1&lt;/a&gt;&lt;br /&gt;Keynote speakers:       &lt;a href="http://guadec.org/public/content/keynotes"&gt;http://guadec.org/public/content/keynotes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8434405001032459349?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8434405001032459349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8434405001032459349&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8434405001032459349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8434405001032459349'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/02/guadec-2008-website-and-cfp.html' title='GUADEC 2008 Website and CFP'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1823747099392336116</id><published>2008-02-27T08:11:00.001-05:00</published><updated>2008-02-27T04:11:59.986-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='a11y'/><category scheme='http://www.blogger.com/atom/ns#' term='gopa'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GNOME Outreach Program: Accessibility</title><content type='html'>&lt;img src="http://www.gnome.org/projects/outreach/a11y/logo.png" style="float: right"&gt;Have been working on this for the past three months.  The news is finally out:&lt;br /&gt;&lt;br /&gt;The GNOME Foundation is running an accessibility outreach program, offering USD$50,000 to be split among individuals. This program will promote software accessibility awareness among the GNOME community as well as harden and improve the overall quality of the GNOME accessibility offering.&lt;br /&gt;&lt;br /&gt;The program is sponsored by GNOME Foundation, Mozilla Foundation, Google™'s Open Source Program Office, Canonical, and Novell. This is the second in a series of outreach programs coordinated and run by the GNOME Foundation. &lt;br /&gt;&lt;br /&gt;GNOME Outreach Program: Accessibility starts accepting applications on March 1st and will run towards the end of the year. There will be two tracks to the program: In the first track accepted individuals will work towards accomplishing one of the major projects nominated for the program, earning US$6,000 and can take up to six months to complete the task. The second track will reward contributors US$1,000 for fixing five bugs out of a pool of accessibility bugs nominated by the program judges.&lt;br /&gt;&lt;br /&gt;Read the full &lt;a href="http://www.gnome.org/press/releases/gop-a11y.html"&gt;announcement&lt;/a&gt; or visit the program &lt;a href="http://www.gnome.org/projects/outreach/a11y/"&gt;page&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1823747099392336116?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1823747099392336116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1823747099392336116&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1823747099392336116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1823747099392336116'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/02/gnome-outreach-program-accessibility.html' title='GNOME Outreach Program: Accessibility'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-225107274761612045</id><published>2008-02-15T21:20:00.001-05:00</published><updated>2008-02-15T19:32:42.944-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gtk+'/><category scheme='http://www.blogger.com/atom/ns#' term='hackfest'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Berlin GTK+ Hackfest Updates</title><content type='html'>&lt;a href="http://live.gnome.org/GTK%2B/Hackfest2008"&gt;Berlin GTK+ Hackfest&lt;/a&gt; approaches fast.  In weeks since &lt;a href="http://mces.blogspot.com/2007/12/berlin-gtk-hackfest.html"&gt;the announcement&lt;/a&gt; several community members showed interest in attending the invitation-only event and all, being very relevant to the event, are invited now.&lt;br /&gt;&lt;br /&gt;We also have new sponsors.  We have Nokia, Imendio, and Red Hat as Gold sponsors, and Novell, Igalia, and OpenedHand as Silver.  Thank you sponsors!&lt;br /&gt;&lt;br /&gt;Last but not least, topping up on Mathias Hasselmann's local organization efforts, Murray's company &lt;a href="http://www.openismus.com/"&gt;Openismus&lt;/a&gt; is now officially the local organizer of the event, taking care of moving money around among other things.  That's a huge part of organizing events like this.  Thanks Openismus!&lt;br /&gt;&lt;br /&gt;/me goes pinging Andreas about tshirt design...&lt;br /&gt;&lt;br /&gt;(Update: fixed typo.  Openismus is no&lt;strong&gt;w&lt;/strong&gt;...  Thanks Sandy)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-225107274761612045?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/225107274761612045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=225107274761612045&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/225107274761612045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/225107274761612045'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/02/berlin-gtk-hackfest-updates.html' title='Berlin GTK+ Hackfest Updates'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8716610626463561267</id><published>2008-02-12T23:57:00.004-05:00</published><updated>2008-02-13T00:07:35.416-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='ghop'/><title type='text'>GHOP Concludes</title><content type='html'>Last night Google announced the &lt;a href="http://code.google.com/opensource/ghop/2007-8/grandprize.html"&gt;Google Highly Open Participation &lt;sup&gt;TM&lt;/sup&gt; Contest Grand Prize Winners&lt;/a&gt;, and that concludes the program.  Congratulations to Patrick Hulin who won GNOME's nomination, and to all the hundreds of students who participated in the program.&lt;br /&gt;&lt;br /&gt;And thanks to &lt;a href="http://blogs.gnome.org/aklapper/2008/02/12/google-highly-open-participation-contest-results/"&gt;Andre Klapper&lt;/a&gt;, &lt;a href="http://blogs.gnome.org/lucasr/2008/02/12/our-ghop-hero/"&gt;Lucas Rocha&lt;/a&gt;, and &lt;a href="http://www.vuntz.net/journal/"&gt;Vincent Untz&lt;/a&gt; for taking care of most of the admin work on GNOME side, as well as all the people mentoring students.  Been a fun ride.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8716610626463561267?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8716610626463561267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8716610626463561267&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8716610626463561267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8716610626463561267'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/02/ghop-concludes.html' title='GHOP Concludes'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5292537593807624018</id><published>2008-02-08T20:26:00.000-05:00</published><updated>2008-02-08T15:58:22.387-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='obama'/><category scheme='http://www.blogger.com/atom/ns#' term='lessig'/><title type='text'>Barack Obama</title><content type='html'>I've been following this election race very closely, but I also have a rule to not blog about politics.&lt;br /&gt;&lt;br /&gt;Watching &lt;a href="http://www.lessig.org/"&gt;Larry Lessig&lt;/a&gt;'s &lt;a href="http://lessig.org/blog/2008/02/20_minutes_or_so_on_why_i_am_4.html"&gt;20 minutes or so about why [he's] 4Barack&lt;/a&gt; made me want to share it (even though all my readers have already watched it), and ask for the help of those Americans who still have a vote to cast (even if this post converts no one).&lt;br /&gt;&lt;br /&gt;Of course Lessig is an awesomely great presenter and this is nothing short of his usual style.   Almost had tear in my eyes when he was talking about war and Iraq and Iran...&lt;br /&gt;&lt;br /&gt;In other Lessig news, a friend of mine was so lucky to accidentally come across and attend Lessig's last &lt;a href="http://randomfoo.net/oscon/2002/lessig/free.html"&gt;presentation of Free Culture&lt;/a&gt; in Stanford a couple weeks ago.  I'm also listening to the &lt;a href="http://www.free-culture.cc/"&gt;Free Culture&lt;/a&gt; &lt;a href="http://www.turnstyle.org/FreeCulture/"&gt;audiobook&lt;/a&gt; in the gym this week (particularly liked &lt;a href="http://www.levien.com/"&gt;Raph Levien&lt;/a&gt;'s reading of the Introduction).  Seems like audiobooks work even better than music in the gym for me.  Not in the bed though.&lt;br /&gt;&lt;br /&gt;What other great books out there are audio'ed (and freely available)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5292537593807624018?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5292537593807624018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5292537593807624018&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5292537593807624018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5292537593807624018'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/02/barack-obama.html' title='Barack Obama'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8402174689986261356</id><published>2008-01-29T11:19:00.000-05:00</published><updated>2008-01-29T05:29:15.420-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='textlayout'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>On Nokia, Qt, and what not...</title><content type='html'>Not sure how to feel about the Nokia-Qt deal.  If they can use it, congrats to my fellow hackers at Qt.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pvanhoof.be/blog/index.php/2008/01/28/finally-an-opportunity"&gt;Philip&lt;/a&gt;:I've been working in my capacity as the Pango maintainer with the Qt guys for almost two years now.  We are moving all our secret-recipe shaping code to a single module hosted on freedestkop.org and called &lt;a href="http://freedesktop.org/wiki/Software/HarfBuzz"&gt;HarfBuzz&lt;/a&gt;. (more on that module later)&lt;br /&gt;&lt;br /&gt;We arrange annual conferences called Text Layout Summit to meet and discuss.  The first one happened at GNOME Boston Summit 2006, second one at aKademy 2007, and the next instance is scheduled to happen at the Libre Graphics Meeting 2008.&lt;br /&gt;&lt;br /&gt;Really, we work together all the time.  You just need to want to.  And meeting face to face gives you that needed initial push.  That's the main reason that I'm working hard on getting GNOME Foundation and KDE e.V. co-hosting aKademy and GUADEC in 2009.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8402174689986261356?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8402174689986261356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8402174689986261356&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8402174689986261356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8402174689986261356'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/01/on-nokia-qt-and-what-not.html' title='On Nokia, Qt, and what not...'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6860255068974852702</id><published>2008-01-29T11:11:00.000-05:00</published><updated>2008-01-29T05:17:54.821-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bugzilla'/><category scheme='http://www.blogger.com/atom/ns#' term='ChangeLog'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>On Bugzilla reference in GNOME ChangeLog's</title><content type='html'>I've wanted to blog about this for a while...&lt;br /&gt;&lt;br /&gt;Those who commit to my modules know, I use a slightly different format to mark bugs in commit messages, and I'm obsessed about it.  The format is very simple:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;2008-01-28  Behdad Esfahbod  &lt;behdad@gnome.org&gt;&lt;br /&gt;&lt;br /&gt;      Bug 512566 – dont' use deprecated macro&lt;br /&gt;      Patch from Christian Persch&lt;br /&gt;&lt;br /&gt;      * tests/test-ot-tags.c:&lt;br /&gt;      * tests/testscript.c:&lt;br /&gt;      Replace G_GNUC_PRETTY_FUNCTION by G_STRFUNC&lt;br /&gt;&lt;/behdad@gnome.org&gt;&lt;/pre&gt;&lt;br /&gt;What's so special about this format is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Easy to remember which bug it is when reading it.  Much more informative than the "(fixes #512566)" standard.  I feel free to re-title bugs before fixing them.&lt;/li&gt;&lt;li&gt;Saves typing and my fingers appreciate it!  I copy/paste the first line by copying it from bugzilla, with the em-dash and all.&lt;/li&gt;&lt;li&gt;When release time comes, I copy all new ChangeLog entries to my NEWS file and sort them out, collecting all the Bug lines into a "Bugs fixed in this release" section and summarizing the rest of the lines.&lt;/li&gt;&lt;/ul&gt;So, if you like that, go ahead and use it in your module.&lt;br /&gt;&lt;br /&gt;If you don't like it, please be nice enough to obey it in my modules still.  You follow coding style of neighboring code when writing a patch.  Treat ChangeLog's the same.  Thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-6860255068974852702?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6860255068974852702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6860255068974852702&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6860255068974852702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6860255068974852702'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/01/on-bugzilla-reference-in-gnome.html' title='On Bugzilla reference in GNOME ChangeLog&apos;s'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4513472674773027309</id><published>2008-01-21T20:38:00.000-05:00</published><updated>2008-01-21T13:43:54.523-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crevette'/><category scheme='http://www.blogger.com/atom/ns#' term='andre'/><category scheme='http://www.blogger.com/atom/ns#' term='tshirt'/><category scheme='http://www.blogger.com/atom/ns#' term='bug500000'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>The Saga Continues</title><content type='html'>I woke up this morning to find in the mail that some &lt;a href="http://live.gnome.org/AndreKlapper"&gt;crazy luser&lt;/a&gt; has stolen &lt;a href="http://mces.blogspot.com/2007/12/thank-you.html"&gt;my beloved tshirt&lt;/a&gt; and is asking for my best offer to get it back:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.gnome.org/aklapper/files/2008/01/behdadstshirt.jpg"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4513472674773027309?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4513472674773027309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4513472674773027309&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4513472674773027309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4513472674773027309'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2008/01/saga-continues.html' title='The Saga Continues'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-6171381916708572839</id><published>2007-12-27T08:45:00.000-05:00</published><updated>2007-12-27T03:50:48.703-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='baris'/><category scheme='http://www.blogger.com/atom/ns#' term='guadec'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='2008'/><title type='text'>GUADEC 2008 Dates Available</title><content type='html'>Thanks to hard work of &lt;a href="http://live.gnome.org/BarisCicek"&gt;Baris&lt;/a&gt;, the dates and venue for &lt;a href="http://guadec.org/"&gt;GUADEC&lt;/a&gt; 2008 are &lt;a href="http://mail.gnome.org/archives/guadec-list/2007-December/msg00007.html"&gt;announced&lt;/a&gt; now.&lt;br /&gt;&lt;br /&gt;Mark your calendars and book your tickets for 7th-12th of July, 2008 for an awesome week in &lt;a href="http://en.wikipedia.org/wiki/Istanbul"&gt;Istanbul&lt;/a&gt;'s &lt;a href="http://www.bahcesehir.edu.tr/index.php?lang=EN"&gt;Bahcesehir University&lt;/a&gt;.&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/5400308-6171381916708572839?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/6171381916708572839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=6171381916708572839&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6171381916708572839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/6171381916708572839'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/guadec-2008-dates-available.html' title='GUADEC 2008 Dates Available'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1883104371148742996</id><published>2007-12-27T08:09:00.000-05:00</published><updated>2007-12-27T03:43:39.675-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tbf'/><category scheme='http://www.blogger.com/atom/ns#' term='gtk+'/><category scheme='http://www.blogger.com/atom/ns#' term='hackfest'/><category scheme='http://www.blogger.com/atom/ns#' term='berlin'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Berlin GTK+ Hackfest</title><content type='html'>GTK+ and its future is of extreme importance to GNOME.  The issue of GTK+ maintenance has been subject of much discussion recently, and based on feedback from advisory board members and the GTK+ maintainers, we have decided that organizing a focused meeting is the most efficient way for the foundation to help with this issue.&lt;br /&gt;&lt;br /&gt;As a result, the GNOME Foundation is organizing the first Berlin GTK+ Hackfest, a one-week meeting of the GTK+ core development team.&lt;br /&gt;&lt;br /&gt;Hackfest is scheduled for the week of March 10, 2008 in Berlin.  It will be a small invitation-only event, designed to tackle specific tasks that have been sitting on GTK+'s TODO list.  Invitations have already been sent out to developers involved, and it is expected that twenty-five people will attend the meeting.  The biggest planned agenda items include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Release planning for next stable release,  currently scheduled for GUADEC, July 2008&lt;/li&gt;&lt;li&gt;Integrating support for the new virtual GLib filesystem support in, gio&lt;/li&gt;&lt;li&gt;Canvas widget,  and considering it as the base for widget rendering in the future&lt;/li&gt;&lt;li&gt;Generic HTML widget/library (with pluggable backends)&lt;/li&gt;&lt;li&gt;GObject introspection: an automatable future for language bindings&lt;/li&gt;&lt;li&gt;Future of D-BUS GLib integration and Gsettings&lt;/li&gt;&lt;li&gt;Session management API&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I'm trying to pull it all together, and &lt;a href="http://taschenorakel.de/"&gt;Mathias Hasselmann (aka tbf)&lt;/a&gt; is doing the local organization.&lt;br /&gt;&lt;br /&gt;Does your project need similar treatment?  Let &lt;a href="mailto:board-list@gnome.org"&gt;us&lt;/a&gt; know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1883104371148742996?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1883104371148742996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1883104371148742996&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1883104371148742996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1883104371148742996'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/berlin-gtk-hackfest.html' title='Berlin GTK+ Hackfest'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1919545914159958480</id><published>2007-12-20T15:35:00.000-05:00</published><updated>2007-12-20T15:38:56.248-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crevette'/><category scheme='http://www.blogger.com/atom/ns#' term='bug500000'/><category scheme='http://www.blogger.com/atom/ns#' term='GNOME foot logo'/><title type='text'>The Winner</title><content type='html'>Now that &lt;a href="http://mces.blogspot.com/2007/12/thank-you.html"&gt;I am&lt;/a&gt; the &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=500002"&gt;loser&lt;/a&gt;, here's the winner:&lt;/p&gt;&lt;p align="center"&gt;&lt;img src="http://bugzilla.gnome.org/attachment.cgi?id=101353"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1919545914159958480?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1919545914159958480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1919545914159958480&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1919545914159958480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1919545914159958480'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/winner.html' title='The Winner'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-8064375587410260907</id><published>2007-12-19T18:51:00.000-05:00</published><updated>2007-12-19T19:26:39.292-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DavidBolter'/><category scheme='http://www.blogger.com/atom/ns#' term='a11y'/><category scheme='http://www.blogger.com/atom/ns#' term='EitanIsaacson'/><category scheme='http://www.blogger.com/atom/ns#' term='WillieWalker'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>GNOME Accessibility to Get a Boost</title><content type='html'>&lt;a href="http://mindforks.blogspot.com/2007/12/invigorating-gnome-accessibility.html"&gt;David&lt;/a&gt;:  You can say I'm making sure I can still enjoy GNOME when my eyesight requires even bigger fonts and when my fingers hurt when typing even more...&lt;br /&gt;&lt;br /&gt;More realistically, it all started when &lt;a href="http://www.0xdeadbeef.com/weblog/"&gt;Chris Blizzard&lt;/a&gt; pointed out matter-of-factly that &lt;a href="http://www.mozilla.org/foundation/"&gt;MoFo&lt;/a&gt; has been spending large amounts of money &lt;a href="http://hecker.org/mozilla/foundation-grants-2007"&gt;on a11y grants&lt;/a&gt;, including some that involve GNOME technology, with &lt;a href="http://www.monotonous.org/"&gt;Eitan Isaacson&lt;/a&gt; listed as the one doing the GNOME work there.  Thanks Eitan!&lt;br /&gt;&lt;br /&gt;What it didn't tell was that GNOME's own &lt;a href="http://live.gnome.org/WillieWalker"&gt;Willie Walker&lt;/a&gt; was mentoring those projects, and otherwise rocking, all this without any fanfare or even a mention on Planet GNOME or non-a11y GNOME lists (as far as I know).  This was quite surprising to me.&lt;br /&gt;&lt;br /&gt;One meeting later with David and Willie, meeting with new board members including &lt;a href="http://blogs.sun.com/yippi/"&gt;Brian Cameron&lt;/a&gt;, and a very encouraging response to Brian's &lt;a href="http://mail.gnome.org/archives/gnome-accessibility-list/2007-December/msg00014.html"&gt;call for volunteers&lt;/a&gt; on &lt;a href href="http://mail.gnome.org/archives/gnome-accessibility-list/2007-December/thread.html"&gt;gnome-accessibility-list&lt;/a&gt;.  By all means so far, seems like Willie will be leading this, so, thank you again Willie!&lt;br /&gt;&lt;br /&gt;As David teased, something really cool coming...  Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-8064375587410260907?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/8064375587410260907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=8064375587410260907&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8064375587410260907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/8064375587410260907'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/gnome-accessibility-to-get-boost.html' title='GNOME Accessibility to Get a Boost'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3963990236300276670</id><published>2007-12-18T19:39:00.001-05:00</published><updated>2007-12-19T16:19:08.021-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='andre'/><category scheme='http://www.blogger.com/atom/ns#' term='kellner'/><category scheme='http://www.blogger.com/atom/ns#' term='lucasr'/><category scheme='http://www.blogger.com/atom/ns#' term='vuntz'/><category scheme='http://www.blogger.com/atom/ns#' term='kenvandine'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='ghop'/><title type='text'>GNOME in GHOP: Needs You!</title><content type='html'>&lt;div style="float: right"&gt;&lt;img src="http://behdad.org/blog/mces/image/ghop.jpg"&gt;&lt;/div&gt;We are three weeks into &lt;a href="http://code.google.com/opensource/ghop/2007-8"&gt;Google Highly Open Participation Program&lt;/a&gt; and the excitement just doesn't want to go away!  On the &lt;a href="http://code.google.com/p/google-highly-open-participation-gnome/"&gt;GNOME side&lt;/a&gt; of the things it's been a pleasure to work with Leslie, of Google OpenSource Office fame, again and we sure look forward to more collaborations.&lt;br /&gt;&lt;br /&gt;Now to the main point: guys and girls!  We need more tasks.  We currently &lt;a href="http://code.google.com/p/google-highly-open-participation-gnome/issues/list"&gt;have&lt;/a&gt; only &lt;strong&gt;9&lt;/strong&gt; tasks open, with about &lt;strong&gt;14&lt;/strong&gt; claimed at this time at this time and over &lt;strong&gt;40&lt;/strong&gt; completed so far.  (&lt;a href="http://opentouch.info/tmp/ghop/ghop-stats.html"&gt;more GHOP stats&lt;/a&gt;).  For Pango, I've got someone write a PangoCairo tutorial, another student writing PangoCairo code to generate a long-wanted image in the docs, and yet another student adding LCOV source code coverage report generation facilities to Pango.&lt;br /&gt;&lt;br /&gt;So, you have long wanted tasks done that no one is looking at? You can use a couple new contributors to your project? Sure, go ahead and &lt;a href="http://code.google.com/p/google-highly-open-participation-gnome/wiki/HowToWriteAGoodTask"&gt;submit more tasks&lt;/a&gt;!  Just write the task, we take care of the administrative stuff.  We need to keep this program running til February!&lt;br /&gt;&lt;br /&gt;Lots of thanks for keeping the program running smoothly so far goes to &lt;a href="http://www.vuntz.net/journal/2007/11/28/449-gnome-google-highly-open-participation-contest"&gt;Vincent&lt;/a&gt;, &lt;a href="http://blogs.gnome.org/aklapper/2007/12/05/googles-highly-open-participation-propose-your-task/"&gt;Andre&lt;/a&gt;, Lucas, and Christian Kellner.  Oh, and Leslie and her team on the Google side of the thing.  Thanks &lt;a href="http://code.google.com/opensource/"&gt;Google OpenSource Office&lt;/a&gt; again!&lt;br /&gt;&lt;br /&gt;Oh did I tell you how nice &lt;a href="http://ken.vandine.org/?p=293"&gt;Ken Vandine&lt;/a&gt; was to put together &lt;a href="http://live.gnome.org/GnomeDeveloperKit"&gt;GNOME Developer Kit&lt;/a&gt; together just in time for GHOP?  If you want to start hacking on GNOME right away, nothing beats that VMWare image in ease of use, and peace of mind.  He keeps making it &lt;a href="http://ken.vandine.org/?p=295"&gt;more beautiful&lt;/a&gt;.  Thank you Ken!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3963990236300276670?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3963990236300276670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3963990236300276670&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3963990236300276670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3963990236300276670'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/gnome-in-ghop-needs-you.html' title='GNOME in GHOP: Needs You!'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4321340848263866651</id><published>2007-12-13T02:49:00.000-05:00</published><updated>2007-12-13T03:13:25.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crevette'/><category scheme='http://www.blogger.com/atom/ns#' term='tshirt'/><category scheme='http://www.blogger.com/atom/ns#' term='bug500000'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='behdad'/><title type='text'>Thank You</title><content type='html'>It's a Beautiful Day when you receive two unexpected packages, one a Thank You card from your real estate agent and the other, a tshirt like &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=500002#c11"&gt;this&lt;/a&gt; from &lt;a href="https://launchpad.net/~bmillemathias"&gt;Baptiste Mille-Mathias&lt;/a&gt; aka crevette:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2107674103/" title="GNOME Bug #500000 tshirt by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2197/2107674103_d6be2015b6.jpg" width="376" height="500" alt="GNOME Bug #500000 tshirt" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thank you Baptiste, and yes I like yellow tees.&lt;br /&gt;&lt;br /&gt;And Thank You to everyone who makes Life Beautiful by Acts of Random Kindness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4321340848263866651?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4321340848263866651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4321340848263866651&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4321340848263866651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4321340848263866651'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/thank-you.html' title='Thank You'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2197/2107674103_d6be2015b6_t.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-2486434878130495376</id><published>2007-12-01T04:27:00.000-05:00</published><updated>2007-12-01T04:29:53.895-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='Dave'/><title type='text'>Ultimate Shell Puzzle</title><content type='html'>&lt;a href="http://blogs.gnome.org/bolsh/2007/11/29/shell-puzzle-2/"&gt;Dave&lt;/a&gt;: I found the answer to that puzzle the hard way a few years ago.  The way I found it though makes a much more interesting puzzle:&lt;br /&gt;&lt;br /&gt;What does the following script do:&lt;pre&gt;#!/usr/bin/env PATH=/bin:/usr/bin python&lt;br /&gt;print "Hello"&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-2486434878130495376?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/2486434878130495376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=2486434878130495376&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2486434878130495376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/2486434878130495376'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/12/ultimate-shell-puzzle.html' title='Ultimate Shell Puzzle'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4491126539888166328</id><published>2007-11-28T23:32:00.000-05:00</published><updated>2007-12-01T14:48:31.912-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Iverson'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='wingo'/><title type='text'>On Python Coolness</title><content type='html'>&lt;a href="http://wingolog.org/archives/2007/11/28/eeeevil"&gt;wingo&lt;/a&gt;: Your hack only works if input sequence holds boolean (or integers for that matter) only.  Note that Iverson’s Convention only says that the a boolean &lt;em&gt;result&lt;/em&gt; is encoded as 0 or 1.&lt;br /&gt;&lt;br /&gt;There is an elegant solution to your puzzle: use another &lt;tt&gt;lambda&lt;/tt&gt; to work around &lt;tt&gt;and&lt;/tt&gt; being syntactic:&lt;pre&gt;all = lambda seq: reduce(lambda a, b: a and b, seq, True)&lt;/pre&gt;&lt;br /&gt;Moreover, unlike &lt;a href="http://drj11.wordpress.com/2007/05/25/iversons-convention-or-what-is-the-value-of-x-y/"&gt;the Iverson&lt;/a&gt; page you linked to claims, at least with Python 2.5, Python does not use Iversion, but does the Perl-style convention of returning the first operand that determined the outcome of the expression, taking the short-circuit rules in mind:&lt;pre&gt;&gt;&gt;&gt; "m" and "n"&lt;br /&gt;'n'&lt;br /&gt;&gt;&gt;&gt; [] and True&lt;br /&gt;[]&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4491126539888166328?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4491126539888166328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4491126539888166328&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4491126539888166328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4491126539888166328'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/11/on-python-coolness.html' title='On Python Coolness'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-5958054884991301954</id><published>2007-11-28T17:27:00.002-05:00</published><updated>2007-11-28T18:30:14.376-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='gedit'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='IranNastaliq'/><category scheme='http://www.blogger.com/atom/ns#' term='Nastaliq'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><category scheme='http://www.blogger.com/atom/ns#' term='Persian'/><title type='text'>The Most Beautiful Persian OpenType Font</title><content type='html'>Glad &lt;a href="http://www.flickr.com/photos/behdad/1590098892/"&gt;I asked for it&lt;/a&gt; &lt;a href="http://mces.blogspot.com/2007/10/episode-vi-return-of-federico.html"&gt;last month&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;Apparently the &lt;a href="http://en.wikipedia.org/wiki/Supreme_Council_of_ICT_of_Iran"&gt;Supreme Council of ICT of Iran&lt;/a&gt; has released the first ever OpenType Persian &lt;a href="http://en.wikipedia.org/wiki/Nastaliq"&gt;Nastaliq&lt;/a&gt; font.  This is of great importance because previously all Persian Nastaliq solutions were Windows-only systems requiring custom rendering engine installed and only worked with select applications.  Not anymore!&lt;br /&gt;&lt;br /&gt;Anyway, very nice outcome of a governmental-funded project in Iran.  I quite appreciate that.  The font can be downloaded &lt;a href="http://www.scict.ir/Portal/File/ShowFile.aspx?ID=bea5ca36-1fdf-41d4-8818-c1a4f9c71081"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now to the interesting part.  Again, Pango 1.18.3 and gedit:&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/2072489308/" title="IranNastaliq in Pango by Behdad Esfahbod, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2068/2072489308_2099304569.jpg" width="500" height="320" alt="IranNastaliq in Pango" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The font itself is far from perfect in its OpenType tables, but it's a great start.  I've been wanting that for so long...  The only issue is that the font doesn't hold a clear license.  Got to sort that out and voila!  I know, I'm clearly excited.  Very excited.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-5958054884991301954?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/5958054884991301954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=5958054884991301954&amp;isPopup=true' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5958054884991301954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/5958054884991301954'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/11/most-beautiful-persian-opentype-font.html' title='The Most Beautiful Persian OpenType Font'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2068/2072489308_2099304569_t.jpg' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1041099969324639429</id><published>2007-11-02T19:45:00.000-04:00</published><updated>2007-11-02T20:05:00.022-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sari'/><category scheme='http://www.blogger.com/atom/ns#' term='Iran'/><category scheme='http://www.blogger.com/atom/ns#' term='photos'/><title type='text'>Life Goes On in Iran</title><content type='html'>Hard times being an Iranian, but many of us want to let the world know that no matter what &lt;a href="http://en.wikipedia.org/wiki/Ahmadinejad"&gt;our president&lt;/a&gt; says, no matter what &lt;a href="http://en.wikipedia.org/wiki/George_W._Bush"&gt;your president&lt;/a&gt; says, life goes on in Iran, and the Iranian people live and think pretty normal lives/thoughts.&lt;br /&gt;&lt;br /&gt;Here are a couple of photo collections of Iran for your eyes' pleasure:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://lifegoesonintehran.com/"&gt;Life Goes On In Tehran&lt;/a&gt;, photoblog with monthly issues of everyday life in Iran.  &lt;a href="http://lifegoesonintehran.com/08_November2007.html"&gt;Current issue&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://picasaweb.google.com/aatrvash/Iran02/photo?authkey=WHfBV-cDZ2E#s5096648213217515586"&gt;A Picasa  Web Album&lt;/a&gt; of Iranian scenes.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/1832244571/" title="Photo Sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2386/1832244571_62b263eeec.jpg" width="500" height="375" alt="Sun over the Lake at Soleyman-tange Dam, Sari, Iran" /&gt;&lt;/a&gt;&lt;br&gt;Sun over the Lake at Soleyman-tange Dam around my home city of &lt;a href="http://en.wikipedia.org/wiki/Sari,_Iran"&gt;Sari, Iran&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1041099969324639429?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1041099969324639429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1041099969324639429&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1041099969324639429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1041099969324639429'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/11/life-goes-on-in-iran.html' title='Life Goes On in Iran'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2386/1832244571_62b263eeec_t.jpg' height='72' width='72'/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-1515807743726466624</id><published>2007-10-16T13:39:00.000-04:00</published><updated>2007-10-16T13:58:44.038-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harfbuzz'/><category scheme='http://www.blogger.com/atom/ns#' term='pango'/><category scheme='http://www.blogger.com/atom/ns#' term='Boston Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='optimization'/><category scheme='http://www.blogger.com/atom/ns#' term='federico'/><title type='text'>Episode VI: Return of Federico</title><content type='html'>&lt;a href="http://www.gnome.org/%7Efederico/news-2007-10.html#pango-cjk-1"&gt;Federico:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Funny, how I read your post after &lt;a href="http://live.gnome.org/Boston2007"&gt;Boston Summit&lt;/a&gt;, and I've had in fact discussed both issues with Owen Taylor while there.  Lets see:&lt;br /&gt;&lt;br /&gt;First, increasing cairo scaled font cache size: You saw a 230 KB process size increase when increasing cache size from 256 to 2048.  Well, here's a little secret I decided not to disclose until someone notices it, and you kinda qualify now:  Cairo doesn't free glyph renderings after uploading them to the X server!  You definitely need them if you are using the image surface, but most processes don't.  So, you've got the smart X server hashing and reusing glyph renderings, and cairo-using processes keeping a copy around, for no good.  Fix that and happily increase cache size to 2048 without 230 KB size increase!&lt;br /&gt;&lt;br /&gt;Next, time spent in HarfBuzz, and particularly recreating and enlarging buffers all the time.  As my summit hacking project I took on optimizing HarfBuzz.  In short, I did:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Make output buffer copy/swap'ing during GSUB processing lazy, such that if a lookup doesn't affect a glyph string, no glyph copying takes place.&lt;/li&gt;&lt;li&gt;Compile all of HarfBuzz as a single file, to let compiler do more optimizations.  This increased HarfBuzz binary size from 100 KB to 150 KB.  Compiling with -Os brings it down to 70 KB.  May be worth profiling with -Os too.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Last but not least, cache one HB_Buffer.&lt;/li&gt;&lt;/ul&gt;All in all, in my measurements, these three made repeated text layout 10 to 20 percent faster for 1) very long paragraphs, and 2) using fonts with many many looksup like Nafees Nastaliq (more than 100).  They made no difference for regular small text+font combinations.&lt;br /&gt;&lt;br /&gt;Mandatory screenshot of Nafees Nastaliq after I fixed a bug to tolerate a font bug in the GDEF table.  I'm surprised how good actually it worked with the synthesized GDEF Pango put together for it, but now it works perfect (again):&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://www.flickr.com/photos/behdad/1590098892/" title="Photo Sharing"&gt;&lt;img src="http://farm3.static.flickr.com/2253/1590098892_146a4bf4dd_o.png" width="442" height="425" alt="Nafees Nastaliq in Pango" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-1515807743726466624?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/1515807743726466624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=1515807743726466624&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1515807743726466624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/1515807743726466624'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/10/episode-vi-return-of-federico.html' title='Episode VI: Return of Federico'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-7376727910256591</id><published>2007-10-15T14:44:00.000-04:00</published><updated>2007-10-15T14:58:37.851-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='California'/><category scheme='http://www.blogger.com/atom/ns#' term='Hollister'/><category scheme='http://www.blogger.com/atom/ns#' term='AFF'/><category scheme='http://www.blogger.com/atom/ns#' term='skidiving'/><category scheme='http://www.blogger.com/atom/ns#' term='youtube'/><title type='text'>Skydiving 2</title><content type='html'>&lt;p align="center"&gt;&lt;object width="425" height="353"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lv6Nqu_8jok"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lv6Nqu_8jok" type="application/x-shockwave-flash" wmode="transparent" width="425" height="353"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br&gt;&lt;a href="http://www.youtube.com/watch?v=lv6Nqu_8jok"&gt;YouTube link&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Accelerated_Freefall"&gt;AFF&lt;/a&gt; jump from 15000ft, &lt;a href="http://1800funjump.com/"&gt;Adventure Center Skydiving&lt;/a&gt; in Hollister, California this time.&lt;br /&gt;&lt;br /&gt;For comparison, &lt;a href="http://mces.blogspot.com/2007/06/skydiving.html"&gt;my first jump&lt;/a&gt; was &lt;a href="http://en.wikipedia.org/wiki/Static_line"&gt;static-line&lt;/a&gt; from 3000ft, &lt;a href="http://www.parachuteschool.com/"&gt;Parachute School of Toronto&lt;/a&gt; in Simcoe, Ontario.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-7376727910256591?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/7376727910256591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=7376727910256591&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7376727910256591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/7376727910256591'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/10/skydiving-2.html' title='Skydiving 2'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-4863297359982882524</id><published>2007-09-17T22:11:00.000-04:00</published><updated>2007-09-17T22:19:04.909-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='ChangeLog'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>gnome-changelog</title><content type='html'>Dear Lazy Hackers,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://behdad.org/download/Code%20Snippets/gnome-changelog"&gt;Here&lt;/a&gt; is my version of prepare-ChangeLog.pl, based on a version I found around the web, with a couple of formatting changes and incomplete git support.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://trac.webkit.org/projects/webkit/browser/trunk/WebKitTools/Scripts/prepare-ChangeLog?format=raw"&gt;Here&lt;/a&gt; is webkit's heavily hacked version of prepare-ChangeLog.pl, apparently based on a separate version and without multiple ChangeLog support as far as I see, but with full git support.&lt;br /&gt;&lt;br /&gt;Who is the brave soul / fearless Perl hacker to merge them and create an authentic version and then add it to gnome-common?&lt;br /&gt;&lt;br /&gt;I also have a bunch of other gnome scripts I use &lt;a href="http://behdad.org/download/Code%20Snippets/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;br /&gt;behdad&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-4863297359982882524?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/4863297359982882524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=4863297359982882524&amp;isPopup=true' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4863297359982882524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/4863297359982882524'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/09/gnome-changelog.html' title='gnome-changelog'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5400308.post-3503009271575557560</id><published>2007-09-11T16:44:00.000-04:00</published><updated>2007-09-11T17:20:33.172-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='cvs'/><category scheme='http://www.blogger.com/atom/ns#' term='gnome'/><title type='text'>Please Git It</title><content type='html'>Continuing the &lt;a href="http://live.gnome.org/DistributedSCM"&gt;Git Migration&lt;/a&gt; thread from &lt;a href="http://mail.gnome.org/archives/foundation-list/2007-September/thread.html"&gt;foundation-list&lt;/a&gt;, I have to agree with &lt;a href="http://log.emmanuelebassi.net/archives/2007/09/when-the-levee-breaks/"&gt;ebassi&lt;/a&gt; that git is designed to be highly scriptable.  That's kind of a &lt;a href="http://en.wikipedia.org/wiki/Tautology"&gt;tautology&lt;/a&gt; as one can infer it from the fact that most git tools are written as scripts calling lower-level ones.&lt;br /&gt;&lt;br /&gt;What I wanted to post but am now writing here is that you can write a wrapper around git (&lt;em&gt;porcelain&lt;/em&gt; as they call it in git speak) that behaves exactly like bad ol' CVS if you really want to keep the old workflows and minimize the learning curve.  Without bothering to write a full script, lets have a quick look:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cvs -d &lt;em&gt;root&lt;/em&gt; checkout &lt;em&gt;module&lt;/em&gt;&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;git clone &lt;em&gt;root&lt;/em&gt;/&lt;em&gt;module&lt;/em&gt; &lt;em&gt;module&lt;/em&gt;&lt;br&gt;&lt;br /&gt;cd &lt;em&gt;module&lt;/em&gt;&lt;br /&gt;git checkout -b &lt;em&gt;working&lt;/em&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cvs update&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;git fetch&lt;br /&gt;git rebase master&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cvs commit &lt;em&gt;what&lt;/em&gt;&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;git commit &lt;em&gt;what?what:.&lt;/em&gt;&lt;br /&gt;git push origin working:master&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;&lt;code&gt;cvs tag &lt;em&gt;tagname&lt;/em&gt;&lt;/code&gt;&lt;/strong&gt;&lt;br /&gt;&lt;code&gt;git tag &lt;em&gt;tagname&lt;/em&gt;&lt;br /&gt;git push origin &lt;em&gt;tagname&lt;/em&gt;&lt;/code&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;You get the idea... However, the main point about migration to distributed source control systems is, you really should not keep your old workflows or you are ignoring most of the benefits.  Non-technical users (translators?) can use these kind of scripts though.  Last but not least, you can do &lt;a href="http://www.gnome.org/%7Efherrera/blog//AllThatsJazz"&gt;cool thing&lt;/a&gt;s with git that you can't do with CVS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5400308-3503009271575557560?l=mces.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mces.blogspot.com/feeds/3503009271575557560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5400308&amp;postID=3503009271575557560&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3503009271575557560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5400308/posts/default/3503009271575557560'/><link rel='alternate' type='text/html' href='http://mces.blogspot.com/2007/09/please-git-it.html' title='Please Git It'/><author><name>behdad</name><uri>http://www.blogger.com/profile/15683613908300939375</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='25' height='32' src='http://behdad.org/behdad.jpg'/></author><thr:total>2</thr:total></entry></feed>
