<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Armin's personal Blog - Openismus</title>
    <link>http://arbur.net/serendipity/</link>
    <description>Open source programming</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.1.3 - http://www.s9y.org/</generator>
    <pubDate>Thu, 26 Mar 2009 16:32:24 GMT</pubDate>

    <image>
        <url>http://arbur.net/serendipity/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Armin's personal Blog - Openismus - Open source programming</title>
        <link>http://arbur.net/serendipity/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>Timeline widgets for GTK+</title>
    <link>http://arbur.net/serendipity/archives/44-Timeline-widgets-for-GTK+.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/44-Timeline-widgets-for-GTK+.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=44</wfw:comment>

    <slash:comments>11</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=44</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;A small &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Openismus GmbH - custom software development&quot;&gt;Openismus&lt;/a&gt; task I recently carried out was to investigate whether there is a generic timeline widget for &lt;a href=&quot;http://www.gtk.org&quot;  title=&quot;GTK+ toolkit&quot;&gt;GTK+&lt;/a&gt; out there, for example to show photos associated with the day they were taken. The main feature this is supposed to have is that the items it contains are grouped by time periods, such as day, week or month, and that it should be possible to view multiple periods at once, or to allow easy browsing between them.&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/zeitgeist3.png&#039;&gt;&lt;!-- s9ymdb:40 --&gt;&lt;img width=&#039;110&#039; height=&#039;59&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/zeitgeist3.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;The closest thing I found is &lt;a href=&quot;http://live.gnome.org/GnomeZeitgeist&quot;  title=&quot;GNOME Zeitgeist&quot;&gt;Gnome Zeitgeist&lt;/a&gt;, an application which takes up &lt;a href=&quot;http://www.gnome.org/~federico/docs/2008-GUADEC/html/img31.html&quot;  title=&quot;Slide from Federico&#039;s presentation at GUADEC 2008&quot;&gt;Federico&#039;s Journal Idea&lt;/a&gt;. Gnome Zeitgeist is still under heavy development (I also had a short look at it yesterday, and when I updated the branch today it looked totally different), but the timeline widget looks promising already. It shows recently used files ordered by the day they have been used. By default, it shows three days, but when filtering by tags, it can also show more (scrolling horizontally if necessary), omitting days with no entries at all. This is implemented using multiple &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkTreeView.html&quot;  title=&quot;Documentation for GtkTreeView&quot;&gt;GtkTreeView&lt;/a&gt;s, therefore I guess it would be easy to generalize the widget to show arbitrary data by allowing to pack own cell renderers into it.&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/nemo.png&#039;&gt;&lt;!-- s9ymdb:41 --&gt;&lt;img width=&#039;110&#039; height=&#039;72&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/nemo.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;Then, there is &lt;a href=&quot;http://www.iola.dk/nemo/&quot;  title=&quot;Nemo file non-manager&quot;&gt;Nemo&lt;/a&gt;, a program which aims at making file management easier by showing all documents (not only recently used ones) in a calendar type of view. There are views for a day, a week, a month or a year. However, when there are more items than there is space in a calendar cell, then it simply shows &quot;+ 309 more&quot;. Gnome Zeitgeist allows scrolling instead, which is more handy when for example previewing photos.&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/gnome-shell-recent.png&#039;&gt;&lt;!-- s9ymdb:42 --&gt;&lt;img width=&#039;110&#039; height=&#039;88&#039; style=&quot;float: right; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/gnome-shell-recent.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;Other projects I had a look at include &lt;a href=&quot;http://live.gnome.org/GnomeShell&quot;  title=&quot;Gnome Shell&quot;&gt;Gnome-Shell&lt;/a&gt; (which shows recently used icons ordered, but not grouped), &lt;a href=&quot;http://www.wizbit.org/drupal/&quot;  title=&quot;Wizbit data organizer&quot;&gt;Wizbit&lt;/a&gt; (which has a timeline widget for the revision graph, but Wizbit has slightly different usecases), &lt;a href=&quot;http://live.gnome.org/PaperBox&quot;  title=&quot;PaperBox document browser&quot;&gt;Paperbox&lt;/a&gt; and &lt;a href=&quot;http://projects.gnome.org/tracker/&quot;  title=&quot;Tracker desktop search engine&quot;&gt;tracker-search-tool&lt;/a&gt; (both of which don&#039;t group items by time periods).&lt;/p&gt;

&lt;p&gt;The Gnome Zeitgeist widget looks really promising, though. Although it is not a stand-alone widget, I don&#039;t think it would be too much work to separate it and make it more generic.&lt;/p&gt;

&lt;p&gt;Are there more solutions to this kind of problem in the GTK+ world? Any application I did not have a look at, although I should in this context? If so, please tell me in the comments.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 25 Mar 2009 16:56:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/44-guid.html</guid>
    
</item>
<item>
    <title>SQLite support in Glom</title>
    <link>http://arbur.net/serendipity/archives/43-SQLite-support-in-Glom.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/43-SQLite-support-in-Glom.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=43</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=43</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;Over the last few months I implemented &lt;a href=&quot;http://sqlite.org/&quot;  title=&quot;SQLite is a light-weight database system&quot;&gt;SQLite&lt;/a&gt; support in &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;Glom database and user interface designer&quot;&gt;Glom&lt;/a&gt; for &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Custom Open Source Software Development&quot;&gt;Openismus&lt;/a&gt;. When creating a new document, Glom now allows to save the data in a SQLite database instead of a &lt;a href=&quot;http://www.postgresql.org/&quot;  title=&quot;PostgreSQL database system&quot;&gt;postgresql&lt;/a&gt; database. This is more light-weight, and there are generally fewer things that can go wrong as everything is performed within the same process. However, there are some obvious limitations: As SQLite does not support authentication, Glom documents using an SQLite database can be opened without access restriction either. Also, the Glom session is not announced on the network since the SQLite database can not be accessed from remote anyway.&lt;/p&gt;

&lt;p&gt;When implementing this, I tried to get rid of most of the postgresql-specific code which was in quite a few places throughout Glom, and putting it into a single place, and using libgda instead of hand-written SQL when possible. This should make it relatively easy to add more database backends in the future, if people need any. There is only some code dealing with users and privileges that may be postgres-specific and which I didn&#039;t touch, simply because it is not used with SQLite anyway.&lt;/p&gt;

&lt;p&gt;One of the interesting parts was to map the different glom data types to SQLite data types. The switch to &lt;a href=&quot;http://www.gnome-db.org/&quot;  title=&quot;GNOME database access API&quot;&gt;libgda&lt;/a&gt;-4 helped with this, since libgda-4 allows storing dates and timestamps in SQLite databases, by converting them to standardized strings. However, SQLite does not support a &quot;numeric&quot; type, but only integer and real. Currently, Glom maps its numeric type always to an SQLite real, which worked surprisingly well so far, though I&#039;m still not 100% happy with it, mostly due to possible floating point inaccuracies.&lt;/p&gt;

&lt;p&gt;Another problem was changing a table, meaning adding, modifying or removing columns, or changing the primary key column. As SQLite only &lt;a href=&quot;http://www.sqlite.org/lang_altertable.html&quot;  title=&quot;SQLite documentation to ALTER TABLE&quot;&gt;supports&lt;/a&gt; adding non-primary key columns, but not changing existing columns or removing columns, Glom recreates the whole table in that case and moves the data from the old table into the new one. The tricky part of this was to get all possible type conversions right. For example, when changing the type from Image to something else, then the conversion failed with a &quot;Database table is locked&quot; error only if at least one row contained an actual (non-NULL) image. It took me some time to find out that SQLite does not allow dropping a table when a recordset from a SELECT query is still in use, and that Glom was indeed still holding such a recordset to display records from the current table. The problem went away when I released that recordset before changing the field type, though I wonder why there was no problem when there were no images in that column, or for other field type changes not involving images.&lt;/p&gt;

&lt;p&gt;This work also yielded some bugs in the upcoming libgda-4, but Vivien has been very responsive so that they have been fixed very quickly. Kudos!&lt;/p&gt;

&lt;p&gt;The SQLite version feels much faster and more responsive than the postgresql one when creating a new database or populating the list view. I wonder whether this can be explained with the overhead that comes with postgresql (talking to another process via TCP/IP) or there is a bottleneck elsewhere, which, if fixed, would make (postgresql) glom more enjoyable to use.&lt;/p&gt;

&lt;p&gt;The current &lt;a href=&quot;http://ftp.acc.umu.se/pub/GNOME/sources/glom/&quot;  title=&quot;Glom tarball archives&quot;&gt;tarball&lt;/a&gt; version, &lt;a href=&quot;http://ftp.acc.umu.se/pub/GNOME/sources/glom/1.9/glom-1.9.1.tar.gz&quot;  title=&quot;Glom 1.9.1 tarball&quot;&gt;1.9.1&lt;/a&gt;, already supports SQLite, but still has some problems with changing field types which have been fixed in SVN. A 1.9.2 will hopefully be released soon. The next stable version of Glom, 1.10, will also contain SQLite support.&lt;/p&gt;

&lt;p&gt;Sorry, no screenshots this time, since there wouldn&#039;t be anything to see that would be different from a postgresql-based Glom, except maybe an option to create a SQLite database when creating a new Glom document.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 25 Feb 2009 22:50:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/43-guid.html</guid>
    
</item>
<item>
    <title>Glom Windows Installer 2</title>
    <link>http://arbur.net/serendipity/archives/37-Glom-Windows-Installer-2.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/37-Glom-Windows-Installer-2.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=37</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=37</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;I updated the &lt;a href=&quot;http://arbur.net/code/glom/glom-setup-1.7.1.exe&quot;  title=&quot;Glom Windows installer&quot;&gt;installer&lt;/a&gt;. It now includes jpeg62.dll and python25.dll which were missing (thanks to the reporters on my &lt;a href=&quot;http://arbur.net/serendipity/archives/36-Glom-Windows-Installer.html&quot;  title=&quot;Initial post about Glom installer on Windows&quot;&gt;initial post&lt;/a&gt;). I also included the glom and gda python modules. If I do understand things right, then installing &lt;a href=&quot;http://python.org/download/&quot;  title=&quot;Python downloads&quot;&gt;Python&lt;/a&gt; and &lt;a href=&quot;http://www.pygtk.org/downloads.html&quot;  title=&quot;PyGTK downloads&quot;&gt;pygtk&lt;/a&gt; makes Python support in Glom automatically work with this. I tried this out by reinstalling Python into a different directory, which worked.&lt;/p&gt;

&lt;p&gt;Again, if there are still problems with it, please tell me.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sat, 09 Feb 2008 14:29:12 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/37-guid.html</guid>
    
</item>
<item>
    <title>Glom Windows Installer</title>
    <link>http://arbur.net/serendipity/archives/36-Glom-Windows-Installer.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/36-Glom-Windows-Installer.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=36</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://arbur.net/code/glom/glom-setup-1.7.1.exe&quot;  title=&quot;Glom Windows Installer&quot;&gt;Here&lt;/a&gt; it is, &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;Easy database management&quot;&gt;Glom&lt;/a&gt;&#039;s installer for Windows. Thanks to the opinions on my &lt;a href=&quot;http://arbur.net/serendipity/archives/34-Glom-packaging-on-Windows.html&quot;  title=&quot;Glom packaging on Windows&quot;&gt;last blog entry&lt;/a&gt;. I set up an all-in-one installer, so Glom should run out of the box after installing (please tell me if not). It includes GTK+ from SVN with my patch from bug &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=506062&quot;  title=&quot;gtk_recent_manager_add_item does not detect mime type on Windows&quot;&gt;#506062&lt;/a&gt; (hint, hint) so that recent files filtering works.&lt;/p&gt;

&lt;p&gt;Since most people seem to use &lt;a href=&quot;http://nsis.sourceforge.net&quot;  title=&quot;Nullsoft scriptable installer system&quot;&gt;NSIS&lt;/a&gt; for Windows installers (comment on &lt;a href=&quot;http://arbur.net/serendipity/archives/27-Installer++.html&quot;  title=&quot;Installer++&quot;&gt;this blog entry&lt;/a&gt;, &lt;a href=&quot;http://gtk-win.sourceforge.net&quot;  title=&quot;GTK+ installer for Windows&quot;&gt;gtk-win.sourceforge.net&lt;/a&gt;) I also had a look at it. However, the scripting language reminds me more of assembly than anything else, and I think these days are over. So I used &lt;a href=&quot;http://www.innosetup.org&quot;  title=&quot;InnoSetup Installer system&quot;&gt;InnoSetup&lt;/a&gt; which has Pascal scripting for the rare cases you need it.&lt;/p&gt;

&lt;p&gt;The only thing that is not going to work is python scripts for buttons and calculated fields. Ideally, one would just install Python and PyGtk, and having Glom use that installation automatically when present. This shouldn&#039;t be too hard, it just needs to tell python where to find the own gda and glom python modules. I am going to tackle this after my physics exam on Thursday.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Mon, 04 Feb 2008 21:58:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/36-guid.html</guid>
    
</item>
<item>
    <title>Glom packaging on Windows</title>
    <link>http://arbur.net/serendipity/archives/34-Glom-packaging-on-Windows.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/34-Glom-packaging-on-Windows.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=34</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=34</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;With added support for self-hosting, &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;User friendly database environment&quot;&gt;Glom&lt;/a&gt; for Windows now supports all the major features that the Linux version does (apart from Service Publishing, which is probably way more effort since &lt;a href=&quot;http://www.avahi.org&quot;  title=&quot;Avahi service publishing and discovery&quot;&gt;Avahi&lt;/a&gt; is not available on Windows). It&#039;s time to think about how to package it, and what dependencies to include, especially whether to ship with &lt;a href=&quot;http://www.gtk.org&quot;  title=&quot;GTK+ windowing toolkit&quot;&gt;GTK+&lt;/a&gt; or not.&lt;/p&gt;

&lt;p&gt;All the major GTK+-using projects such as &lt;a href=&quot;http://www.inkscape.org&quot;  title=&quot;Inkscape vector graphics editor&quot;&gt;Inkscape&lt;/a&gt;, &lt;a href=&quot;http://www.pidgin.im&quot;  title=&quot;Multi-protocol instant messanger&quot;&gt;Pidgin&lt;/a&gt; and &lt;a href=&quot;http://www.wireshark.org&quot;  title=&quot;Network protocol analyzer&quot;&gt;Wireshark&lt;/a&gt; include GTK+. Even the &lt;a href=&quot;http://www.gimp.org&quot;  title=&quot;The GNU image manipulation program&quot;&gt;GIMP&lt;/a&gt; does so since version 2.4. This actually generates a lot of duplication, which is why we (or, rather, I) did decide not to ship it with &lt;a href=&quot;http://gobby.0x539.de&quot;  title=&quot;Collaborative text editor&quot;&gt;Gobby&lt;/a&gt;. Of course we are getting complaints such as &amp;quot;Hey, this doesn&#039;t work because libgtk-win32-2-0-0.dll was not found!!1&amp;quot; from time to time, but if people are not able to read the instructions right above the download link, well, then I&#039;m sorry. Do others think the added duplication is worth that the user needs to install GTK+ manually once? Or, maybe, is this just because there is no &quot;official&quot; GTK+ installer?&lt;/p&gt;

&lt;p&gt;Then, there is python, and I have not so much experience here. Glom links statically against libpython, so it should even run without python being installed. However, buttons and calculated fields won&#039;t work then, unless we ship with at least pyGTK. Perhaps the best thing is to state that for button scripts and calculated fields to work, python and pyGTK have to be installed. We just have to make sure that Python finds the glom and pygda modules then, even if Python was installed after Glom (so it had no chance to install them into the standard location for such modules), but probably Python has some API for this.&lt;/p&gt;

&lt;p&gt;Last but not least, we have &lt;a href=&quot;http://www.gtkmm.org&quot;  title=&quot;C++ bindings for GTK+&quot;&gt;gtkmm&lt;/a&gt; which also has an &lt;a href=&quot;http://ftp.gnome.org/pub/gnome/binaries/win32/gtkmm/2.10/&quot;  title=&quot;Windows installer for gtkmm 2.10&quot;&gt;installer&lt;/a&gt; that is hosted on &lt;a href=&quot;http://ftp.gnome.org&quot;  title=&quot;Gnome FTP servers&quot;&gt;ftp.gnome.org&lt;/a&gt; even. I think we should either ship both GTK+ and gtkmm, or none of them.&lt;/p&gt;

&lt;p&gt;If you have any thoughts on this, recommendations and suggestions are welcome.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 27 Jan 2008 01:41:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/34-guid.html</guid>
    
</item>
<item>
    <title>autotools on Windows</title>
    <link>http://arbur.net/serendipity/archives/33-autotools-on-Windows.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/33-autotools-on-Windows.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=33</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=33</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;There are several ways to fix the recent chooser showing no recent files in &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;The Glom Database Designer&quot;&gt;Glom&lt;/a&gt; &lt;a href=&quot;http://arbur.net/serendipity/archives/32-Glom-on-Windows.html&quot;  title=&quot;Blog entry about Glom on Windows&quot;&gt;on Windows&lt;/a&gt;, but they are all sort of hacks except one, namely make the recent chooser guess the mime type of an URI on Windows as it already does on Unix. Currently, it always falls back to &lt;em&gt;application/octet-stream&lt;/em&gt; and this is why the filter on &lt;em&gt;application/x-glom&lt;/em&gt; that glom uses does not show up any files. I looked around a bit in the registry, and it seems that all known file extensions are in &lt;code&gt;HKEY_CLASSES_ROOT/.$ext&lt;/code&gt;, and some of them have a &quot;Content Type&quot; key that looks like the mime type we are after. So all we need to do is to register the .glom type there (this can also be used to associate a nice icon with it) and to make the GTK+ recent chooser use that &quot;Content Type&quot; key for the extension of the URI it gets as default mime type.&lt;/p&gt;

&lt;p&gt;To implement this, I need to be able to build GTK+ (and glib which GTK+ from SVN trunk depends on) on Windows. The easy method I already used for glom itself was to copy tarballs created by &quot;make dist&quot; to the windows machine so I don&#039;t have to create the configure script there, not requiring the autotools stuff. However, this gets horribly annoying when the repositories are updated frequently. It would be much nicer to have a working copy directly on Windows, and to (re)create the configure script there when necessary. In theory, this should work since mingw provides all necessary tools. In practise, I already stumbled upon several ugly problems in the past. I gave it another try, though, and I ended up with a freshly built glib from SVN at the end of the day. Below are the exact steps that got me this far.&lt;/p&gt;

&lt;p&gt;I used the environment I set up as described &lt;a href=&quot;http://www.glom.org/wiki/index.php?title=WindowsBuildInstructions&quot;  title=&quot;Windows Build Instructions for Glom&quot;&gt;here&lt;/a&gt; as a starting point. It is probably equally well possible to start with a freshly set up &lt;a href=&quot;http://mingw.org/msys.shtml&quot;  title=&quot;A minimal unix-like shell for Windows&quot;&gt;MSYS&lt;/a&gt;+&lt;a href=&quot;http://www.mingw.org&quot;  title=&quot;GCC and other GNU tools for Windows&quot;&gt;MingW&lt;/a&gt;, though.&lt;/p&gt;

&lt;ul&gt;
 &lt;li&gt;First, install termcap, libtool, automake and autoconf from &lt;a href=&quot;http://sf.net/project/showfiles.php?group_id=2435&quot;  title=&quot;MingW download area&quot;&gt;mingw.org&lt;/a&gt; into C:\msys (without the usr/ prefix that is in the tarball, such that files end up as &lt;code&gt;/bin/autoconf&lt;/code&gt; etc.). Copy &lt;code&gt;/bin/automake&lt;/code&gt; to &lt;code&gt;/bin/automake-1.10&lt;/code&gt; and &lt;code&gt;/bin/aclocal&lt;/code&gt; to &lt;code&gt;/bin/aclocal-1.10&lt;/code&gt;. The -1.10 versions are just 0-byte stubs, but glib&#039;s autogen.sh calls them explicitely.&lt;/li&gt;
 &lt;li&gt;Then, rename the /bin/perl wrapper script and install the mingw-provided perl package. This is still 5.6, but it is enough for what we need, and the problems with paths in arguments seem to go away with this. Perhaps it would be enough to install ActivePerl directly so that /bin/perl.exe is the ActivePerl one.&lt;/li&gt;
 &lt;li&gt;Add gtk-doc stubs to your system. Most GNOME libraries (including glib and GTK) require gtk-doc, but I could not find any success story of getting it to work on Windows. I used the instructions by &lt;a href=&quot;http://hans.breuer.org/gtk/build.html&quot;  title=&quot;Hans Breuer&#039;s instructions on building GTK+ on Windows&quot;&gt;Hans Breuer&lt;/a&gt;:

&lt;pre&gt;cd gtk-doc
cp gtk-doc.m4 /gtk/share/aclocal
cp gtkdocize /gtk/bin
mkdir -p /gtk/share/gtk-doc/data/
cp gtk-doc.make /gtk/share/gtk-doc/data&lt;/pre&gt;

  You need a gtk-doc tarball from ftp.gnome.org for this.
 &lt;/li&gt;
 &lt;li&gt;Next, load svn-win32-1.4.5.zip (or a more recent version) from &lt;a href=&quot;http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91&quot;  title=&quot;Subversion Windows Binary downloads&quot;&gt;subversion.tigris.org&lt;/a&gt;, unpack the zip to C:\svn and add /c/svn/bin to the PATH in your &lt;code&gt;~/.profile&lt;/code&gt;. After a relogin or &lt;code&gt;exec bash -l&lt;/code&gt; you should be able to use the SVN client in msys. Try getting glib via &lt;code&gt;svn co http://svn.gnome.org/svn/glib/trunk glib&lt;/code&gt;.&lt;/li&gt;
 &lt;li&gt;The most hacky thing I had to do was changing the /bin/aclocal file. Add

&lt;pre&gt;$file =~ s/^C:\/msys\//\/usr\//;&lt;/pre&gt;

around line 680, right before

&lt;pre&gt;
$map_traced_defs{$arg1} = $file
  if ($macro eq &#039;AC_DEFUN&#039;
      || $macro eq &#039;AC_DEFUN_ONCE&#039;
      || $macro eq &#039;AU_DEFUN&#039;);
&lt;/pre&gt;

Note that you need to adjust &lt;code&gt;C:\/msys\/&lt;/code&gt; if you installed msys elsewhere. Also remember to copy it to &lt;code&gt;/bin/aclocal-1.10&lt;/code&gt; (By the way, NTFS is capable of symlinks somehow, isn&#039;t it)? This is required so that aclocal converts paths starting with &lt;code&gt;C:/msys/share/[...]&lt;/code&gt; to &lt;code&gt;/usr/share/[...]&lt;/code&gt;. Both refer to the same file on disk, but since aclocal does a simple string comparison, it does not recognize this and always creates an empty aclocal.m4, causing autoconf to fail due to not finding any macros. Better solutions to this are very much appreciated.&lt;/li&gt;
 &lt;li&gt;Last, replace &lt;code&gt;AM_CONFIG_HEADER&lt;/code&gt; by &lt;code&gt;AC_CONFIG_HEADER&lt;/code&gt; in glib&#039;s configure.in. autoheader complains about the first. Quick googling seems to suggest that &lt;code&gt;AM_CONFIG_HEADER&lt;/code&gt; is deprecated by &lt;code&gt;AC_CONFIG_HEADER&lt;/code&gt;, but I am not sure. If that is really the case we should probably change glib.&lt;/li&gt;
 &lt;li&gt;Run &lt;code&gt;./autogen.sh&lt;/code&gt; and watch the magic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So far for today, I am going to try GTK+ and glom tomorrow. Perhaps I even get to what I originally wanted to do, making the GTK+ recent chooser guess mime types on Windows. If you try these steps out and run into further problems, I would be glad to hear about it. I am especially looking forward to &lt;a href=&quot;http://www.johnstowers.co.nz/blog/index.php/2007/12/16/jhbuild-anything-on-windows-in-12-steps/&quot;  title=&quot;John Stowers&#039; blog entry about jhbuild on Windows&quot;&gt;John Stowers&#039; work&lt;/a&gt; on jhbuild on Windows. Building GNOME libraries and applications directly from SVN via jhbuild on Windows sounds really cool.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 19 Dec 2007 00:53:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/33-guid.html</guid>
    
</item>
<item>
    <title>Glom on Windows</title>
    <link>http://arbur.net/serendipity/archives/32-Glom-on-Windows.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/32-Glom-on-Windows.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=32</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=32</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;After porting &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;Glom Database Designer&quot;&gt;Glom&lt;/a&gt; to &lt;a href=&quot;http://www.maemo.org&quot;  title=&quot;The maemo platform for Nokia&#039;s internet tablets&quot;&gt;maemo&lt;/a&gt;, the next target was Windows. Glom&#039;s dependencies are already ported to Windows, so getting it to work wasn&#039;t too hard, though some hacks were still necessary to get things going (see the &lt;a href=&quot;http://www.glom.org/wiki/index.php?title=WindowsBuildInstructions&quot;  title=&quot;Glom Windows Build Instructions&quot;&gt;Windows build instructions&lt;/a&gt;). Currently, only the client-only mode of Glom runs on Windows, but I hope the full version follows soon.&lt;/p&gt;

&lt;p&gt;I installed Windows XP within a virtual machine on my laptop to do the port. The good thing is that this doesn&#039;t force me to leave my usual Linux environment, especially when I am not at home where I still have a desktop Linux machine. However, on the other hand compilation is slowed down pretty much, becoming really significant when compiling rather big C++ projects such as &lt;a href=&quot;http://www.gtkmm.org&quot;  title=&quot;The Gtkmm GUI Toolkit&quot;&gt;gtkmm&lt;/a&gt; and glom, probably due to memory constraints.&lt;/p&gt;

&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glomwin32_list.png&#039;&gt;&lt;!-- s9ymdb:32 --&gt;&lt;img width=&#039;110&#039; height=&#039;94&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glomwin32_list.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glomwin32_details.png&#039;&gt;&lt;!-- s9ymdb:33 --&gt;&lt;img width=&#039;110&#039; height=&#039;94&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glomwin32_details.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glomwin32_brokendetails.png&#039;&gt;&lt;!-- s9ymdb:34 --&gt;&lt;img width=&#039;110&#039; height=&#039;94&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glomwin32_brokendetails.serendipityThumb.png&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;

&lt;p&gt;As always, pictures say more than a thousand words, so enjoy. The third screenshot shows a weird problem when scrolling directly after connecting to the database. The bug disappears when minimizing and re-maximizing the window. The screenshots are truncated to the left because the Glom Window requires more space than the 800x600 assigned to the virtual machine for the Small Business Example (which the screenshots are from). I could also use 1024x768 (the laptop has 1280x800), but I like to have a terminal or other windows next to the VM, and I don&#039;t like scrollbars in it either. Other drawbacks the current version suffers from and which I am going to tackle within the next days are listed in the &lt;a href=&quot;http://www.glom.org/wiki/index.php?title=Development/Plans/WindowsPort&quot;  title=&quot;WindowsPort page in the Glom Wiki&quot;&gt;Glom Wiki&lt;/a&gt;.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 05 Dec 2007 00:07:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/32-guid.html</guid>
    
</item>
<item>
    <title>Glom on maemo</title>
    <link>http://arbur.net/serendipity/archives/31-Glom-on-maemo.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/31-Glom-on-maemo.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=31</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;I recently ported &lt;a href=&quot;http://www.glom.org&quot;  title=&quot;Glom database designer&quot;&gt;glom&lt;/a&gt; to the &lt;a href=&quot;http://www.maemo.org&quot;  title=&quot;The maemo platform for Nokia&#039;s internet tablets&quot;&gt;maemo&lt;/a&gt; platform for Nokia&#039;s internet tablets for &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Openismus provides custom software development using Open Source Software&quot;&gt;Openismus&lt;/a&gt;. The major work of this was compiling glom and its dependencies in &lt;a href=&quot;http://www.scratchbox.org&quot;  title=&quot;The scratchbox cross-compilation toolkit&quot;&gt;scratchbox&lt;/a&gt;, i.e. make it build and run without using some convencience API in glibmm and friends to save code size. This leads to a lot of #ifdef statements uglifying the code (especially because you cannot use exceptions for the code to compile with the -fno-exceptions flag), but well, that&#039;s the price you have to pay if you want to use C++ on maemo (you can at least save the #ifdefs if you are writing a maemo-only application, though). It&#039;s still much more convenient than plain C. Note that the maemo version of glom is a client only version, i.e. it does not support self-hosting and developer mode.&lt;/p&gt;

&lt;p&gt;The work has already been committed to glom &lt;a href=&quot;http://svn.gnome.org/viewvc/glom/trunk/&quot;  title=&quot;glom trunk in the GNOME Subversion repository&quot;&gt;trunk&lt;/a&gt;, though I keep making changes in the &lt;a href=&quot;http://svn.gnome.org/viewvc/glom/branches/GLOM_CLIENTONLY/&quot;  title=&quot;The GLOM_CLIENTONLY branch in the GNOME Subversion repository&quot;&gt;GLOM_CLIENTONLY&lt;/a&gt; branch to be able to make debian packages for sardine extras that are based on glom 1.6. With friendly help from &lt;a href=&quot;http://jsschmid.de/&quot;  title=&quot;The blog of my Openismus colleague Johannes Schmid&quot;&gt;Johannes Schmid&lt;/a&gt; and &lt;a href=&quot;http://www.philkern.de/&quot;  title=&quot;My friend Philipp Kern&quot;&gt;Philipp Kern&lt;/a&gt; I managed to build debian packages for glom and its dependencies that are already in sardine extras. Feel free to contact me if there are problems with them, since these are the first ones I ever made, and I am not too familiar with debian based distributions either, because I am not using one.&lt;/p&gt;

&lt;p&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glom-maemo-1.png&#039;&gt;&lt;!-- s9ymdb:29 --&gt;&lt;img width=&#039;110&#039; height=&#039;69&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glom-maemo-1.serendipityThumb.png&quot; alt=&quot;Glom right after startup&quot; /&gt;&lt;/a&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glom-maemo-2.png&#039;&gt;&lt;!-- s9ymdb:30 --&gt;&lt;img width=&#039;110&#039; height=&#039;69&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glom-maemo-2.serendipityThumb.png&quot; alt=&quot;List view of the small business example&quot; /&gt;&lt;/a&gt;&lt;a class=&#039;serendipity_image_link&#039; href=&#039;http://arbur.net/serendipity/uploads/openismus/glom-maemo-3.png&#039;&gt;&lt;!-- s9ymdb:31 --&gt;&lt;img width=&#039;110&#039; height=&#039;69&#039; style=&quot;float: left; border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/glom-maemo-3.serendipityThumb.png&quot; alt=&quot;Details view of the small business example&quot; /&gt;&lt;/a&gt;These screenshots show how the whole thing currently looks like. I made use of the &lt;a href=&quot;http://maemomm.garage.maemo.org/unstable/docs/index.html&quot;  title=&quot;maemomm API documentation&quot;&gt;hildonmm&lt;/a&gt; APIs where appropriate to get a more native maemo look-and-feel, though there is still some work left in that regard. At some places, glom measures size of text to determine the width and/or height of its widgets, using &lt;a href=&quot;http://library.gnome.org/devel/gtk/unstable/GtkWidget.html#gtk-widget-create-pango-layout&quot; title=&quot;API reference for gtk_widget_create_pango_layout&quot;&gt;gtk_widget_create_pango_layout()&lt;/a&gt; and &lt;a href=&quot;http://library.gnome.org/devel/pango/unstable/pango-Layout-Objects.html#pango-layout-get-pixel-size&quot; title=&quot;API reference for pango_layout_get_pixel_size&quot;&gt;pango_layout_get_pixel_size()&lt;/a&gt;. However, this seems to result in the size of the text for the normal GTK+ theme, not the one with the bigger font on maemo, and this renders glom&#039;s guesses about widget sizes rather unusable. I fixed the most obvious uses (like the height of the tree rows in the glom list view) by hardcoding the size, but of course that is not a permanent solution. I am thankful for any hints how to get a correctly setup PangoLayout to do text measuring on maemo.&lt;/p&gt;

&lt;p&gt;The automatic column sizing of GtkTreeView also seems not too useful for glom on maemo (see second screenshot). We probably should rather allow the user to scroll the list view horizontally, and introduce a minimum width for the columns.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 18 Oct 2007 22:55:00 +0200</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/31-guid.html</guid>
    
</item>
<item>
    <title>Speeding up gtkmm</title>
    <link>http://arbur.net/serendipity/archives/24-Speeding-up-gtkmm.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/24-Speeding-up-gtkmm.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=24</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=24</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;According to &lt;a href=&quot;http://arbur.net/code/gtkmm-speedup/gtkmm-table.cc&quot;  title=&quot;gtkmm performance test&quot;&gt;test&lt;/a&gt; test application, gtkmm needs significantly more time when default signal handlers and virtual functions are enabled. What gtkmm basically does is creating a new class inheriting from the corresponding class in GTK and overriding all vfuncs and default signal handlers. In the overridden method, it gets the C++ wrapper object for the C object (if any) and casts it to the actual type (e.g. Gtk::Window). As an optimization it checks already whether the C++ object is a custom one that derives from the gtkmm one. If not, the vfunc could not have been overridden anyway and we just call the parent&#039;s (GtkWindow) vfunc implementation. Otherwise, a C++ virtual function is called that classes deriving from Gtk::Window might override. This way, GObject vfuncs can be overridden in the C++ code.&lt;/p&gt;

&lt;p&gt;For &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Openismus GmbH&quot;&gt;Openismus&lt;/a&gt;, I tried to find out what makes this procedure slow. To do so I used &lt;a href=&quot;http://valgrind.org/info/tools.html#callgrind&quot;  title=&quot;The callgrind tool of valgrind&quot;&gt;callgrind&lt;/a&gt; to collect some profiling data from the test program mentioned above. Then, I installed &lt;a href=&quot;http://www.trolltech.com/products/qt&quot;  title=&quot;Qt widget toolkit&quot;&gt;Qt&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Kdelibs&quot;  title=&quot;Wikipedia article on the kdelibs framework&quot;&gt;kdelibs&lt;/a&gt; just to be able to use &lt;a href=&quot;http://kcachegrind.sourceforge.net/cgi-bin/show.cgi&quot;  title=&quot;KCachegrind profiling visualizer&quot;&gt;kcachegrind&lt;/a&gt; to visualize that data. Wouldn&#039;t someone like to write a kcachegrind-like application for GNOME? &lt;img src=&quot;http://arbur.net/serendipity/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;img width=&#039;773&#039; height=&#039;472&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/kcachegrind1.png&quot; alt=&quot;&quot; /&gt;

&lt;p&gt;I had a look at Container_Class::forall_vfunc because this was the one called most times (64 025 calls, to be accurate). kcachegrind shows that 3.10% of the total time was spent in forall_vfunc (actually, its not time but CPU cycles or something, but as a physicist I assume they are proportional...). Out of these 3.10%, 1.48% are spent in dynamic_cast&amp;lt;&amp;gt;, another 0.99% in ObjectBase::_get_current_wrapper(). The latter call looks up the C++ object from the C object, and the dynamic_cast casts it from ObjectBase to the actual type. Both calls are at the very beginning of the function. Also of notice is that 2.50% of the overall time is in dynamic_cast&amp;lt;&amp;gt;. This means that just the forall_vfunc issues more than the half of all dynamic_casts in the whole program, not counting all the other vfuncs.&lt;/p&gt;

&lt;p&gt;What I tried out now is to do the dynamic_cast only if the C++ object is derived from the gtkmm class. In the test application, this is only the case for ExampleWindow but not for all the other widgets that are created. If the object is not derived, the actual C++ type is not needed because we just call the parent vfunc anyway. The result looks like this:&lt;/p&gt;

&lt;img width=&#039;773&#039; height=&#039;239&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/kcachegrind2.png&quot; alt=&quot;&quot; /&gt;

&lt;p&gt;The time spent in forall_vfunc is now nearly only the half as before. It does no more call to dynamic_cast. This is because all containers on which the forall vfunc was called are not overridden by a C++ class. Other vfuncs, as expose_event, still showed a small amount of dynamic_cast calls. These were the expose events the Window received because of being derived by ExampleWindow. There is a &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=418571&quot;  title=&quot;Bugzilla bug about doing dynamic_cast only when necessary&quot;&gt;bug&lt;/a&gt; open about this.&lt;/p&gt;

&lt;p&gt;The next thing I had a look at was the ObjectBase::_get_current_wrapper() call. kcachegrind shows a total amount of 1.70% out of which 0.14% are spent in the function itself (and not in functions being called by get_current_wrapper() in turn). However, the function does nothing more than calling g_object_get_qdata on the given GObject to get the C++ wrapper. Therefore, it seems that a significant amount of time is lost due to the overhead of a function call here because the function is often called (106 674 times), so I tried inlining it:&lt;/p&gt;

&lt;img width=&#039;773&#039; height=&#039;234&#039; style=&quot;border: 0px; padding-left: 5px; padding-right: 5px;&quot; src=&quot;http://arbur.net/serendipity/uploads/openismus/kcachegrind3.png&quot; alt=&quot;&quot; /&gt;

&lt;p&gt;Any calls to get_current_wrapper() disappeared now. Instead, g_object_get_qdata() shows up directly in forall_vfunc. A good way to verify that the compiler actually inlined the function call. Again, there is a performance gain, but way smaller.&lt;/p&gt;

&lt;p&gt;So long, but what about actual execution times? When running the test application, there was no noticeable speedup. However, when running under &lt;a href=&quot;http://www.valgrind.org&quot;  title=&quot;Valgrind debugging tool suite&quot;&gt;valgrind&lt;/a&gt; (meaning about 10-30 times slower), it finished one or two seconds earlier. To conclude, for most users the changes will probably not be visible, but for large applications and/or less powerful machines gtkmm applications might run a bit more smoothly now.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Fri, 16 Mar 2007 16:52:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/24-guid.html</guid>
    
</item>
<item>
    <title>My GNOME Account is ready</title>
    <link>http://arbur.net/serendipity/archives/18-My-GNOME-Account-is-ready.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/18-My-GNOME-Account-is-ready.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=18</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=18</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;Today I got a GNOME developer account which I requested December 1st. I guess this took longer than usual, probably also due to the GNOME SVN migration which happend on December 29th. Also thanks to &lt;a href=&quot;http://www.murrayc.com&quot;  title=&quot;Murray&#039;s web pages&quot;&gt;Murray Cumming&lt;/a&gt; who bugged them multiple times. This means I can directly check in stuff into GNOME SVN (which will mostly be related to &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Openismus GmbH - Custom software development using Open-source software&quot;&gt;Openismus&lt;/a&gt;). The first commit I did was adding libgnomedbmm to the gnomemm SVN module.&lt;/p&gt;

&lt;p&gt;libgnomedbmm is a C++ wrapper for &lt;a href=&quot;http://www.gnome-db.org&quot;  title=&quot;GNOME database related widgets&quot;&gt;libgnomedb&lt;/a&gt; which I have been working on in the last weeks for Openismus. Wrapping the C API in a GObject-based project (like libgnomedb) is normally pretty easy because most code is auto-generated by gmmproc included in &lt;a href=&quot;http://www.gtkmm.org&quot;  title=&quot;C++ wrappers for GTK+ and Glib&quot;&gt;glibmm&lt;/a&gt;. However, this was the first time that libgnomedb (and the underlaying library that provides access to the database, libgda) have been seriously wrapped for a higher level language, so some things had (and have still) to be corrected in the C libraries to make them easily wrappable: Signals and Properties should be declared with the correct type, not just G_TYPE_POINTER if it is GObject-derived or a boxed type. Also, the _new-functions of each type should just be wrappers around g_object_new with some construction properties set. This also allows subclassing them (note that the subclass does not call your _new function) and subclassing is actually what the C++ wrapper does to allow overriding vfuncs and default signal handlers.&lt;/p&gt;

&lt;p&gt;In other News, I also got a &lt;a href=&quot;http://msdn.microsoft.com/academic/&quot;  title=&quot;MSDN Academic Alliance&quot;&gt;MSDNAA&lt;/a&gt; account today (which I requested two to three months ago). This allows me to get some Microsoft software for free (as in beer) via the university. What do I actually want with Microsoft software, I hear you ask. Currently, I use &lt;a href=&quot;http://www.evernote.com/&quot;  title=&quot;Note-taking software for Windows&quot;&gt;EverNote&lt;/a&gt; as a virtual notepad. Playing around with ink notes and my graphics tablet (a &lt;a href=&quot;http://www.wacom-europe.com/int/products/penpartner2/&quot;  title=&quot;Product page from Wacom&quot;&gt;Wacom PenPartner2&lt;/a&gt;) makes fun and is nearly as productive as with a regular pen. There is a similar Application from Microsoft called &lt;a href=&quot;http://office.microsoft.com/en-us/onenote/default.aspx&quot;  title=&quot;Microsoft OneNote product page&quot;&gt;OneNote&lt;/a&gt; which I would like to compare to EverNote. Actually, I would be happy to have a free Evernote-like application for linux, but that&#039;s another story. Using MSDNAA I am also able to make gobby binaries using Microsoft Visual Studio and compare the result (code size, performance) to what gcc produces. Finally, I can get a free look into Windows Vista as soon as it comes out (If I want to blame it, I should have had a look at it at least). And if it fixes some annoyances of XP, I could also keep it.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 16 Jan 2007 22:41:00 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/18-guid.html</guid>
    
</item>
<item>
    <title>Working for Openismus</title>
    <link>http://arbur.net/serendipity/archives/13-Working-for-Openismus.html</link>
            <category>Openismus</category>
    
    <comments>http://arbur.net/serendipity/archives/13-Working-for-Openismus.html#comments</comments>
    <wfw:comment>http://arbur.net/serendipity/wfwcomment.php?cid=13</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://arbur.net/serendipity/rss.php?version=2.0&amp;type=comments&amp;cid=13</wfw:commentRss>
    

    <author>nospam@example.com (Armin Burgmeier)</author>
    <content:encoded>
    &lt;p&gt;Since yesterday, I am part-time employee of &lt;a href=&quot;http://www.openismus.com&quot;  title=&quot;Openismus GmbH&quot;&gt;Openismus GmbH&lt;/a&gt;. Openismus provides custom software development using open source software. I am working five to ten hours a week which fits nice into my time management, especially because I can write some code during idle time at the university and on the way from/to Karlsruhe. I am very happy to earn money for writing (open source) software since this is one of the few things that actually make fun &lt;em&gt;and&lt;/em&gt; one is paid for.&lt;/p&gt;

&lt;p&gt;My first task was to update libgdamm, the C++ bindings to &lt;a href=&quot;http://www.gnome-db.org&quot;  title=&quot;Gnome database architecture&quot;&gt;libgda&lt;/a&gt; so they build again with the newest version (from CVS HEAD) from libgda. It was pretty straight-forward since gmmproc complains when the signature of a function has changed or a function has been removed (of course after having recreated the method definition file). There was only one thing that was a bit strange: The C header gda-dict.h defines some macros that call functions from another header called gda-dict-reg-aggregates.h. However, it did not include that file and, which was even more surprising, the function declarations in gda-dict-reg-aggregates.h did not have a G_BEGIN_DECLS/G_END_DECLS pair around them. This means when I include that file myself, I get linker errors because the extern &quot;C&quot; stuff is missing.&lt;/p&gt;

&lt;p&gt;Yes, I am aware that this is bleeding-edge software and it also might as well be a problem with my understanding of those files. If it would not be that late, I would look for and poke the libgda mailing list about this, but I am horribly tired by now since yesterday, I already slept only four hours... Anyway, a &lt;a href=&quot;http://bugzilla.gnome.org/show_bug.cgi?id=380662&quot;  title=&quot;Patch that updates libgdamm to be compatible with CVS HEAD of libgda&quot;&gt;first patch&lt;/a&gt; is available that ignores this aggregate stuff (examples build fine without it, so it cannot be that important) and makes libgdamm compile again.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 29 Nov 2006 23:01:22 +0100</pubDate>
    <guid isPermaLink="false">http://arbur.net/serendipity/archives/13-guid.html</guid>
    
</item>

</channel>
</rss>