<?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-5339134701253072385</id><updated>2012-02-03T01:33:39.232+01:00</updated><category term='autotools'/><category term='whch'/><category term='MeeGo'/><category term='Cheese'/><category term='GOA'/><category term='Dublin'/><category term='Nokia'/><category term='Berlin'/><category term='Bisho'/><category term='Interview'/><category term='GHangtux'/><category term='PackageKit'/><category term='GNOME'/><category term='C++'/><category term='Makefile'/><category term='Desktop Summit'/><category term='gtkmm'/><category term='plugin'/><category term='GOPW'/><category term='GTK+'/><category term='CERN'/><category term='GUADEC'/><category term='libsocialweb'/><category term='QtCreator'/><category term='Qt'/><category term='Internship'/><category term='nautilus-sendto'/><category term='GHangtuxmm'/><category term='Documentation'/><category term='Events'/><category term='Openismus'/><category term='Hackfest'/><category term='Munich'/><title type='text'>psc on board</title><subtitle type='html'>If you are brave to say "good bye", life will reward you with a new "hello" (Paulo Coelho, 21.02.10)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5315244592865084237</id><published>2012-02-01T14:36:00.000+01:00</published><updated>2012-02-01T16:09:54.771+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PackageKit'/><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus-sendto'/><title type='text'>PackageKit in Cheese</title><content type='html'>&lt;div style="text-align: justify;"&gt;As I already mentioned in &lt;a href="http://psconboard.blogspot.com/2012/01/add-share-functionality-to-cheese-check.html"&gt;one of my last posts&lt;/a&gt;, the sharing functionality in Cheese uses nautilus-sendto, which is a runtime dependency, and we wanted to do it our best to let the user/developer/maintainer know about it:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 1. By &lt;a href="http://git.gnome.org/browse/cheese/commit/?id=8a35adc6dbed9a2e672dc6243bee81092948f21a"&gt;checking the dependency at configure time&lt;/a&gt;. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp; 2. By writing a comment in the README file.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;nbsp; 3. By using &lt;i&gt;PackageKit&lt;/i&gt; to install the package at runtime. If the package is not installed, and the user tries to use the sharing functionality, &lt;i&gt;PackageKit&lt;/i&gt; will be used to install it at runtime.&lt;b&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;The adventure &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The &lt;i&gt;PackageKit&lt;/i&gt; bit has been quite challenging for me, and I have to admit that it took me much longer than expected :(! I have learned a lot of new things though!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The first problem I had, was that I spent a few days working on &lt;i&gt;dbus-glib&lt;/i&gt;, which I later discovered through &lt;a href="http://amigadave.com/blog/"&gt;Dave&lt;/a&gt;, that was deprecated. The source of the problem and biggest issue for me was, that both of the examples I followed in &lt;a href="http://www.packagekit.org/pk-faq.html#session-methods"&gt;the&lt;/a&gt;&lt;i&gt;&lt;a href="http://www.packagekit.org/pk-faq.html#session-methods"&gt; PackageKit &lt;/a&gt;&lt;/i&gt;&lt;a href="http://www.packagekit.org/pk-faq.html#session-methods"&gt;FAQ&lt;/a&gt; and the &lt;a href="https://live.gnome.org/Vala/DBusClientSamples/Waiting"&gt;Vala tutorial&lt;/a&gt;, were obsolete and using &lt;i&gt;dbus-glib&lt;/i&gt;. I have already talked with &lt;a href="http://blogs.gnome.org/hughsie/"&gt;Richard Hughes&lt;/a&gt; about the first example and marked the second one as obsolete in the Vala tutorial wiki.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After this discovery, I started using the C API and the &lt;a href="http://www.packagekit.org/gtk-doc/Transaction.html"&gt;&lt;i&gt;org.freedesktop.PackageKit.Transaction&lt;/i&gt; interface&lt;/a&gt;, which offers the &lt;a href="http://www.packagekit.org/gtk-doc/Transaction.html#Transaction.InstallPackages"&gt;&lt;i&gt;InstallPackages&lt;/i&gt; method&lt;/a&gt;. I realised of course, that all the examples I looked at, used the &lt;i&gt;org.freedesktop.PackageKit.Modify&lt;/i&gt; interface instead, but from my last experience, and since I did not see this interface documented anywhere in the API, I just went on working using the '&lt;i&gt;Transaction&lt;/i&gt;' interface. It also took me a long time to get it 'almost' working, but it never did completely. Another failure!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;While I was in the middle of this frustrating process, Dave found out, that the '&lt;i&gt;Modify&lt;/i&gt;' interface was actually not obsolete, and pointed me to a &lt;a href="http://git.gnome.org/browse/gnome-packagekit/tree/src/org.freedesktop.PackageKit.xml"&gt;very interesting link&lt;/a&gt; that took him some time to find and explained us why all the examples we saw, were using the '&lt;i&gt;Modify&lt;/i&gt;' interface. We both wondered why this was not documented and so hidden, and agreed that this should be somewhere more visible.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;After making all the changes in the code again to use &lt;i&gt;D-Bus&lt;/i&gt; and the '&lt;i&gt;Modify&lt;/i&gt;' interface instead, I talked to Richard Hughes regarding all these issues. He was really nice, and informed me that the reason why this was not documented in the API, was because the API is just documenting the 'system interface', since the 'session interface' isn't really part of the core &lt;i&gt;PackageKit&lt;/i&gt; project but a reference implementation that both KDE and GNOME provide. He also pointed me to another &lt;a href="http://git.gnome.org/browse/gnome-packagekit/tree/docs/DBusInterface.txt"&gt;very useful link&lt;/a&gt; and agreed on the need of a better entry in the &lt;a href="http://www.packagekit.org/pk-faq.html"&gt;&lt;i&gt;PackageKit&lt;/i&gt; FAQ&lt;/a&gt;, to provide the users with all these information and documentation, something I will be helping with.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Gained knowledge&lt;/b&gt;&lt;br /&gt;I could resume what I have learned about &lt;i&gt;PackageKit&lt;/i&gt; in a few paragraphs, that I hope will be useful for you in the future.&lt;br /&gt;&lt;br /&gt;There are two different levels of API in PackageKit:&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - The system API: It is the '&lt;i&gt;Transaction&lt;/i&gt;' interface, which is more low level, but allows the developer to control everything, including things like GPG keys and EULAs. Everything is explained in the &lt;a href="http://www.packagekit.org/gtk-doc/index.html"&gt;&lt;i&gt;PackageKit&lt;/i&gt; reference manual&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; - The session API: It is the '&lt;i&gt;Modify&lt;/i&gt;' and '&lt;i&gt;Query&lt;/i&gt;' interface, which allows the developer to install a package without taking care of the low level part. This is the one &lt;a href="http://git.gnome.org/browse/cheese/commit/?id=b2c1cec7dd6f8df9e8e41341dab5d18e47b4f40e"&gt;used in Cheese&lt;/a&gt;. The documentation in this case, is not so visible as I already mentioned before, but you can find what you need in the git.gnome.org repositories under the &lt;a href="http://git.gnome.org/browse/gnome-packagekit/tree/src/org.freedesktop.PackageKit.xml"&gt;/src&lt;/a&gt; and &lt;a href="http://git.gnome.org/browse/gnome-packagekit/tree/docs/DBusInterface.txt"&gt;/docs&lt;/a&gt; directories of &lt;i&gt;gnome-packagekit&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Dave wrote a nice generic synchronous example of &lt;i&gt;PackageKit&lt;/i&gt; usage in Vala, using the '&lt;i&gt;Modify&lt;/i&gt;' interface:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;[DBus (name = "org.freedesktop.PackageKit.Modify")]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;interface Packagekit : Object {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public abstract void install_package_names (uint xid, string[] packages,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string interaction) throws IOError;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;int main () {&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Packagekit pk;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt; &lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pk = Bus.get_proxy_sync (BusType.SESSION, "org.freedesktop.PackageKit",&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                             "/org/freedesktop/PackageKit");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string[] packages = {"nautilus-sendto" };&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var interaction = "hide-confirm-search,hide-finished,hide-warning";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pk.install_package_names (0, packages, interaction);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (IOError error) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; critical ("D-Bus error: %s", error.message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;    return 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;  return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;This is basically what you need to know if you want to install any package at runtime in your application using PackageKit, and do not want to bother with the details. I have used the &lt;a href="http://git.gnome.org/browse/cheese/commit/?id=b2c1cec7dd6f8df9e8e41341dab5d18e47b4f40e"&gt;asynchronous version of it for Cheese&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ilTvKIrxUJI/TykYRLdCR2I/AAAAAAAAAQk/nDTMtq2OUpo/s1600/non_installed_nautilus_sendto.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="355" src="http://2.bp.blogspot.com/-ilTvKIrxUJI/TykYRLdCR2I/AAAAAAAAAQk/nDTMtq2OUpo/s400/non_installed_nautilus_sendto.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;PackageKit in Cheese.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: small;"&gt;This has been a long post, but as you can see, it was quite an adventure to get here! I will write soon with more news!&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5315244592865084237?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5315244592865084237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2012/02/packagekit-in-cheese.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5315244592865084237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5315244592865084237'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2012/02/packagekit-in-cheese.html' title='PackageKit in Cheese'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ilTvKIrxUJI/TykYRLdCR2I/AAAAAAAAAQk/nDTMtq2OUpo/s72-c/non_installed_nautilus_sendto.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-9088915436907418756</id><published>2012-01-19T11:15:00.000+01:00</published><updated>2012-01-20T16:58:12.399+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><title type='text'>How great would it be if...</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have been constantly thinking about something in the last months. Unconsciously, it all started when I did my first contribution to &lt;i&gt;GNOME&lt;/i&gt;, then I got addicted, and more and more contributions came, and together with that, more research, reference manuals I had to read, APIs I had to use, the &lt;a href="https://live.gnome.org/GnomeWomen/OutreachProgram2011"&gt;&lt;i&gt;GOPW&lt;/i&gt;&lt;/a&gt; (GNOME Outreach Program for Women)... and then there it was, a NEED!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;How many of you did not feel that documentation was incomplete or non understandable at some point and were desperately looking for an example or source of inspiration?? In my case, I usually look in some project under &lt;i&gt;git.gnome.org&lt;/i&gt;, and it helps in most of the cases. What about if we had some kind of '&lt;i&gt;Google Code Search&lt;/i&gt;' tool that would search in all the available code at &lt;i&gt;git.gnome.org&lt;/i&gt;? Something like a '&lt;i&gt;GNOME Code Search&lt;/i&gt;'! How great would that be??&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;What do you guys think? Which approach would you take for doing something like this?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-9088915436907418756?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/9088915436907418756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2012/01/how-great-would-it-be-if.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/9088915436907418756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/9088915436907418756'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2012/01/how-great-would-it-be-if.html' title='How great would it be if...'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-1740457198065386466</id><published>2012-01-17T15:00:00.000+01:00</published><updated>2012-01-19T11:45:15.318+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><category scheme='http://www.blogger.com/atom/ns#' term='Bisho'/><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='GOA'/><category scheme='http://www.blogger.com/atom/ns#' term='libsocialweb'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus-sendto'/><title type='text'>Add 'Share' functionality to Cheese - check!</title><content type='html'>&lt;div style="text-align: justify;"&gt;Great news! The sharing functionality I have been &lt;a href="http://psconboard.blogspot.com/2011/12/integrating-nautilus-sendto-in-cheese.html"&gt;lately working on&lt;/a&gt;, have been &lt;a href="http://git.gnome.org/browse/cheese/commit/?id=b7079b4b55dac0fc5b8a4c0a5b0c420736e22677"&gt;merged&lt;/a&gt; into Cheese master! Now, users will be able to share pictures and videos within different technologies! This needs some improvement though.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;First of all, &lt;i&gt;nautilus-sendto&lt;/i&gt; needs a good check in the &lt;i&gt;configure.ac &lt;/i&gt;file. We are talking here about a runtime dependency, and it would be really nice to have a hint for the user in the form of a message at configure time if &lt;i&gt;nautilus-sendto&lt;/i&gt; is not installed on their system or they have the wrong version of it. I already tried something, but it is not completely working, and therefore had to be dropped from the patch for the merge:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;# Check for nautilus-sendto runtime dependency.&lt;br /&gt;NAUTILUS_SENDTO_DEP_MSG="This is a runtime dependency just needed for using the sharing functionality in Cheese."&lt;br /&gt;NAUTILUS_SENDTO_REQUIRED=2.91.0&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;AC_PATH_PROGS([NAUTILUS_SENDTO], [nautilus-sendto], [notfound])&lt;br /&gt;AS_IF([test "x$NAUTILUS_SENDTO" = "xnotfound"],&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif; text-align: left;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; [AC_MSG_WARN([Unable to find nautilus-sendto &amp;gt;= $NAUTILUS_SENDTO_REQUIRED in the path. $NAUTILUS_SENDTO_DEP_MSG])],&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; [NAUTILUS_SENDTO_SYSTEM=`nautilus-sendto --version | $SED 's/nautilus-sendto //g'`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS_VERSION_COMPARE([$NAUTILUS_SENDTO_SYSTEM], [$NAUTILUS_SENDTO_REQUIRED],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NS_VERSION_COMPARE=0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NS_VERSION_COMPARE=1],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [NS_VERSION_COMPARE=1])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; AS_IF([test $NS_VERSION_COMPARE = 0],&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [AC_MSG_WARN([Unable to check the version of nautilus-sendto, it is probably too old. At least $NAUTILUS_SENDTO_REQUIRED is required. $NAUTILUS_SENDTO_DEP_MSG])])]&lt;/span&gt;&lt;i&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif; font-size: x-small;"&gt;) &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The problem with this solution, is that it will only work for those versions of &lt;i&gt;nautilus-sendto&lt;/i&gt; that include support for the &lt;i&gt;--version&lt;/i&gt; argument, currently just&lt;i&gt; nautilus-sendto&lt;/i&gt; master, since this is a &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=667030"&gt;feature&lt;/a&gt; I also worked on during the &lt;i&gt;nautilus-sendto&lt;/i&gt; integration, and was merged about a week ago. This means, that old versions of &lt;i&gt;nautilus-sendto&lt;/i&gt; will not recognize this argument, and therefore return an error message ("&lt;i&gt;Could not parse command-line options: Unknown option --version&lt;/i&gt;"), that &lt;i&gt;AS_VERSION_COMPARE&lt;/i&gt; will use, comparing a version number with a string, instead of a version number with another version number, which will of course make the check useless. In the meantime, while I work on finding an improved solution, the user will be informed in two ways in case they hit this problem: through the UI by an insensitive '&lt;i&gt;Share&lt;/i&gt;' action and through the &lt;i&gt;README&lt;/i&gt; file.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;There are other bits that also need some improvement. As I already explained &lt;a href="http://psconboard.blogspot.com/2011/12/integrating-nautilus-sendto-in-cheese.html"&gt;a few blog posts ago&lt;/a&gt;, for accomplishing this task,&amp;nbsp; I used &lt;i&gt;nautilus-sendto&lt;/i&gt;, that internally uses &lt;i&gt;libsocialweb&lt;/i&gt;, which needs to have some &lt;i&gt;libsocialweb&lt;/i&gt; &lt;i&gt;accounts&lt;/i&gt; first set up for working. Right now, the only way for setting those accounts up is using &lt;i&gt;Bisho&lt;/i&gt;, that is also giving some problems. The idea now and next challenge, is to use &lt;i&gt;GOA&lt;/i&gt; (GNOME Online Accounts) in libsocialweb instead, at least, and just for the moment, for the Google services, so my next tasks will be to focus on porting the current &lt;i&gt;libsocialweb&lt;/i&gt; YouTube service to use &lt;i&gt;GOA,&lt;/i&gt; and to fix all of those underlying bits that are not working correctly, to make the sharing functionality work really well!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As you can see, I do not get bored. I will be back soon with more news!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-1740457198065386466?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/1740457198065386466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2012/01/add-share-functionality-to-cheese-check.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1740457198065386466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1740457198065386466'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2012/01/add-share-functionality-to-cheese-check.html' title='Add &apos;Share&apos; functionality to Cheese - check!'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-4701494372345508575</id><published>2012-01-03T18:27:00.000+01:00</published><updated>2012-01-19T11:45:37.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>Avoid using busy-waiting or spinning technique</title><content type='html'>&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;i&gt;Busy-waiting&lt;/i&gt;, or in other words, &lt;i&gt;spinning&lt;/i&gt;, happens when a process repeatedly executes a loop of code &lt;/span&gt; to see if a condition is true, &lt;span style="font-family: inherit;"&gt;while waiting for an event to occur. This means, that the processor will be waiting for the task to be finished in order to go on executing other tasks, which means, that in general this technique should be avoided, since it consumes time of the processor that could be used, wasting it on useless activity. The solution would be to use an asynchronous approach.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit;"&gt;Thinking in asynchronous terms is hard though, synchronous API is simpler in many ways, so most of us tend to use it. It is also usually a quicker hack, but not because of this reason it is the best option.&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit; text-align: justify;"&gt;&lt;span style="font-family: inherit;"&gt;In order to let Cheese users launch several nautilus-sendto dialogs, to send several pictures each time, and change the form of the cursor from when Cheese was busy with nautilus-sendto to when it was not and all of these without blocking the UI, I needed to take an asynchronous approach. I do not have experience with it, so I of course did it the "easy way", spinning the loop (&lt;i&gt;spin_event_loop()&lt;/i&gt;) and this was the result (&lt;/span&gt;&lt;span style="font-family: inherit;"&gt;please, take into account that I removed all the code that was not necessary for this explanation):&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;public void &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;files&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;_share() {&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   try { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;main_window.set_busy_cursor();&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       Pid child_pid;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       Process.spawn_async("/", argv, null SpawnFlags.SEARCH_PATH, null, out child_pid); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;       &lt;b&gt;main_window.set_normal_curso&lt;/b&gt;&lt;b&gt;r();&lt;/b&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: inherit;"&gt;}&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;code&gt;public void set_busy_cursor() {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.WATCH));&lt;/code&gt;&lt;/div&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&lt;b&gt; spin_event_loop()&lt;/b&gt;;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt;public void set_normal_cursor() {&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR));&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; &lt;b&gt;spin_event_loop()&lt;/b&gt;;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;} &lt;br /&gt; public bool spin_event_loop() {&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp; while (Gtk.events_pending())&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: inherit;"&gt;// Busy-waiting&lt;/span&gt;&lt;/code&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {...} &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: inherit;"&gt;}&lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;After submitting my first patch with this code, &lt;a href="http://amigadave.com/blog/"&gt;Dave&lt;/a&gt; was the one who made the review, and he suggested me to not use the spinning technique. Now it is obvious after reading the above mentioned reasons why :P. At first I was a little bit "afraid" of using asynchronous API. It looked completely akward to me, but then I also discovered through him, that &lt;i&gt;GIO&lt;/i&gt; and &lt;i&gt;GLib&lt;/i&gt; have some nice API to make asynchronous operations simpler. &lt;i&gt;GIO&lt;/i&gt; offers &lt;i&gt;&lt;a href="http://developer.gnome.org/gio/2.31/GSimpleAsyncResult.html"&gt;GSimpleAsyncResult&lt;/a&gt;&lt;/i&gt;, which I personally did not find specially pretty, but still very useful. Sushi uses it and has some &lt;a href="http://git.gnome.org/browse/sushi/tree/src/libsushi/sushi-font-loader.c"&gt;nice examples in its code&lt;/a&gt;. On the other hand, &lt;i&gt;GLib&lt;/i&gt; has &lt;i&gt;&lt;a href="http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-child-watch-add"&gt;g_child_watch_add()&lt;/a&gt;&lt;/i&gt; (&lt;i&gt;ChildWatch.add()&lt;/i&gt;), which sets a function to be called (child_finished()) when a child exits, and was the best approach for my case and the one I decided to replace the spinning technique with:&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="background-color: white; color: black; display: inline ! important; float: none; font-family: inherit; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;public void files_share () {&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; try {&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Pid child_pid;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Process.spawn_async("/", argv, null,&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SpawnFlags.SEARCH_PATH | SpawnFlags.DO_NOT_REAP_CHILD,&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; null, out child_pid))&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;ChildWatch.add&lt;/b&gt; (child_pid, child_finished);&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (num_children == 1)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.WATCH));&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt; }&lt;br /&gt;void child_finished (Pid pid, int status) { &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; Process.close_pid(pid);&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; if (num_children == 0)&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.get_window().set_cursor(new Gdk.Cursor(Gdk.CursorType.LEFT_PTR));&lt;br /&gt; }&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All of these has been totally new for me and I am very happy I learned some bits of it. It definitely improved the code a lot!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Hopefully, all these changes will be merged to master very soon. I will keep you informed!&lt;/div&gt;&lt;code&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-4701494372345508575?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/4701494372345508575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2012/01/avoid-using-busy-waiting-or-spinning.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/4701494372345508575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/4701494372345508575'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2012/01/avoid-using-busy-waiting-or-spinning.html' title='Avoid using busy-waiting or spinning technique'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-655630683675249539</id><published>2011-12-24T18:50:00.000+01:00</published><updated>2012-01-19T11:46:10.825+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><category scheme='http://www.blogger.com/atom/ns#' term='Bisho'/><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='libsocialweb'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><category scheme='http://www.blogger.com/atom/ns#' term='nautilus-sendto'/><title type='text'>Integrating nautilus-sendto in Cheese</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Among other things, last week I have been very focused and working on the integration of nautilus-sendto in Cheese.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;First, I spent some time playing around with nautilus-sendto, and during this process, I filed some bugs and made patches for them too. I first could not compile master during maintainer mode due to some deprecated symbols that I replaced at the end in the form of a &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=666241"&gt;patch&lt;/a&gt;. After that, I have been having problems with the libsocialweb plugin, which is loaded by nautilus-sendto. At run time, the nautilus-sendto dialog did not show any of the libsocialweb offered technolgies. After talking to &lt;a href="http://www.hadess.net/"&gt;Bastien&lt;/a&gt; about this issue, he informed me, that in order to show the above mentioned accounts in nautilus-sendto, it is necessary to create your own libsocialweb accounts with &lt;a href="http://meego.gitorious.org/meego-netbook-ux/bisho"&gt;Bisho&lt;/a&gt; (MeeGo configuration tool for libsocialweb social network aggregator) first. Once the accounts have been created, nautilus-sendto should show those accounts in its dialog. I also filed a &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=666250"&gt;bug&lt;/a&gt; and submitted a patch updating the README file of nautilus-sendto with this information, which was not available anywhere and updated the diagram I used in my &lt;a href="http://psconboard.blogspot.com/2011/12/gnome-outreach-program-for-women-2011.html"&gt;last post&lt;/a&gt; with the following one:&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NKzSfxNjHsQ/TvX4LGQ3NTI/AAAAAAAAAP8/tXunVcvs4d4/s1600/cheese_nautilus_sendto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" src="http://4.bp.blogspot.com/-NKzSfxNjHsQ/TvX4LGQ3NTI/AAAAAAAAAP8/tXunVcvs4d4/s400/cheese_nautilus_sendto.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Sharing videos and images with Cheese.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;The truth is, that even using Bisho now, nautilus-sendto is not showing the libsocialweb accounts for me, which is something I have to go on investigating.&lt;br /&gt;&lt;br /&gt;Bisho is also not very stable. It is currently showing just 3 different account types: Facebook, Twitter and Flickr, and just Flickr is working. After what has happened with Meego and the integration of &lt;a href="http://developer.gnome.org/goa/stable/"&gt;GNOME Online Accounts (GOA)&lt;/a&gt; in GNOME, it might be nice and wise to migrate from Bisho, to GOA, another thing I filed a &lt;a href="https://bugzilla.gnome.org/show_bug.cgi?id=666585"&gt;bug&lt;/a&gt; about. &lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nFSCd9F1e5E/TvX1L4TJM5I/AAAAAAAAAPw/LbZvF_vB0D0/s1600/bisho.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://3.bp.blogspot.com/-nFSCd9F1e5E/TvX1L4TJM5I/AAAAAAAAAPw/LbZvF_vB0D0/s400/bisho.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Bisho.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;After getting familiar with nautilus-sendto, I started working on the integration itself and made a small wrapper in Cheese. Now we can say, that Cheese has the capacity to share images and videos through different technologies. Look that I just said &lt;i&gt;the capacity&lt;/i&gt;, which does not mean that is completely working yet! For my changes, I have created a new &lt;a href="http://git.gnome.org/browse/cheese/log/?h=shareable-media"&gt;"shareable-media" branch in Cheese&lt;/a&gt; that you are very welcome to test!&lt;br /&gt;&lt;br /&gt;This is how it is currently looking in the UI:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WmzxIsj8C-4/TvYU1byF0yI/AAAAAAAAAQI/OYTOM4p_8gk/s1600/share.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://2.bp.blogspot.com/-WmzxIsj8C-4/TvYU1byF0yI/AAAAAAAAAQI/OYTOM4p_8gk/s400/share.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Share images and videos Cheese option. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JsYMI8W09dw/TvYU-lsHHuI/AAAAAAAAAQU/Qt-EizBD7yg/s1600/nautilus_sendto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://4.bp.blogspot.com/-JsYMI8W09dw/TvYU-lsHHuI/AAAAAAAAAQU/Qt-EizBD7yg/s400/nautilus_sendto.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;Integration of nautilus-sendto in Cheese.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;I have also realised, that multiple selection of images and videos is not completely working on Cheese. A user is able to select several images and videos that are together one next to the other, but not different separate ones, which is something we will also try to fix.&lt;br /&gt;&lt;br /&gt;This, improving the current code and fixing the different issues within nautilus-sendto and Bisho are the next points in my TODOs list. Lots of fun!! :))&lt;br /&gt;&lt;br /&gt;I will write back soon with more updates! Thanks for reading!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-655630683675249539?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/655630683675249539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/12/integrating-nautilus-sendto-in-cheese.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/655630683675249539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/655630683675249539'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/12/integrating-nautilus-sendto-in-cheese.html' title='Integrating nautilus-sendto in Cheese'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-NKzSfxNjHsQ/TvX4LGQ3NTI/AAAAAAAAAP8/tXunVcvs4d4/s72-c/cheese_nautilus_sendto.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5355980964236216464</id><published>2011-12-14T00:00:00.000+01:00</published><updated>2011-12-14T00:01:33.043+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>GNOME Outreach Program for Women 2011: The goals</title><content type='html'>&lt;div style="text-align: justify;"&gt;As I already &lt;a href="http://psconboard.blogspot.com/2011/11/embracing-changes.html"&gt;announced&lt;/a&gt; a few weeks ago, I had the honour to be selected as an intern for the &lt;a href="http://live.gnome.org/GnomeWomen/OutreachProgram2011"&gt;GNOME Outreach Program for Women 2011&lt;/a&gt; (GOPW)! I will be working on the Cheese project and mentored by &lt;a href="http://amigadave.com/blog/"&gt;David King&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;My main goal, and proposed one, from the outset, was to provide Cheese with support for uploading recorded videos to YouTube. Analysing the problem, I decided that I would like to solve it in a way from the beginning, that would permit to extend this feature with other social sharing technologies for sharing images and videos in Cheese in the future. After talking about all of these ideas with Dave, he pointed me to &lt;i&gt;&lt;a href="http://git.gnome.org/browse/libsocialweb"&gt;libsocialweb&lt;/a&gt;&lt;/i&gt;. Later on, and talking to &lt;a href="http://www.hadess.net/"&gt;Bastien Nocera&lt;/a&gt; about what the plan was, he pointed me to &lt;i&gt;&lt;a href="http://developer.gnome.org/nautilus-sendto/"&gt;nautilus-sendto&lt;/a&gt;&lt;/i&gt;, a convenience application to send files via email, bluetooth or instant messenger,which internally uses &lt;i&gt;libsocialweb&lt;/i&gt; already and is what I am finally going to use for my purpose, extending my main goal a bit from sharing in Youtube, to sharing in general.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following diagram should give you an overview of the whole general idea:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nYv8UDQ8_6Y/TudirELsIKI/AAAAAAAAAPc/PlR3GRw1ILg/s1600/cheese_nautilus_sendto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://3.bp.blogspot.com/-nYv8UDQ8_6Y/TudirELsIKI/AAAAAAAAAPc/PlR3GRw1ILg/s400/cheese_nautilus_sendto.png" width="400" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;I am very excited to see all of this working already! I will try to keep you up to date with the whole process.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: justify;"&gt;Thanks for reading!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5355980964236216464?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5355980964236216464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/12/gnome-outreach-program-for-women-2011.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5355980964236216464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5355980964236216464'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/12/gnome-outreach-program-for-women-2011.html' title='GNOME Outreach Program for Women 2011: The goals'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-nYv8UDQ8_6Y/TudirELsIKI/AAAAAAAAAPc/PlR3GRw1ILg/s72-c/cheese_nautilus_sendto.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-195824163512550104</id><published>2011-11-30T16:30:00.000+01:00</published><updated>2011-11-30T16:42:20.624+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QtCreator'/><category scheme='http://www.blogger.com/atom/ns#' term='autotools'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><title type='text'>Autotools Project Manager, part 5: [current status MERGED]</title><content type='html'>After all the work, I can already announce and celebrate, that the &lt;a href="http://psconboard.blogspot.com/2011/08/autotools-project-manager-part-2-plugin.html"&gt;plugin for giving Qt Creator support for autotools projects&lt;/a&gt;, has been &lt;a href="http://qt.gitorious.org/qt-creator/qt-creator/commit/6445c99ad2020182b5d105b29e373de6273cb5f5"&gt;merged&lt;/a&gt; today into Qt Creator! I could not have finished my time at Openismus GmbH and &lt;a href="http://psconboard.blogspot.com/search/label/plugin"&gt;series of posts&lt;/a&gt; related to the plugin in a better way. I am very happy of the result and hope it will be helpful for those who love autotools. Enjoy and see you soon!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xzH7oAltweQ/TtZOaS2CRII/AAAAAAAAAPM/eXR4q1aDtXo/s1600/fin2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-xzH7oAltweQ/TtZOaS2CRII/AAAAAAAAAPM/eXR4q1aDtXo/s400/fin2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-195824163512550104?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/195824163512550104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/11/autotools-project-manager-part-5.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/195824163512550104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/195824163512550104'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/11/autotools-project-manager-part-5.html' title='Autotools Project Manager, part 5: [current status MERGED]'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-xzH7oAltweQ/TtZOaS2CRII/AAAAAAAAAPM/eXR4q1aDtXo/s72-c/fin2.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-7506179118548168068</id><published>2011-11-18T10:30:00.000+01:00</published><updated>2011-11-18T10:54:52.399+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><title type='text'>Cheese Architecture</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: justify;"&gt;During the process of trying to understand the internals of Cheese and together with &lt;a href="http://amigadave.com/blog/"&gt;Dave&lt;/a&gt;, we created a diagram that I rewrote in &lt;a href="http://en.wikipedia.org/wiki/DOT_language"&gt;dot language&lt;/a&gt; and which I think will be very useful for all of those who want to start contributing to the project or are simply curious about it. It took us some time to put the pieces together, but here is the result!&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Sqi2LAw6fNU/TsYrPvG4QlI/AAAAAAAAAOs/nw_bMhuJktQ/s1600/cheese_architecture.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-Sqi2LAw6fNU/TsYrPvG4QlI/AAAAAAAAAOs/nw_bMhuJktQ/s400/cheese_architecture.png" width="366" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Created using Graphviz.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;/span&gt;Did I mention before that I love &lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt;? It is so, but on this occasion it took me a while to get the layout and the legend the way that I wanted. In order to reorder the subgraphs (each of the external boxes: UI, libcheese, libcheese_gtk, System and Legend), I needed to create some transparent nodes and connections to &lt;i&gt;lie&lt;/i&gt; to the rank system that dot uses. You can check out the code on my &lt;a href="https://github.com/Patriciasc/graphviz-graphs/blob/master/cheese/cheese_architecture.dot"&gt;GitHub&lt;/a&gt; repository for more details.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The diagram will be available as part of the Cheese documentation for the next 3.3.2 release, coming out next Monday the 21st of November.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Enjoy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-7506179118548168068?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/7506179118548168068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/11/cheese-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7506179118548168068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7506179118548168068'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/11/cheese-architecture.html' title='Cheese Architecture'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Sqi2LAw6fNU/TsYrPvG4QlI/AAAAAAAAAOs/nw_bMhuJktQ/s72-c/cheese_architecture.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5387550693813905739</id><published>2011-11-17T11:30:00.000+01:00</published><updated>2011-11-17T13:51:17.279+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='GOPW'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Embracing the changes</title><content type='html'>&lt;div style="text-align: justify;"&gt;Right now I am writing from what is still my bedroom, and my bed. If you had a look around, you could see 7 boxes full of books, clothes, gadgets, things that I need, things that I do not need at all but I feel stupidly attached to. All of them sum up my almost 4 years abroad, not that I can put all the great people that I got to know along the way into my boxes. Those, I keep in my memories and my heart. I just ask myself, how much stuff is a person able to collect in such a short period of time??&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;These last years have been full of good, and also bad, moments and cherished people. I can say that I learnt something new every day, lived in 7 different places, learned a new language, worked in different companies… It was a great and long adventure, a precious piece of my life, also with big emotional costs, but still, just a part of the adventure. And like every good story, and as Freddie Mercury said, "the show must go on", and my show is just starting!&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The destination of these 7 boxes is Gran Canaria; it is also mine. I am moving back home for now and I am really excited about all the new things that are awaiting me in the future. My time at Openismus has come to an end, and therefore, I will have time now to finish my studies—something I really wanted to do a long time ago. I also have the honour to say and &lt;a href="http://www.gnome.org/news/2011/11/gnome-outreach-program-for-women-participants-continue-to-impress/"&gt;re-announce&lt;/a&gt;, that I have been selected as one of the interns for the &lt;a href="http://live.gnome.org/GnomeWomen/OutreachProgram2011"&gt;GNOME Outreach Program for Women&lt;/a&gt;! This means, that you will still keep on hearing from me! I have been very lucky, I must say, and will be mentored by &lt;a href="http://amigadave.com/blog/"&gt;David King&lt;/a&gt; to work on the &lt;a href="http://projects.gnome.org/cheese//index"&gt;Cheese&lt;/a&gt; project. I cannot wait to start!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5387550693813905739?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5387550693813905739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/11/embracing-changes.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5387550693813905739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5387550693813905739'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/11/embracing-changes.html' title='Embracing the changes'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-914360860410469953</id><published>2011-11-10T18:50:00.012+01:00</published><updated>2011-11-11T14:54:23.121+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QtCreator'/><category scheme='http://www.blogger.com/atom/ns#' term='autotools'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Autotools Project Manager, part 4: Moving from Gitorious to Gerrit.</title><content type='html'>After the first code review from the Qt Creator team, and due to the new Nokia changes related to &lt;a href="http://labs.qt.nokia.com/2011/10/21/the-qt-project-is-live/"&gt;open governance&lt;/a&gt;, this project has been migrated from &lt;a href="https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/2205"&gt;Gitorious&lt;/a&gt; to &lt;a href="http://codereview.qt-project.org/#change,8064"&gt;Gerrit&lt;/a&gt;. This migration has blocked the development of the project more than expected, mainly due to the bureaucratic processes involved, but now things are back to normal, and after a second review it seems that we are closer to seeing the plugin become part of Qt Creator.&lt;br /&gt;&lt;br /&gt;Also two great pieces of news. The first, is that the configure.ac file is now highlighted in the autotools project. Credit goes to &lt;a href="http://frinring.wordpress.com/"&gt;Friedrich W. H. Kossebau&lt;/a&gt;, who pointed me to the right place and &lt;a href="http://www.hjcms.de/"&gt;person&lt;/a&gt; in order to make this happen. The second, is that &lt;a href="http://taschenorakel.de/mathias/"&gt;Mathias Hasselmann&lt;/a&gt;&amp;nbsp; has come up with a great idea: a &lt;a href="http://taschenorakel.de/%7Emathias/qtcreator-devhelp/"&gt;script&lt;/a&gt; for converting devhelp books into Qt help collections.&lt;br /&gt;&lt;br /&gt;As you see, all good news! Now, let's go on making Qt Creator rock!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: Since there is no way to have even read access to Gerrit unless one has an account in their &lt;a href="https://bugreports.qt.nokia.com/secure/Dashboard.jspa"&gt;Qt Bug Tracker Jira system&lt;/a&gt;, I will go on keeping the Gitorious repository up to date with all the changes. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-914360860410469953?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/914360860410469953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/11/autotools-project-manager-part-4-moving.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/914360860410469953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/914360860410469953'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/11/autotools-project-manager-part-4-moving.html' title='Autotools Project Manager, part 4: Moving from Gitorious to Gerrit.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5898900687707686590</id><published>2011-09-01T14:25:00.000+02:00</published><updated>2011-09-01T14:25:41.260+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QtCreator'/><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><category scheme='http://www.blogger.com/atom/ns#' term='Desktop Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Autotools Project Manager, part 3: The Merge Request</title><content type='html'>During the Desktop Summit 2011, I had the chance to meet some of the guys working on the Qt Creator (QTC) team. I took advantage of this opportunity and talked to them about the &lt;a href="http://psconboard.blogspot.com/2011/08/autotools-project-manager-part-2-plugin.html"&gt;AutotoolsProjectManager plugin&lt;/a&gt;. After some discussion, among other things about the lack of available documentation and the intention of making a merge request (MR), I was invited to visit the Nokia office in Berlin. So, last week, I had a very interesting and productive evening there and got to talk to some of the developers, &lt;a href="http://www.ohloh.net/accounts/t_hunger"&gt;Tobias Hunger&lt;/a&gt;, &lt;a href="http://daniel.molkentin.de/blog/"&gt;Daniel Molkentin&lt;/a&gt; and &lt;a href="http://www.facebook.com/ossilator"&gt;Oswald Buddenhagen&lt;/a&gt;, as well as to &lt;a href="http://www.linkedin.com/profile/view?id=7328140&amp;amp;trk=tab_pro"&gt;Leena Miettinen&lt;/a&gt; (in charge of the Qt tools documentation), all of who I have to thank for their patience and the time they took to help me. After the visit and their great advice, I had some homework to do (fix some code style issues, add the documentation and code completion…) to get the plugin prepared for the MR. Now, it is finally available in &lt;a href="https://qt.gitorious.org/qt-creator/qt-creator/merge_requests/2205"&gt;gitorious&lt;/a&gt;, waiting to be reviewed by the QTC team! Let's keep fingers crossed! &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5898900687707686590?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5898900687707686590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/09/autotools-project-manager-part-3-merge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5898900687707686590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5898900687707686590'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/09/autotools-project-manager-part-3-merge.html' title='Autotools Project Manager, part 3: The Merge Request'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-6290504336967108463</id><published>2011-08-31T15:46:00.000+02:00</published><updated>2011-08-31T15:46:01.953+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Desktop Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Desktop Summit 2011: happy and proud.</title><content type='html'>I know that it has been two weeks since the Desktop Summit 2011 Berlin came to an end, but I really wanted to write this post.&lt;br /&gt;&lt;br /&gt;It is my desire to express loudly and publicly how &lt;b&gt;happy&lt;/b&gt; and &lt;b&gt;proud&lt;/b&gt; I am. Happy because everything worked better than good, because being a member of the organization has been one of the most &lt;span class="clickable" id="gratificante103"&gt;gratifying (and also exhausting :-)) experiences this last year. As the volunteering coordinator, I could not be prouder of all the volunteers. You simply did a great job and made things happen. Thanks to the core team for being such a great one, to all the volunteers, also to all of you who volunteered at the last minute, and to all of the attendees for attending and for their understanding when things did not work right out of the box.&lt;/span&gt;&lt;span class="clickable" id="gratificante103"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="clickable" id="gratificante103"&gt;Working together with the KDE and GNOME community was a fantastic experience where I got to know lots of interesting people who I hope I will keep in touch with. I will miss all the KDE guys next year at GUADEC!&lt;/span&gt;&lt;span class="clickable" id="gratificante103"&gt;&lt;/span&gt;&lt;span class="clickable" id="gratificante103"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="clickable" id="gratificante103"&gt;See you hopefully soon at any geeky conference!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-6290504336967108463?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/6290504336967108463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/08/desktop-summit-2011-happy-and-proud.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6290504336967108463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6290504336967108463'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/08/desktop-summit-2011-happy-and-proud.html' title='Desktop Summit 2011: happy and proud.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-3599365579893776074</id><published>2011-08-05T17:14:00.001+02:00</published><updated>2011-09-01T11:42:43.891+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QtCreator'/><category scheme='http://www.blogger.com/atom/ns#' term='autotools'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Autotools Project Manager, part 2: The Plugin.</title><content type='html'>During the last past weeks, as I already &lt;a href="http://psconboard.blogspot.com/2011/07/autotools-project-manager-part-1.html"&gt;announced&lt;/a&gt; and as part of my trainee program at &lt;a href="http://www.openismus.com/"&gt;Openismus GmbH&lt;/a&gt;, I have been working on  a plugin for autotools support to be used with Qt Creator. The project is still in an early state of development, but already offers some nice features and is ready for its first release.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-57pELiy3VWU/Tjv_2ZcpAXI/AAAAAAAAAMs/cQQc9a6tLI8/s1600/succes_building_and_running.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="266" src="http://1.bp.blogspot.com/-57pELiy3VWU/Tjv_2ZcpAXI/AAAAAAAAAMs/cQQc9a6tLI8/s400/succes_building_and_running.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-R_zX_PiRqYA/TjwAV8K77RI/AAAAAAAAAMw/77hU6sG5jFo/s1600/Configure_arguments.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="267" src="http://4.bp.blogspot.com/-R_zX_PiRqYA/TjwAV8K77RI/AAAAAAAAAMw/77hU6sG5jFo/s400/Configure_arguments.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;What can the plugin do? &lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Load an autotools project and work with it in QTC.&lt;/li&gt;&lt;li&gt;Syntax highlighting for Makefile.am files.&lt;/li&gt;&lt;li&gt;Automatic project tree update if the Makefile.am or configure.ac file is changed.&lt;/li&gt;&lt;li&gt;Configuration of build steps (autogen, autoreconf, make and configure).&lt;/li&gt;&lt;li&gt;Build and run an autotools project from within QTC.&lt;/li&gt;&lt;li&gt;Automatic code completion. &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Some ideas for the future:&lt;/b&gt; &lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Add syntax highlighting for the configure.ac file.&lt;/li&gt;&lt;li&gt;Detect whether autogen.sh runs configure, and allow the user to configure that, to avoid a second configure run.&lt;/li&gt;&lt;li&gt;Improve the parser. Autotools can generate several/different  types of binares, libraries or other kind of targets. The current  parser, checks for bin_PROGRAM binaries. If the output produces one  of them, the parsing will be successful, if there are more, the parsing  will not be successful. This should be changed to a more *Anjuta like*  Makefile.am parsing style, which takes into account the existence of  multiple outputs among other complex things. In the meantime, and as a  suggestion of the Qt Creator's developers, I am using a  ProjectExplorer::CustomExecutableRunConfiguration, which allows the user  to choose which executable he/she wants to run, in case there is any. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;b&gt;How to use the plugin:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Download the project from &lt;a href="https://gitorious.org/qtcreator-autotools-plugin/qtcreator-autotools-plugin/"&gt;gitorious&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Follow the &lt;i&gt;README&lt;/i&gt; file for installation instructions.&lt;/li&gt;&lt;li&gt;See that the plugin is recognized and loaded by Qt-Creator, by selecting &lt;i&gt;Help  -&amp;gt; About Plugins&lt;/i&gt; in QTC. The &lt;i&gt;AutotoolsProjectManager&lt;/i&gt; plugin should be listed  as part of the &lt;i&gt;Build System&lt;/i&gt; plugins.&lt;/li&gt;&lt;li&gt;Open an autotools project in Qt-Creator, using &lt;i&gt;File -&amp;gt; Open File or Project... &lt;/i&gt;In the prompted dialog-box, select the &lt;b&gt;Makefile.am&lt;/b&gt; from your project. This is the only way a user can use the autotools plugin. Thus, a Makefile.am must always exist before hand.&amp;nbsp;&lt;/li&gt;&lt;li&gt;The first time an autotools project is opened with Qt-Creator, a  dialog-box pops up and the user will be able to  select the build directory. Qt-Creator then puts a .user file in the  directory so it doesn't need to ask again. Only in-source building is  working right now.&lt;/li&gt;&lt;li&gt;After clicking on the &lt;i&gt;Finish&lt;/i&gt; button of the Autotools Wizard,  Qt-Creator should show the project's tree structure at the left side  hand. The root node should show the project name and all project files  should be listed and editable from there.&amp;nbsp;&lt;/li&gt;&lt;li&gt;At this point, building and running the application should work. This will execute autogen.sh or autoreconf, configure and  make. The first time, when running the application, a dialog will ask  you to choose the executable's location, then, QTC will remember it for the following times. Ideally, this will be changed in the future, to be done in a more automated way.&lt;/li&gt;&lt;li&gt;When selecting &lt;i&gt;Projects-&amp;gt;Build Settings&lt;/i&gt; from Qt-Creator on the left  side bar, notice the typical autotools build steps (autogen.sh/autoreconf,  configure, make). You may configure some parameters such as adding new  configure parameters or changing the build directory (though, as I mentiond before, only  in-source building is working at the moment).&lt;/li&gt;&lt;/ul&gt;As always, all comments and feedback is very welcome. Have fun!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-3599365579893776074?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/3599365579893776074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/08/autotools-project-manager-part-2-plugin.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3599365579893776074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3599365579893776074'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/08/autotools-project-manager-part-2-plugin.html' title='Autotools Project Manager, part 2: The Plugin.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-57pELiy3VWU/Tjv_2ZcpAXI/AAAAAAAAAMs/cQQc9a6tLI8/s72-c/succes_building_and_running.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-8313979685188369265</id><published>2011-07-28T12:27:00.001+02:00</published><updated>2011-07-28T12:36:14.221+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='QtCreator'/><category scheme='http://www.blogger.com/atom/ns#' term='autotools'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='plugin'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Autotools Project Manager, part 1: Understanding QtCreator's Project Explorer</title><content type='html'>It has already been more than one year since &lt;a href="http://ppenz.blogspot.com/"&gt;Peter Penz&lt;/a&gt; created a &lt;a href="http://ppenz.blogspot.com/2010/04/autotools-support-for-qt-creator.html"&gt;plugin for autotools support to be used with Qt Creator&lt;/a&gt;. In the meantime, Qt Creator developers have been busy, and having fun, rewriting several parts of the code, which, on the one hand, leads to nicer, improved interfaces, but on the other hand, to API breaks. So, it was time to "update" (redo) his work, and this is what I am currently working on.&lt;br /&gt;&lt;br /&gt;For a trainee with a year’s experience, this is a more than challenging task: no experience developing for Qt Creator or with plugins, nor much experience with autotools, no documentation at all... In the beginning, I did not know how to start, nor if I could actually get something done at all, but then, with the help of the wisdom and patience of Peter Penz, &lt;a href="http://amigadave.blogspot.com/"&gt;David King&lt;/a&gt; and some of the Qt Creator guys, &lt;a href="http://www.ohloh.net/accounts/t_hunger"&gt;Tobias Hunger&lt;/a&gt; and &lt;a href="http://daniel.molkentin.de/blog/"&gt;Daniel Molkentin&lt;/a&gt;, things started to develop.&lt;br /&gt;&lt;br /&gt;There is no documentation on how to develop a plugin for Qt Creator, so I had to spend a lot of time reading Qt Creator's code, in order to understand which bits I would need and how they were related. As I already said, this was very time consuming, so I have decided to write a series of posts, of which this is the first, to share what I learnt with you, and maybe save you some time in the future. As always, this is not meant to be a guide or tutorial; this is just what I did and how I understood it. I would be happy if this helps you deal with the huge monster that is Qt Creator, or even if I get some feedback on things which might be wrong :)).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Understanding some basics:&lt;/b&gt;&lt;br /&gt;Qt Creator is a plugin loader and all its functionality is implemented in plugins. A very basic Qt Creator plugin has three different parts:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;.pro file, which is the project file.&lt;/li&gt;&lt;li&gt;.pluginspec.in file, that provides some information about the plugin.&lt;/li&gt;&lt;li&gt;projectplugin files, with the implementation of the ExtensionSystem::IPlugin interface in a class.&lt;/li&gt;&lt;/ol&gt;Also, to give support for a new project type — in our case, the autotools project — we need to implement some interfaces in the &lt;b&gt;ProjectExplorer&lt;/b&gt; plugin, which is what I am going to focus on in this post.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The ProjectExplorer plugin&lt;/b&gt;&lt;br /&gt;The ProjectExplorer plugin is a set of classes and interfaces that make up the project management system in Qt Creator. Its architecture is detailed in the chart, and explained in the following lines:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-6WfdgYQnV44/TjE1618ho6I/AAAAAAAAAMo/qa9L2QYGTIk/s1600/ProjectExplorer_namespace.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="285" src="http://4.bp.blogspot.com/-6WfdgYQnV44/TjE1618ho6I/AAAAAAAAAMo/qa9L2QYGTIk/s320/ProjectExplorer_namespace.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The &lt;b&gt;Project&lt;/b&gt; (&lt;i&gt;ProjectExplorer::Project&lt;/i&gt;) is the whole project itself, and it is always associated with a &lt;i&gt;MIME type&lt;/i&gt; (specified in an .mimetypes.xml file), which defines the kind of file the project will be indentifed by, when the project is opened in Qt Creator.&lt;br /&gt;&lt;br /&gt;The &lt;i&gt;ProjectExplorer::Project&lt;/i&gt; class loads the project and embeds it into the QtCreator project tree. Every project supports one or more &lt;b&gt;Target&lt;/b&gt;s (&lt;i&gt;ProjectExplorer::Targe&lt;/i&gt;t), which are the target environments for which the developer wants to build the project (desktop, Symbian devices and&lt;br /&gt;MeeGo, among others).&lt;br /&gt;&lt;br /&gt;A Target can have several BuildConfigurations (&lt;i&gt;ProjectExplorer::BuildConfiguration&lt;/i&gt;), DeployConfigurations (&lt;i&gt;ProjectExplorer::DeployConfiguration&lt;/i&gt;) and RunConfigurations (&lt;i&gt;ProjectExplorer::RunConfigurations&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;A &lt;b&gt;BuildConfiguration&lt;/b&gt; (for example, release or debug) represents all that is needed to build the project for the target. Each BuildConfiguration currently has two &lt;b&gt;BuildStepList&lt;/b&gt;s (&lt;i&gt;ProjectExplorer::BuildStepList&lt;/i&gt;), which are a set of instructions to run. The first list is used to build, and the second one to clean up. The BuildStepLists contain &lt;b&gt;BuildStep&lt;/b&gt;s (&lt;i&gt;ProjectExplorer::BuildStep&lt;/i&gt;), which are the steps that need to be executed ("make", "make clean", etc.).&lt;br /&gt;&lt;br /&gt;A &lt;b&gt;DeployConfiguration&lt;/b&gt; contains a BuildStepList, and is used to deploy the aforementioned BuildConfiguration output into the right place for later execution by the RunConfiguration.&lt;br /&gt;&lt;br /&gt;A &lt;b&gt;RunConfiguration&lt;/b&gt; defines what needs to be run: usually the program that was built before. It could also be some set of unit tests, a script, some existing application which is used to test a library that was just built, etc.&lt;br /&gt;&lt;br /&gt;You can also get an overview of what a generic plugin should implement by looking at the &lt;b&gt;genericprojectmanager&lt;/b&gt; plugin example in the &lt;i&gt;qt-creator/src/plugins/genericprojectmanager&lt;/i&gt; directory.&lt;br /&gt;&lt;br /&gt;Have fun!&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-8313979685188369265?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/8313979685188369265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/07/autotools-project-manager-part-1.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8313979685188369265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8313979685188369265'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/07/autotools-project-manager-part-1.html' title='Autotools Project Manager, part 1: Understanding QtCreator&apos;s Project Explorer'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-6WfdgYQnV44/TjE1618ho6I/AAAAAAAAAMo/qa9L2QYGTIk/s72-c/ProjectExplorer_namespace.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-3857172110095975802</id><published>2011-07-06T23:21:00.000+02:00</published><updated>2011-07-06T23:21:06.469+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Desktop Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Remember, remember!</title><content type='html'>Just &lt;b&gt;4 weeks&lt;/b&gt; left for the &lt;a href="https://www.desktopsummit.org/"&gt;Desktop Summit&lt;/a&gt; in Berlin! Let's make it possible all together and &lt;a href="https://desktopsummit.org/news/call-for-volunteers"&gt;sign up NOW as a volunteer!&lt;/a&gt; Deadline is &lt;b&gt;July 18th&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZQMzbRD9rzw/ThTQqX674dI/AAAAAAAAAMY/cPxqZi_WgxI/s1600/DS11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ZQMzbRD9rzw/ThTQqX674dI/AAAAAAAAAMY/cPxqZi_WgxI/s1600/DS11.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-3857172110095975802?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/3857172110095975802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/07/remember-remember.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3857172110095975802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3857172110095975802'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/07/remember-remember.html' title='Remember, remember!'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZQMzbRD9rzw/ThTQqX674dI/AAAAAAAAAMY/cPxqZi_WgxI/s72-c/DS11.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-8581898119203354475</id><published>2011-06-23T16:55:00.001+02:00</published><updated>2011-07-06T23:19:22.707+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Desktop Summit'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Desktop Summit 2011 - Call for Volunteers</title><content type='html'>&lt;span class="author-p-125"&gt; &lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-chhZxMHo3Xc/TgNTnNOmC7I/AAAAAAAAAK0/qe9coVVuCVg/s1600/DS2011.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-chhZxMHo3Xc/TgNTnNOmC7I/AAAAAAAAAK0/qe9coVVuCVg/s1600/DS2011.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This is the final count down and we need your help!&lt;br /&gt;&lt;br /&gt;A community conference like Desktop Summit can only happen if you make it possible.&lt;span class="author-p-233"&gt; I&lt;/span&gt;&lt;span class="author-p-125"&gt;t doesn't matter where you are from, how old you are, whether you have ever &lt;/span&gt;&lt;span class="author-p-233"&gt;attended&lt;/span&gt;&lt;span class="author-p-125"&gt; a Free Software conference... YOU can contribute as a volunteer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have a look to the &lt;a href="https://www.desktopsummit.org/news/call-for-volunteers"&gt;official announcement&lt;/a&gt; now and &lt;a href="http://wiki.desktopsummit.org/Volunteers"&gt;join us&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-8581898119203354475?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/8581898119203354475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/06/desktop-summit-2011-call-for-volunteers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8581898119203354475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8581898119203354475'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/06/desktop-summit-2011-call-for-volunteers.html' title='Desktop Summit 2011 - Call for Volunteers'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-chhZxMHo3Xc/TgNTnNOmC7I/AAAAAAAAAK0/qe9coVVuCVg/s72-c/DS2011.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-6440310947520001236</id><published>2011-05-09T12:41:00.000+02:00</published><updated>2011-05-09T12:41:08.146+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whch'/><title type='text'>WHCH application icon!</title><content type='html'>WHCH has a proper application icon now. All thanks to &lt;a href="http://www.flickr.com/photos/kitty-kat/"&gt;Kat&lt;/a&gt; and her great work. Thank you for making it possible!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-E4bo8FNomjQ/TcfEODy1qHI/AAAAAAAAAKw/I5WdrJKbHO8/s1600/whch_watch.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-E4bo8FNomjQ/TcfEODy1qHI/AAAAAAAAAKw/I5WdrJKbHO8/s320/whch_watch.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-6440310947520001236?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/6440310947520001236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/05/whch-application-icon.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6440310947520001236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6440310947520001236'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/05/whch-application-icon.html' title='WHCH application icon!'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-E4bo8FNomjQ/TcfEODy1qHI/AAAAAAAAAKw/I5WdrJKbHO8/s72-c/whch_watch.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-7216568037446673902</id><published>2011-04-01T17:39:00.004+02:00</published><updated>2011-04-05T11:03:38.035+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whch'/><title type='text'>WHCH v-0.2 is out!</title><content type='html'>&lt;span style="font-size: small;"&gt;Working Hours Counter for Humans (&lt;a href="http://psconboard.blogspot.com/2011/01/my-qt-mini-project-whch.html"&gt;WHCH&lt;/a&gt;) is growing step by step and little by little. I released the 0.1 version in January and it was already time for a 0.2 release with some new features.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;What is new?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;I made WHCH a single instance application. Every time the  user tries to lunch a new instance, the window related to the current  primary running instance will be displayed.&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;I added a desktop file and an icon image, so now the application is available from the desktop's menu. Regarding to the icon image, I am&lt;/span&gt;&lt;span style="font-size: small;"&gt; using a test one for the moment, taken from the &lt;a href="http://tango.freedesktop.org/Tango_Desktop_Project"&gt;Tango Desktop Project&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IBVpu22IBY4/TZXDcezy02I/AAAAAAAAAKM/5A-75GXu7xM/s1600/desktop_menu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="204" src="http://3.bp.blogspot.com/-IBVpu22IBY4/TZXDcezy02I/AAAAAAAAAKM/5A-75GXu7xM/s320/desktop_menu.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NtTNV7V0dAs/TZXD9ZNANxI/AAAAAAAAAKQ/H-1HQxGAqt8/s1600/run_app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://1.bp.blogspot.com/-NtTNV7V0dAs/TZXD9ZNANxI/AAAAAAAAAKQ/H-1HQxGAqt8/s320/run_app.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MeDLWLvaTI4/TZXEFAUQ7MI/AAAAAAAAAKU/BGFvRIWaHpo/s1600/window_icon_detail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://2.bp.blogspot.com/-MeDLWLvaTI4/TZXEFAUQ7MI/AAAAAAAAAKU/BGFvRIWaHpo/s200/window_icon_detail.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;Now, each of the tasks available in the list of tasks, is followed by the client it is related to.&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Gr1sskif_tI/TZXELMabJjI/AAAAAAAAAKY/oIGWYfPH7lo/s1600/tasks_detail.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-Gr1sskif_tI/TZXELMabJjI/AAAAAAAAAKY/oIGWYfPH7lo/s320/tasks_detail.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;The start, end and duration time fields are exported into Mediawiki format in a more human-readable way and the total number of hours worked per week are calculated now too.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1XrV1KwZqTI/TZXEemuZ4OI/AAAAAAAAAKc/fCD_xRar7Sc/s1600/mediawiki.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://4.bp.blogspot.com/-1XrV1KwZqTI/TZXEemuZ4OI/AAAAAAAAAKc/fCD_xRar7Sc/s320/mediawiki.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;WHCH is now visible in and accessible from the notification area. If the user closes the window, the application will keep running in the system tray. When hovering the mouse over the tray's icon, a tooltip will display the time that has been spent on the task the user is currently working on.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7ewMzFLJyHY/TZXFgOrsO-I/AAAAAAAAAKo/NNarIbrjQm4/s1600/systraymessage.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-7ewMzFLJyHY/TZXFgOrsO-I/AAAAAAAAAKo/NNarIbrjQm4/s320/systraymessage.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GD-hQeqFLHM/TZXFElRQ_QI/AAAAAAAAAKg/N5EIFMJh0us/s1600/tooltip.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/-GD-hQeqFLHM/TZXFElRQ_QI/AAAAAAAAAKg/N5EIFMJh0us/s320/tooltip.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;What's coming next?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;For the next release, I'm among other features, working on creating a 'History View'. As a consequence of this task I will need to rearrange some code&lt;/span&gt;&lt;span style="font-size: small;"&gt; and that is going to be a very interesting, and probably long, learning experience. Let's see what comes out of it!&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;If you are interested, you can find and follow the project on &lt;a href="https://github.com/Patriciasc/WHCH"&gt;GitHub&lt;/a&gt; or download the &lt;a href="https://github.com/downloads/Patriciasc/WHCH/whch-0.2.tar.gz"&gt;tar.gz&lt;/a&gt;.&amp;nbsp; As always,&amp;nbsp; all comments are welcome, as are merge requests.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: inherit; font-size: small;"&gt;Thanks for reading!&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Update:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;I found and fixed a bug in WHCH regarding to the time counting displayed in the main view, and created therefore a &lt;a href="https://github.com/downloads/Patriciasc/WHCH/whch-0.2.1.tar.gz"&gt;tarball&lt;/a&gt; release for a new &lt;a href="https://github.com/Patriciasc/WHCH/tree/v0.2.1"&gt;0.2.1 version&lt;/a&gt; too.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-7216568037446673902?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/7216568037446673902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/04/whch-v-02-is-out.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7216568037446673902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7216568037446673902'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/04/whch-v-02-is-out.html' title='WHCH v-0.2 is out!'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-IBVpu22IBY4/TZXDcezy02I/AAAAAAAAAKM/5A-75GXu7xM/s72-c/desktop_menu.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-1122539457191000866</id><published>2011-03-30T23:04:00.000+02:00</published><updated>2011-03-30T23:04:33.705+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Interview'/><category scheme='http://www.blogger.com/atom/ns#' term='GTK+'/><category scheme='http://www.blogger.com/atom/ns#' term='Cheese'/><title type='text'>Muktware.com interview.</title><content type='html'>As I already wrote in my &lt;a href="http://psconboard.blogspot.com/2011/03/gapplication-in-cheese.html"&gt;last post&lt;/a&gt; and as part of my trainee program, I have spent the last few weeks porting &lt;i&gt;Cheese&lt;/i&gt; to &lt;i&gt;GTK+3&lt;/i&gt;. In creating the new Cheese version, I collaborated, among others, with two other women developers: &lt;a href="http://blog.fujii.eti.br/"&gt;Luciana&lt;/a&gt;, who was responsible for the camerabin port and gobject introspection support, and &lt;a href="http://programmermusings.blogspot.com/"&gt;Laura&lt;/a&gt;, who provided &lt;i&gt;Cheese&lt;/i&gt; with SVG overlays support. It is already known that there are not many women involved in the development world yet, so seeing one of them might be considered kind of remarkable. Can you imagine the surprise when you find out that three of them are working in the same project? I think those were the thoughts that came across Swapnil Bhartiya mind when he decided to make us an &lt;a href="http://www.muktware.com/news/30/2011/909/foss-development-my-full-time-job-patricia-santana-cruz"&gt;interview&lt;/a&gt; for &lt;a href="http://muktware.com/"&gt;Muktware.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-1122539457191000866?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/1122539457191000866/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/03/muktwarecom-interview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1122539457191000866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1122539457191000866'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/03/muktwarecom-interview.html' title='Muktware.com interview.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-1119661683959573343</id><published>2011-03-24T14:07:00.006+01:00</published><updated>2011-03-30T23:06:19.313+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTK+'/><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><title type='text'>GApplication in Cheese.</title><content type='html'>I have been working for the last few weeks on porting &lt;i&gt;Cheese&lt;/i&gt; to &lt;i&gt;GTK+3&lt;/i&gt;. I found some challenges along the way, and migrating from &lt;i&gt;LibUnique&lt;/i&gt; to &lt;i&gt;GApplication&lt;/i&gt; was definitely one of them, so I thought that this might deserve some special attention. New and more detailed documentation is now available, but I created a small flow chart just to have an overview of how &lt;i&gt;GApplication&lt;/i&gt; works within a real application which is familiar to us.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://lh6.googleusercontent.com/-TeN4J_04c9c/TYtBRwFrpyI/AAAAAAAAAKI/2Dkbb1a8Dv0/s1600/output.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh6.googleusercontent.com/-TeN4J_04c9c/TYtBRwFrpyI/AAAAAAAAAKI/2Dkbb1a8Dv0/s640/output.png" width="482" /&gt;&lt;/a&gt;&lt;span style="font-size: xx-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Created using &lt;a href="http://www.graphviz.org/"&gt;Graphviz&lt;/a&gt; (awesome tool!).&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;First of all, I want to make it clear that this does not meant to be a guide or tutorial, it is just what I did and understood. It worked and I am happy to share it with you and I will be happier if it helps you to deal with &lt;i&gt;GApplication&lt;/i&gt; in the future or even if I get some feedback on things which might be wrong :)).&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What problems did I face first?&lt;/b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;i&gt;GApplication&lt;/i&gt; is new, the documentation was not as detailed as it is nowadays and it was the first time that I had ever used it. I never worked with &lt;i&gt;LibUnique&lt;/i&gt; before either, and the terms &lt;i&gt;primary instance&lt;/i&gt;, &lt;i&gt;remote instance&lt;/i&gt; and &lt;i&gt;local instance&lt;/i&gt; were new to me. So, what was that?&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;With some reading and bothering &lt;a href="http://amigadave.blogspot.com/"&gt;David King&lt;/a&gt; for a while, I discovered how everything worked together and what those terms meant. If you are as confused as I was, this might help you:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Primary instance:&lt;/b&gt; The very first instance of the program, that means, the first instance you run.&lt;i&gt; Example&lt;/i&gt;: Run firefox for the first time and there you have a primary instance.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Local instance:&lt;/b&gt; The very last instance you run from a program, this is the last one you started working with&lt;i&gt;. Example&lt;/i&gt;: In our example, the firefox instance you started, would be at the same time primary and local. If you start a new firefox instance, then the first one would still be the primary, and the second one would be the local.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Remote instance:&lt;/b&gt; Every instance of the same application that is not the primary one.&lt;i&gt; Example&lt;/i&gt;: In our example, the second instance of firefox that you run would be the remote one.&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;Cheese&lt;/i&gt; works as a single instance, and with a single window for that instance. Every time &lt;i&gt;Cheese&lt;/i&gt; is called from a terminal with command line arguments, those are handled&amp;nbsp; locally by the newly created instance, and here, &lt;i&gt;GApplication::local_command_line()&lt;/i&gt; plays the main role. Every time g_application_run() is called, &lt;i&gt;GApplication::local_command_line() &lt;/i&gt;is invoked. This function always runs in the local instance, which is the last instance you run.&lt;br /&gt;&lt;br /&gt;By default, &lt;i&gt;GApplication::local_command_line()&lt;/i&gt; tries to handle the command line in the primary instance, but since I wanted to be faithful to the original implementation, the purpose was to handle command line arguments locally, and for that, I needed to override the &lt;i&gt;GApplication::local_command_line()&lt;/i&gt; function to make it return &lt;i&gt;TRUE,&lt;/i&gt; and this is in essence what the diagram tries to explain.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;This is how the main function looks like. (Cheese.Main inherits from &lt;i&gt;GtkApplication&lt;/i&gt; which inherits from &lt;i&gt;GApplication&lt;/i&gt;):&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;public int main (string[] args)&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;{&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... &lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; Cheese.Main app;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; app = new Cheese.Main ("org.gnome.Cheese",ApplicationFlags.FLAGS_NONE);&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; app.activate.connect (app.on_app_activate);&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&amp;nbsp; int status =&lt;b&gt;&lt;span style="color: #cc0000;"&gt; app.run (args)&lt;/span&gt;&lt;/b&gt;;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif; font-size: small;"&gt;&amp;nbsp;&amp;nbsp; return status;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt;}&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I hope this is helpful, in some way, to somebody. As you can see, the diagram starts on the&lt;i&gt; &lt;b&gt;&lt;span style="color: #cc0000;"&gt;app.run(args)&lt;/span&gt;&lt;/b&gt;&lt;/i&gt; call. You can check out the source code on &lt;a href="http://git.gnome.org/browse/cheese/tree/src/cheese-main.vala"&gt;git.gnome.org&lt;/a&gt;, and for a more colourful version, in my &lt;a href="https://github.com/Patriciasc/Cheese-GTK-3-Port/blob/gtk3/src/cheese-main.vala"&gt;GitHub repository&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I wanted to take the opportunity to thank &lt;a href="http://amigadave.blogspot.com/"&gt;David King&lt;/a&gt; for his infinite patience and help during my work migrating &lt;i&gt;Cheese&lt;/i&gt; to &lt;i&gt;GTK+3&lt;/i&gt;, &lt;a href="http://blogs.gnome.org/juergbi/"&gt;Jürg Billeter&lt;/a&gt; for being so responsive and helpful in every single issue I had with &lt;i&gt;Vala&lt;/i&gt;, and &lt;a href="http://blogs.gnome.org/carlosg/"&gt;Carlos Garnacho&lt;/a&gt; for helping me out with some &lt;i&gt;GtkStyleContext&lt;/i&gt; problems.&lt;br /&gt;&lt;br /&gt;Thanks to all of them for the help and to you for reading!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-1119661683959573343?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/1119661683959573343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/03/gapplication-in-cheese.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1119661683959573343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1119661683959573343'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/03/gapplication-in-cheese.html' title='GApplication in Cheese.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/-TeN4J_04c9c/TYtBRwFrpyI/AAAAAAAAAKI/2Dkbb1a8Dv0/s72-c/output.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-3605526294147322001</id><published>2011-03-14T21:42:00.001+01:00</published><updated>2011-03-17T12:13:38.197+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GNOME'/><title type='text'>Knock! Knock! on Planet GNOME.</title><content type='html'>Hello, hola, ei je, hallo, shalom, kon-nichiwa, merhaba Planet!&lt;br /&gt;&lt;br /&gt;I was very happy being part of this community, but now I am even happier having the chance to share my little knowledge and experience with all of you.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So, who are you?&lt;/b&gt; Well, as you might have figured out, I am the "new one". My name is&lt;b&gt; &lt;/b&gt;Patricia Santana Cruz&amp;nbsp; (patriciasc) and I come from the beautiful island of Gran Canaria, Spain, where I studied Computer Engineering at the University. After participating in a seven month Erasmus program in Germany, I decided to continue living and working in the country. And now, I am currently working as a trainee software developer in Berlin, at &lt;a href="http://www.openismus.com/"&gt;Openismus GmbH&lt;/a&gt;.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How have you contributed?&lt;/b&gt; All started at University, where I had the chance to do an internship as a Free Software Evangelist at our&lt;a href="http://www.softwarelibre.ulpgc.es/"&gt; Free Software Office&lt;/a&gt; for one year. After that, and as a part of my trainee program, I had the chance to work on some small FOSS projects. My last contribution and the one I have been working on for the last weeks, was porting &lt;a href="http://projects.gnome.org/cheese/"&gt;Cheese&lt;/a&gt; to GTK+3.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Something more to say?&lt;/b&gt; A lot! But I do not want to bore you, so if you want to know something more, do not hesitate to ask :). I will try to keep you informed in the meantime.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-3605526294147322001?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/3605526294147322001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/03/knock-knock-on-planet-gnome.html#comment-form' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3605526294147322001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3605526294147322001'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/03/knock-knock-on-planet-gnome.html' title='Knock! Knock! on Planet GNOME.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-7144622732538265357</id><published>2011-01-21T16:06:00.001+01:00</published><updated>2011-04-04T14:56:04.380+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='whch'/><title type='text'>My Qt mini project: WHCH</title><content type='html'>I have spent the last few weeks working on a new Qt mini project, &lt;a href="https://github.com/Patriciasc/WHCH"&gt;WHCH&lt;/a&gt; ("Working Hours Counter for Humans"), an application&amp;nbsp; for tracking the time spent on individual projects.&lt;br /&gt;&lt;br /&gt;For this project I have used &lt;a href="http://en.wikipedia.org/wiki/Qt_Creator"&gt;QtCreator&lt;/a&gt;  2.0.1 (with integrated QtDesigner), which has been a pleasant  experience in almost all aspects, although there are two things I was not entirely happy with:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Its flexibility concerning to layouts in the design process. Murray wrote a &lt;a href="http://www.murrayc.com/blog/permalink/2010/11/10/non-automatic-layout-is-useless-qt-designer-has-bad-defaults/"&gt;good resume&lt;/a&gt; about this with some screen-shot examples.&lt;/li&gt;&lt;li&gt;Lack of in-depth documentation, in some cases. Although this was counterbalanced by the number of examples available.&lt;/li&gt;&lt;/ol&gt;I did not use &lt;a href="http://en.wikipedia.org/wiki/GNU_build_system"&gt;autotools&lt;/a&gt; this time, but &lt;a href="http://en.wikipedia.org/wiki/Qmake"&gt;qmake&lt;/a&gt;,  which was not such a frightening experience as I thought it would be. Again, the  problem at this point was the documentation. At least there are  some extra sources &lt;a href="http://paulf.free.fr/undocumented_qmake.html"&gt;here&lt;/a&gt; and &lt;a href="http://www.qtcentre.org/wiki/index.php?title=Undocumented_qmake"&gt;there&lt;/a&gt; to help with this! &lt;br /&gt;&lt;br /&gt;&lt;b&gt;What can you do with WHCH?. &lt;/b&gt;&lt;br /&gt;- Keep track of the time spent on a task.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_a2S3FXBADk4/TTmZtHXOKEI/AAAAAAAAAJo/51wVsa2qTZg/s1600/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://3.bp.blogspot.com/_a2S3FXBADk4/TTmZtHXOKEI/AAAAAAAAAJo/51wVsa2qTZg/s400/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;- Add new clients.&lt;br /&gt;- Add new tasks related to clients.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_a2S3FXBADk4/TTmW69mk3LI/AAAAAAAAAJk/5FmdPYYqJns/s1600/Screenshot-Clients+and+Tasks.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://3.bp.blogspot.com/_a2S3FXBADk4/TTmW69mk3LI/AAAAAAAAAJk/5FmdPYYqJns/s200/Screenshot-Clients+and+Tasks.png" width="193" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;- Add a detailed description for a task.&lt;br /&gt;- Modify start/end time and description of a task.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_a2S3FXBADk4/TTmaJECGjLI/AAAAAAAAAJs/wyPrDjBfCSQ/s1600/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/_a2S3FXBADk4/TTmaJECGjLI/AAAAAAAAAJs/wyPrDjBfCSQ/s400/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;- Export a list of tasks into Wikimedia format&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_a2S3FXBADk4/TTmbBwT-l2I/AAAAAAAAAJw/i6hQC4G0wTs/s1600/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;img border="0" height="252" src="http://1.bp.blogspot.com/_a2S3FXBADk4/TTmbBwT-l2I/AAAAAAAAAJw/i6hQC4G0wTs/s400/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529-2.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;obtaining the following result for the example in the screenshot:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_a2S3FXBADk4/TTmdclfs8MI/AAAAAAAAAJ0/7U2FZNF8zls/s1600/Screenshot-my_hours+%2528%257E-Desktop%2529+-+gedit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/_a2S3FXBADk4/TTmdclfs8MI/AAAAAAAAAJ0/7U2FZNF8zls/s400/Screenshot-my_hours+%2528%257E-Desktop%2529+-+gedit.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There  is still&amp;nbsp; work to be done, as well as new features to be applied, and I  already created a list of &lt;a href="https://github.com/Patriciasc/WHCH/wiki/FIXMEs"&gt;FIXMEs&lt;/a&gt; and &lt;a href="https://github.com/Patriciasc/WHCH/wiki/TODOs"&gt;TODOs&lt;/a&gt; to start with. Check it out  and submit your new ideas if you fancy (-;.&lt;br /&gt;&lt;br /&gt;You can find and follow the project on &lt;a href="https://github.com/Patriciasc/WHCH"&gt;GitHub&lt;/a&gt; or download the &lt;a href="https://github.com/downloads/Patriciasc/WHCH/whch0.1.tar.gz"&gt;tar.gz&lt;/a&gt;.&amp;nbsp;  All comments are welcome, as are merge requests.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-7144622732538265357?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/7144622732538265357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2011/01/my-qt-mini-project-whch.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7144622732538265357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7144622732538265357'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2011/01/my-qt-mini-project-whch.html' title='My Qt mini project: WHCH'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a2S3FXBADk4/TTmZtHXOKEI/AAAAAAAAAJo/51wVsa2qTZg/s72-c/Screenshot-WHCH+%2528Working+Hours+Counter+for+Humans%2529.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-1522335369803625436</id><published>2010-12-07T10:51:00.000+01:00</published><updated>2010-12-07T10:51:28.827+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Hackfest'/><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><title type='text'>GNOME Development Documentation and Tools Hackfest 2010.</title><content type='html'>I spent the last 4 days attending the &lt;a href="http://live.gnome.org/Hackfests/DevDocTools"&gt;Gnome Development Documentation and Tools Hackfest&lt;/a&gt;, which was held at &lt;a href="http://www.openismus.com/"&gt;Openismus&lt;/a&gt; offices in Berlin. The venue was just the most convenient for the event, since with such weather (-15ºC one of the days), the days turned to be very productive... no one wanted to spend much time outside!. &lt;br /&gt;&lt;br /&gt;Almost all the attendees arrived during Wednesday evening and to compensate their (most of them) long journeys, we had a great dinner at the &lt;a href="http://www.massai-berlin.de/en/index.html"&gt;Massai's African restaurant&lt;/a&gt; (courtesy of Openismus). Hard work started the day after.&lt;br /&gt;&lt;br /&gt;We spent almost one day trying to make an agenda with the topics we would like to cover during the hackfest and finally focused on two main themes, the "GNOME developer platform" and the "developer stories" or put another way, "who is going to use GNOME and what for?".  After this, we did some brainstorming on the way we wanted to make this possible and some ideas came out.&lt;br /&gt;&lt;br /&gt;First, we realized after some discussion, that most of the people find it difficult to know how to get started working on GNOME, so one of the agreement points from the very beginning, was that a platform overview needs to be done. Here, questions such as 'where is 'x'?' and 'what is 'x' for?', among others, would be answered. We also want to do this in a way that is attractive for getting developers involved and convince managers that GNOME makes the difference. After some more discussion and work, the idea took form and now you can already see the &lt;a href="http://git.gnome.org/browse/web-devel-2/"&gt;results&lt;/a&gt; in the form of a &lt;a href="http://developer.gnome.org/"&gt;screenshot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;An other idea that we decided to put into practice, was the initiative of writing&amp;nbsp; ten-minute introduction tutorials for various GNOME technologies (first in five target languages: C, C++, Python, Vala and Javascript) in order to show what kind of easy and amazing things one is able to do in a lunch break time period. I was involved in this team and my task was to create a very small simple &lt;a href="http://git.gnome.org/browse/gnome-devel-docs/tree/demos/C/image-viewer/image_viewer.c"&gt;image viewer GTK+ application in the C language&lt;/a&gt; (the tutorial is coming soon). For writing the documentation, we decided to use &lt;a href="http://projectmallard.org/"&gt;Mallard&lt;/a&gt;, so &lt;a href="http://blogs.gnome.org/shaunm/"&gt;Schaun&lt;/a&gt; gave us a small and very useful introduction on it. You can see all the mini applications and some of the tutorials in the &lt;a href="http://git.gnome.org/browse/gnome-devel-docs/tree/demos/C"&gt;GNOME git repository&lt;/a&gt;. Please note that they haven’t been fully reviewed yet.&lt;br /&gt;&lt;br /&gt;The hackfest went very nicely and the desire of being collaborative and helpful was present during the whole event. I am happy I was there and had the chance to meet all these people and be useful in a way. Thanks to everybody for comming, as well as to those who read in the &lt;a href="http://planet.gnome.org/"&gt;planet GNOME&lt;/a&gt; that we were meeting, and just appeared by own iniciative in the office and joined us, like Konstantine or &lt;a href="http://inventedhere.de/"&gt;Clemens&lt;/a&gt;, which might join us at the &lt;a href="http://desktopsummit.org/"&gt;Desktop Summit 2011&lt;/a&gt; with some cool design thinking workshop again!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-1522335369803625436?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/1522335369803625436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/12/gnome-development-documentation-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1522335369803625436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/1522335369803625436'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/12/gnome-development-documentation-and.html' title='GNOME Development Documentation and Tools Hackfest 2010.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-2967126009728201056</id><published>2010-12-01T14:11:00.000+01:00</published><updated>2010-12-01T14:11:05.033+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MeeGo'/><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Dublin'/><title type='text'>MeeGo and The MeeGo Conference 2010.</title><content type='html'>I was at the MeeGo Conference  in Dublin. We were very busy from the first minute we arrived there until the last day we came back, and it was pretty productive.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_a2S3FXBADk4/TOwGo5KikJI/AAAAAAAAAJU/7hq6v2Z3R2E/s1600/meego-noki.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="172" src="http://3.bp.blogspot.com/_a2S3FXBADk4/TOwGo5KikJI/AAAAAAAAAJU/7hq6v2Z3R2E/s400/meego-noki.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;But, what is MeeGo?&lt;/b&gt;&lt;br /&gt;For those of you who do not know about MeeGo (taken from the &lt;a href="http://meego.com/"&gt;Meego project Website&lt;/a&gt;)&lt;b&gt;&lt;i&gt;:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;"MeeGo is an open source, Linux project which brings together the Moblin  project, headed up by Intel, and Maemo, by Nokia, into a single open  source activity.  MeeGo integrates the experience and skills of two  significant development ecosystems, versed in communications and  computing technologies. The MeeGo project believes these two pillars  form the technical foundations for next generation platforms and usages  in the mobile and device platforms space."&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;What was the conference about?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Sunday:&lt;/b&gt;&lt;br /&gt;We arrived at the airport and went straight to the hotel, where we left all our stuff. Then, we decided to go for a walk to the center and try some Irish specialities. The center of Dublin is quite lovely! &lt;br /&gt;&lt;br /&gt;Back to the hotel, we decided to go to the &lt;a href="http://www.avivastadium.ie/"&gt;Aviva Stadium&lt;/a&gt;, where the conference was taking place (yes, in such an unusual and great location). There was a lot of work to be done before everything was prepared for the next day, so we helped a bit on this before we all went to bed.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Monday:&lt;/b&gt;&lt;br /&gt;We started the day having a great Irish breakfast all together at the hotel and then went straight to the Stadium.&lt;br /&gt;&lt;br /&gt;The whole morning was busy with Keynotes where &lt;a href="http://www.amd.com/"&gt;AMD&lt;/a&gt; announced that it was joining the &lt;a href="http://www.linuxfoundation.org/"&gt;The Linux Foundation’s&lt;/a&gt; &lt;a href="http://meego.com/"&gt;MeeGo&lt;/a&gt; project, and Intel announced that all Meego Conference's attendees would get a&lt;a href="http://shop.lenovo.com/us/notebooks/ideapad/s-series/s10-3t"&gt; Lenovo s10-3t tablet netbook&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In the early evening I attended some different talks. I started with "Meego Infrastructure", where  &lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; (&lt;a href="http://www.opensuse.org/"&gt;openSUSE&lt;/a&gt; build service) was introduced and followed with "Meego on BeagleBoard", which was interesting but I missed some practical or "in use" example. Afterwards, I went to some other talks about learning from past mistakes and designing Meego apps (which were not really focused on Meego).&lt;br /&gt;&lt;br /&gt;In the evening, after a nice reception organized by Novell and doing some networking, the whole Openismus' crew went out together for dinner.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tuesday:&lt;/b&gt;&lt;br /&gt;We woke up very early to avoid the crowd and got tickets for the football match (Ireland vs. Norway) on Wednesday evening (courtesy of the organisation as well). We got those very easily but for the &lt;a href="http://shop.lenovo.com/us/notebooks/ideapad/s-series/s10-3t"&gt;netbooks&lt;/a&gt; we had to stay in the queue a little bit longer. Once we got them , the organization gave us a pendrive with Meego OS on it, for a "do it yourself" installation·. I must admit, that I was kind of surprised when I turned the netbook on and saw that Windows 7 was installed on it... I would have expected some Open Source OS at least.&lt;br /&gt;&lt;br /&gt;Some hours later, I got to know a Nokia representative who I talked with, about the new Qt mini project I am currently working on. Showing interest on it, he gave me an &lt;a href="http://maemo.nokia.com/n900/"&gt;N900&lt;/a&gt; in order to test on the device. What a day of presents!&lt;br /&gt;&lt;br /&gt;I spent the rest of the day attending different talks. The ones I especially enjoyed were those based on designing apps for Meego devices and the ones focused on &lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt;, for instance, "Rolling your first package in the openSUSE Build Service (&lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt;)".&lt;br /&gt;&lt;br /&gt;To finish&amp;nbsp; the day, a party at the &lt;a href="http://www.guinness-storehouse.com/en/Index.aspx"&gt;Guinness Storehouse&lt;/a&gt; was organized for the evening.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wednesday:&lt;/b&gt;&lt;br /&gt;This was an unconferenced day, so anybody who wanted to give a talk, could book his/her slot on a public board and just present it. The most interesting talk of the day was definitely &lt;a href="http://www.documentfoundation.org/download/"&gt;LibreOffice&lt;/a&gt;'s talk.&lt;br /&gt;&lt;br /&gt;We spent the rest of the evening in the football match, well, I spent just the first part of the game watching it. Since I am not a football fan, I decided to spend the rest of the time inside chatting with some people. Norway won!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What did I learn and what are my impressions?&lt;/b&gt;&lt;br /&gt;Although this is a very young project and there is still much work to be done, I had a good impression about the way it is developing and the whole infrastructure and organization behind it.&lt;br /&gt;&lt;br /&gt;From the conference, I can say that there is a positive feeling and collaboratively-working community surrounding this new born and helping to make it grow strong. It fed more than enough attendees's curiosity concerning &lt;a href="http://qt.nokia.com/products/qt-quick/"&gt;Qt Quick&lt;/a&gt; and &lt;a href="https://build.opensuse.org/"&gt;OBS&lt;/a&gt; as well, the two star technologies in this project. Since MeeGo targets a wide variety of devices, they need very flexible  developing technologies supporting them, and therefore,&amp;nbsp; a large number of talks were  focused on this two subjects.&lt;br /&gt;&lt;br /&gt;I am very optimistic about this. Let's stay with our eyes wide open observing and contributing to make this baby grow up healthy!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Interesting links:&lt;/b&gt;&lt;br /&gt;MeeGo Conference &lt;a href="http://conference2010.meego.com/program/session-videos"&gt;session videos&lt;/a&gt;.&lt;br /&gt;&lt;a href="http://wiki.meego.com/MeeGo_Conference_Spring_2011"&gt;MeeGo Conference 2011&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-2967126009728201056?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/2967126009728201056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/12/meego-and-meego-conference-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2967126009728201056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2967126009728201056'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/12/meego-and-meego-conference-2010.html' title='MeeGo and The MeeGo Conference 2010.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a2S3FXBADk4/TOwGo5KikJI/AAAAAAAAAJU/7hq6v2Z3R2E/s72-c/meego-noki.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-2941433182482383662</id><published>2010-11-08T15:01:00.000+01:00</published><updated>2010-11-08T15:01:04.075+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GHangtuxmm'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='gtkmm'/><title type='text'>GHangtuxmm.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_a2S3FXBADk4/TNfv8BVC-gI/AAAAAAAAAJQ/EOlKU3YIEZk/s1600/Ghangtuxmm.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_a2S3FXBADk4/TNfv8BVC-gI/AAAAAAAAAJQ/EOlKU3YIEZk/s400/Ghangtuxmm.jpg" width="227" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;As I wrote in one of my &lt;a href="http://psconboard.blogspot.com/2010/09/moving-on-to-gtkmm.html"&gt;previous&lt;/a&gt; posts, I have been working on the&amp;nbsp; conversion of &lt;a href="http://psconboard.blogspot.com/2010/07/ghangtux-10.html"&gt;GHangtux&lt;/a&gt; to GHangtuxmm, or in other words, on the conversion from C/GTK+ to C++/gtkmm.&lt;br /&gt;&lt;br /&gt;For those of you who do not know about gtkmm (taken from the &lt;a href="http://www.gtkmm.org/en/"&gt;gtkmm project website&lt;/a&gt;):&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;strong&gt;"gtkmm&lt;/strong&gt; is the official C++ interface for the popular GUI library    &lt;a class="ulink" href="http://www.gtk.org/" target="_top"&gt;GTK+&lt;/a&gt;. Highlights include    typesafe callbacks, and a comprehensive set of widgets that are    easily extensible via inheritance. You can create user interfaces    either in code or with the &lt;a class="ulink" href="http://glade.gnome.org/" target="_top"&gt;Glade User Interface designer&lt;/a&gt;, using Gtk::Builder. There's    &lt;a class="ulink" href="http://www.gtkmm.org/en/documentation.shtml" target="_top"&gt;extensive documentation&lt;/a&gt;,    including API reference and a tutorial.&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;strong&gt;gtkmm&lt;/strong&gt; is free software distributed under the GNU Library General     Public License (&lt;a class="ulink" href="http://www.gtkmm.org/en/license.shtml" target="_top"&gt;LGPL&lt;/a&gt;).&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="highlight"&gt;                                       &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;&lt;strong&gt;gtkmm&lt;/strong&gt; follows the official &lt;a class="ulink" href="http://www.gnome.org/start/unstable/" target="_top"&gt; GNOME Platform Bindings release schedule&lt;/a&gt;. This guarantees    API/ABI-stability and new releases on a predictable schedule,    delivering C++ API for the underlying GTK+ and GNOME APIs as soon as possible."&lt;/i&gt;&lt;/span&gt; (from &lt;a href="http://www.gtkmm.org/en/"&gt;gtkmm project's website&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;This has been fun again. Working on the project made me realize how laborious it can be to:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - learn C++. What a monster!. This is all about experience, so my hope is that one day I will be the monster here, the C++ monster ;-).&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - convert an app that you have already developed into another language. The appropriate word here would actually be "rewrite" and not "convert", since you have to consider it as an entirely new project. Forget about what you did and focus on the new structure and libraries. This is a new project!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; - have a nice history in your repository... This takes practice, practice and more practice.&lt;br /&gt;&lt;br /&gt;I am happy with the results so far although improvements are still being made. You can find and follow the project on &lt;a href="https://github.com/Patriciasc/GHangtuxmm"&gt;GitHub&lt;/a&gt; where all comments and merge requests are welcome. Do not hesitate to do this.&lt;br /&gt;&lt;br /&gt;Thanks for reading!&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/5339134701253072385-2941433182482383662?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/2941433182482383662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/11/ghangtuxmm.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2941433182482383662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2941433182482383662'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/11/ghangtuxmm.html' title='GHangtuxmm.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_a2S3FXBADk4/TNfv8BVC-gI/AAAAAAAAAJQ/EOlKU3YIEZk/s72-c/Ghangtuxmm.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5733884966113579525</id><published>2010-10-18T21:52:00.003+02:00</published><updated>2010-10-19T10:14:01.591+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Munich'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Back from "Qt Developer Days 2010".</title><content type='html'>As I said in my previous post, I spent last week in Munich attending the &lt;a href="http://qt.nokia.com/qtdevdays2010/"&gt;"Qt Developer Days"&lt;/a&gt; and it was pretty interesting.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Monday&lt;/b&gt;:&lt;br /&gt;Was focused on training, so as newbie in the Qt world that I am, I attended the Essential's track which gave me an overview on the topic and woke up my interest in the language even more. I just found &lt;a href="http://en.wikipedia.org/wiki/Qt_Creator"&gt;Qt Creator&lt;/a&gt; a fascinating tool together with the integration of Qt Designer. Qt Assistant and its brilliant examples is not less in this family.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tuesday and Wednesday&lt;/b&gt;:&lt;br /&gt;I was able to attend the technical track. From all the talks, the ones that definitely captivated my attention, were those based on &lt;a href="http://en.wikipedia.org/wiki/Qt_Quick"&gt;Qt Quick&lt;/a&gt;. Qt Quick (Qt User Interface Creation Kit) is a technology for creating UI's in a very fast way, using the declarative language &lt;a href="http://en.wikipedia.org/wiki/QML"&gt;QML&lt;/a&gt;, which allows the developer the usage of Javascript too. It is very useful for creating prototypes specially, although Mobile apps, and small desktop ones are a goal of this technology too. I am not sure if complex desktop applications are, but let's keep our eyes wide open...&lt;br /&gt;&lt;br /&gt;Not all was learning and working. We managed to enjoy some food, beer and music from the area at &lt;a href="http://www.bayerischer-donisl.de/"&gt;Donisl's&lt;/a&gt; and on Wednesday evening, we managed to meet &lt;a href="http://www.murrayc.com/"&gt;Murray&lt;/a&gt; for dinner and have a look to the Munich offices. Very nice!!&lt;br /&gt;&lt;br /&gt;This week I will start my new mini-project on Qt and post about it very soon.&lt;br /&gt;&lt;br /&gt;Thanks for reading!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5733884966113579525?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5733884966113579525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/10/back-from-qt-developer-days-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5733884966113579525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5733884966113579525'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/10/back-from-qt-developer-days-2010.html' title='Back from &quot;Qt Developer Days 2010&quot;.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-2200608161421410308</id><published>2010-10-06T17:11:00.000+02:00</published><updated>2010-10-06T17:11:41.353+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Munich'/><category scheme='http://www.blogger.com/atom/ns#' term='Qt'/><title type='text'>Qt Developer Days 2010.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_a2S3FXBADk4/TKyRC33Y0KI/AAAAAAAAAJM/CQtHTaYau68/s1600/image_preview.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_a2S3FXBADk4/TKyRC33Y0KI/AAAAAAAAAJM/CQtHTaYau68/s1600/image_preview.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Next week I will be in Munich for the "&lt;a href="http://qt.nokia.com/about/events/qt-developer-days-2010-munich/"&gt;Qt Developer Days&lt;/a&gt;". I will be attending the &lt;a href="http://qt.nokia.com/qtdevdays2010/training-session-abstracts#qt-essentials"&gt;"Qt Essentials"&amp;nbsp; track&lt;/a&gt; and I presume it is going to be quite interesting and one of the best ways for doing my first steps in the Qt world. I am very happy that &lt;a href="http://www.murrayc.com/"&gt;Murray&lt;/a&gt; asked us to go.&lt;br /&gt;&lt;br /&gt;I will post again when I am back!.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-2200608161421410308?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/2200608161421410308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/10/qt-developer-days-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2200608161421410308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/2200608161421410308'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/10/qt-developer-days-2010.html' title='Qt Developer Days 2010.'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_a2S3FXBADk4/TKyRC33Y0KI/AAAAAAAAAJM/CQtHTaYau68/s72-c/image_preview.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-7608802952182066051</id><published>2010-09-01T16:12:00.000+02:00</published><updated>2010-09-01T16:12:40.012+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GHangtux'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Makefile'/><category scheme='http://www.blogger.com/atom/ns#' term='GTK+'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='gtkmm'/><title type='text'>Moving on to gtkmm</title><content type='html'>I have spent the last weeks trying to improve some parts of &lt;a href="http://psconboard.blogspot.com/2010/07/ghangtux-10.html"&gt;GHangtux&lt;/a&gt;.  One of the improvements (the more obvious and complicated one), came  with the code restructuring.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BEFORE&lt;/b&gt;, all the code  was divided in &lt;b&gt;three&lt;/b&gt; different files:&lt;br /&gt;- &lt;i&gt;main.c&lt;/i&gt;: all  code for the program except for the keyboard widget.&lt;br /&gt;- &lt;i&gt;keyboard.c/.h&lt;/i&gt;:  keyboard widget code.&lt;br /&gt;&lt;br /&gt;This structure made the code easy to read at the very  beginning, but was obviously a bad idea for the long term. Actually, you  should always divide your program in small modules although you think  is going to be a very tiny one. It might be now, but who knows what is  going to happen in the future. Also, you help to make this code reusable  for other programs or programmers. So, mental note: &lt;b&gt;always use  modular code from the beginning!&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NOW&lt;/b&gt;, the  code is divided in &lt;b&gt;ten&lt;/b&gt; different files:&lt;br /&gt;- &lt;i&gt;ghangtux.c/.h&lt;/i&gt;:  main program and definition of main structures.&lt;br /&gt;- &lt;i&gt;ghangtux_ui.c/.h&lt;/i&gt;:  user interface.&lt;br /&gt;- &lt;i&gt;ghangtux_management.c/.h&lt;/i&gt;: functions for  game management.&lt;br /&gt;- &lt;i&gt;ghangtux_utils.c/.h&lt;/i&gt;: auxiliary  functions.&lt;br /&gt;- &lt;i&gt;ghangtux_keyboard.c/.h&lt;/i&gt;: keyboard widget.&lt;br /&gt;&lt;br /&gt;After all the new code structure was ready, I decided to set up &lt;a href="http://www.gtk.org/gtk-doc/"&gt;GTK-Doc&lt;/a&gt; to document &lt;a href="http://psconboard.blogspot.com/2010/07/ghangtux-10.html"&gt;GHangtux&lt;/a&gt;  in a proper way (still need to finish commenting the functions), which  brought me to the eternal discussion "&lt;b&gt;recursive or non recursive  Makefiles?&lt;/b&gt;". GTK-Doc documentation gave me the impression that I HAD  to use recursive make with no explanation and no other chance. After  some research and discussing about it with Dave, we found the way to do  it "my way", that means: non recursive. You can read&lt;a href="http://www.cse.iitb.ac.in/%7Esoumen/teach/cs699a1999/make.html"&gt;  Peter Miller's excellent paper&lt;/a&gt; to learn why recursive make  invocations are both slow and error-prone.&lt;br /&gt;&lt;br /&gt;Happy with the  results so far, I moved on to "convert &lt;a href="http://psconboard.blogspot.com/2010/07/ghangtux-10.html"&gt;GHangtux&lt;/a&gt;"  to &lt;a href="http://www.gtkmm.org/en/"&gt;gtkmm&lt;/a&gt;, so now I am busy  reading "&lt;a href="http://www.acceleratedcpp.com/"&gt;Accelerated C++&lt;/a&gt;"  and "&lt;a href="http://www.aristeia.com/books.html"&gt;Effective C++&lt;/a&gt;".  Let's wait for the magic to happen soon ;).&lt;br /&gt;&lt;br /&gt;Take care!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-7608802952182066051?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/7608802952182066051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/09/moving-on-to-gtkmm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7608802952182066051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/7608802952182066051'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/09/moving-on-to-gtkmm.html' title='Moving on to gtkmm'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-4599904074988449884</id><published>2010-08-18T14:13:00.000+02:00</published><updated>2010-08-18T14:13:49.687+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='GUADEC'/><title type='text'>I was at GUADEC 2010</title><content type='html'>This year was my first time at &lt;a href="http://en.wikipedia.org/wiki/GNOME_Users_And_Developers_European_Conference"&gt;GUADEC&lt;/a&gt;, and it was just great. I have got to chat to people involved in the GNOME shell, usability and accessibility programs and got in touch with the members of the "&lt;a href="http://live.gnome.org/GnomeWomen"&gt;Gnome Women&lt;/a&gt;"&amp;nbsp; group as well. But not everything was chatting and socializing. I attended several interesting talks as well: clutter, state of union, GNOME shell... and joined a very handy workshop about "Design thinking" by the hand of the &lt;a href="http://inventedhere.de/"&gt;Invented Here&lt;/a&gt; guys. Pheeww, I am still trying to process all the new information!.&lt;br /&gt;&lt;br /&gt;Back to chatting and socializing, more fun came at the evenings with the  &lt;a href="http://www.canonical.com/"&gt;Canonical&lt;/a&gt; Party (first &lt;a href="http://en.wikipedia.org/wiki/GNOME_Users_And_Developers_European_Conference"&gt;GUADEC&lt;/a&gt;  where people danced I have heard), &lt;a href="http://www.collabora.co.uk/"&gt;Collabora&lt;/a&gt; barbecue and the hackfest  at &lt;a href="https://foswiki.sonologic.nl/RevelationSpace"&gt;Revelation  Space&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Big news during &lt;a href="http://en.wikipedia.org/wiki/GNOME_Users_And_Developers_European_Conference"&gt;GUADEC&lt;/a&gt;?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;-&amp;nbsp; The release of &lt;b&gt;GNOME 3.0 have been pushed back to March 2011&lt;/b&gt;, but at the same time, The GNOME Project will ship GNOME 2.32 in September, along with a preview release of GNOME 3.0. Several distributions will ship GNOME 3.0 components that can be used for user previews or developer testing.&amp;nbsp; &lt;br /&gt;- An announcement was also made about the location for GUADEC 2011. &lt;b&gt;Applause for Berlin&lt;/b&gt; this time!.&lt;br /&gt;&lt;br /&gt;This year the Openismus crewed surprised all attendants with our new &lt;a href="http://www.flickr.com/photos/kitty-kat/sets/72157624187422648"&gt;"Sommer/Autumn 2010 T-shirts collection"&lt;/a&gt;. All thanks &lt;a href="http://www.flickr.com/photos/kitty-kat/"&gt;Kat&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I know..., envy is the word you are looking for ;). Hopefully I get the chance to go to &lt;a href="http://en.wikipedia.org/wiki/GNOME_Users_And_Developers_European_Conference"&gt;GUADEC&lt;/a&gt; again next year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-4599904074988449884?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/4599904074988449884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/08/i-was-at-guadec-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/4599904074988449884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/4599904074988449884'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/08/i-was-at-guadec-2010.html' title='I was at GUADEC 2010'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-3117514253465821785</id><published>2010-07-23T12:23:00.006+02:00</published><updated>2010-08-02T11:20:47.163+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GHangtux'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='GTK+'/><title type='text'>GHangtux 1.0</title><content type='html'>Wondering, what I have been doing the last few weeks?. GTK+ is the answer, &lt;a href="http://github.com/Patriciasc/GHangTux"&gt;GHangtux 1.0&lt;/a&gt; the result, and since we all know that a picture is worth a thousand words I go just straight to the introductions: "World, this is GHangtux, GHangtux this is the world".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_a2S3FXBADk4/TElu7g_HHQI/AAAAAAAAAI4/MnxTSSV3gsU/s1600/GHangtux1.0.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/_a2S3FXBADk4/TElu7g_HHQI/AAAAAAAAAI4/MnxTSSV3gsU/s640/GHangtux1.0.png" width="364" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;b&gt;What is GHangtux? &lt;/b&gt;&lt;br /&gt;&lt;a href="http://github.com/Patriciasc/GHangTux"&gt;GHangtux&lt;/a&gt; is a free program variation of the popular Hangman game. It has been designed for people of all ages and has a simple, easy-to-use interface.&lt;br /&gt;&lt;br /&gt;It provides a keyboard and a sentence/word to guess, whose theme, the player is able to select. Current themes are: films, objects and persons.&lt;br /&gt;&lt;br /&gt;During the game, a graphic sequence of tux images will be displayed, indicating the player how many attempts he/she has left.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to "create life" from some code lines?&lt;/b&gt;&lt;br /&gt;1. &lt;i&gt;Getting familiar with GTK+&lt;/i&gt;. As I wrote in the last post, I spent my first weeks at Openismus learning GTK+ and to put this into practice, I worked in a very small but helpful &lt;a href="http://github.com/Patriciasc/Gtk--tests"&gt;project&lt;/a&gt;. "&lt;a href="http://www.gtkbook.com/"&gt;Foundations of GTK+ Development&lt;/a&gt;"  was very useful in this learning process and gave me a good base.&lt;br /&gt;&lt;br /&gt;2. &lt;i&gt;Making and correcting mistakes&lt;/i&gt;. The next step was to learn about all those mistakes I made, to repeat them and to relearn from them again. This is part of every single step actually.&lt;br /&gt;&lt;br /&gt;3. &lt;i&gt;Testing the new knowledge&lt;/i&gt;. After the first two steps, it seemed that I was prepare to start my first simple GTK+ application which is the very early version of the game.&lt;br /&gt;&lt;br /&gt;4. &lt;i&gt;Creating a custom widget&lt;/i&gt;. After playing with GTK+ a few more weeks, I decided to create my own custom widget: the game's keyboard. For this step, I found &lt;a href="http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28"&gt;Davyd Madeley's clock widget tutorial&lt;/a&gt; quite handy.&lt;br /&gt;&lt;br /&gt;5.&lt;i&gt; Integration of the custom widget in the early version of &lt;a href="http://github.com/Patriciasc/GHangTux"&gt;GHangtux&lt;/a&gt;&lt;/i&gt;. This is the last version of the game.&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is coming next?&lt;/b&gt;&lt;br /&gt;- Internationalization with i18n.&lt;br /&gt;- More themes.&lt;br /&gt;- More image themes.&lt;br /&gt;- Shortcuts for the menus.&amp;nbsp; &lt;br /&gt;- Others: clutter, desktop files... &lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Side effects" of having developed GHangtux?&lt;/b&gt;&lt;br /&gt;- Learning &lt;a href="http://git-scm.com/"&gt;Git&lt;/a&gt; and discovering how powerful this tool is.&lt;br /&gt;- Learning Autotools helped by &lt;a href="http://www.lrde.epita.fr/%7Eadl/autotools.html"&gt;Alexandre Duret-Lutz's tutorial&lt;/a&gt;, and some&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href="http://www.openismus.com/documents/"&gt;Openismus manuals&lt;/a&gt;.&lt;br /&gt;- Practicing C.&lt;br /&gt;- Practicing &lt;a href="http://glade.gnome.org/"&gt;Glade&lt;/a&gt;. &lt;br /&gt;- Programming style.&lt;br /&gt;- Improving my communication skills.&lt;br /&gt;&lt;br /&gt;You can follow the project under the repository in &lt;a href="http://github.com/Patriciasc/GHangTux"&gt;GitHub&lt;/a&gt; or download it  in &lt;a href="http://github.com/Patriciasc/GHangTux/tarball/GHangtux-1.0"&gt;.tgz&lt;/a&gt;  or &lt;a href="http://github.com/Patriciasc/GHangTux/zipball/GHangtux-1.0"&gt;.zip&lt;/a&gt;.&amp;nbsp;  All comments are welcome, as are merge requests.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-3117514253465821785?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/3117514253465821785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/07/ghangtux-10.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3117514253465821785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/3117514253465821785'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/07/ghangtux-10.html' title='GHangtux 1.0'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_a2S3FXBADk4/TElu7g_HHQI/AAAAAAAAAI4/MnxTSSV3gsU/s72-c/GHangtux1.0.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-6747438522569635017</id><published>2010-06-14T12:26:00.003+02:00</published><updated>2010-06-15T13:52:36.239+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Events'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>First weeks at Openismus</title><content type='html'>Yay! Almost one month since the last time I wrote. I need to improve this :). There is a convincing excuse though. Since I started my job at &lt;a href="http://www.openismus.com/"&gt;Openismus&lt;/a&gt;, another evening full-time job came out: the search of my new apartment!. It seemed to be an easy task at the beginning, but now it just turned into a complicated competition. I have just realized that writing in your presentation e-mail that you have something to do with informatics may probably be not that popular. Being non-smoker seems to be another problem too.&lt;br /&gt;&lt;br /&gt;At last, things at work could not be better. During the &lt;b&gt;first week&lt;/b&gt; we dedicated our time to install Fedora 13 in our computers. Apart from some issues with our keyboards concerning to the language layouts, everything went fine. We learnt to know as well, how the "internal communication system" here works and joined some lists to be up to date with all project's news. Then we started with &lt;a href="http://live.gnome.org/Jhbuild"&gt;jhbuild&lt;/a&gt;!. That was definitive lots of fun: is there anybody that run it without having to fix at last 2000 errors? ;). Thanks God or whoever, &lt;a href="http://blixtra.org/blog/"&gt;Chris&lt;/a&gt;, &lt;a href="http://amigadave.blogspot.com/"&gt;David&lt;/a&gt; and Saint &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; were there for support. We actually learnt a lot.&lt;br /&gt;&lt;br /&gt;The &lt;b&gt;second week&lt;/b&gt; started really good since we finished fixing the &lt;a href="http://live.gnome.org/Jhbuild"&gt;jhbuild&lt;/a&gt;'s errors, and moved on to &lt;a href="http://www.gtk.org/"&gt;GTK+&lt;/a&gt;. I was busy with this till Thursday. On Friday and Saturday we went to the &lt;a href="http://www.linuxtag.org/2010/"&gt;Linux Tag&lt;/a&gt; here in Berlin and attended a series of interesting talks about MeeGo, systemd, Google, Ubuntu and Gnome 3.0. The talks were interesting, but more business-orientated in general from my point of view. However, the best part of this kind of events are the "after-talk-times", where you get to know some people involved on different open source projects or people that work / worked in the same company you do and still did not know. Better chances of socialization came in the evenings with the barbecues at &lt;a href="http://www.c-base.org/"&gt;C-Base&lt;/a&gt;!.&lt;br /&gt;&lt;br /&gt;Well, now it is time I stop writing here and go on learning some GTK+, since I have to present some legible code today.&lt;br /&gt;&lt;br /&gt;See you soon!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-6747438522569635017?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/6747438522569635017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/06/first-weeks-at-openismus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6747438522569635017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/6747438522569635017'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/06/first-weeks-at-openismus.html' title='First weeks at Openismus'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-8488541004656057332</id><published>2010-05-19T22:38:00.012+02:00</published><updated>2010-05-19T22:53:03.460+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CERN'/><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Internship'/><title type='text'>CERN openlab summer students programme 2010</title><content type='html'>&lt;span style="font-size: small;"&gt;I wake up and look through the window, the weather is OK, not that bad, not that good. I still do not have curtains because I moved for three months and did not have time to put them or had just better things to do (there are actually always better things to do than this). Next stop: the bathroom. There I wash my face. I go to the kitchen and start the kettle in order to make some tea for having breakfast. I turn on the radio to hear the news. I can not really hear the news with the noise of the kettle boiling the water. Water is ready and I prepare a cup of tea, for one, and to take away. I "take it away" back to my bedroom and turn my computer on in order to check my e-mails and read the news (I did not really pay attention to the ones on the radio, but I like to hear the sound on the background when I am at home, I love to listen to the radio). No remarkable news, no remarkable e-mails... wait.... what is this?.&lt;b&gt; E-Mail topic&lt;/b&gt;: &lt;a href="https://openlab-mu-internal.web.cern.ch/openlab-mu-internal/07_Student-Programme/"&gt;CERN openlab summer student programme 2010&lt;/a&gt;. I make click on the topic and a new screen shows the content of the e-mail:&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;"Dear Patricia,&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;We are pleased to inform you that you have been selected as an openlab summer student 2010 [...]"&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-size: small;"&gt;More good news for this year, however, at this point I was looking in another direction. I am just looking forward to start my &lt;a href="http://www.murrayc.com/blog/permalink/2010/03/09/what-our-trainees-learn/"&gt;trainee&lt;/a&gt; at &lt;a href="http://www.openismus.com/"&gt;Openismus&lt;/a&gt; on the first June.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-8488541004656057332?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/8488541004656057332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/05/cern-openlab-summer-student-programme.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8488541004656057332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8488541004656057332'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/05/cern-openlab-summer-student-programme.html' title='CERN openlab summer students programme 2010'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-8729623831113965427</id><published>2010-05-11T23:34:00.006+02:00</published><updated>2010-05-12T00:55:34.014+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Count down... 21, 20, 19...</title><content type='html'>&lt;div style="font-family: inherit;"&gt;&lt;span style="font-size: small;"&gt;The count down for moving to Berlin has just started, and the list of things needed to be resolved before doing it is getting bigger and bigger:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;01. Bank account cancellation (&lt;b&gt;&lt;span style="color: #38761d;"&gt;done&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;02. Cancell city hall registration (&lt;b&gt;&lt;span style="color: #38761d;"&gt;done&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;03. Cancell Sportspass registration (&lt;b&gt;&lt;span style="color: #38761d;"&gt;done&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;04. HVV Abokarte cancellation (&lt;b&gt;&lt;span style="color: #38761d;"&gt;done&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;05. Finding someone new for my room&lt;/span&gt; (&lt;b style="color: #38761d;"&gt;done&lt;/b&gt;)&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;06. Selling my room's furniture (&lt;b&gt;&lt;span style="color: #38761d;"&gt;done&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;07. "Rent" a friend who will drive that car&amp;nbsp; (&lt;b style="color: #38761d;"&gt;done&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;08. Rent a car for moving ( &lt;b&gt;&lt;span style="color: #0b5394;"&gt;still in process&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;09. Packing (&lt;b&gt;&lt;span style="color: #0b5394;"&gt;still in process&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;10. Goodbye parties (&lt;b style="color: #0b5394;"&gt;still in process&lt;/b&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;11. Unemployment registration + fill in of &lt;b&gt;N&lt;/b&gt; forms. &lt;b&gt;N&lt;/b&gt; definitely tends to infinite&lt;/span&gt; (&lt;b&gt;&lt;span style="color: #cc0000;"&gt;no way&lt;/span&gt;&lt;/b&gt;)&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;12. Others&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_a2S3FXBADk4/S-nHQXCqmnI/AAAAAAAAAIk/wQeWYa00dIA/s1600/pat_caricatura_reducida_forms.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="125" src="http://3.bp.blogspot.com/_a2S3FXBADk4/S-nHQXCqmnI/AAAAAAAAAIk/wQeWYa00dIA/s200/pat_caricatura_reducida_forms.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;It is not a bad recount. In the last weeks I have discovered without surprise that German bureaucracy is a lot of fun. Every time a went to the employment office, they gave me as a souvenir at last three different forms (poor trees!!) and had to go at last to three other different places in order to fill in the forms or collect information to complete them (plus side effects: annoying &lt;a href="http://www.murrayc.com/blog/"&gt;Murray&lt;/a&gt; and &lt;a href="http://www.flickr.com/photos/kitty-kat/"&gt;Kat&lt;/a&gt;. Sorry about that). That means, I have been going there every morning for the last week. It might be easier if I just live there for a while I guess.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;b&gt;Good news&lt;/b&gt;: my mother is finally visiting me!. After two years in Germany, it seems that it will happen. Well... just if &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Eyjafjallaj%C3%B6kull"&gt;&lt;b&gt;Eyjafjallajökull&lt;/b&gt;&lt;/a&gt;&amp;nbsp; does not get angry these days.&lt;br /&gt;&lt;br /&gt;I am so excited about everything new that is coming! &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-8729623831113965427?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/8729623831113965427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/05/count-down-21-20-19.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8729623831113965427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/8729623831113965427'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/05/count-down-21-20-19.html' title='Count down... 21, 20, 19...'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_a2S3FXBADk4/S-nHQXCqmnI/AAAAAAAAAIk/wQeWYa00dIA/s72-c/pat_caricatura_reducida_forms.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5339134701253072385.post-5284738900357827068</id><published>2010-04-28T23:16:00.046+02:00</published><updated>2010-05-05T13:35:15.162+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Openismus'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>Connecting dots till Openismus</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;"[...] &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;If&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;had&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;never&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;dropped&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;out&lt;/span&gt;, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;would&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;never&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;dropped&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;on&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;calligraphy&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;class&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;and&lt;/span&gt; personal &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;computers&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;might&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;not&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;wonderful&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;typography&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;they&lt;/span&gt; do. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;Of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;course&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;impossible&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;connect&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;dots&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;looking&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;forward&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;when&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;college&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;But&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;very&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;very&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;clear&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;looking&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;backwards&lt;/span&gt; ten &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;years&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;later&lt;/span&gt;.&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;Again&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;you&lt;/span&gt; can't &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;connect&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;dots&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;looking&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;forward&lt;/span&gt;; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;you&lt;/span&gt; can &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;only&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_58"&gt;connect&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;them&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_60"&gt;looking&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_61"&gt;backwards&lt;/span&gt;. So &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_62"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_63"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_64"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_65"&gt;trust&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_66"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_67"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_68"&gt;dots&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_69"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_70"&gt;somehow&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_71"&gt;connect&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_72"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_73"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_74"&gt;future&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_75"&gt;You&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_76"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_77"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_78"&gt;trust&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_79"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_80"&gt;something&lt;/span&gt; — &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_81"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_82"&gt;gut&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_83"&gt;destiny&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_84"&gt;life&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_85"&gt;karma&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_86"&gt;whatever&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_87"&gt;This&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_88"&gt;approach&lt;/span&gt; has &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_89"&gt;never&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_90"&gt;let&lt;/span&gt; me &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_91"&gt;down&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_92"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_93"&gt;it&lt;/span&gt; has &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_94"&gt;made&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_95"&gt;all&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_96"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_97"&gt;difference&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_98"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_99"&gt;my&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_100"&gt;life&lt;/span&gt;. [...]"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:78%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_101"&gt;Steve&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_102"&gt;Jobs&lt;/span&gt;. '&lt;/span&gt;&lt;span style="font-style: italic;font-size:78%;" &gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_103"&gt;You&lt;/span&gt;'ve &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_104"&gt;got&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_105"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_106"&gt;find&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_107"&gt;what&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_108"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_109"&gt;love&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;'.  &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_110"&gt;Stanford&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_111"&gt;Report&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_112"&gt;June&lt;/span&gt; 14, 2005.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_113"&gt;One&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_114"&gt;day&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_115"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_116"&gt;wake&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_117"&gt;up&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_118"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_119"&gt;something&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_120"&gt;important&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_121"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_122"&gt;makes&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_123"&gt;great&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_124"&gt;difference&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_125"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_126"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_127"&gt;life&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_128"&gt;happens&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_129"&gt;You&lt;/span&gt; do &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_130"&gt;not&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_131"&gt;know&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_132"&gt;but&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_133"&gt;if&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_134"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_135"&gt;look&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_136"&gt;backwards&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_137"&gt;connecting&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_138"&gt;dots&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_139"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_140"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_141"&gt;life&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_142"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_143"&gt;will&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_144"&gt;realize&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_145"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_146"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_147"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_148"&gt;last&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_149"&gt;years&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_150"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_151"&gt;whole&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_152"&gt;universe&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_153"&gt;was&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_154"&gt;conspiring&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_155"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_156"&gt;make&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_157"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_158"&gt;happen&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_159"&gt;learning&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_160"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_161"&gt;language&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_162"&gt;deciding&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_163"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_164"&gt;stay&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_165"&gt;in&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_166"&gt;foreign&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_167"&gt;country&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_168"&gt;skills&lt;/span&gt;...&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_169"&gt;This&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_170"&gt;happens&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_171"&gt;just&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_172"&gt;few&lt;/span&gt; times &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_173"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_174"&gt;life&lt;/span&gt; (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_175"&gt;if&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_176"&gt;you&lt;/span&gt; are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_177"&gt;lucky&lt;/span&gt;) &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_178"&gt;and&lt;/span&gt; are &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_179"&gt;moments&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_180"&gt;marked&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_181"&gt;with&lt;/span&gt; a mental &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_182"&gt;big&lt;/span&gt; red &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_183"&gt;cross&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_184"&gt;reminding&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_185"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_186"&gt;where&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_187"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_188"&gt;past&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_189"&gt;ends&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_190"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_191"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_192"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_193"&gt;beginning&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_194"&gt;starts&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_195"&gt;Moments&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_196"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_197"&gt;have&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_198"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_199"&gt;ability&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_200"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_201"&gt;make&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_202"&gt;you&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_203"&gt;redo&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_204"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_205"&gt;life&lt;/span&gt;: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_206"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_207"&gt;city&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_208"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_209"&gt;flat&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_210"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_211"&gt;life&lt;/span&gt;... &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_212"&gt;For&lt;/span&gt; me, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_213"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_214"&gt;moment&lt;/span&gt; has &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_215"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_216"&gt;name&lt;/span&gt; &lt;a href="http://www.openismus.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_217"&gt;Openismus&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_218"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_219"&gt;here&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_220"&gt;is&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_221"&gt;where&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_222"&gt;am&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_223"&gt;going&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_224"&gt;to&lt;/span&gt; be &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_225"&gt;doing&lt;/span&gt; a &lt;a href="http://www.murrayc.com/blog/permalink/2010/03/09/what-our-trainees-learn/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_226"&gt;trainee&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_227"&gt;program&lt;/span&gt;&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_228"&gt;for&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_229"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_230"&gt;next&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_231"&gt;year&lt;/span&gt;. [&lt;a href="http://www.murrayc.com/blog/permalink/2010/04/30/openismus-2010-trainees-chosen/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_232"&gt;Here&lt;/span&gt;'s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_233"&gt;Murray&lt;/span&gt;'s &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_234"&gt;announcement&lt;/span&gt;&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_235"&gt;Joining&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_236"&gt;the&lt;/span&gt; &lt;a href="http://www.softwarelibre.ulpgc.es/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_237"&gt;FSO&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_238"&gt;in&lt;/span&gt; 2006, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_239"&gt;at&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_240"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_241"&gt;university&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_242"&gt;where&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_243"&gt;did&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_244"&gt;my&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_245"&gt;studies&lt;/span&gt; , &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_246"&gt;gave&lt;/span&gt; me &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_247"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_248"&gt;oportunity&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_249"&gt;to&lt;/span&gt; introduce &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_250"&gt;my&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_251"&gt;self&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_252"&gt;in&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_253"&gt;deepest&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_254"&gt;way&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_255"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_256"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_257"&gt;free&lt;/span&gt; software &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_258"&gt;world&lt;/span&gt;. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_259"&gt;Since&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_260"&gt;then&lt;/span&gt;, I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_261"&gt;had&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_262"&gt;gotten&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_263"&gt;interested&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_264"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_265"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_266"&gt;dynamics&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_267"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_268"&gt;open&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_269"&gt;source&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_270"&gt;projects&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_271"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_272"&gt;now&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_273"&gt;am&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_274"&gt;sure&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_275"&gt;that&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_276"&gt;am&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_277"&gt;in&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_278"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_279"&gt;rigth&lt;/span&gt;&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_280"&gt;place&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_281"&gt;for&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_282"&gt;feeding&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_283"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_284"&gt;interest&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_285"&gt;Welcome&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_286"&gt;on&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_287"&gt;board&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_288"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_289"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_290"&gt;beginning&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_291"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_292"&gt;your&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_293"&gt;new&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_294"&gt;life&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_295"&gt;Patri&lt;/span&gt;&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5339134701253072385-5284738900357827068?l=psconboard.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://psconboard.blogspot.com/feeds/5284738900357827068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://psconboard.blogspot.com/2010/04/welcome-on-board.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5284738900357827068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5339134701253072385/posts/default/5284738900357827068'/><link rel='alternate' type='text/html' href='http://psconboard.blogspot.com/2010/04/welcome-on-board.html' title='Connecting dots till Openismus'/><author><name>psc</name><uri>http://www.blogger.com/profile/11859805626967649800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='20' src='http://4.bp.blogspot.com/_a2S3FXBADk4/S9nX5B2k-uI/AAAAAAAAAHo/PbmxPb9Ve1A/S220/pat_caricatura_reducida.jpg'/></author><thr:total>4</thr:total></entry></feed>
