<?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-4332074303276912557</id><updated>2011-12-26T00:20:01.688Z</updated><category term='phd'/><category term='open source'/><category term='python'/><category term='vacations'/><category term='gnumexp'/><title type='text'>Gustavo J. A. M. Carneiro</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>67</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-2652598172070518923</id><published>2011-12-16T10:32:00.000Z</published><updated>2011-12-16T10:32:55.898Z</updated><title type='text'>Fix Mic input in Ubuntu</title><content type='html'>These modprobe.conf options make the Mic input work for my Toshiba Satellite:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;options snd-hda-intel model=auto&lt;br /&gt;options snd slots=snd-hda-intel&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/4332074303276912557-2652598172070518923?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/2652598172070518923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=2652598172070518923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2652598172070518923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2652598172070518923'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2011/12/fix-mic-input-in-ubuntu.html' title='Fix Mic input in Ubuntu'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1003595643406952277</id><published>2011-02-10T18:02:00.000Z</published><updated>2011-02-10T18:02:22.552Z</updated><title type='text'>waf 1.6.2 cflags and pkgconfig tools</title><content type='html'>I have a couple of useful tools for waf that have just now ported to work with waf 1.6.2.  Get them &lt;a href="http://telecom.inescporto.pt/~gjc/waf-1.6.2-tools/"&gt;here&lt;/a&gt;.  If you don't know what I'm talking about, nevermind.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1003595643406952277?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1003595643406952277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1003595643406952277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1003595643406952277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1003595643406952277'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2011/02/waf-162-cflags-and-pkgconfig-tools.html' title='waf 1.6.2 cflags and pkgconfig tools'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6510541001316804244</id><published>2010-10-19T15:36:00.004+01:00</published><updated>2010-10-21T11:20:52.023+01:00</updated><title type='text'>C++ STL containers: memory experimentations</title><content type='html'>&lt;div&gt;For future reference (mainly for myself), here's how some C++ STL containers behave in terms of memory consumption.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5&lt;br /&gt;&lt;/div&gt;&lt;div&gt;64-bit (i'm sure the values will be different in 32-bit)&lt;br /&gt;Compiled with -O3.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;E is number of elements in the container&lt;br /&gt;&lt;/div&gt;&lt;div&gt;std::vector:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;24 bytes + 1*E (but memory is allocated in chunks: 0, 16, 32, ... *bytes* (not elements))&lt;br /&gt;&lt;/div&gt;&lt;div&gt;std::list:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;16 bytes + { 128 (char) &amp;nbsp;|| 128 (one int or long) || 192 (3 longs) 256 (4 longs) || 256 (5 longs) || 320 (6 longs) } * E&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, it appears std::list allocates 16 bytes (one pointer), but then allocates, per element, always a multiple of 64 bytes!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In any case surprises to be expected. &amp;nbsp;std::vector allocates 24+16 = 40 bytes for a vector with only one "char". &amp;nbsp;An std::list of char's appears to need 128 bytes to store each char!&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: serif; margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;Update:&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="font-family: serif; margin: 0px;"&gt;&lt;div style="margin: 0px;"&gt;std::set of int*&lt;int*&gt;&lt;int*&gt;&lt;int*&gt;: &amp;nbsp;&amp;nbsp;48 bytes + 192*E&lt;/int*&gt;&lt;/int*&gt;&lt;/int*&gt;&lt;/div&gt;&lt;div&gt;&lt;int*&gt;&lt;br /&gt;&lt;/int*&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Update2:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have measured the previous values using MAX RSS of the process (/usr/bin/time).  Running with massif, I am obtaining a value of 40 bytes for each element of a std::list&amp;lt;int*&amp;gt;.  But still, theoretical value would be 24 bytes (3 pointers), not 40.  And massif is a simulator, not a real implementation.  What matters is the memory occupied by a process in a real system, and for that MAX RSS is a more accurate measure.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6510541001316804244?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6510541001316804244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6510541001316804244' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6510541001316804244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6510541001316804244'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2010/10/c-stl-containers-memory.html' title='C++ STL containers: memory experimentations'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1261129475698904009</id><published>2010-01-19T18:59:00.000Z</published><updated>2010-01-19T18:59:33.880Z</updated><title type='text'>Linux swap: an advice</title><content type='html'>In the olden days, the Linux enthusiasts would recommend that you should create a SWAP partition that has twice the size of your RAM. &amp;nbsp;Nobody knew why, but it just a rule we all followed. &amp;nbsp;In those days, computers had something like 32 MB of RAM. &amp;nbsp;Using 64 MB of disk space as SWAP seemed OK.&lt;br /&gt;&lt;br /&gt;Today I opened a complex diagram in PDF format, generated by a computer program, with the Ubuntu PDF reader, Evince. &amp;nbsp;The last setting Evince used for that file was with a very high zoom level, and so Evince tried to render the PDF page with that zoom level. &amp;nbsp;After a few seconds I lost control of the computer due to &lt;i&gt;thrasing&lt;/i&gt;. &amp;nbsp;How can this be? &amp;nbsp;The software security guys keep a constant watch on program flaws that make DoS attacks possible when opening a malicious file. &amp;nbsp;I have generated a DoS attack to myself?!&lt;br /&gt;&lt;br /&gt;When I regained control of the computer I discovered I had 3 GB of swap space installed. &amp;nbsp;When a program is buggy and tries to allocate huge chunks of memory, of course it will bring the system to its knees.&lt;br /&gt;&lt;br /&gt;My solution: reduce the swap space to 512 MB. &amp;nbsp;Now Evince just fails to allocate memory and does not render the page. &amp;nbsp;But I regain control and can switch to a different zoom level and finally render my page. &amp;nbsp;A lesson learnt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1261129475698904009?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1261129475698904009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1261129475698904009' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1261129475698904009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1261129475698904009'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2010/01/linux-swap-advice.html' title='Linux swap: an advice'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4613098855329601013</id><published>2009-12-23T18:01:00.002Z</published><updated>2009-12-23T18:03:45.105Z</updated><title type='text'>PyBindGen benchmarks</title><content type='html'>PyBindGen benchmarks, against Boost.Python and SWIG, &lt;a href="http://telecom.inescporto.pt/~gjc/pybindgen-benchmarks/"&gt;posted&lt;/a&gt;.  PyBindGen mostly beats the other two, but not always.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4613098855329601013?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4613098855329601013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4613098855329601013' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4613098855329601013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4613098855329601013'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/12/pybindgen-benchmarks.html' title='PyBindGen benchmarks'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3785420387860300539</id><published>2009-09-19T12:55:00.003+01:00</published><updated>2009-09-19T12:57:49.814+01:00</updated><title type='text'>Purity is overrated</title><content type='html'>&lt;blockquote&gt;'Have you done this before?'&lt;br /&gt;'Of course.  Hundreds of times - well, scores of times anyway.'&lt;br /&gt;[...]&lt;br /&gt;'Listen.  The more men you've had, the more I love you.  Do you understand?'&lt;br /&gt;'Yes, perfectly.'&lt;br /&gt;'I hate purity.  I hate goodness!  I don't want any virtue to exist anywhere.  I want everyone to be corrupt to the bones.'&lt;br /&gt;'Well, then, I ought to suit you, dear.  I'm corrupt to the bones.'&lt;br /&gt;'You like doing this?  I don't mean simply with me: I mean the thing itself?'&lt;br /&gt;'I adore it.'&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;"Ninteteen Eighty-Four", George Orwell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3785420387860300539?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3785420387860300539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3785420387860300539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3785420387860300539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3785420387860300539'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/09/purity-is-overrated.html' title='Purity is overrated'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4566537859178240640</id><published>2009-09-11T17:58:00.002+01:00</published><updated>2009-09-11T18:08:07.328+01:00</updated><title type='text'>Flattery</title><content type='html'>&lt;blockquote&gt;There is nothing in the world more difficult than candor, and nothing easier than flattery.  If there is even one hundredth part of a false note in candor, there is immediately a dissonance, and then ﹘ scandal.  But with flattery, even if everything is false down to the last little note, it is still agreeable and is listened to not without pleasure; crude though the pleasure may be, it is still a pleasure.  And however crude the flattery may be, at least half of it is sure to seem true.  And that is so for all levels of development and strata of society.  Even a vestal virgin can be seduced by flattery.  Not to mention ordinary people.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Fyodor Dostoevsky, "Crime and Punishment".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4566537859178240640?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4566537859178240640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4566537859178240640' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4566537859178240640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4566537859178240640'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/09/flattery.html' title='Flattery'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4509511929409622279</id><published>2009-08-31T22:21:00.004+01:00</published><updated>2009-08-31T22:33:46.575+01:00</updated><title type='text'>On not finding a topic of conversation</title><content type='html'>&lt;blockquote&gt;And have you noticed, Rodion Romanovich, that among us -- that is, in our Russia, sir, and most of all in our Petersburg circles -- if two intelligent men get together, not very well acquainted yet, but, so to speak, mutually respecting each other, just like you and me now, sir, it will take them a whole half hour to find a topic of conversation -- they freeze before each other, they sit feeling mutually embarrassed.  Everybody has topics for conversation, ladies for instance . . . worldly men, for instance, of a higher tone, always have a topic for discussion, &lt;span style="font-style: italic;"&gt;c'est de rigeur!&lt;/span&gt;&lt;span&gt; -- but people of the neuter kind, like us, are easily embarrassed and have trouble talking . . . the thinking ones, I mean.&lt;/span&gt; Why do you suppose that is, my dear?  Do we have no social interests, or is it that we're too honest and don't want to deceive each other, I don't know.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Crime and Punishment, Dostoevsky.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4509511929409622279?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4509511929409622279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4509511929409622279' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4509511929409622279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4509511929409622279'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/08/on-not-finding-topic-of-conversation.html' title='On not finding a topic of conversation'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-674755711617268821</id><published>2009-08-31T12:00:00.003+01:00</published><updated>2009-08-31T12:02:27.459+01:00</updated><title type='text'>'hg update' and subdirectories?</title><content type='html'>&lt;pre&gt;&lt;br /&gt;$ hg clone ns-3-dev ns-3-foo&lt;br /&gt;updating working directory&lt;br /&gt;948 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;$ cd ns-3-foo/&lt;br /&gt;$ ls&lt;br /&gt;AUTHORS    CHANGES.html  examples/  ns3/    regression/    RELEASE_NOTES  scratch/  utils/   waf*      wscript&lt;br /&gt;bindings/  doc/          LICENSE    README  regression.py  samples/       src/      VERSION  waf.bat*  wutils.py&lt;br /&gt;$ rm -rf *&lt;br /&gt;$ hg up&lt;br /&gt;11 files updated, 0 files merged, 0 files removed, 0 files unresolved&lt;br /&gt;$ ls&lt;br /&gt;AUTHORS  CHANGES.html  LICENSE  README  regression.py  RELEASE_NOTES  VERSION  waf*  waf.bat*  wscript  wutils.py&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Where did all the subdirectories go?  How can I get them back?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-674755711617268821?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/674755711617268821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=674755711617268821' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/674755711617268821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/674755711617268821'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/08/hg-update-and-subdirectories.html' title='&apos;hg update&apos; and subdirectories?'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3476718861035789008</id><published>2009-08-31T00:07:00.002+01:00</published><updated>2009-08-31T00:29:43.573+01:00</updated><title type='text'>About Horns</title><content type='html'>&lt;blockquote&gt;"[...]Horns are simply the natural consequence of every legal marriage, its correction, so to speak, a protest, so that in this sense they are not humiliating in the least... And--absurd as it is to think of it--if ever I wind up in a legal marriage, I will even be glad of your thrice-cursed horns; in that case I'll say to my wife: 'My friend, before now I have only loved you, but now I respect you, because you've been able to protest!'  You laugh?  That's because you're not strong enough to tear yourself free of prejudices!  Devil take it, don't I know precisely what makes it so unpleasant when you're deceived in the legal sort?  But that is merely the base consequence of a base fact, in which both parties are humiliated.  But when the horns are given openly, as in civil marriage, then they no longer exist, they are unthinkable, and lose even the name of horns.  On the contrary, your wife will merely be proving how much she respects you, by considering you incapable of opposing her happiness and developed enough not to take revenge on her for her new husband.  Devil take it, I sometimes dream that if I were given into marriage--pah!--if I were to marry (civilly or legally, it makes no difference), I think I'd bring my wife a lover myself, if she was too slow in taking one.  'My friend', I'd say, 'I love you, but beyond that I wish you to respect me--here!'.  Is it right, is it right what I'm saying?..."&lt;br /&gt;&lt;/blockquote&gt;Dostoevsky, "Crime and Punishment" (the book I am currently reading).&lt;br /&gt;&lt;br /&gt;So, remember folks, if your wife gives you horns, she "will merely be proving how much she respects you"! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3476718861035789008?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3476718861035789008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3476718861035789008' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3476718861035789008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3476718861035789008'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/08/about-horns.html' title='About Horns'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5897565361382835602</id><published>2009-08-27T10:49:00.003+01:00</published><updated>2009-08-27T10:55:37.086+01:00</updated><title type='text'>Fam'art Ensemble</title><content type='html'>If you live in the north region of Portugal and wish to have a classical band playing at a cerimony (like wedding), checkout my sister's cool outfit &lt;a href="http://sites.google.com/site/famartensemble/"&gt;Fam'art Ensemble&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5897565361382835602?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5897565361382835602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5897565361382835602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5897565361382835602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5897565361382835602'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/08/famart-emsemble.html' title='Fam&apos;art Ensemble'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8708111770780194319</id><published>2009-07-16T13:17:00.002+01:00</published><updated>2009-07-16T13:22:49.113+01:00</updated><title type='text'>Paper with 100 citations!</title><content type='html'>This is a significant milestone for me.  A &lt;a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1295732"&gt;paper&lt;/a&gt; I wrote was 5 years ago published in IEEE Wireless Communications, and has recently reached &lt;a href="http://scholar.google.pt/scholar?q=cross+layer+design+in+4g+terminals&amp;amp;hl=en&amp;amp;lr=&amp;amp;btnG=Search"&gt;100 citations&lt;/a&gt;!  This is huge!&lt;br /&gt;&lt;br /&gt;I would like to thank my co-authors for the help, in particular prof. Manuel Ricardo, my advisor, whose help was instrumental to the success of the paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8708111770780194319?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8708111770780194319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8708111770780194319' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8708111770780194319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8708111770780194319'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/07/paper-with-100-citations.html' title='Paper with 100 citations!'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-2436560031451363053</id><published>2009-07-06T00:20:00.004+01:00</published><updated>2009-07-06T00:55:19.354+01:00</updated><title type='text'>Teatro Municipal de Vila do Conde</title><content type='html'>Hoje fui a uma sessão de curtas metragens, no &lt;a href="http://artecapital.net/recomendacoes_ev.php?ref=32"&gt;"17º Curtas Vila do Conde"&lt;/a&gt;, festival de curtas metragens.  Fantástico ambiente, imensa multidão (sala 1 de 550 completamente lotada!), e muito bons filmes exibidos.  Não estava de todo à espera de tanta gente para ver curtas metragens.  Será que o povo de Vila do Conde é muito mais cinéfilo que o de Famalicão?!&lt;br /&gt;&lt;br /&gt;Mas o que mais me surpreendeu foi o recentemente estreado anfiteatro.  Com aspecto verdeiramente luxuoso.  Todo forrado a madeira, envernizada e trabalhada.  Iluminação impecável.  Mete o grande auditório da Casa das Artes de V. N. de Famalicão num bolso :P&lt;br /&gt;&lt;br /&gt;Fotos de qualidade duvidosa (nokia 5200, I hate you!):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_utOcD-lSx_c/SlE3lcrXilI/AAAAAAAAAI8/zk2dyHNZKxo/s1600-h/Img015.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_utOcD-lSx_c/SlE3lcrXilI/AAAAAAAAAI8/zk2dyHNZKxo/s400/Img015.jpg" alt="" id="BLOGGER_PHOTO_ID_5355122548413008466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_utOcD-lSx_c/SlE3lepxs8I/AAAAAAAAAI0/Sl4sQUdpF8M/s1600-h/Img014.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_utOcD-lSx_c/SlE3lepxs8I/AAAAAAAAAI0/Sl4sQUdpF8M/s400/Img014.jpg" alt="" id="BLOGGER_PHOTO_ID_5355122548943205314" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_utOcD-lSx_c/SlE3lJ3BlzI/AAAAAAAAAIs/1KbnBEQ7OY4/s1600-h/Img013.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_utOcD-lSx_c/SlE3lJ3BlzI/AAAAAAAAAIs/1KbnBEQ7OY4/s400/Img013.jpg" alt="" id="BLOGGER_PHOTO_ID_5355122543361627954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-2436560031451363053?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/2436560031451363053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=2436560031451363053' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2436560031451363053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2436560031451363053'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/07/teatro-municipal-de-vila-do-conde.html' title='Teatro Municipal de Vila do Conde'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_utOcD-lSx_c/SlE3lcrXilI/AAAAAAAAAI8/zk2dyHNZKxo/s72-c/Img015.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-326022281645394695</id><published>2009-06-23T15:53:00.002+01:00</published><updated>2009-06-23T15:58:09.901+01:00</updated><title type='text'>RTCM, lunch at "Círculo Universitário"</title><content type='html'>Today is &lt;a href="http://rtcm.inescporto.pt"&gt;RTCM&lt;/a&gt; day, at Faculdade de Ciências da Universidade do Porto.  We had lunch at a place called "Círculo Universitário", which is simply amazing.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_utOcD-lSx_c/SkDsniwSFKI/AAAAAAAAAIU/9pEe8NQ2lBM/s1600-h/Img009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_utOcD-lSx_c/SkDsniwSFKI/AAAAAAAAAIU/9pEe8NQ2lBM/s400/Img009.jpg" alt="" id="BLOGGER_PHOTO_ID_5350536521404519586" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-326022281645394695?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/326022281645394695/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=326022281645394695' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/326022281645394695'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/326022281645394695'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/06/rtcm-lunch-at-circulo-universitario.html' title='RTCM, lunch at &quot;Círculo Universitário&quot;'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_utOcD-lSx_c/SkDsniwSFKI/AAAAAAAAAIU/9pEe8NQ2lBM/s72-c/Img009.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5263056761656688077</id><published>2009-06-16T11:15:00.005+01:00</published><updated>2009-06-16T11:24:01.011+01:00</updated><title type='text'>Photos on my cellphone</title><content type='html'>Some photos I found on my cellphone.  Crappy quality as usual, but...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last sunday (2009-06-14), at Porto-Rio, Esquizofrénicos:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_utOcD-lSx_c/SjdxfPtGvcI/AAAAAAAAAH0/II-v-vLZ4J4/s1600-h/Img001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_utOcD-lSx_c/SjdxfPtGvcI/AAAAAAAAAH0/II-v-vLZ4J4/s400/Img001.jpg" alt="" id="BLOGGER_PHOTO_ID_5347867864131354050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;"Serralves em Festa" (May 2009):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_utOcD-lSx_c/Sjdxw1PvoRI/AAAAAAAAAH8/sIFfh1hAR7U/s1600-h/Img011.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_utOcD-lSx_c/Sjdxw1PvoRI/AAAAAAAAAH8/sIFfh1hAR7U/s400/Img011.jpg" alt="" id="BLOGGER_PHOTO_ID_5347868166266528018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View from my window, when it snowed this last winter:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_utOcD-lSx_c/SjdyI0m1NII/AAAAAAAAAIE/7yLMcEskf1A/s1600-h/Img007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_utOcD-lSx_c/SjdyI0m1NII/AAAAAAAAAIE/7yLMcEskf1A/s400/Img007.jpg" alt="" id="BLOGGER_PHOTO_ID_5347868578411787394" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5263056761656688077?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5263056761656688077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5263056761656688077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5263056761656688077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5263056761656688077'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/06/photos-on-my-cellphone.html' title='Photos on my cellphone'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_utOcD-lSx_c/SjdxfPtGvcI/AAAAAAAAAH0/II-v-vLZ4J4/s72-c/Img001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6271872270887761450</id><published>2009-06-13T14:53:00.002+01:00</published><updated>2009-06-13T14:56:16.080+01:00</updated><title type='text'>Twitter</title><content type='html'>I am experimenting with Twitter: &lt;a href="http://twitter.com/gjcarneiro"&gt;http://twitter.com/gjcarneiro&lt;/a&gt;&lt;br /&gt;I decided to twitter mostly in Portuguese.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6271872270887761450?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6271872270887761450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6271872270887761450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6271872270887761450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6271872270887761450'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/06/twitter.html' title='Twitter'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8742400264368905851</id><published>2009-06-12T14:24:00.005+01:00</published><updated>2009-06-13T14:50:18.370+01:00</updated><title type='text'>Stephen King's 'It'</title><content type='html'>At nearly 1400 pages, this is easily the largest book I ever read.  It took me so long to read it (especially because English is not my native language), that I might as well write a sort of review about it.&lt;br /&gt;&lt;br /&gt;The book is centered a group of 7 friends, in a small American town called Derry (I think it's fictitious).  Two parallel stories are told: one in which they are young boys (and girl), aged 10-12 IIRC, in 1958; the other one is about them 27 years later (1985).&lt;br /&gt;&lt;br /&gt;In 1958, a series of mysterious murders of children have been occurring.  While this happens, each one of our 7 protagonists, who do not know each other at first, have to struggle against a vicious group of bullies.  Their struggle against these bullies is eventually what draws the 7 friends together.  They will eventually call themselves the Losers Club.  At the same time, each one of the 7 children has an encounter with a monster that assumes a physical form from each one's worst nightmares.  They manage to survive this monster, which they refer to simply as It.  The remainder of the book relates how they struggle to defend themselves against the bullies and It.&lt;br /&gt;&lt;br /&gt;The highlevel story in this book is rather predictable, and not so complex.  Then why 1400 pages?  Well, the book has 7 main characters, each of them with many stories.  Each character has a deep characterisation.  We have Bill, a boy with a bad stuttering, who will become their leader.  Ben, who is fat and geeky type of character, but very skilled at engineering even as a boy.  Richie is a funny boy who likes to do voice immitations of famous people or ethnicities.  Stan is a quiet boy who knows all about birds and likes to do bird watching and take pictures.  Mike is a black and poor boy in a small town that is rather racist, with a knack to become historian or librarian.  Beverly is a girl in a poor neighborhood who does not fit in with the other rich girls, and whose father frequently beats her up.  Finally, Eddie is an asthmatic boy, whose mother is overprotective and so he hardly ever left the house or played with others before the events in the book.  And of course we have many strands from each character: 1) 1958 stories, 2) 1985 stories, 3) how each one encounters It and survives, 4) how each one is being bullied.  There are also background stories about dreadful events that took place in Derry going back to the 19th century.&lt;br /&gt;&lt;br /&gt;I was deeply moved essencially by the story of how the seven friends, "Losers Club", get together, to overcome their fears and, as a group, become much stronger than they could ever be if they hadn't met.&lt;br /&gt;&lt;br /&gt;This was a very good book, but very long, and very dark, definitely not for everyone.&lt;br /&gt;&lt;br /&gt;My next reading will be back to SciFi.  The thankfully short Isaac Asimov's "The God Themselves", considered by many to be one of his greatest masterpieces.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8742400264368905851?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8742400264368905851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8742400264368905851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8742400264368905851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8742400264368905851'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/06/stephen-kings-it.html' title='Stephen King&apos;s &apos;It&apos;'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-983760940025136656</id><published>2009-06-11T11:05:00.002+01:00</published><updated>2009-06-11T11:11:43.679+01:00</updated><title type='text'>Pronounce Tuple</title><content type='html'>Heh, nice to find out I am not the only one confused about &lt;a href="http://www.velocityreviews.com/forums/t354344-how-do-you-pronounce-tuple.html"&gt;how to pronounce the work 'tuple'&lt;/a&gt;!  Or 'route', for that matter!  I think I will stick to 'toople' and 'rooter', as the European that I am, thank you very much :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-983760940025136656?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/983760940025136656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=983760940025136656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/983760940025136656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/983760940025136656'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/06/pronounce-tuple.html' title='Pronounce Tuple'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-775623006224512179</id><published>2009-05-20T12:00:00.002+01:00</published><updated>2009-05-20T12:08:54.102+01:00</updated><title type='text'>RTCM</title><content type='html'>Kind of old, but back in February, I made a presentation about &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt; in &lt;span style="font-style: italic;"&gt;"9º Seminário da RTCM, 13 Fev 2009  Anfiteatro Verde da Faculdade de Ciências da Saúde, Universidade da Beira Interior, Covilhã".  &lt;/span&gt;&lt;a href="http://rtcm.inescporto.pt/"&gt;RTCM&lt;/a&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;is a portuguese group for &lt;span style="font-style: italic;"&gt;mobile communications&lt;/span&gt; researchers.  I have just discovered some embarassing &lt;a href="http://rtcm.inescn.pt/index.php?id=577&amp;amp;tx_jmgallery_pi1%5BalbumUid%5D=4&amp;amp;tx_jmgallery_pi1%5Bpage%5D=0"&gt;photos&lt;/a&gt; of me presenting.  Yes, I look silly, I know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-775623006224512179?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/775623006224512179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=775623006224512179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/775623006224512179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/775623006224512179'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/05/rtcm.html' title='RTCM'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3503968649189696208</id><published>2009-05-05T15:21:00.003+01:00</published><updated>2009-05-05T15:23:29.266+01:00</updated><title type='text'>Anathema concert</title><content type='html'>I already have my ticket for tomorrow's Anathema concert.  /me happy :-)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_utOcD-lSx_c/SgBLjQw56DI/AAAAAAAAAHk/03YUy6YTEYk/s1600-h/Bilhete-Anathema.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 184px;" src="http://1.bp.blogspot.com/_utOcD-lSx_c/SgBLjQw56DI/AAAAAAAAAHk/03YUy6YTEYk/s400/Bilhete-Anathema.jpg" alt="" id="BLOGGER_PHOTO_ID_5332345027974260786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3503968649189696208?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3503968649189696208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3503968649189696208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3503968649189696208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3503968649189696208'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/05/anathema-concert.html' title='Anathema concert'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_utOcD-lSx_c/SgBLjQw56DI/AAAAAAAAAHk/03YUy6YTEYk/s72-c/Bilhete-Anathema.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7348547454536421177</id><published>2009-04-26T12:46:00.002+01:00</published><updated>2009-04-26T12:49:59.618+01:00</updated><title type='text'>Ubuntu 9.04 (Jaunty)</title><content type='html'>I upgraded my laptop to Ubuntu 9.04.  Upgrade went smoothly.  But to my horror, the laptop would no longer power down when I shutdown Ubuntu.  A little research and I found &lt;a href="https://bugs.launchpad.net/ubuntu/+source/linux-backports-modules-2.6.28/+bug/318360"&gt;this bug report&lt;/a&gt;, and a simple solution: install the module &lt;span style="font-weight: bold;"&gt;linux-backports-modules-jaunty&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7348547454536421177?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7348547454536421177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7348547454536421177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7348547454536421177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7348547454536421177'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/04/ubuntu-904-jaunty.html' title='Ubuntu 9.04 (Jaunty)'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5045127884187800030</id><published>2009-04-01T14:10:00.002+01:00</published><updated>2009-04-01T14:16:43.902+01:00</updated><title type='text'>NS-3 and Packet::Copy</title><content type='html'>Grr! I have lost track of how many times I forgot that I need to packet-&gt;Copy () some packet.  Or how many wasted hours of work.  Clearly the worst design decision in NS-3, ever.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  for (std::set&lt;NodeId&gt;::const_iterator poaI = binding.oldPoas.begin ();&lt;br /&gt;       poaI != binding.oldPoas.end (); poaI++)&lt;br /&gt;    {&lt;br /&gt;      NS_LOG_LOGIC ("Terminal " &lt;&lt; terminal &lt;&lt; " associated; sending BU (terminal=" &lt;&lt; terminal&lt;br /&gt;                    &lt;&lt; ", newPoA=" &lt;&lt; bu.newPoa &lt;&lt; ") to " &lt;&lt; *poaI);&lt;br /&gt;-     m_buAgent-&gt;SendBu (packet, *poaI, msg.GetMessageSequenceNumber (), bu.terminal);&lt;br /&gt;+     m_buAgent-&gt;SendBu (packet-&gt;Copy (), *poaI, msg.GetMessageSequenceNumber (), bu.terminal);&lt;br /&gt;    }  &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note to self: in the future, when ever transmitting a packet inside a for-loop, make sure to Copy each transmitted packet!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5045127884187800030?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5045127884187800030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5045127884187800030' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5045127884187800030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5045127884187800030'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/04/ns-3-and-packetcopy.html' title='NS-3 and Packet::Copy'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3950013339565189310</id><published>2009-03-31T10:40:00.002+01:00</published><updated>2009-03-31T10:44:07.824+01:00</updated><title type='text'>Python will switch to Mercurial (Hg)</title><content type='html'>&lt;a href="http://mail.python.org/pipermail/python-dev/2009-March/087931.html"&gt;Python will switch to Mercurial.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I like bazaar only slightly better, but good thing GIT is out of the picture!&lt;br /&gt;&lt;br /&gt;Note: Mercurial is the DVCS what &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt; has been using since the beginning.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3950013339565189310?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3950013339565189310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3950013339565189310' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3950013339565189310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3950013339565189310'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/03/python-will-switch-to-mercurial-hg.html' title='Python will switch to Mercurial (Hg)'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-516508145578118120</id><published>2009-03-29T13:01:00.002+01:00</published><updated>2009-03-29T14:36:34.466+01:00</updated><title type='text'>Proof that GIT is more difficult to use</title><content type='html'>Proof that GIT is more difficult to use than other alternatives:&lt;br /&gt;&lt;br /&gt;1. &lt;a href="http://git.freeradius.org/"&gt;Instructions&lt;/a&gt; to checkout the stable branch of freeradius:&lt;br /&gt;&lt;pre class="config"&gt;"""&lt;br /&gt; $ git clone git://git.freeradius.org/freeradius-server.git &lt;em&gt;radiusd&lt;/em&gt;&lt;br /&gt;$ git fetch origin stable:stable&lt;br /&gt;$ git checkout stable&lt;br /&gt;"""&lt;br /&gt;&lt;/pre&gt;2. &lt;a href="https://code.launchpad.net/%7Emysql/mysql-server/mysql-6.0"&gt;Instructions&lt;/a&gt; to get the 6.0 branch of mysql:&lt;br /&gt;&lt;br /&gt;"""&lt;br /&gt;   Get this branch:                        &lt;tt&gt;bzr branch lp:mysql-server/6.0&lt;/tt&gt;&lt;br /&gt;"""&lt;br /&gt;&lt;br /&gt;Why most GNOME developers chose to use GIT instead of bazaar or mercurial is beyond me... *sigh*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-516508145578118120?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/516508145578118120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=516508145578118120' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/516508145578118120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/516508145578118120'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/03/proof-that-git-is-more-difficult-to-use.html' title='Proof that GIT is more difficult to use'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4400564313798982408</id><published>2009-03-10T11:30:00.002Z</published><updated>2009-03-10T11:49:40.750Z</updated><title type='text'>Books, reading</title><content type='html'>I finished reading David Palmer's "Emergence".  Interesting and original writing style, intelligent writing, but all too familiar post-apocalyptic, and save-the-world plot themes.&lt;br /&gt;&lt;br /&gt;Now reading Jack McDevit's "Seeker".  More space archeology, searching for lost civilizations through the galaxy.  I love the Alex Benedict character.  Both "A Talent For War" and "Polaris" were excellent novels.&lt;br /&gt;&lt;br /&gt;Yesterday I mail ordered four new books: William Gibson's "Neuromancer", Juliet Marillier's "Wolfskin", Stephen King's "It", and Isaac Asimov's "The Gods Themselves".  So, mostly SciFi, with a sprinkle of fantasy (Marillier) and horror (King).  It's good to vary reading style slightly, once in a while ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4400564313798982408?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4400564313798982408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4400564313798982408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4400564313798982408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4400564313798982408'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/03/books-reading.html' title='Books, reading'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5278628729631824037</id><published>2009-02-25T15:45:00.003Z</published><updated>2009-02-25T15:54:05.756Z</updated><title type='text'>Interactive Python Shell in NS-3 PyViz</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_utOcD-lSx_c/SaVnsMHGuHI/AAAAAAAAAHA/fo07Rj3DeTU/s1600-h/Screenshot.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 250px;" src="http://2.bp.blogspot.com/_utOcD-lSx_c/SaVnsMHGuHI/AAAAAAAAAHA/fo07Rj3DeTU/s400/Screenshot.png" alt="" id="BLOGGER_PHOTO_ID_5306761744788928626" border="0" /&gt;&lt;/a&gt;With &lt;a href="http://code.nsnam.org/gjc/ns-3-pyviz"&gt;ns-3-pyviz&lt;/a&gt;, one of my patterns of debugging simulations was to run "ipython -gthread myscript.py".  This would run the gtk main loop in a thread and allow me to interact with the IPython shell and inspect a live simulation, to find out what is going on.&lt;br /&gt;&lt;br /&gt;Since ipython -gthread stopped working in recent versions, I decided to just follow a &lt;a href="http://ipython.scipy.org/moin/Cookbook/EmbeddingInGTK"&gt;recipe&lt;/a&gt; for embedding an IPython shell into an existing pygtk program.  It has been pretty easy to do, thanks to reusing the work of others (Eitan Isaacson, in this case); thank you, open source! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5278628729631824037?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5278628729631824037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5278628729631824037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5278628729631824037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5278628729631824037'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2009/02/interactive-python-shell-in-ns-3-pyviz.html' title='Interactive Python Shell in NS-3 PyViz'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_utOcD-lSx_c/SaVnsMHGuHI/AAAAAAAAAHA/fo07Rj3DeTU/s72-c/Screenshot.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7571636086107774888</id><published>2008-12-27T22:16:00.002Z</published><updated>2008-12-27T22:31:00.910Z</updated><title type='text'>WAF 1.5.x</title><content type='html'>&lt;a href="http://code.google.com/p/waf/"&gt;WAF&lt;/a&gt; 1.5 has been out for a long time already.  However, it changes so much of the API that did not have time yet to port any of projects to it.  Additionally, it had more bugs and less portability testing when it came out, compared to WAF 1.4.x.&lt;br /&gt;&lt;br /&gt;With the holiday season I finally found a bit of time to pick up on WAF development.  First with testing the portability of WAF on non-linux platforms.  I have tested, and fixed bugs, on Win32 (both cygwin and mingw, but not msvc unfortunately), and Mac OS X.&lt;br /&gt;&lt;br /&gt;Next I started porting some projects.  I have created experimental branches using the new WAF for &lt;a href="https://code.launchpad.net/%7Egjc/pybindgen/new-waf"&gt;PyBindgen&lt;/a&gt;, &lt;a href="http://bzr-playground.gnome.org/%7Egjc/gnome-python/waf-1.5/files"&gt;GnomePython&lt;/a&gt;, and &lt;a href="http://bzr-playground.gnome.org/%7Egjc/gnome-python-desktop/waf-1.5/files"&gt;GnomePythonDesktop&lt;/a&gt;.  &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt; will be harder, but hopefully I should get to it too, eventually.  More WAF bug fixing ensued.&lt;br /&gt;&lt;br /&gt;There's a catch.  I have found some limitations in standard WAF trunk, namely the lack of a good system-command/makefile-rule system.  Since I do not wish to continually clash with Thomas Nagy over my "vision" for WAF, I simply created a new &lt;a href="https://code.launchpad.net/%7Egjc/waf/cmd"&gt;waf bazaar branch&lt;/a&gt;, thanks to launchpad vcs imports.  The projects I have been porting all use this modified WAF version.  Thankfully, merging with bazaar is a breeze, so keeping my branch in sync with WAF trunk is very painless.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7571636086107774888?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7571636086107774888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7571636086107774888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7571636086107774888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7571636086107774888'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/12/waf-15x.html' title='WAF 1.5.x'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-165792329936183317</id><published>2008-09-22T13:14:00.003+01:00</published><updated>2008-09-22T15:02:40.349+01:00</updated><title type='text'>Antimatter Concert</title><content type='html'>I went to an &lt;a href="http://www.antimatteronline.com/"&gt;Antimatter&lt;/a&gt; concert, in Braga.  I only have a phone with crappy camera, so here's the only photo I have:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_utOcD-lSx_c/SNegrhGNnsI/AAAAAAAAAEI/Ab9oCGUO32Y/s1600-h/Antimatter-Braga.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_utOcD-lSx_c/SNegrhGNnsI/AAAAAAAAAEI/Ab9oCGUO32Y/s400/Antimatter-Braga.jpg" alt="" id="BLOGGER_PHOTO_ID_5248840560202849986" border="0" /&gt;&lt;/a&gt;In the photo, Duncan Patterson (in black) and Mick Moss (in white), getting ready for the Antimatter performance.  It was all acoustic, and it was fantastic.  Also it was much more crowded than I was expecting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-165792329936183317?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/165792329936183317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=165792329936183317' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/165792329936183317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/165792329936183317'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/09/antimatter-concert.html' title='Antimatter Concert'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_utOcD-lSx_c/SNegrhGNnsI/AAAAAAAAAEI/Ab9oCGUO32Y/s72-c/Antimatter-Braga.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7007610803305697734</id><published>2008-08-28T01:10:00.002+01:00</published><updated>2008-08-28T01:24:14.555+01:00</updated><title type='text'>Dark Tower</title><content type='html'>Today I finished reading the last of the 7 books in Stephen King's Dark Tower series.  It has been a wonderful journey and I loved the ending (I read it even though the writer tried to shy me away from reading the ending).&lt;br /&gt;&lt;br /&gt;Overall I found the books very well written, with very enjoyable story telling.  I loved most of the Mid World parts; they are full of the right mixture of fantasy (The Lord Of The Rings style)  and science fiction (references to Asimov robot stories).  Yes, I know it's weird mix of fantasy and scifi, but he manages to pull it off.  I did not like so much the overly long and predictable Wolves of the Calla, nor did I enjoy so much the frequent switches to current New York city and the latter books, as it kind of breaks the rhythm and mood.&lt;br /&gt;&lt;br /&gt;Next on my list is book two of Bridei Chronicles.  More fantasy, but this time with no scifi and with more realism (it is inspired by historic events from ancient Celtic Scotland).  After that, who knows, I'll need to do more online shopping to find out...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7007610803305697734?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7007610803305697734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7007610803305697734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7007610803305697734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7007610803305697734'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/08/dark-tower.html' title='Dark Tower'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3862155748320719775</id><published>2008-08-09T16:19:00.002+01:00</published><updated>2008-08-09T16:30:48.609+01:00</updated><title type='text'>Transcoding media files for the PS3 from Linux</title><content type='html'>While there are some good tools in Windows world for transcoding video files so that they can be played on a PS3 (optionally adding subtitles), in Linux I could not find any good instructions, after much googling.  It turns out that 'mencoder' can do the trick wonderfully well (easier than the Windows GUI-based tools mkv2vob and VirtualDub), but you have to know the options to use, through some experimentation.&lt;br /&gt;&lt;br /&gt;In case anyone else has the same problem, here's the &lt;a href="http://telecom.inescporto.pt/%7Egjc/convert-ps3"&gt;script&lt;/a&gt; I am using.  Besides converting to a PS3 playable format, it optionally prints subtitles into the video if a .srt file is found with the same base name as the input video file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3862155748320719775?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3862155748320719775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3862155748320719775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3862155748320719775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3862155748320719775'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/08/transcoding-media-files-for-ps3-from.html' title='Transcoding media files for the PS3 from Linux'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3189783365822880215</id><published>2008-07-27T18:58:00.002+01:00</published><updated>2008-07-27T19:02:45.760+01:00</updated><title type='text'>PyBindGen 0.9 released</title><content type='html'>Get it while it's hot:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/pybindgen/"&gt;http://code.google.com/p/pybindgen/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's far from perfect released, but API should become more or less stable starting with this release, and NS-3 is using this code with success.  Also most features that I need are there.&lt;br /&gt;&lt;br /&gt;Oh, and here's the NEWS related to this release:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;=== pybindgen 0.9 ===&lt;br /&gt;    - Fix GCC 4.2 compilation warnings;&lt;br /&gt;    - Works with some GCCXML 0.9/cvs snapshots (tested with 2008-04-20),&lt;br /&gt;      in addition to stable 0.7;&lt;br /&gt;    - Support for overloaded virtual methods;&lt;br /&gt;    - Add 'ignore' annotation support, allowing to ignore functions&lt;br /&gt;      and methods;&lt;br /&gt;    - Generally work hard to make sure the generated code at least&lt;br /&gt;      always compiles, even if we have to disable generation of&lt;br /&gt;      certain wrappers;&lt;br /&gt;    - Add support for protected methods and constructors;&lt;br /&gt;    - Preliminary support for templated classes/methods/functions;&lt;br /&gt;    - Add more type conversions, such as uint64_t and uint16_t;&lt;br /&gt;    - Support implicit conversions also for pass-by-reference parameters;&lt;br /&gt;    - Add supported for nested (i.e. defined inside a class) enums and classes;&lt;br /&gt;    - Add support for adding manually written custom method or function wrappers;&lt;br /&gt;    - Split the gccxmlparser.ModuleParser.parse() method into several&lt;br /&gt;      smaller methods, to allow greater customization and flexibility;&lt;br /&gt;    - Add support for customising C++ class instance creation code;&lt;br /&gt;    - Much improved support for wrapping pure C code;&lt;br /&gt;    - Support std::ostream &lt;&lt; myobject mapped as str(myobject) (Mathieu Lacage)&lt;br /&gt;    - Support default values in parameters;&lt;br /&gt;    - More intuitive API (thanks Mathieu Lacage for feedback)&lt;br /&gt;    - Support generation of a Python pybindgen script from scanned API;&lt;br /&gt;    - Support splitting of generated python script and/or C/C++ module into several files;&lt;br /&gt;    - Lots of small bug fixes, and other features I probably forgot;&lt;br /&gt;    - New tutorial (thanks Mathieu Lacage), and API docs.&lt;br /&gt;&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/4332074303276912557-3189783365822880215?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3189783365822880215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3189783365822880215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3189783365822880215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3189783365822880215'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/07/pybindgen-09-released.html' title='PyBindGen 0.9 released'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-2550488898835100540</id><published>2008-07-12T22:52:00.002+01:00</published><updated>2008-07-12T23:01:31.153+01:00</updated><title type='text'>PyBindGen has new home page</title><content type='html'>PyBindGen finally has a home page: &lt;a href="http://code.google.com/p/pybindgen/"&gt;http://code.google.com/p/pybindgen/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Why it needs a home page:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Launchpad does not directly provide downloads, it only mirrors existing downloads;&lt;/li&gt;&lt;li&gt;Launchpad has no Wiki;&lt;/li&gt;&lt;li&gt;Launchpad does not allow me to host documentation.&lt;/li&gt;&lt;/ul&gt;So I decided to use Google Projects for hosting PyBindGen.  So now we have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Documentation is hosted in the google project.  I upload it via subversion (slightly painful but doable), and users can browse the svn http url directly to view the documentation online;&lt;/li&gt;&lt;li&gt;Wiki pages are always useful and google project has a good wiki system;&lt;/li&gt;&lt;li&gt;Downloads in google project.. currently no downloads, but I'll put them up some other day;&lt;/li&gt;&lt;li&gt;Bug tracking and code hosting are still handled by launchpad, as usual.  Thankfully google project allows me to override the Source and Issues tabs, to redirect users to launchpad instead.&lt;/li&gt;&lt;/ul&gt;In other news, pybindgen based python bindings for NS-3 have finally been merged!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-2550488898835100540?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/2550488898835100540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=2550488898835100540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2550488898835100540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2550488898835100540'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/07/pybindgen-has-new-home-page.html' title='PyBindGen has new home page'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6536827813979246538</id><published>2008-07-01T11:05:00.002+01:00</published><updated>2008-07-01T11:07:26.406+01:00</updated><title type='text'>NS-3 released first stable version</title><content type='html'>Finally, the "1.0" version of &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt; has been released!  This work represents a huge amount of effort by some very talented people.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6536827813979246538?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6536827813979246538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6536827813979246538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6536827813979246538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6536827813979246538'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/07/ns-3-released-first-stable-version.html' title='NS-3 released first stable version'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5228100062216318063</id><published>2008-06-10T01:18:00.003+01:00</published><updated>2008-06-10T01:24:29.691+01:00</updated><title type='text'>GnomeOSD on Euro 2008 pub</title><content type='html'>I received an email asking for some help with multihead in &lt;a href="https://launchpad.net/gnome-osd"&gt;GnomeOSD&lt;/a&gt;.  It started like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;First, I would like to thank you for your work on gnome-osd, I am currently using it for displaying Twitter messages (with users being able to post the messages for commenting the game) on top of football games of the euro08 in an Austrian pub, and it works fabulously.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Ha!  Amazing and that my pet project of the past has been put to such a fun use :-)  Strangely this makes me feel some kind of regret for not hacking GnomeOSD in a very long time.  But I guess it's life... so much to do, so little time... :-/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5228100062216318063?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5228100062216318063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5228100062216318063' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5228100062216318063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5228100062216318063'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/06/gnomeosd-on-euro-2008-pub.html' title='GnomeOSD on Euro 2008 pub'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1947507107699501138</id><published>2008-04-30T12:43:00.002+01:00</published><updated>2008-04-30T12:52:49.141+01:00</updated><title type='text'>PyBindGen documentation</title><content type='html'>I have been prodded by the &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt; guys, namely Mathieu Lacage, to provide more documentation for &lt;a href="https://launchpad.net/pybindgen"&gt;PyBindgen&lt;/a&gt;.  Additionally he provided some nice and short examples of C/C++ code to wrap.   I then wrote the PyBindGen code that wraps the C/C++ examples, and &lt;a href="http://bazaar.launchpad.net/%7Egjc/pybindgen/trunk/files/gjc%40gnome.org-20080430113501-6wzu6ryxj8ld66gy?file_id=examples-20070531165635-sbpc6ceu9uq4cvaa-1"&gt;added everything to the repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I looked into it and decided to use &lt;a href="http://epydoc.sourceforge.net/"&gt;epydoc&lt;/a&gt; to generate API docs.  Additionally I wrote a small introductory section, just to get started (else it's easy to get lost with all the classes).  So here it is, the first draft of &lt;a href="http://telecom.inescporto.pt/%7Egjc/pybindgen/doc/pybindgen-apidocs/"&gt;PyBindGen API documentation&lt;/a&gt;.  Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1947507107699501138?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1947507107699501138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1947507107699501138' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1947507107699501138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1947507107699501138'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/04/pybindgen-documentation.html' title='PyBindGen documentation'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3596796916255486386</id><published>2008-04-24T13:40:00.003+01:00</published><updated>2008-04-24T13:49:22.479+01:00</updated><title type='text'>RedHat conspiracy theories</title><content type='html'>It seems my last post was not taken well by the community.  The thing is, I had not realized my blog would reach so far.  Luis Villa and Jeff Waugh in particular think I should I apologize.  I respect their opinion, one hand, and I the blog post had unintended consequence, potentially damaging Red Hat's image, on the other hand, which is not what I intended.  Red Hat absolutely rocks as a company.&lt;br /&gt;&lt;br /&gt;So, I apologize to Red Hat for the last blog post.&lt;br /&gt;&lt;br /&gt;Conspiracy theories are always fun, but it seems blogging about them can have unintended consequences.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3596796916255486386?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3596796916255486386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3596796916255486386' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3596796916255486386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3596796916255486386'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/04/redhat-conspiracy-theories.html' title='RedHat conspiracy theories'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1162674363242876011</id><published>2008-04-23T13:59:00.003+01:00</published><updated>2008-04-23T14:18:43.905+01:00</updated><title type='text'>RedHat's open source community trick</title><content type='html'>OK, I am going to be a bit cynical here, so be prepared ;-)&lt;br /&gt;&lt;br /&gt;I think one of the new genial tricks of late being employed by RedHat to great effect is the following:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Select a good open source developer, respected in the community but not affiliated with any Linux distributor company;&lt;/li&gt;&lt;li&gt;Secretly talk to the guy and offer him a job at RedHat in some months, but he has to agree to start an open source project doing this and that...&lt;/li&gt;&lt;li&gt;The developer agrees, starts the open source project, and starts developing it;&lt;/li&gt;&lt;li&gt;In time the open source project gets good community support, not only because of its good quality but also because it is perceived as coming from the open source "community" rather than a company;&lt;/li&gt;&lt;li&gt;After some months, the developer joins RedHat, and continues to maintain the project (which now has good community adoption);&lt;/li&gt;&lt;li&gt;....&lt;/li&gt;&lt;li&gt;Profit!&lt;/li&gt;&lt;/ol&gt;I am trying to guess here, and could be wrong, but I am guessing this might have happened with projects such as Cairo (Carl Worth), Pulse Audio (Lennart Poettering), and more recently PackageKit (Richard Hughes), probably others in the past (I suspect Nautilus as well).&lt;br /&gt;&lt;br /&gt;Well, if true, I think this is only slightly evil, anyway.  I love RedHat, and I think they have always done a great service to open source in the past, and continue to be the leading technology innovators.&lt;br /&gt;&lt;br /&gt;OK, if one was not being so cynical one might consider a scenario where the developer in question starts something cool on his own free will and the company simply sees the potential and decides to hire him.  But I think I am too cynical to believe this :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1162674363242876011?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1162674363242876011/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1162674363242876011' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1162674363242876011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1162674363242876011'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/04/redhats-open-source-community-trick.html' title='RedHat&apos;s open source community trick'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6903709925866452791</id><published>2008-02-24T11:59:00.002Z</published><updated>2008-02-24T12:15:03.835Z</updated><title type='text'>Nvidia closed binary driver</title><content type='html'>I remember back in the days, when I bought my first nvidia card (GeForce 2) , the linux 'nv' open  source driver was actually pretty great for 2D stuff.  Everything painted very fast.  The only problem was the lack of 3D acceleration.  There was the closed source, binary 'nividia' driver out there.  It was very good for 3D stuff, but was actually slightly worse than the open source driver for 2D; when switching workspaces I could notice that the new workspace took longer to appear than with the open source driver.&lt;br /&gt;&lt;br /&gt;Now fast forward to 2008.  The nvidia closed binary has gotten better at everything, even 2D is pretty fast.  However, because the nvidia driver is split into a userspace part (xorg driver) and a kernel module, and the versions have to match between xorg driver and kernel module, I find myself not able to run it if I want to boot with an older kernel.  I switch to the open source 'nv' driver, but I am finding it surprisingly slow, much slower than it was back in the day when I had a GeForce 2 (now I have a GeForce 6700).  Everything seems sluggish now.  It's a pain to have to use this driver now.&lt;br /&gt;&lt;br /&gt;So what happened to the nv driver?  Maybe this is what the linux kernel guys were afraid of, that when using binary closed drivers with linux becomes easy then the open source alternative might begin to bitrot.  Well, but it's not like linux users ever had any real choice.  In the mean time I sure hope the &lt;a href="http://nouveau.freedesktop.org/wiki/"&gt;nouveau&lt;/a&gt; effort comes through!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6903709925866452791?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6903709925866452791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6903709925866452791' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6903709925866452791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6903709925866452791'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/02/nvidia-closed-binary-driver.html' title='Nvidia closed binary driver'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1172051769722047810</id><published>2008-02-11T14:26:00.000Z</published><updated>2008-02-11T14:31:49.052Z</updated><title type='text'>No PyBindGen for NS-3 yet</title><content type='html'>Acording to the plan, I was supposed to have merged Python bindings for NS-3 about now.  Unfortunately deep API changes in the NS-3 object system have broken the Python bindings and I decided to postpone Python bindings for the next release.&lt;br /&gt;&lt;br /&gt;This means that PyBindGen 0.9 release is also postponed.  But it sure is packed full of new features and many bug fixes, so potential developers may want to check out my bzr branch at https://code.launchpad.net/~gjc/pybindgen/trunk&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1172051769722047810?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1172051769722047810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1172051769722047810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1172051769722047810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1172051769722047810'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2008/02/no-pybindgen-for-ns-3-yet.html' title='No PyBindGen for NS-3 yet'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3941467107343061965</id><published>2007-12-16T21:32:00.000Z</published><updated>2007-12-16T21:35:48.589Z</updated><title type='text'>WAF in GNOME</title><content type='html'>I have file &lt;a href="http://bugzilla.gnome.org/show_bug.cgi?id=503907"&gt;GNOME bug #503907&lt;/a&gt;, which will hopefully allow me to be the one to introduce WAF  into the first couple of GNOME modules.  Let us hope this marks the start of a new revolution with the intent of ending the reign of autotools in the GNOME realm :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3941467107343061965?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3941467107343061965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3941467107343061965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3941467107343061965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3941467107343061965'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/12/waf-in-gnome.html' title='WAF in GNOME'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8963339724813721093</id><published>2007-12-01T16:29:00.000Z</published><updated>2007-12-01T16:32:56.120Z</updated><title type='text'>PyBindGen 0.8</title><content type='html'>&lt;span style="font-family: arial;"&gt;Today I have unleashed &lt;a href="https://launchpad.net/pybindgen/"&gt;PyBindGen&lt;/a&gt; &lt;a href="http://telecom.inescporto.pt/%7Egjc/pybindgen/releases/pybindgen-0.8.0.tar.bz2"&gt;version 0.8&lt;/a&gt; to the world:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;=== pybindgen 0.8 ===&lt;br /&gt;    - Support C++ instance attributes through getter/setter methods&lt;br /&gt;    - Support functions as methods of C++ classes&lt;br /&gt;    - Support the PyObject* type&lt;br /&gt;    - Support unsigned int, C strings (char*) (from Mark Lee)&lt;br /&gt;    - Add basic support for enum types&lt;br /&gt;    - New experimental automatic module generator based on C/C++&lt;br /&gt;      header file scanner and annotations in comments, using pygccxml&lt;br /&gt;    - Some bug fixes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8963339724813721093?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8963339724813721093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8963339724813721093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8963339724813721093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8963339724813721093'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/12/pybindgen-08.html' title='PyBindGen 0.8'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-466376930520734238</id><published>2007-11-20T13:53:00.000Z</published><updated>2007-11-20T13:56:15.342Z</updated><title type='text'>pybindgen + pygccxml</title><content type='html'>Last weekend I started a pygccxml based header file scanner for pybindgen.  When it's finished, it will allow pybindgen to automatically scan a module's definition directly from header files, with little human intervention, similarly like Py++.&lt;br /&gt;&lt;br /&gt;Progress has been good, but of course I have little time to work on it.  I'll report back on this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-466376930520734238?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/466376930520734238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=466376930520734238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/466376930520734238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/466376930520734238'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/11/pybindgen-pygccxml.html' title='pybindgen + pygccxml'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3802089162724241394</id><published>2007-09-01T13:35:00.000+01:00</published><updated>2007-09-01T14:09:04.544+01:00</updated><title type='text'>pybindgen almost feature complete</title><content type='html'>During August I got sick, and the weather was lousy anyway, so I decided to continue development of &lt;a href="https://launchpad.net/pybindgen/"&gt;PyBindGen&lt;/a&gt;.  Since then I have finished most features that  will be needed at least for &lt;a href="http://www.nsnam.org/"&gt;NS-3&lt;/a&gt;, which is very C++ demanding.  The list of features implemented is summarised in the &lt;a href="https://launchpad.net/pybindgen/"&gt;project page&lt;/a&gt;, and I won't bother to repeat them here.&lt;br /&gt;&lt;br /&gt;So what's left to do now?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Testing and bug fixing; I'm sure there are plently of bugs in there waiting to be found and fixed, since the generator has had very little real world testing so far;&lt;/li&gt;&lt;li&gt;Adding support for some Python object special methods and protocols, such as __str__, __add__, __sub__, etc.; also mapping C++ iterators to Python iterators and vice versa, etc;&lt;/li&gt;&lt;li&gt;Start thinking of a automatic code scanning layer on top of the pybindgen API, which scans C/C++ header files and tries to automatically 'guess' the definitions, a la &lt;a href="http://www.language-binding.net/pyplusplus/pyplusplus.html"&gt;Py++&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;Fortunately the hardest part, the foundation, is already done, and I'm pretty happy with it: it is 100% Python (except the generated code), it's well structured and modular, and uses the standard/simple/well document Python/C API, rather than obscure C++ template metalanguage.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3802089162724241394?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3802089162724241394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3802089162724241394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3802089162724241394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3802089162724241394'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/09/pybindgen-almost-feature-complete.html' title='pybindgen almost feature complete'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6817116203003383689</id><published>2007-08-17T01:08:00.000+01:00</published><updated>2007-08-17T01:25:27.790+01:00</updated><title type='text'>PyBindGen Type Narrowing</title><content type='html'>Today I finished another important feature in my &lt;a href="https://launchpad.net/pybindgen/"&gt;python bindings generator&lt;/a&gt;:&lt;br /&gt;&lt;a href="https://blueprints.launchpad.net/pybindgen/+spec/automatic-c++-return-type-narrowing"&gt;automatic type narrowing of C++ class pointers&lt;/a&gt;.  It was implemented with a &lt;tt&gt;std::map&amp;lt;const char*, PyTypeObject*&amp;gt;&lt;/tt&gt;, mapping type names to Python wrappers, and the &lt;tt&gt;typeid&lt;/tt&gt; C++ operator, which uses RTTI to return type information in runtime, including type name.&lt;br /&gt;&lt;br /&gt;This comes on the heels of supporting &lt;a href="https://blueprints.launchpad.net/pybindgen/+spec/overloading"&gt;function/method/constructor overloading&lt;/a&gt;, finished a few days ago.  I'm getting increasingly optimistic about pybindgen.  It does few things, but does them well.  It will hopefully make the (python) world a better place to live in :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6817116203003383689?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6817116203003383689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6817116203003383689' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6817116203003383689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6817116203003383689'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/08/pybindgen-type-narrowing.html' title='PyBindGen Type Narrowing'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8071688409421277895</id><published>2007-08-09T17:32:00.000+01:00</published><updated>2007-08-09T17:41:23.313+01:00</updated><title type='text'>Ubuntu Dell PCs in Europe</title><content type='html'>Nice to see Dell Ubuntu PCs being &lt;a href="http://www.ubuntu.com/dell"&gt;sold in Europe&lt;/a&gt;.  However, one has to wonder why the laptops being sold in Europe are at most Intel Dual Core and Intel 950 graphics, noticeable inferior to those being sold in the U.S., namely Intel Core2 Duo and Intel 965 graphics.  What's wrong?  Do Europeans require less powerful hardware?  Are we being discriminated? *sigh*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8071688409421277895?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8071688409421277895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8071688409421277895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8071688409421277895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8071688409421277895'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/08/ubuntu-dell-pcs-in-europe.html' title='Ubuntu Dell PCs in Europe'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7741079376483867557</id><published>2007-08-05T15:50:00.000+01:00</published><updated>2007-08-08T13:45:49.724+01:00</updated><title type='text'>GEdit with Emacs Colors</title><content type='html'>Following up on Paolo Borelli's &lt;a href="http://blogs.gnome.org/pbor/2007/08/01/gedit-style-schemes/"&gt;post&lt;/a&gt; about a Dark Tango gedit color scheme, I decide to write a color scheme based on the default GNU Emacs colors circa RedHat 5.2.  It basically has a &lt;span style="font-style: italic;"&gt;dark slate grey&lt;/span&gt; background, and &lt;span style="font-style: italic;"&gt;wheat&lt;/span&gt; foreground.  All these years, since RedHat 5.2, my first Linux distribution, I got used to GNU Emacs as my editor of choice for serious tasks (programming, LaTeX).&lt;br /&gt;&lt;br /&gt;I have customized a few things from the default Emacs color scheme, most notably getting rid of the awful red foreground for comments (ugh!) in favour of a less intrusive grey.&lt;br /&gt;The other notable change that I made was the addition of syntax highlighting for symbols, including operators, parenthesis, brackets, curly braces, etc., because I believe it really helps read the code better.  Emacs in fact does not natively support highlighting of symbols, but since it is highly extensible I was able to add support for it.&lt;br /&gt;&lt;br /&gt;Anyway, my emacs color scheme for gedit can be found &lt;a href="http://www.gnome.org/%7Egjc/gedit/emacs-darkslategrey.xml"&gt;here&lt;/a&gt;.  Playing a bit with gedit with this color scheme, once again I tried to get the feeling on whether I could ever switch from emacs to gedit, and the answer is sadly still no.  Here's some of the reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Gedit still does not have the notion of indentation offset, and only has tab width.  In emacs, you can have tab width set to 8, but if you set indentation offset to 4 then pressing tab indents with 4 spaces, not one tab.  In gedit you have to change the tab width to 4, which has disastrous side effects on source files that are using real tab characters for indentation.  This is a really serious problem IMHO.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gedit is generally not very smart about indentation.  Emacs usually knows how to indent a line based on syntax analysis of the surrounding context.  I guess I can leave without it, but it would be really nice to have.  But, yes, I realize this is very hard to implement for only a little gain.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Gtk's default cursor is very thin and easy to lose track of it.  In contrast, Emacs' cursor is big and blocky, but at least you never lose track of it.  Fortunately I was able to kind of work around with a &lt;a href="http://www.gnome.org/%7Egjc/gedit/gtkrc-2.0"&gt;gtkrc&lt;/a&gt; style file, although it's not perfect.&lt;/li&gt;&lt;li&gt;I already mentioned the symbols/operators problem.  Gedit does not natively support operators in most language files; at least not C/C++/Python, which is the ones I care about.  I'm not sure if I can fix this easily.  I can define color schemes, but I wonder if I can customize language definitions, add new information to them in a inheritance style?&lt;/li&gt;&lt;li&gt;The modelines plugin needs more work; it keeps ignoring many of the modelines on my files.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;In conclusion, there are some problems in gedit and I will not switch to it yet.  However, it does support Python plugins, and therefore most of the problems should be fixable given a bit of time and patience.  Lucky for me I'm on vacations, so I might yet revisit this issue before the end of the month.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7741079376483867557?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7741079376483867557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7741079376483867557' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7741079376483867557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7741079376483867557'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/08/gedit-with-emacs-colors.html' title='GEdit with Emacs Colors'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4172573132159788721</id><published>2007-07-25T18:02:00.000+01:00</published><updated>2007-07-25T18:14:45.950+01:00</updated><title type='text'>pysed</title><content type='html'>In case anyone finds this useful, I made a small sed-like program in Python.  I call it &lt;a href="http://telecom.inescporto.pt/%7Egjc/pysed"&gt;pysed&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The rationale for this tiny program is that I often want to make regexp substitutions but find the classic regular expressions syntax of sed (and emacs) outdated and not as powerful as Python's.  For example, suppose you want replace ".m_" with "." &lt;span style="font-weight:bold;"&gt;except&lt;/span&gt; when preceded by "m_state".  You  do:&lt;br /&gt;&lt;br /&gt;&lt;tt&gt;pysed -i -e '(?&amp;lt;!m_state)\.m_' -s '.' file.cc&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;With traditional sed, or with gnu emacs, it does not look like this is possible, as far as I can tell...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4172573132159788721?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4172573132159788721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4172573132159788721' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4172573132159788721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4172573132159788721'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/07/pysed.html' title='pysed'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8261280211400344803</id><published>2007-05-31T18:48:00.000+01:00</published><updated>2007-06-10T12:11:24.440+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>python bindings generator</title><content type='html'>For the &lt;a href="http://www.nsnam.org/"&gt;ns-3&lt;/a&gt; project, I've been trying for some time to create some Python bindings.  I've been using &lt;a href="http://www.language-binding.net/pyplusplus/pyplusplus.html"&gt;Py++&lt;/a&gt;, which uses &lt;a href="http://www.gccxml.org/"&gt;gccxml&lt;/a&gt; to parse C++ header files and automatically generates &lt;a href="http://www.boost.org/libs/python/doc/"&gt;Boost.Python&lt;/a&gt; code that tries to wrap it.&lt;br /&gt;&lt;br /&gt;Py++ is really nice.  Unfortunately Boost.Python isn't nearly at the same level.  Boost.Python is heavily built on C++ templates. Mastering C++ templates is Hard™.  Everything Boost does is practically black magic to me.   While using Py++, Boost.Python has been fighting with me every step of the way, and winning too!&lt;br /&gt;&lt;br /&gt;I decided to move away from Boost once and for all.  Some of the non-boost alternatives I could find were:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://directory.fsf.org/Python-SIP.html"&gt;Python-SIP&lt;/a&gt;: the code generator itself is written in C++; that doesn't make any sense!  I want something I can easily hack;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.swig.org/"&gt;SWIG&lt;/a&gt;: also made in C/C++, and in addition generates very ugly code, almost unreadable with so much macro abuse;&lt;/li&gt;&lt;li&gt;The &lt;a href="http://www.pygtk.org/"&gt;PyGtk&lt;/a&gt; code generator.  I know this one &lt;span style="font-style: italic;"&gt;very well&lt;/span&gt; :)  Unfortunately it has some problems, the biggest of which is that it doesn't support C++ classes, while the ns-3 code I want to wrap is pure C++.&lt;/li&gt;&lt;/ol&gt;So, in the end, there really isn't any good python bindings generator tool out there.  I decided to create my own.  I've set myself the following goals for my forthcoming tool:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Must be written in pure Python, and in good pylint-checked style;&lt;/li&gt;&lt;li&gt;Must have unit tests;&lt;/li&gt;&lt;li&gt;It should have a simple python API to generate the code, other frontends (such as header file scanning) optional and layered on top of the python API;&lt;/li&gt;&lt;li&gt;Must be easily extensible to handle new types, with strong focus on correct memory management of type convertion code;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The project is called PyBindGen (yes, I'm from a school of thought that believes project names should be descriptive of their function).  First pre-alpha release is ready, supporting generation of modules with only functions, and only the basic python types.  However it already supports something not supported by pygtk-codegen: out/inout parameters and, consequently, multiple return values.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;bzr (0.15) branch: &lt;a href="http://telecom.inescporto.pt/%7Egjc/pybindgen/bzr/"&gt;http://telecom.inescporto.pt/~gjc/pybindgen/bzr&lt;/a&gt;&lt;br /&gt;Releases: &lt;a href="http://telecom.inescporto.pt/%7Egjc/pybindgen/releases"&gt;http://telecom.inescporto.pt/~gjc/pybindgen/releases&lt;/a&gt;&lt;br /&gt;Launchpad (bug reporting, etc.): &lt;a href="https://launchpad.net/pybindgen/"&gt;https://launchpad.net/pybindgen/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The project uses &lt;a href="http://freehackers.org/%7Etnagy/waf.html"&gt;WAF&lt;/a&gt; to build; Running "./waf" should be enough to build the example. "./waf check" should be able to run the unit tests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8261280211400344803?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8261280211400344803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8261280211400344803' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8261280211400344803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8261280211400344803'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/05/python-bindings-generator.html' title='python bindings generator'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4717918952683072701</id><published>2007-03-21T17:04:00.000Z</published><updated>2007-03-21T17:11:02.219Z</updated><title type='text'>Publication</title><content type='html'>Yesterday I received a notice:&lt;br /&gt;&lt;blockquote&gt;I am glad to inform you that the revision of your paper, &lt;b&gt;“QoS Abstraction Layer in 4G Access Networks”&lt;/b&gt;&lt;b&gt;(TS2006-69)&lt;/b&gt; was approved for publication in &lt;i&gt;Telecommunication Systems&lt;/i&gt;.&lt;/blockquote&gt;&lt;br /&gt;/me is very happy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4717918952683072701?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4717918952683072701/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4717918952683072701' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4717918952683072701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4717918952683072701'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/03/publication.html' title='Publication'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7313716660426205360</id><published>2007-01-04T13:56:00.000Z</published><updated>2007-01-04T14:01:10.362Z</updated><title type='text'>OpenOffice.org still sucks, only a bit less</title><content type='html'>So it seems that OpenOffice.org 2.1, present in Ubuntu Feisty,  finally has a native AMD64 executable, which should improve its memory requirements and make copy-paste less buggy.  Unfortunately it seems you still are unable to insert cross-references to numbered items in enumerated lists, which is the technique of choice of MS Word users to insert bibliography references and lists.  And of course creating a "Bibliography Database" is both non-trivial and very buggy.  I tried it again but had to give up.&lt;br /&gt;&lt;br /&gt;Thankfully I can still use LaTeX, which has much better quality anyway...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7313716660426205360?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7313716660426205360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7313716660426205360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7313716660426205360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7313716660426205360'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/01/openofficeorg-still-sucks-only-bit-less.html' title='OpenOffice.org still sucks, only a bit less'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-7537786461166977624</id><published>2007-01-04T13:44:00.000Z</published><updated>2007-01-04T13:55:25.399Z</updated><title type='text'>dijkstra in python</title><content type='html'>Given an arbitrary network, I knew that &lt;a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm"&gt;Dijkstra's algorithm&lt;/a&gt; computes the shortest path between any pair of nodes of the network.  In a distributed routing protocol, Dijkstra is often used to compute shortest paths to destinations.  I already knew, but wanted to confirm, that for any shortest path computed centrally from one edge node to another, you could apply the same Dijkstra algorithm to each intermediate node in the path and obtain the same result.  So I put my Python coding skills to good use and created a &lt;a href="http://telecom.inescporto.pt/%7Egjc/dijkstra.py"&gt;small program&lt;/a&gt; that generates lots of random graphs with lots of nodes and lots of links with random "distances" and, for each such graph picks a couple of nodes and checks the assertion above.  I only had to convert the Dijkstra algorithm expressed as pseudo-code in wikipedia to Python, which was pretty easy.  The assertion is confirmed.&lt;br /&gt;/me loves Python.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-7537786461166977624?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/7537786461166977624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=7537786461166977624' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7537786461166977624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/7537786461166977624'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/01/dijkstra-in-python.html' title='dijkstra in python'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3873033439463591698</id><published>2007-01-01T14:09:00.000Z</published><updated>2007-01-01T14:10:07.648Z</updated><title type='text'>GNOME CVS to Subversion migration</title><content type='html'>CVS is dead, long live &lt;a href="http://svn-test.gnome.org/migration/status-all.xml"&gt;Subversion&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3873033439463591698?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3873033439463591698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3873033439463591698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3873033439463591698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3873033439463591698'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2007/01/gnome-cvs-to-subversion-migration.html' title='GNOME CVS to Subversion migration'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1337240602911784124</id><published>2006-12-31T14:36:00.000Z</published><updated>2006-12-31T14:45:46.801Z</updated><title type='text'>holiday season sickness</title><content type='html'>No, I'm not sick of the holidays, just plain sick.  I think it's &lt;a href="http://en.wikipedia.org/wiki/Bronchitis"&gt;bronchitis&lt;/a&gt; (but no, I don't smoke).  Been like this for over a week, now.  Meanwhile I entertain myself playing &lt;a href="http://www.atari.com/nwn2/"&gt;Neverwinter Nights 2&lt;/a&gt;, &lt;a href="http://www.amazon.com/Service-Sword-Honor-Harrington/dp/0743488369/ref=ed_oe_p/002-2702820-1372029"&gt;reading&lt;/a&gt;, and watching some &lt;a href="http://www.imdb.com/title/tt0412142/"&gt;tv&lt;/a&gt; &lt;a href="http://www.imdb.com/title/tt0813715/"&gt;series&lt;/a&gt;.&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1337240602911784124?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1337240602911784124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1337240602911784124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1337240602911784124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1337240602911784124'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/12/holiday-season-sickness.html' title='holiday season sickness'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3882482425771395800</id><published>2006-11-13T23:27:00.000Z</published><updated>2006-11-13T23:39:14.157Z</updated><title type='text'>Sun &amp; Novell vs Microsoft</title><content type='html'>Regarding the recent events regarding Sun &amp; Novell, we could observe the following recent events:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://news.com.com/Sun+settles+with+Microsoft,+announces+layoffs/2100-1014_3-5183848.html"&gt;Sun settles with Microsoft&lt;/a&gt; and "moved to a new phase of legal and technical cooperation with longtime foe Microsoft", in a deal that involves transfer of money to Sun;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2,5 years later, Sun &lt;a href="http://news.lycos.com/dynamic/stories/S/SUN_JAVA_OPEN_SOURCE?SITE=LYCOS&amp;SECTION=TECHNOLOGY&amp;amp;TEMPLATE=DEFAULT&amp;CTIME=2006-11-13-00-26-47"&gt;open sources Java&lt;/a&gt;;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.linux-watch.com/news/NS2912974320.html"&gt;Novell and Microsoft sign a deal&lt;/a&gt;, with money transferred to Novell.&lt;/li&gt;&lt;/ol&gt;Looking at the Sun example, it really doesn't sound like this deal with Microsoft will be harmful to their open source efforts.  At least I hope I'm right... :-P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3882482425771395800?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3882482425771395800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3882482425771395800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3882482425771395800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3882482425771395800'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/11/sun-novell-vs-microsoft.html' title='Sun &amp; Novell vs Microsoft'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3721608327239601712</id><published>2006-11-02T00:05:00.000Z</published><updated>2006-11-02T00:13:38.807Z</updated><title type='text'>last.fm: concerts in your area!</title><content type='html'>&lt;a href="http://www.last.fm/"&gt;last.fm&lt;/a&gt; was already cool.  Now I discovered something that makes it even cooler: you can give it your location and let last.fm give you relevant events around your location, such as concerts and festivals!  Since last.fm already knows what kind of music you like, it can filter effectively and just show you the gigs you're potentially interested in.  And it is distributed.  There is no staff (AFAIK) working to create these events; instead, it is the users that must create the events.  For instance, I created an event describing the forthcoming &lt;a href="http://www.last.fm/event/36117"&gt;concert of :Of:The Wand And The Moon:&lt;/a&gt; in Portugal.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3721608327239601712?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3721608327239601712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3721608327239601712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3721608327239601712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3721608327239601712'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/11/lastfm-concerts-in-your-area.html' title='last.fm: concerts in your area!'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6441583838895294139</id><published>2006-10-06T12:15:00.000+01:00</published><updated>2006-10-06T12:23:30.757+01:00</updated><title type='text'>Gajim Passwords</title><content type='html'>After my recent &lt;a href="http://trac.gajim.org/ticket/2493"&gt;contribution&lt;/a&gt;,  &lt;a href="http://gajim.org/"&gt;Gajim&lt;/a&gt; now stores passwords in GnomeKeyring.  Now that my passwords are safe in an encrypted file, I can start logging in to GTalk again, as  &lt;tt&gt;gjcarneiro@gmail.com&lt;/tt&gt;.  Looks like Gajim 0.11 will be one mighty release.. :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6441583838895294139?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6441583838895294139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6441583838895294139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6441583838895294139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6441583838895294139'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/10/gajim-passwords.html' title='Gajim Passwords'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-1091596068461787057</id><published>2006-09-26T15:33:00.000+01:00</published><updated>2006-09-26T15:38:30.795+01:00</updated><title type='text'>gajim song notifications</title><content type='html'>So now the &lt;a href="http://www.pygtk.org"&gt;PyGTK&lt;/a&gt; based open source &lt;a href="http://www.jabber.org/"&gt;Jabber&lt;/a&gt; client &lt;a href="http://gajim.org/"&gt;Gajim&lt;/a&gt; has &lt;a href="http://trac.gajim.org/ticket/564"&gt;song notifications&lt;/a&gt;, thanks to yours truly ;-)&lt;br /&gt;Unfortunately my MSN gateway doesn't convert the status message from Jabber to MSN, so only my Jabber contacts (all two of them) can see what music I'm playing right now :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-1091596068461787057?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/1091596068461787057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=1091596068461787057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1091596068461787057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/1091596068461787057'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/09/gajim-song-notifications.html' title='gajim song notifications'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-2408167694614532065</id><published>2006-09-21T13:41:00.000+01:00</published><updated>2006-09-21T14:04:34.278+01:00</updated><title type='text'>Mesh Networks vs Adhoc Networks</title><content type='html'>&lt;span class="diffchange"&gt;The concept, or wording, of mesh networks is only recently emerging, or at least given major focus, so there is not official and clear definition yet of what distinguishes mesh networks from adhoc networks.&lt;/span&gt; Interesting that the wikipedia &lt;a href="http://en.wikipedia.org/wiki/Mesh_networking"&gt;mesh networks article&lt;/a&gt; has recently been &lt;a href="http://en.wikipedia.org/w/index.php?title=Mesh_networking&amp;diff=69683625&amp;amp;oldid=67814283"&gt;enhanced&lt;/a&gt; with a clarification of the differences between adhoc and mesh networks.  According to the (anonymous) modifications, mesh networks are adhoc networks in which &lt;span style="font-style: italic;"&gt;"the component parts [...] &lt;/span&gt;&lt;span class="diffchange"&gt;&lt;span style="font-style: italic;"&gt;generally are not mobile"&lt;/span&gt;.  Another possible definition  would be that mesh networks are adhoc networks, but in L2 rather than L3.&lt;br /&gt;&lt;br /&gt;Personally, I would rather go with a modification of the first definition, though.  For me, mesh networks are adhoc networks in which most or all the component parts are infrastructure nodes, mobile or not, as opposed to classical adhoc networks in which all nodes are terminals.  In other words, mesh network nodes are dedicated exclusively to routing traffic from outside the network, while adhoc network nodes are primarily terminals that are also willing to route traffic from other terminals nearby.  In both cases, however, the topology of nodes is expected to be more or less dynamic, and could even use the same protocols.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-2408167694614532065?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/2408167694614532065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=2408167694614532065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2408167694614532065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2408167694614532065'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/09/mesh-networks-vs-adhoc-networks.html' title='Mesh Networks vs Adhoc Networks'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5659931402489013978</id><published>2006-09-17T13:51:00.000+01:00</published><updated>2006-09-17T14:08:55.870+01:00</updated><title type='text'>reading, numexp, phd</title><content type='html'>Reading: finished &lt;span style="font-style: italic;"&gt;Miles Errant&lt;/span&gt; of the &lt;span style="font-style: italic;"&gt;Vorkosigan Saga&lt;/span&gt;.  Fortunately, there are still 3 more books to read in this excellent SciFi series.  But first I have three more books in line: one of &lt;span style="font-style: italic;"&gt;Honor Harrington&lt;/span&gt; series (David Weber), one more Juliet Marillier dark fantasy book (&lt;span style="font-style: italic;"&gt;dark mirror&lt;/span&gt;), and another dark fantasy book by Anne Bishop, the second one of the &lt;span style="font-style: italic;"&gt;dark ring&lt;/span&gt; series.&lt;br /&gt;&lt;br /&gt;gNumExp: is a bit more polished now:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;one can control startup modules from gnumexp and have numexp-client honor these settings;&lt;/li&gt;&lt;li&gt;gnumexp now is able to manually spawn numexp-kernel if bonobo-activation fails to find it for some reason.  A nice side-effect of this is that one can see numexp-kernel stdout in the shell that launches gnumexp, when the kernel is manually launched, so I just might one day make this method the default and redirect kernel output for better debugging.&lt;/li&gt;&lt;/ul&gt;PhD: my first year PhD report is beginning to take shape, and is proving a good exercise to settle down ideas and force me to search for citations that support the facts I think I already know.  Plus, I  hope I can reuse this text when I start writing my thesis in two and half years, so it is not wasted work and it makes me write the text more carefully, like in a paper.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5659931402489013978?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5659931402489013978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5659931402489013978' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5659931402489013978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5659931402489013978'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/09/reading-numexp-phd.html' title='reading, numexp, phd'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-5343065504633552680</id><published>2006-09-07T14:41:00.000+01:00</published><updated>2006-09-07T15:09:29.018+01:00</updated><title type='text'>Running</title><content type='html'>Using &lt;a href="http://www.gmap-pedometer.com/"&gt;www.gmap-pedometer.com&lt;/a&gt;, I decided to track my running sessions.&lt;br /&gt;&lt;br /&gt;This &lt;a href="http://www.gmap-pedometer.com/?r=419386"&gt;one&lt;/a&gt; is my favorite lap, near home.  This is &lt;a href="http://www.gmap-pedometer.com/?r=419445"&gt;another&lt;/a&gt; favorite route. &lt;a href="http://www.gmap-pedometer.com/?r=422494"&gt;Another one&lt;/a&gt;, taken only once so far.&lt;br /&gt;&lt;br /&gt;Yet another popular route is &lt;a href="http://www.gmap-pedometer.com/?r=419471"&gt;this one&lt;/a&gt;, which I take right before leaving the gym where I work out in Famalicão.  Sometimes &lt;a href="http://www.gmap-pedometer.com/?r=421568"&gt;this one&lt;/a&gt; instead; they both start just outside the gym. Only once I did &lt;a href="http://www.gmap-pedometer.com/?r=421594"&gt;this route&lt;/a&gt;.  There are other routes that I take less often, of course.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-5343065504633552680?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/5343065504633552680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=5343065504633552680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5343065504633552680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/5343065504633552680'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/09/running.html' title='Running'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8030524477897407718</id><published>2006-09-03T18:11:00.000+01:00</published><updated>2006-09-03T18:21:23.249+01:00</updated><title type='text'>gNumExp almost ready for a release</title><content type='html'>This is it.  After todays' &lt;a href="http://telecom.inescporto.pt/%7Egjc/bzr/bazaar-webserve-dir.cgi/gnumexp?cmd=revision;revid=gjc%40gnome.org-20060903165749-d2d193c5b499a20e"&gt;commit&lt;/a&gt;, gNumExp's port to goocanvas and gtk+ 2.10 (for printing) is more or less complete, and we have feature parity with the 0.10 release made about one year and a half ago.&lt;br /&gt;&lt;br /&gt;So, code-wise the hardest part is done, but I'd like to do some polish first, before the release:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Include a copy of goocanvas and pygoocanvas;&lt;/li&gt;&lt;li&gt; Don't rely on bonobo-activation to startup numexp-kernel, instead do our own custom activation, using a hardcoded path to the binary discovered during configure state;&lt;/li&gt;&lt;li&gt; [Maybe] stop using libgnome*, use only gtk2, libxml2, and gnomevfs.&lt;/li&gt;&lt;/ol&gt;Even next release won't be 1.0, I'd still like it to be more polished than usual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8030524477897407718?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8030524477897407718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8030524477897407718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8030524477897407718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8030524477897407718'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/09/gnumexp-almost-ready-for-release.html' title='gNumExp almost ready for a release'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6406752612522196169</id><published>2006-08-29T00:20:00.000+01:00</published><updated>2006-08-29T00:31:05.070+01:00</updated><title type='text'>unionfs and diskless linux</title><content type='html'>Back to work, today I helped my coworkers setup a diskless linux system.  As usual, it mounts root over NFS.  But in our case, there's a nice twist; each host nfs-mounts both a shared readonly filesystem and a private writable one.  We then use &lt;a href="http://www.am-utils.org/project-unionfs.html"&gt;unionfs&lt;/a&gt; to overlay the two filesystems.  I actually spent most of the afternoon tweaking initramfs to accomplish this effect, but the result pays off.  We now can instantly boot any machine we want just by configuring the DHCP server, and each PC can customize its own filesystem, or else just inherit from the shared one.  We get the best of both worlds: installing software once on the server makes it available to all clients, but clients can still be easily customized (unlike, say, &lt;a href="http://lessdisks.net/"&gt;lessdisks&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6406752612522196169?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6406752612522196169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6406752612522196169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6406752612522196169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6406752612522196169'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/unionfs-and-diskless-linux.html' title='unionfs and diskless linux'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-8653029471221034318</id><published>2006-08-27T16:50:00.000+01:00</published><updated>2006-08-27T17:00:20.952+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacations'/><category scheme='http://www.blogger.com/atom/ns#' term='gnumexp'/><category scheme='http://www.blogger.com/atom/ns#' term='phd'/><title type='text'>Play time over</title><content type='html'>Alas, today is my last day of vacations.   Tomorrow I'll have to get back to work, and start writing my first year Ph.D. report.  Ugh..&lt;br /&gt;&lt;br /&gt;Yesterday night went to see the fireworks of the "popular party" here where I live.  I found them most impressive, better than I've ever seen here.&lt;br /&gt;&lt;br /&gt;I won't have much hacking time from now on, but luckily gNumExp is well advanced already.  Besides the boring but easy job of porting the scatter and parametric plot objects to the new canvas system, one of the things that had me most worried was to render MathML inside a goocanvas widget, in order to present it in the legend.  Thankfully, that part has just been &lt;a href="http://telecom.inescporto.pt/%7Egjc/bzr/bazaar-webserve-dir.cgi/gnumexp?cmd=content;path=src/xygraph/goomathml.py"&gt;solved&lt;/a&gt;. :-)  It wasn't easy; I had to fix a couple of pygobject bugs first, and do some coding in pygoocanvas to support subclassing from goocanvas.ItemSimple and goocanvas.ItemViewSimple, including access to most fields.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-8653029471221034318?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/8653029471221034318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=8653029471221034318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8653029471221034318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/8653029471221034318'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/play-time-over.html' title='Play time over'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-3580551936359439819</id><published>2006-08-24T01:24:00.000+01:00</published><updated>2006-08-24T01:30:23.840+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacations'/><category scheme='http://www.blogger.com/atom/ns#' term='gnumexp'/><title type='text'></title><content type='html'>Got the legend layout and item size working, then went for making the legend movable.  Alas, hit another bug in goocanvas.  Looks like some numerical instability in goo_canvas_view_convert_to_item_space() is affecting the coordinates of motion-notify-events. &lt;br /&gt;As a workaround, calling goo_canvas_view_convert_from_item_space() makes the coordinates sane again.  In the end, the legend is almost working, only preserving relative position during window resizes and during load/save is to be done.  Then of course there's the MathML part waiting... :P&lt;br /&gt;&lt;br /&gt;As planned, went for some biking in the afternoon, then out dinner.  In the evening, finished the legend parts described above, that had been left unfinished by the time I had to go biking.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-3580551936359439819?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/3580551936359439819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=3580551936359439819' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3580551936359439819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/3580551936359439819'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/got-legend-layout-and-item-size-working.html' title=''/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-6464963110856818582</id><published>2006-08-23T13:19:00.000+01:00</published><updated>2006-08-23T13:23:53.776+01:00</updated><title type='text'></title><content type='html'>Yesterday I had another wonderful day at the beach.  Went out for dinner.  Got home, read email, sent a couple of &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;goocanvas&lt;/span&gt; patches.&lt;br /&gt;&lt;br /&gt;Alas, looks like today the weather is not as good at the beach, so I'm staying home, try to finish the legend in &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;gnumexp&lt;/span&gt;, although I have to fight &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;goocanvas&lt;/span&gt;/&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;cairo&lt;/span&gt; bugs first :|  Planning to do some biking near the end of the afternoon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-6464963110856818582?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/6464963110856818582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=6464963110856818582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6464963110856818582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/6464963110856818582'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/yesterday-i-had-another-wonderful-day.html' title=''/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-4019774249404103757</id><published>2006-08-22T01:40:00.000+01:00</published><updated>2006-08-22T01:50:38.765+01:00</updated><title type='text'></title><content type='html'>Spent a couple of hours in the morning/early afternoon trying to figure out why calling get_bounds()  on a goocanvas.Group returned -32768 and 32767 as min/max x and y.  My instincts told me it must be a bug in goo_canvas_text_item_update, but as it turns out my instincts deceived me; the item that returns wrong bounds is actually a GooCanvasPath.  So I've narrowed where the bug must be, but it could still be a bug not only in goocanvas but also in cairo.  Didn't have time to pursue the matter further as it was time to head for the beach.&lt;br /&gt;&lt;br /&gt;Had a wonderful afternoon at the beach: nice and warm sun, light breeze, and really nice water.  As usual, enjoyed some more reading of Miles Errant.&lt;br /&gt;&lt;br /&gt;Got home, went to the gym, then late dinner.&lt;br /&gt;&lt;br /&gt;Made a gnome-python release.  Unfortunately my mind was not sharp anymore and couldn't stand more hacking.  Just watch some TV, then a bit of reading, then bed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-4019774249404103757?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/4019774249404103757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=4019774249404103757' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4019774249404103757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/4019774249404103757'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/spent-couple-of-hours-in-morningearly.html' title=''/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4332074303276912557.post-2288188302201877846</id><published>2006-08-20T11:54:00.000+01:00</published><updated>2006-08-20T12:01:44.869+01:00</updated><title type='text'>gNumExp and GooCanvas</title><content type='html'>During my vacations, I've been slowly trying to convert my pet project &lt;a href="https://launchpad.net/people/gjc/+branch/gnumexp/main"&gt;gNumExp&lt;/a&gt; to &lt;a href="http://www.dachaplin.dsl.pipex.com/goocanvas/"&gt;GooCanvas&lt;/a&gt;.  Previously it was using libnxplot (which I created years before cairo was available) and a my own canvas system.  So I've been helping Gian Mario Tagliaretti on python bindings for goocanvas, since I also need them for gnumexp.&lt;br /&gt;&lt;br /&gt;goocanvas has some good things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;It is fast (for instance it looked much faster than &lt;a href="http://www.blaubeermuffin.de/?id=25#Criawips--Cairo-based-Canvas"&gt;ccc&lt;/a&gt;, last time I tried both);&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://www.blaubeermuffin.de/?id=25#Criawips--Cairo-based-Canvas"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;It has builtin accessibility and keyboard navigation features (though I haven't yet tapped into these features in my program);&lt;/li&gt;&lt;li&gt;It has a rich set of basic shapes that you can use;&lt;/li&gt;&lt;li&gt;It is very much language bindings friendly due to extensive use of GObject properties;&lt;/li&gt;&lt;/ul&gt;Unfortunately I also found some flaws:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The model/view split adds too much complexity with very little gain;&lt;/li&gt;&lt;li&gt;It doesn't make it easy to draw your own custom shapes, due to 1. model/view split, mandatory use of GInterfaces, lack of signals for customizing the drawing;&lt;/li&gt;&lt;li&gt;And the #1 problem, it is difficult or impossible to do proper layout.  For instance, I'm stuck in drawing the legend of plots because I do not know how much space a legend items will take, but need to know in order to size the legend rectangle correctly.&lt;/li&gt;&lt;/ul&gt;The first two problems I can cope with, but I need to solve the third problem.  Either I missed something in the API, or I'll have to make myself a new API and submit a patch and hope Damon will accept it.  So much work just for a legend *sigh*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4332074303276912557-2288188302201877846?l=gjcarneiro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gjcarneiro.blogspot.com/feeds/2288188302201877846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4332074303276912557&amp;postID=2288188302201877846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2288188302201877846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4332074303276912557/posts/default/2288188302201877846'/><link rel='alternate' type='text/html' href='http://gjcarneiro.blogspot.com/2006/08/first-post.html' title='gNumExp and GooCanvas'/><author><name>Gustavo Carneiro</name><uri>http://www.blogger.com/profile/13985211986952998750</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='22' height='32' src='http://telecom.inescporto.pt/~gjc/Gustavo10.png'/></author><thr:total>0</thr:total></entry></feed>
