A blog by Jos van den OeverA blog by Jos van den Oeverhttp://www.vandenoever.info//index.htmlNew job, but no Akademyhttp://www.vandenoever.info/blog/2019/09/06/new-job.html<h2 xmlns="http://www.w3.org/1999/xhtml" id="nlnet">NLnet</h2>
<p xmlns="http://www.w3.org/1999/xhtml">Since June of this year, I’m working for <a href="https://nlnet.nl/">NLnet foundation</a>. NLnet gives grants to people to improve the internet.</p>
2019-09-06Qt applications with Cargohttp://www.vandenoever.info/blog/2018/10/30/building_qt_apps_with_cargo.html<p xmlns="http://www.w3.org/1999/xhtml">This blog shows how Qt applications can be built with Cargo. The goal is to make compiling them as simple as installing Qt and running</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="ex">cargo</span> build</a></code></pre></div>
2018-10-30Browsing your mail with Rust and Qthttp://www.vandenoever.info/blog/2018/09/16/browsing_your_mail_with_rust_and_qt.html<p xmlns="http://www.w3.org/1999/xhtml">Let’s write a mail viewer with Rust and Qt. This is another blog about <a href="https://cgit.kde.org/rust-qt-binding-generator.git/about/">Rust Qt Binding Generator</a>, the project that lets you add a Qt GUI to your Rust code, or if you will, add Rust to your Qt program.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Rust Qt Binding Generator (Logo by Alessandro Longo)" src="https://www.vandenoever.info/blog/2017/09/04/demo/rust_qt_binding_generator.svg" /><figcaption>Rust Qt Binding Generator (Logo by Alessandro Longo)</figcaption>
</figure>
2018-09-16To do a Rust GUIhttp://www.vandenoever.info/blog/2018/06/09/to-do-a-rust-gui.html<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Rust Qt Binding Generator (Logo by Alessandro Longo)" src="../../../2017/09/04/demo/rust_qt_binding_generator.svg" /><figcaption>Rust Qt Binding Generator (Logo by Alessandro Longo)</figcaption>
</figure>
<p xmlns="http://www.w3.org/1999/xhtml">Rust Qt Binding Generator lets you combine Rust code with a Qt<sup><a href="#qt">1</a></sup> graphical application. A <a href="../../../2017/09/10/time_for_rust_and_qml.html">previous blog</a> shows how to make a simple clock. It’s a good idea to read that post before reading this more advanced post, because in this post we are getting serious.</p>
2018-06-09OpenDocument Format Plugfest and test sitehttp://www.vandenoever.info/blog/2017/10/09/odf-test-site.html<h1 xmlns="http://www.w3.org/1999/xhtml" id="odf-plugfest-2017">ODF Plugfest 2017</h1>
<p xmlns="http://www.w3.org/1999/xhtml">Tomorrow, Tuesday 10th of October, we will be having the 13th ODF Plugfest. It is being held in Rome and <a href="https://beta.opendocumentformat.org/wiki/en/plugfest">on-line</a>.</p>
2017-10-09Rust and QML: a timely examplehttp://www.vandenoever.info/blog/2017/09/10/time_for_rust_and_qml.html<p xmlns="http://www.w3.org/1999/xhtml">It’s been a week since I <a href="/blog/2017/09/04/rust_qt_binding_generator.html">announced</a> Rust Qt Binding Generator.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Rust Qt Binding Generator (Logo by Alessandro Longo)" src="https://www.vandenoever.info/blog/2017/09/04/demo/rust_qt_binding_generator.svg" /><figcaption>Rust Qt Binding Generator (Logo by Alessandro Longo)</figcaption>
</figure>
2017-09-10Rust Qt Binding Generatorhttp://www.vandenoever.info/blog/2017/09/04/rust_qt_binding_generator.html<p xmlns="http://www.w3.org/1999/xhtml"><em>This blog post is the announcement of Rust Qt Binding Generator. The project is under review for inclusion in KDE. You can get the source code <a href="https://cgit.kde.org/rust-qt-binding-generator.git/">here</a>.</em></p>
<p xmlns="http://www.w3.org/1999/xhtml"><em>Scroll to the bottom for the screenshots.</em></p>
2017-09-04Akademy group photo time serieshttp://www.vandenoever.info/blog/2017/08/09/akademy-group-photo-time-series.html<p xmlns="http://www.w3.org/1999/xhtml">Akademy is the oldest yearly meeting of KDE programmers. This year I attended for the tenth time.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Dublin in 2006 was my first Akademy. I will never forget it. It was my first time meeting the people from whom I learned so much.</p>
2017-08-09Developing KDE with Dockerhttp://www.vandenoever.info/blog/2017/07/23/developing-kde-with-docker.html<p xmlns="http://www.w3.org/1999/xhtml">Docker can help you to quickly set up a development environment for working on a software project. This is great for getting new contributors up to speed quickly. I’ve recently discovered how nice this is and want to share how I use Docker.</p>
<p xmlns="http://www.w3.org/1999/xhtml">KDE projects often have desktop services, mimetypes and plugins. Ideally, these are installed system-wide. During development it is not convenient to change your main environment just to test your software. This is where Docker comes in. Docker is the most popular Linux container system. It gives you a system that is separate from your main system and which you can rewind when you break it.</p>
2017-07-23Talk proposals Akademy 2017http://www.vandenoever.info/blog/2017/04/09/akademy-2017.html<p xmlns="http://www.w3.org/1999/xhtml">Springtime is here. So start planning for all the summer conferences. The KDE yearly summer conference, Akademy, takes place in the south of Spain from July 22nd to July 27th.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Akademy is a great opportunity for all community members to tell their fellow KDE-ers about the things they have been working on. It provides a friendly environment where people contribute to the wonderful projects of KDE.</p>
2017-04-09A simple Rust GUI with QMLhttp://www.vandenoever.info/blog/2017/02/17/a-simple-rust-gui-with-qml.html<p xmlns="http://www.w3.org/1999/xhtml">You may have heard of Rust by now. The new programming language that “pursuis the trifecta: safety, concurrency, and speed”. You have to admit, even if you don’t know what trifecta means, it sounds exciting.</p>
<p xmlns="http://www.w3.org/1999/xhtml">I’ve been toying with Rust for a while and have given a presentation at QtCon <a href="https://conf.qtcon.org/en/qtcon/public/events/419">comparing C++ and Rust</a>. I’ve been meaning to turn that presentation into a blog post. This is not that blog post.</p>
2017-02-17Testing ODF on Document Freedom Dayhttp://www.vandenoever.info/blog/2016/03/30/testing_odf_on_document_freedom_day.html<p xmlns="http://www.w3.org/1999/xhtml">Today is <a href="https://documentfreedom.org/">Document Freedom Day</a>, the day in the year on which we pay extra attention to open standards.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Document Freedom Day" src="dfd2016today.jpg" /><figcaption>Document Freedom Day</figcaption>
</figure>
2016-03-30Ideas for OpenDocumenthttp://www.vandenoever.info/blog/2015/11/15/ideas-for-odf.html<p xmlns="http://www.w3.org/1999/xhtml">At the LibreOffice conference in Aarhus, Denmark, last September, I <a href="http://conference.libreoffice.org/2015/the-program/talks/migration-user-experiance-and-marketing/#The%20Future%20of%20ODF">talked about the future of ODF</a> (<a href="JosVanDenOevenodffuture.pdf">slides</a>). OpenDocument, the file format for office applications, is currently at version 1.2. What should go into version 1.3 and later? I presented nine ideas and measured the applause that each idea got. The results of the measurement can be seen in the table at the bottom of this post. (The applause volume was read by playing the audio of the presentation in Audacity.)</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="applause meter" src="applause-meter.png" /><figcaption>applause meter</figcaption>
</figure>
2015-11-15Centimeters and Points are the besthttp://www.vandenoever.info/blog/2015/08/24/cm-and-pt-are-the-best.html<p xmlns="http://www.w3.org/1999/xhtml">What is the best unit? Of course there is no best unit. But for some purposes some units are better than others.</p>
<p xmlns="http://www.w3.org/1999/xhtml">In digital documents, there is often a choice of units with which to specify absolute lengths. CSS, SVG and ODF have a choice of inches (in), centimeters (cm), millimeters (mm), picas (pc), points (pt) and pixels (px). Editing files with different computer programs or different versions of programs can lead to mixed use of units.</p>
2015-08-24Painting on a rotating dischttp://www.vandenoever.info/blog/2015/08/02/painting-on-a-rotating-disc.html<p xmlns="http://www.w3.org/1999/xhtml">At <a href="https://akademy.kde.org/2015/">Akademy 2015</a> in A Coruna, I visited the museum <a href="http://mc2coruna.org/domus/">Domus</a>. This had an exhibit on the working of the brain. A huge touch screen was running a simulation of a rotating disc on which visitors could ‘paint’ with their fingers. The simulation was there to talk about creativity and the brain. With my limited skill, I created the following piece of art:</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="paintkde.jpg"><img alt="kde on a disc" src="paintkde.jpg" /></a></p>
2015-08-02Translating Haskell to C++ metaprogramminghttp://www.vandenoever.info/blog/2015/07/12/translating-haskell-to-c++.html<p xmlns="http://www.w3.org/1999/xhtml">Haskell and C++ are very different programming languages. Haskell is purely functional and C++ is imperative. While ‘normal’ C++ is imperative, C++ metaprogramming is purely functional, just like Haskell. This blog shows examples of Haskell code that I’ve translated to C++.</p>
<h2 xmlns="http://www.w3.org/1999/xhtml" id="why-would-you-do-this">Why would you do this?</h2>
2015-07-12Valid, literal XML in C++ with Blasienhttp://www.vandenoever.info/blog/2015/07/05/literal-xml-in-c++.html<p xmlns="http://www.w3.org/1999/xhtml">Creating and processing XML feels awkward in most programming languages. With Blasien, a tiny C++11 header library, XML in C++ feels easy and natural. As an extra the XML that is written is mostly validated at compile time.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Here is an example:</p>
2015-07-05Typing together alonehttp://www.vandenoever.info/blog/2015/05/30/typing-together-alone.html<iframe xmlns="http://www.w3.org/1999/xhtml" src="editor/splitscreeneditor.html" style="width:100%;min-width:1000px;height:600px"></iframe>
<p xmlns="http://www.w3.org/1999/xhtml">Editing ODT documents can be done in the webbrowser with <a href="http://webodf.org">WebODF</a>. This experience can be shared with others by doing collaborative editing. Why edit documents alone when you can do it together, right?</p>
2015-05-30Comparing text style support in Calligra, Abiword and LibreOfficehttp://www.vandenoever.info/blog/2014/11/30/comparing-text-style-support-calligra-abiword-and-libreoffice.html<p xmlns="http://www.w3.org/1999/xhtml">This weekend I spent time on preparing for the ODF Plugfest <a href="../25/odfautotests-gearing-towards-10th-odf-plugfest-london.html">again</a>. The test software <a href="https://github.com/vandenoever/odfautotests">ODFAutoTests</a> now has many more tests. Most new tests are for text styles. I’ve created tests for each of the possible attributes in <a href="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part1.html#__RefHeading__1416402_253892949">&lt;style:text-properties/&gt;</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">You can have a look at the results <a href="http://www.vandenoever.info/tmp/odfautotests/publish/report.html">here</a>. If you want to recreate the tests, you can download a <a href="odftester.jar">compiled version</a> of the test software. It can be run like this:</p>
2014-11-30ODFAutoTests gearing up towards the 10th ODF Plugfest in Londonhttp://www.vandenoever.info/blog/2014/11/25/odfautotests-gearing-towards-10th-odf-plugfest-london.html<p xmlns="http://www.w3.org/1999/xhtml">In two weeks time, users and developers of <a href="http://www.opendocumentformat.org/">OpenDocument Format</a> software will meet up for a <a href="http://plugfest.opendocumentformat.org/2014-london/">two day ODF plugfest in London</a>. In preparation of the plugfest, I have spent last weekend, refreshing <a href="https://github.com/vandenoever/odfautotests/blob/master/doc/01_introduction.md">ODFAutoTests</a>. ODFAutoTests is a tool for creating test documents for ODF software and running these documents through the different implementations. If you want to help out with improving OpenDocument Format, please come to the plugfest, or participate online. Writing tests with ODFAutoTests is a great way to help make the 10th ODF Plugfest a success.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><img src="10thplugfestlogo-home.png" /></p>
2014-11-25Lazy declarative programming in C++11http://www.vandenoever.info/blog/2014/08/30/lazy-declarative-programming-c11.html<p xmlns="http://www.w3.org/1999/xhtml"><code>make</code> does it, Haskell does it, spreadsheets do it, QML can do it and below I explain how to do it with C++11: <a href="http://en.wikipedia.org/wiki/Declarative_programming">declarative programming</a>. And not just any declarative programming, but my favorite kind: <a href="http://en.wikipedia.org/wiki/Lazy_evaluation">lazy evaluation</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">I have written <a href="wrap.cpp">a few C++ classes</a> that wrap imperative C and C++ functions into functional expressions. A simple example illustrates the difference between the common imperative programming and declarative programming.</p>
2014-08-30Easier OpenDocument coding in Calligra and lovely junior jobshttp://www.vandenoever.info/blog/2013/07/30/easier-opendocument-coding-calligra-and-lovely-junior-jobs.html<p xmlns="http://www.w3.org/1999/xhtml">The office suite Calligra can save many file formats, but the main one is OpenDocument Format. With <a href="https://git.reviewboard.kde.org/r/111773/">a proposed improvement</a>, it can be easier than ever to code on Calligra.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The OpenDocument files (odt, ods, odp) that Calligra writes are zip files with XML documents and images. The XML documents have a schema, a set of rules that say what goes where in the files. Here is a small sample of ODF, indented for readability:</p>
2013-07-30Akademy againhttp://www.vandenoever.info/blog/2013/07/11/akademy-again.html<p xmlns="http://www.w3.org/1999/xhtml">Last year I skipped Akademy and felt sorry about that. So this year I simply have to go. It will be great to immerse in the talks about and related to KDE. My interest is currently on getting things done, semantic technologies and file formats. It’s holiday, so a bit less JavaScript for a week and a bit more of everything else.</p>
<p xmlns="http://www.w3.org/1999/xhtml">We just put a browser based <a href="http://www.webodf.org/blog/2013-07-10.html">WebODF editor demo</a> live, so I can enjoy Akademy and let my mind linger on different topics for a week.</p>
2013-07-11Is that really the source code for this software?http://www.vandenoever.info/blog/2013/06/19/really-source-code-software.html<p xmlns="http://www.w3.org/1999/xhtml">I’ve been looking into how easy it is to confirm that a binary package corresponds to a source package. It turns out that it is not easy at all. So I’ve written down my findings in this blog entry.</p>
<p xmlns="http://www.w3.org/1999/xhtml">I think that the topic of reproducible builds is one that is of fundamental importance to the free software and larger community; the trustworthiness of binaries based on source code is a topic quite neglected. We know about tivoization and the reality that code can be open yet unchangeable. What is not appreciated in sufficient measure is that parties can, quite unchecked, distribute binaries that do not correspond to the alleged source code.</p>
2013-06-19Bup, the backup tool with a clever ideahttp://www.vandenoever.info/blog/2011/06/02/bup-backup-tool-clever-idea.html<p xmlns="http://www.w3.org/1999/xhtml">What backup tool are you using? You are using one, right? I am using one these days, namely git. My entire home directory is collection of git repositories. Using git for backups is great because it is easy to synchronize data. It is also easy to restore files without needing access to the backup server. I keep my .git directories in a separate partition and symlink them into the right position. Every few days I push all my git repositories to my backup server that has a user called <code>git</code> with <code>git-shell</code> as the shell setting. So sending backups to the server can happen safely over ssh.</p>
<p xmlns="http://www.w3.org/1999/xhtml">There are downsides to using git though. The main problem becomes obvious if you work with large files. I do not have a lot of large files, but I do have a few virtual machines. One way of backing those up is to put them on a disk that supports taking snapshots. ZFS or <code>lvmcreate --snapshot</code> are solutions for this. But what if you want to backup the different versions of large files to a different storage medium?</p>
2011-06-02WebODF on Android deviceshttp://www.vandenoever.info/blog/2011/05/31/webodf-android-devices.html<p xmlns="http://www.w3.org/1999/xhtml">Today the WebODF project released an Android app. You can get it from the <a href="https://market.android.com/details?id=org.webodf">Android Market</a> and soon from <a href="http://fdroid.org">FDroid.org</a>. This is just the start. Viewing and editing office documents and in particular ODF files should be possible on all mobile devices. In the WebODF project we want to make this possible.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The Android application is 95% generic WebODF JavaScript and 5% Android specific Java code. For future ports to iPhone, iPad, MediaWiki and many other environments we will put most functionality in the shared JavaScript library and keep the application specific code to a minimum.</p>
2011-05-31File selector in QML and PySidehttp://www.vandenoever.info/blog/2011/05/29/file-selector-qml-and-pyside.html<p xmlns="http://www.w3.org/1999/xhtml">Today I wrote a file selector in QML. This was not trivial because QML has no standard element for drilling down in a tree model. So I wrote one. A bit of Python was needed to expose the file system to the QML as a data model.</p>
<p xmlns="http://www.w3.org/1999/xhtml">I’ve played with <a href="https://lwn.net/Articles/380983/">Bup</a> a bit lately and wanted to write a GUI for it. Normal Qt widgets would do, but when the bup developers asked if it would run on MeeGo, I had a look at QML.</p>
2011-05-29WebODF on Android and beyondhttp://www.vandenoever.info/blog/2011/03/06/webodf-android-and-beyond.html<p xmlns="http://www.w3.org/1999/xhtml">ODF support on phones and tablets is not good right now. Work is being done to improve this by the Calligra project, but <a href="http://webodf.org/">WebODF</a> can provide a solution too. To prove this, I built a small wrapper application that gives Android the ability to read ODF files. This application is available in the <a href="http://gitorious.org/odfkit/webodf/trees/master/programs/android">WebODF repository</a> and I’ve also put the <a href="http://www.webodf.org/redmine/attachments/download/3/WebODF.apk">installable application</a> online.</p>
<p xmlns="http://www.w3.org/1999/xhtml">To reach more phones and tablets, such as the iPhones, iPad, Blackberry and Symbian phones, we could use <a href="http://www.phonegap.com/about">PhoneGap</a>. Making a PhoneGap application from WebODF code is a nice way to get started on cross-device development and to help out with the adoption of ODF. If you want to give this a try, <a href="http://gitorious.org/odfkit/webodf">check out the WebODF code</a>, <a href="http://www.phonegap.com/">get PhoneGap</a>, read the code for the Android example to see how to adapt the WebODF runtime and get hacking. Good luck and have fun!</p>
2011-03-06WebODF gains round-tripping supporthttp://www.vandenoever.info/blog/2011/03/01/webodf-gains-round-tripping-support.html<p xmlns="http://www.w3.org/1999/xhtml">In my <a href="../../02/23/converting-odf-documents-pdf-webodf.html">previous blog</a> I talked about converting ODF files to PDF files with <a href="http://webodf.org/">WebODF</a>. This is a functionality that is generally useful, but is also one that lets <a href="http://officeshots.org">OfficeShots</a> compare WebODFs ODF rendering to that of other office suites.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Another useful feature is round-tripping of ODF. Round-tripping is the process of loading an ODF file in a program and subsequently saving it again. It is an ODF to ODF conversion. OfficeShots uses round-tripping to see if an office suite generates valid ODF. In WebODF, the original ODF file is barely modified. The XML contents of the ODF is parsed and serialized in this step. Any bugs in this process would be exposed by roundtripping.</p>
2011-03-01Converting ODF documents to PDF with WebODFhttp://www.vandenoever.info/blog/2011/02/23/converting-odf-documents-pdf-webodf.html<p xmlns="http://www.w3.org/1999/xhtml">It is quite common that one wants to send <a href="https://en.wikipedia.org/wiki/OpenDocument">ODF</a> files to people that lack the software to display ODF. One workaround is to convert the ODF to PDF. Most office suites that support ODF can export to PDF. To compare how different office suites do this conversion one can use the website <a href="http://officeshots.org/">OfficeShots</a>. This website offers the ability to perform this conversion in many office suites at once and to compare the results.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://webodf.org">WebODF</a> wants to play with the grown-ups. So I have extended WebODF with the ability to convert from ODF to PDF. Here is a small script that shows how to do this conversion for a file <code>/home/user/file.odt</code>:</p>
2011-02-23WebODF at FOSDEMhttp://www.vandenoever.info/blog/2011/02/17/webodf-fosdem.html<p xmlns="http://www.w3.org/1999/xhtml">The yearly FOSDEM was excellent as always. I could not attend all talks; mine was on sunday afternoon and as usual I was still improving it at the conference itself. Nevertheless, I spoke with many people and saw some very good presentations. Now that the videos are online, I will mention some of them with a link to the video footage.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.fosdem.org/2011/schedule/event/software_freedom">Why Political Liberty Depends on Software Freedom More Than Ever</a> (<a href="">video</a>).</p>
2011-02-17WebODF at FOSDEMhttp://www.vandenoever.info/blog/2011/02/05/webodf-fosdem.html<p xmlns="http://www.w3.org/1999/xhtml">Currently I am enjoying FOSDEM, the excellent Free Software conference in Brussels. Tomorrow I will give a presentation “<a href="http://fosdem.org/2011/schedule/event/webodf">WebODF: an office suite built on browser technology</a>” about <a href="http://webodf.org/">WebODF</a>. If you want a preview, you can look at <a href="https://demo.webodf.org/demo/video.html">a screencast</a> about it.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="I’m going to FOSDEM" src="going-to_0.png" /><figcaption>I’m going to FOSDEM</figcaption>
</figure>
2011-02-05JavaScript: keep it working in different runtimeshttp://www.vandenoever.info/blog/2011/01/03/javascript-keep-it-working-different-runtimes.html<p xmlns="http://www.w3.org/1999/xhtml">The programming language JavaScript is seeing more and more use. Software written in it can run in many different environments. Not only do web browsers support it, there are quite a few programming environments that can integrate and run JavaScript code. Qt has support for it with the QtScript module. GNOME has JavaScript bindings via gjs. Node.JS is gaining popularity on the server and Java has the Rhino runtime.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Support for the basic language features of JavaScript is good among these runtimes. You can have a look at the list of dialects of <a href="http://en.wikipedia.org/wiki/ECMAScript">JavaScript/ECMAScript</a> to see that “ECMA-262, edition 3” is the most common specification that is implemented. Nevertheless, each of these environments has different facilities for accessing parts of the environment they are running in. Modularizing the code, access to the file system, logging, starting a new execution thread, running unit tests, these are but a few of the use cases for which there is no common solution.</p>
2011-01-03OdfKit Hack Week day 3http://www.vandenoever.info/blog/2010/06/25/odfkit-hack-week-day-3.html<p xmlns="http://www.w3.org/1999/xhtml">It’s Friday and day three of the <a href="http://www.blogs.kde.org/node/4249">OdfKit Hack Week</a>. So what did we do all day besides folding balloons, talking to men in wooden shoes and eating pancakes? We actually implemented the style inheritance I <a href="http://www.blogs.kde.org/node/4254">blogged about yesterday</a>. Background images are now supported too. There was some philosophizing over APIs and <a href="http://gitorious.org/odfkit/webodf/">we published some code</a> (recommended if are interested in (Qt)WebKit or ODF). Since the weekend is here we’ll not go into details too much, after all you can <a href="http://gitorious.org/odfkit/webodf/">download the Qt client code</a> or try <a href="https://demo.webodf.org/demo/">the online demo</a> in a WebKit or Firefox browser, but we will show some images. The first image shows that background images are working in the Qt client now and the second screenshot shows the first part of the ODF 1.2 specification odt format opened in OpenOffice, our WebKit based viewer and KOffice. <img src="odf-bgimage-norep.png" /> <a href="https://demo.webodf.org/demo/odf.html#./kofficetests/specs/OpenDocument-v1.2-part1-cd04.odt"><img src="compare.png" /></a></p>
2010-06-25OdfKit Hack Week day 2http://www.vandenoever.info/blog/2010/06/24/odfkit-hack-week-day-2.html<p xmlns="http://www.w3.org/1999/xhtml">Today was a day of style in the <a href="../22/odfkit-hack-week-starts.html">OdfKit Hack Week</a>. Enjoying the sun with style. Watching a soccer game with style. Watching the chicken spagetti races with style and most importantly adding a touch of style to OdfKit cum suis.</p>
<p xmlns="http://www.w3.org/1999/xhtml">We ended the morning slightly listless because lists style in CSS is not as easy as we’d like. The CSS code I gave for lists <a href="../23/odf-visualization-using-webkit.html">yesterday</a> was not tested and seemed correct to me, but neither WebKit, nor Firefox liked it much. After much ado with counter-reset and counter-increment we discovered that, for now, the simple</p>
2010-06-24ODF visualization using WebKithttp://www.vandenoever.info/blog/2010/06/23/odf-visualization-using-webkit.html<p xmlns="http://www.w3.org/1999/xhtml">Today is day 1 of of the <a href="../22/odfkit-hack-week-starts.html">OdfKit Hack Week</a>. We wrote a list of things we want to achieve this week. In order to avoid embarrassment, we’ll spare you the details and go straight through to an explanation of how you can use WebKit (or any modern browser) to visualize ODF documents. The general idea is to incorporate the ODF XML into a live HTML document.</p>
<h1 xmlns="http://www.w3.org/1999/xhtml" id="step-0-load-content-and-styles-into-an-html-document">Step 0: load content and styles into an HTML document</h1>
2010-06-23OdfKit Hack Week startshttp://www.vandenoever.info/blog/2010/06/22/odfkit-hack-week-starts.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.odfkit.org">OdfKit</a> is a project that reuses <a href="http://webkit.org">WebKit</a> technology in a toolkit for working with <a href="http://en.wikipedia.org/wiki/OpenDocument">ODF</a> office documents. <a href="http://www.kogmbh.com/">KO GmbH</a> is sponsored by <a href="http://nlnet.nl/">NLnet</a> to work on OdfKit for three months. This week, Chani, who is on her way to Akademy, is working with me on OdfKit and since she’s here an entire week, we’re calling it OdfKit Hack Week.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The scope of OdfKit was formulated at Gran Canaria Desktop Summit 2009 and this month is the first time that actual code is going in. OdfKit was born as a reaction to a number of issues. On the one hand there is a need for a cross-platform library to easily add ODF support to command-line and desktop applications and on the other, we see that closed cloud-based office suites are emerging. Initiatives like <a href="http://owncloud.org/">ownCloud</a> emphasise the need for Free Software for web services. OdfKit should make it easier to write alternatives for Google Docs and Microsoft Office Live, but it should also help in adding ODF support to desktop applications.</p>
2010-06-22Spring cleaning: Strigi becomes a meta-projecthttp://www.vandenoever.info/blog/2010/03/21/spring-cleaning-strigi-becomes-meta-project.html<p xmlns="http://www.w3.org/1999/xhtml">A couple of large commits changed the organization of the Strigi project. As you probably know, Strigi provides the code to extract data from files and also allows for fast searching for files. We have reorganized the project to be a meta project. It is now split into five projects that can be compiled independently: <code>libstreams</code>, <code>libstreamanalyzer</code>, <code>strigidaemon</code>, <code>strigiclient</code> and <code>strigiutils</code>. This move has been done to make it easier for other projects to use the library parts of Strigi. KDE, especially Nepomuk, depends on <code>libstreamanalyzer</code>, which in turn depends on <code>libstreams</code>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">This reorganization has brought along a big cleanup of build files in the project. The resulting libraries and executables are essentially the same as the are in last release: this reorganization just moves the files and changes the build system the libraries more pronounced. Especially the Tracker developers should benefit from this move. They have requested a way to use libstreams and libstreamanalyzer without needing to use the rest of Strigi.</p>
2010-03-21SlideCompare: improving rendering of slides in KOfficehttp://www.vandenoever.info/blog/2010/03/02/slidecompare-improving-rendering-slides-koffice.html<p xmlns="http://www.w3.org/1999/xhtml">Rendering slides is a complicated business. Slides can contain tons of different features just like webpages can. People expect that presentations look the same in different programs. Perhaps not pixel-perfect but very similar nevertheless.</p>
<p xmlns="http://www.w3.org/1999/xhtml">OpenOffice and KOffice (and the Maemo/Meego Office Viewer) both have ODF as their main file format. ODF is an open standard and this means exchanging data between these programs should be simple and lossless. To help the developers of these programs find differences in rendering of slides, I have written a program that loads a presentation and shows it as rendered by KOffice and OpenOffice.</p>
2010-03-02Silent Metronome in QMLhttp://www.vandenoever.info/blog/2010/02/12/silent-metronome-qml.html<p xmlns="http://www.w3.org/1999/xhtml">Tonight I could not attend band rehearsal so I used the time to play with the new QML language. There is a <a href="http://qt.nokia.com/doc/qml-snapshot/tutorial.html">nice tutorial</a> online and <a href="http://labs.trolltech.com/blogs/2010/01/27/upcoming-qtcreator-support-for-qml-or-what-is-bauhaus/">a good screencast</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">QML allows one to write flashy applications with little code. My first QML program is a metronome. The N900 has a metronome program but it is rather boring. It does not look and feel like a real metronome. So I set out to write one in QML and managed to do so in 56 lines of QML. The interaction is simple: tap it to toggle between on and off and slide up and down to move the cross-bar on the metronome which will adjust the tempo in the range 40 to 208 beats per minute.</p>
2010-02-12Alpha version of Office Viewer for Nokia N900 availablehttp://www.vandenoever.info/blog/2010/01/19/alpha-version-office-viewer-nokia-n900-available.html<p xmlns="http://www.w3.org/1999/xhtml">Today, Nokia released the first public version of the office document viewer for the Nokia N900 phone. It <a href="http://maemo.org/packages/view/freoffice/">was uploaded</a> to the Maemo repositories. This version supports text files, spreadsheets and presentations in OpenDocument format (ODF) and Microsoft Office formats. The viewer requires the latest update (PR1.1) to the N900 software. You can install ‘Office Viewer’ by adding the maemo-devel repository to your N900 catalogues:</p>
<dl xmlns="http://www.w3.org/1999/xhtml">
<dt><p>Catalog name:</p></dt>
<dd><p>Maemo Extras-devel
</p></dd>
<dt><p>Web address:</p></dt>
<dd><p>http://repository.maemo.org/extras-devel
</p></dd>
<dt><p>Distribution:</p></dt>
<dd><p>fremantle
</p></dd>
<dt><p>Components:</p></dt>
<dd><p>free
</p></dd>
</dl>
2010-01-19Strigi 0.7.1http://www.vandenoever.info/blog/2010/01/11/strigi-071.html<p xmlns="http://www.w3.org/1999/xhtml">This is just a quick note to tell the world about the newest Strigi release. It has version number 0.7.1 and is the recommended Strigi version for use with KDE 4.4 and Nepomuk.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Go <a href="http://www.vandenoever.info/software/strigi/">get it</a>.</p>
2010-01-11testing document conversionhttp://www.vandenoever.info/blog/2010/01/06/testing-document-conversion.html<p xmlns="http://www.w3.org/1999/xhtml">Being able to properly read many different file formats is important for KOffice success. By ‘read’, I mean ‘convert to ODF’ because the conversion and reading is strictly separated in KOffice. KWord will convert a .doc file to a .odt file before loading it into the internal rendering and editing structure. There is even a nice separate program called ‘koconverter’ that can convert files on the command-line.</p>
<p xmlns="http://www.w3.org/1999/xhtml">So far, there were no decent tests to avoid regressions in our filters. I have written a small framework (well, a shell script, but framework sounds better) that makes it simple to write tests. There are a number of tests there now for converting ppt files, but it would be great to have them for other input formats too. And here is where I hope you will help. All you need is a small input file that highlights a feature or problem and a small XSL file. The XSL file contains the test.</p>
2010-01-06Getting an energy efficient small serverhttp://www.vandenoever.info/blog/2009/12/29/getting-energy-efficient-small-server.html<p xmlns="http://www.w3.org/1999/xhtml">For mirroring my backup drive, central data store for devices, music playing and a webserver for experiments, I’d like to run a small server at home. I want this server to be energy efficient, easy to modify, robust, silent and run customizable free software. It should have at least 500 GB of storage, but 1 or 1.5 TB is better. You can buy very low-energy computers such as the <a href="http://en.wikipedia.org/wiki/Fit-PC">Fit-PC 2</a> (6 watt) or the <a href="http://en.wikipedia.org/wiki/Linutop">Linutop 2</a> (8 watt). Energy costs for machines that run constantly can be roughly estimated by doubling the power draw in watt, so running a device that uses 8 watt constantly costs about 16 euro a year.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Until recently the computer I used most was a Dell X1 Latitude laptop. That machine is now 4.5 years old. At the time, I chose it because it is a laptop with no fan and hence very silent. It is still better than any atom based netbook. So I would like to use this laptop as a server. UPS and screen are integrated which is a nice plus. The machine has a 1.8" disk built in. It is not possible to replace it with a disk of at least 500 GB. I wanted to know the energy cost of adding more storage to the X1. So I did some power measurements with an 2.5" external disk (Toshiba, 160 GB) and a 3.5" external disk (TrekStore 500GB). I measured on my current main laptop, a Lenovo X200s too.</p>
2009-12-29Printing photo albumshttp://www.vandenoever.info/blog/2009/10/25/printing-photo-albums.html<p xmlns="http://www.w3.org/1999/xhtml">One important feature for photo management is missing in the FOSS world: an application for creating photo albums that can be sent away for printing at a printing service. There is however a pretty slick closed source application that works on linux. It can be fiound at for example <a href="http://pixum.co.uk">Pixum</a> (also in.nl and .de). It is based on Qt 4.4 and installs using a perl script which downloads the artwork and the required libraries. The application is customized for different printing companies that have these customized downloads available from their website. Not all of them offer the linux or even the macintosh version. This is a shame and probably done to limit the number of different questions users might have. A standard for these photo album ordering services would be great, but I’m not holding my breath and will recommend Pixum for now.</p>
2009-10-25Good karmahttp://www.vandenoever.info/blog/2009/10/25/good-karma.html<p xmlns="http://www.w3.org/1999/xhtml">This weekend I visited my parents in law, because my wifes paternal grandmother celebrated her 90th birthday. I noticed that the laptop they use was still running Kubuntu Feisty with OpenOffice 2.2. On this machine, reading emails, managing photos, surfing the internet and working on office documents are most important. Digikam is used for photos. Kmail and Konqueror from KDE 3.5 are installed and a mix of OpenOffice and Microsoft Office 97 on wine is in use for editing office documents. in short, a horribly outdated setup of more than two years old. IT is still moving fast. Feisty was not a long term release and no updates for it anymore.</p>
<p xmlns="http://www.w3.org/1999/xhtml">So in a slightly reckless move I decided to update the machine to the next Kubuntu: Karmic Koala. This meant going to KDE 4.3. To my relief the install went very well. All important settings for digikam and kmail were migrated automatically. Dolphin is really nice and more intuitive for non-professional users. The kwin effects add a nice touch of class (translucent wobbly windows). Plasmoids on the desktop (photo frames and weather forcast) were very well received.</p>
2009-10-25Strigi partial port to javascripthttp://www.vandenoever.info/blog/2009/10/21/strigi-partial-port-javascript.html<p xmlns="http://www.w3.org/1999/xhtml">You may remember two of my recent blogs. One was about a project to <a href="http://www.blogs.kde.org/node/4064">parse powerpoint files</a> and another one was about <a href="http://www.blogs.kde.org/node/4066">porting hexdump to the browser</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">So how about a combination of those two topics: parsing powerpoint files in the browser. It is quite a feasible task. The powerpoint file format is largely described in an <a href="http://gitorious.org/msoscheme/msoscheme/blobs/master/src/mso.xml">xml schema</a> now. From this scheme one would need to generate a parser like there is for <a href="http://gitorious.org/msoscheme/msoscheme/trees/master/cpp">c++</a> and <a href="http://gitorious.org/msoscheme/msoscheme/trees/master/src">java</a> already. The parsers for java and c++ are both less then 700 lines of code.</p>
2009-10-21Sensors in the N900http://www.vandenoever.info/blog/2009/10/13/sensors-n900.html<p xmlns="http://www.w3.org/1999/xhtml">Nokia has been kind enough for lending me an awesome N900. This will allow me to test KOffice on the phone. Document loading, parsing and scrolling speed could do with improvements.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Apart from using the N900 for serious things, I’ve also done a bit of playing with it. Qt has a famous OpenGL demo that shows the Qt logo in a <code>QGLWidget</code>. Instead of controlling the rotation of the object with the scrollbars, the adapted version uses the accelerometers in the device to move the logo.</p>
2009-10-13hexdump in the browserhttp://www.vandenoever.info/blog/2009/09/23/hexdump-browser.html<p xmlns="http://www.w3.org/1999/xhtml">This morning, I thought: why is <code>XMLHttpReq</code> for xml and text but not for binary files? It turns out you can use it for binary files, but not in each browser and only for remote files. I’ve written a small implementation of <code>hexdump</code>. It loads a binary file like this:</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode javascript"><code class="sourceCode javascript"><a class="sourceLine" id="cb1-1" title="1"><span class="kw">function</span> <span class="at">load_binary_resource</span>(url) <span class="op">{</span> </a>
<a class="sourceLine" id="cb1-2" title="2"> <span class="co">// this works in firefox, chromium and arora,</span></a>
<a class="sourceLine" id="cb1-3" title="3"> <span class="co">// but binary files are read only partially in konqueror and opera</span></a>
<a class="sourceLine" id="cb1-4" title="4"> <span class="kw">var</span> req <span class="op">=</span> <span class="kw">new</span> <span class="at">XMLHttpRequest</span>()<span class="op">;</span> </a>
<a class="sourceLine" id="cb1-5" title="5"> <span class="va">req</span>.<span class="at">open</span>(<span class="st">'GET'</span><span class="op">,</span> url<span class="op">,</span> <span class="kw">false</span>)<span class="op">;</span> </a>
<a class="sourceLine" id="cb1-6" title="6"> <span class="va">req</span>.<span class="at">overrideMimeType</span>(<span class="st">'text/plain; charset=x-user-defined'</span>)<span class="op">;</span> </a>
<a class="sourceLine" id="cb1-7" title="7"> <span class="va">req</span>.<span class="at">send</span>(<span class="kw">null</span>)<span class="op">;</span></a>
<a class="sourceLine" id="cb1-8" title="8"> <span class="cf">return</span> <span class="va">req</span>.<span class="at">responseText</span><span class="op">;</span> </a>
<a class="sourceLine" id="cb1-9" title="9"><span class="op">}</span></a></code></pre></div>
2009-09-23Pleasantly Producing PowerPoint Parsershttp://www.vandenoever.info/blog/2009/09/21/pleasantly-producing-powerpoint-parsers.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://koffice.org"></a>KOffice has the potential to be a widely used office suite. One of the requirements for user adoption is good support for popular file formats and most presentations are available as <a href="http://en.wikipedia.org/wiki/Microsoft_PowerPoint">Powerpoint presentations</a>. KOffice uses ODF as native format. There is an <a href="http://websvn.kde.org/trunk/koffice/filters/kpresenter/powerpoint/">import filter</a> for PowerPoint presentations in KOffice which is currently incomplete. At <a href="http://www.kogmbh.com">KO</a>, we are working to improve this situation.</p>
<p xmlns="http://www.w3.org/1999/xhtml">To convert data from one file format to another, you have to understand both formats. <a href="https://en.wikipedia.org/wiki/OpenDocument">ODF</a> is an open standard and rather well documented. Since about a year, Microsoft has, after significant political pressure, put documentation for their file formats on-line. In the header of their documentation, permission is granted to use the documentation to develop software:</p>
2009-09-21Wine appreciationhttp://www.vandenoever.info/blog/2009/09/07/wine-appreciation.html<p xmlns="http://www.w3.org/1999/xhtml">While sipping from a Vignes de Nicole and nibbiling on some <a href="http://www.alp-spilau.ch/heukaese.php">Heukäse</a>, I am thinking about Wine. Not the liquid version, but the software project.</p>
<p xmlns="http://www.w3.org/1999/xhtml">As a reader of <a href="https://lwn.net/">Linux Weekly News</a>, I noticed that the Wine project makes very frequent releases. I looked up its <a href="http://source.winehq.org/git/wine.git/?a=history;f=ANNOUNCE">release history</a> and saw that Wine has made a developer release every fortnight for the last four years. The 11 years before that the releases were approximately monthly. Each of these development releases comes with an announcement with a long list of the changes that happened in these two weeks. This dedication is due to Alexandre Julliard who has made all of those releases.</p>
2009-09-07Bitten by singletonshttp://www.vandenoever.info/blog/2009/09/06/bitten-singletons.html<p xmlns="http://www.w3.org/1999/xhtml">This weekend I have been bitten by some singletons. They have annoyed me so much that I am writing this blog about them. I will expose the singleton as a dangerous construct. Tempting, but dangerous.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Singletons, or <code>K_GLOBAL_STATIC</code> as they are called in the KDE world can do a lot of harm because they are sneaky. The are a source of hidden information that makes your function calls behave in unexpected ways.</p>
2009-09-06The Desktop Summit is so much funhttp://www.vandenoever.info/blog/2009/07/06/desktop-summit-so-much-fun.html<p xmlns="http://www.w3.org/1999/xhtml">The Desktop Summit in Gran Canaria is very enjoyable. The conference center is very luxurious. It comes with uniformed assistants in every presentation room helping by changing the name signs and refreshing the water. The main conference hall has a wonderful view on the ocean. There are people from KDE, GNOME and many other projects here, so there are many interesting people that I have not met before. The conference is located near the ocean, so attendees can go swimming for lunch. The talks are all recorded with the slides as insets, so if you are not here or cannot attend two talks at the same time, you can view the talks later.</p>
<p xmlns="http://www.w3.org/1999/xhtml">My presentation (<a href="strigi.odp">odf</a>) about <code>libstreamanalyzer</code> went well. The announcement that Tracker 0.7 will use <code>libstreams</code> and <code>libstreamanalyzer</code> was received with a round of applause. The audience was an equal mix if KDE and GNOME developers and the many questions after the talk indicated that people get what the libraries are about and are interested in using it.</p>
2009-07-06Working on KOfficehttp://www.vandenoever.info/blog/2009/07/01/working-koffice.html<p xmlns="http://www.w3.org/1999/xhtml">Today is the first day of my employment at a wonderful company called <a href="http://www.kogmbh.com">KO GmbH</a>. KO GmbH provides services around software dealing with office documents, notably <a href="http://www.koffice.org">KOffice</a>. I’m excited to have found such an inspiring job working in Free Software.</p>
<p xmlns="http://www.w3.org/1999/xhtml">At the KOffice 2009 Sprint in Berlin last June, I got to meet many of the KOffice developers and was impressed by the productive atmosphere. In my job at KO, I’d like to help KOffice become enterprise-ready, by which I mean, that I want help the KOffice team make a reliable and flexible office suite.</p>
2009-07-01CubeTest in SVG progresshttp://www.vandenoever.info/blog/2009/05/01/cubetest-svg-progress.html<p xmlns="http://www.w3.org/1999/xhtml">The first episode of ‘<a href="../../04/27/writing-applications-svg.html">programming in SVG</a>’ led to some nice bling improvements in KDE. Aaron showed how to put an <a href="https://exote.ch/blogs/aseigo/2009/04/27/cubetest_in_a_browser_pffft_/">SVG program in a plasmoid</a> and Ariya taught us the incantation to make the desktop <a href="http://ariya.blogspot.com/2009/04/transparent-qwebview-and-qwebpage.html">shine through</a> such a plasmoid. And last but not least Remco Bloemen mailed me with a <a href="cubetestallinone.svg">working demo</a> that hows how to include arbitrary data in an SVG application with <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">data URIs</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Work in CubeTest 2.0 has progressed. The current version has nice animations that revert the cubes to a more ordered state by clicking the corners. The next steps will be to add the question generator and a style switcher and more styles.</p>
2009-05-01writing applications with SVGhttp://www.vandenoever.info/blog/2009/04/27/writing-applications-svg.html<p xmlns="http://www.w3.org/1999/xhtml">Recently I received positive feedback on my program <a href="http://www.vandenoever.info/software/cubetest/">CubeTest</a>. The program is being used in primary schools to help children to achieve better spatial insight. There is a <a href="http://www.turnhout.be/docs/bestanden/Cubetest.pdf">teachers manual</a> on-line.</p>
<p xmlns="http://www.w3.org/1999/xhtml">CubeTest was originally written in Qt3 and ported to Qt4 later. Because some cube decorations are SVG images, the Qt4 version needed to use <code>Q3Picture</code>, a class for backwards compatibility with Qt3. The renewed interest prompted me to suggest to add CubeTest to KDE-Edu and clean up the code. Now I was faced with a chose: keep <code>Q3Picture</code> or move the cubes to a <code>QGraphicsView</code>.</p>
2009-04-27Qt Overload: twittering birdshttp://www.vandenoever.info/blog/2009/04/01/qt-overload-twittering-birds.html<p xmlns="http://www.w3.org/1999/xhtml">I just added <a href="http://www.qtoverload.com/?p=59">some content</a> to the new <a href="http://www.qtoverload.com">cute Qt community website</a>.</p>
2009-04-01Portable Meta-Information continuedhttp://www.vandenoever.info/blog/2009/03/30/portable-meta-information-continued.html<p xmlns="http://www.w3.org/1999/xhtml">In a <a href="http://zwabel.wordpress.com/2009/03/29/portable-meta-information/">recent blog</a>, David Nolden talks about transferring user-generated, file associated meta-data. His post was well written and the ensuing discussion interesting. I’d like to continue his line of thought here.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Anything the user creates on his machine should be easy to archive, synchronize, share, query and protect. Most data these days is stored as separate files. The idea of the semantic desktop is to make content depend less on files. The file is just the container of the content. The content consists of various concepts and relations between the concepts. Also, there are bigger data blobs, usually multimedia files, but also industrial data types like measurement results, logging files and databases.</p>
2009-03-30Browsing archive files with libstreamshttp://www.vandenoever.info/blog/2009/02/21/browsing-archive-files-libstreams.html<p xmlns="http://www.w3.org/1999/xhtml"><code>ArchiveReader</code> is a class in <code>libstreams</code> that allows you to open files embedded in zip, deb, rpm, jar, openoffice, and email files. It is used in the kio slave <code>jstreams:/</code>. This class works like this:</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode cpp"><code class="sourceCode cpp"><a class="sourceLine" id="cb1-1" title="1"><span class="co">/* create an ArchiveReader that reads files on the local filesystem */</span></a>
<a class="sourceLine" id="cb1-2" title="2">ArchiveReader reader;</a>
<a class="sourceLine" id="cb1-3" title="3">FileStreamOpener streamopener;</a>
<a class="sourceLine" id="cb1-4" title="4">reader.addStreamOpener(&amp;streamopener);</a>
<a class="sourceLine" id="cb1-5" title="5"></a>
<a class="sourceLine" id="cb1-6" title="6"><span class="co">/* read an embedded file */</span></a>
<a class="sourceLine" id="cb1-7" title="7">InputStream* stream = reader.openStream(<span class="st">"/home/james/archive.zip/package.deb/README.txt"</span>);</a>
<a class="sourceLine" id="cb1-8" title="8">doSomethingUseful(stream);</a>
<a class="sourceLine" id="cb1-9" title="9">reader.closeStream(stream);</a>
<a class="sourceLine" id="cb1-10" title="10"></a>
<a class="sourceLine" id="cb1-11" title="11"><span class="co">/* list embedded files */</span></a>
<a class="sourceLine" id="cb1-12" title="12">ArchiveReader::DirLister lister = reader.dirEntries(<span class="st">"/home/james/archive.zip/package.deb"</span>);</a>
<a class="sourceLine" id="cb1-13" title="13">EntryInfo entryinfo;</a>
<a class="sourceLine" id="cb1-14" title="14"><span class="cf">while</span> (lister.nextEntry(entryinfo)) {</a>
<a class="sourceLine" id="cb1-15" title="15"> doSomethingUseful(entryinfo.filename);</a>
<a class="sourceLine" id="cb1-16" title="16">}</a></code></pre></div>
2009-02-21Rejoice: A fresh Strigihttp://www.vandenoever.info/blog/2009/02/02/rejoice-fresh-strigi.html<p xmlns="http://www.w3.org/1999/xhtml">Another epic owl release! Granted, not as epic as <a href="http://bjacob.livejournal.com/9510.html">Eigen 2.0</a>, but still very nice. <a href="http://kde-apps.org/content/show.php/Strigi?content=40889">Strigi 0.6.4</a> gives some nice index speed-ups and fixes a few annoying bugs. There is one new feature: <a href="../../01/25/supporting-lzma-streams.html">LZMA support</a>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">See the <a href="http://www.vandenoever.info/software/strigi/ChangeLog">ChangeLog</a> for more details.</p>
2009-02-02supporting LZMA streamshttp://www.vandenoever.info/blog/2009/01/25/supporting-lzma-streams.html<p xmlns="http://www.w3.org/1999/xhtml">LZMA is a relatively new compression algorithm. It is used in more and more places: 7-zip, the Linux kernel and deb and RPM packages. So adding LZMA to Strigi was a desirable step. The code for LZMA can be downloaded from the <a href="http://www.7-zip.org/sdk.html">7-zip website</a>. It is in the public domain.</p>
<p xmlns="http://www.w3.org/1999/xhtml">For decompression, only 3 <code>c</code> files are required. I’ve added these to the Strigi repository directly. The decompression interface of LZMA is similar to that of GZip and BZip2. It nevertheless cost me quite a bit of time to figure out how to use it exactly. <a href="http://websvn.kde.org/trunk/kdesupport/strigi/src/streams/lzmainputstream.cpp?revision=916409&amp;view=markup">The result</a> is a <code>Strigi::InputStream</code> class that can be used in the same way as the other decompression classes.</p>
2009-01-25Buy a telephone from Nokiahttp://www.vandenoever.info/blog/2009/01/14/buy-telephone-nokia.html<p xmlns="http://www.w3.org/1999/xhtml">Do you need a new telephone? A mobile one without a wire? Please consider buying a Nokia telephone. When you buy a Nokia telephone you support free software. Do not buy an iPhone, do not buy a Palm, buy a Nokia. Were you considering buying a Motorola or an HTC telephone? Think again. Think Free Software. Buy a Nokia. Avoid Windows Mobile. Avoid the iPhone. Avoid WebOS. Buy a Nokia with Free Software.</p>
<p xmlns="http://www.w3.org/1999/xhtml">And use Qt and KDE.</p>
2009-01-14Maemo Summit and Desktop Search Hackfest (part 1)http://www.vandenoever.info/blog/2008/09/28/maemo-summit-and-desktop-search-hackfest-part-1.html<p xmlns="http://www.w3.org/1999/xhtml">The first Maemo Summit was held in Berlin on the 19th and 20th of September. Nokia proposed to organise a “Desktop Search Hackfest” in collaboration with the GNOME foundation. This proposal was forwarded to all the participants in the discussions on a set of common standards for desktop search called Xesam. The list of attendees was very interesting and I had the impression that it would be hard to get the same group of people together soon. So I decided to skip a family day at my employer, PANalytical, and went to the hackfest.</p>
<p xmlns="http://www.w3.org/1999/xhtml">On the way to Berlin, which is a single train from Hengelo, I joined Ben van Klinken, the author the the excellent CLucene library. He brought his girlfriend, Femke, and she brought a book, which was a very sensible idea. Ben and I talked nothing but indexes all the way to Berlin. Discussing ideas and browsing code in the dining car is an excellent way to travel.</p>
2008-09-28Hello from Maemo 2008http://www.vandenoever.info/blog/2008/09/19/hello-maemo-2008.html<p xmlns="http://www.w3.org/1999/xhtml">This message is written on a N810 at the first presentation of the first Maemo conference. To be able to show my face here I have installed KDE and Strigiclient on the N810. <img src="screenshot04.png" /> <img src="screenshot01.png" /></p>
2008-09-19SVG transitionshttp://www.vandenoever.info/blog/2008/09/09/svg-transitions.html<p xmlns="http://www.w3.org/1999/xhtml">Playing with SVG is a lot of fun. I expanded the spiral clock I made yesterday with animated transitions between different panels.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="spiralbox.svg"><img src="sb1.png" /></a></p>
2008-09-09Spiraling calender clockhttp://www.vandenoever.info/blog/2008/09/08/spiraling-calender-clock.html<p xmlns="http://www.w3.org/1999/xhtml">After blogging about clocks a few times, let me post <a href="spiral.xhtml">some code</a> for a clock. Click on the image below to see it. Your browser must support SVG.</p>
<p xmlns="http://www.w3.org/1999/xhtml">This clock was inspired by <a href="http://www.kde-look.org/content/show.php?content=82071">an entry on kde-apps</a> which was <a href="https://blogs.kde.org/node/3647">blogged about</a> by Cornelius Schumacher. A lot ofthe HTML, SVG and javascript was helped by <a href="http://kamhungsoh.com/000d.xhtml">the SVG+javascript clock</a> page by Kam-Hung Soh.</p>
2008-09-08Antikythera mechanism simulationhttp://www.vandenoever.info/blog/2008/09/07/antikythera-mechanism-simulation.html<p xmlns="http://www.w3.org/1999/xhtml">Yesterday, Adriaan <a href="http://people.fruitsalad.org/adridg/bobulate/index.php?/archives/639-We-are-out-of-Antikytheran-Mechanisms.html">blogged</a> about the <a href="http://en.wikipedia.org/wiki/Antikythera_mechanism">Antikythera mechanism</a>. This is a fascinating piece of early machinery. Read all about it on the wikipedia page.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Ade called for a plasmoid to be created of it and I think this is a good idea. So I looked around on the web if there is some software simulating the mechanism. I found <a href="http://www.etl.uom.gr/mr/index.php?mypage=antikythera_sim">a webpage</a> where you can download an OpenGL implementation that is compiled for windows. You can run it with Wine on a i386 Linux machine. The source code is not available on the site. I was struck by backside of the mechanism. The inward spiraling lines look very much like the <a href="http://www.blogs.kde.org/node/3647">Akonadi clock</a> Cornelius blogged about some time ago.</p>
2008-09-07Stuff near you in wikipediahttp://www.vandenoever.info/blog/2008/08/27/stuff-near-you-wikipedia.html<p xmlns="http://www.w3.org/1999/xhtml">A while back I <a href="../../../2008/07/25/looking-green-plants.html">blogged</a> about querying dbpedia with <a href="http://www.w3.org/TR/rdf-sparql-query/">sparql</a>. The queries in that blog were pretty simple. Today, I present a more complicated example.</p>
<pre xmlns="http://www.w3.org/1999/xhtml" class="sparql"><code>SELECT ?a, ?long, ?lat WHERE {
&lt;http://dbpedia.org/resource/Borne%2C_Overijssel&gt; &lt;http://www.w3.org/2003/01/geo/wgs84_pos#long&gt; ?centerlong ;
&lt;http://www.w3.org/2003/01/geo/wgs84_pos#lat&gt; ?centerlat .
?a &lt;http://www.w3.org/2003/01/geo/wgs84_pos#long&gt; ?long ;
&lt;http://www.w3.org/2003/01/geo/wgs84_pos#lat&gt; ?lat .
FILTER ( -(?long - ?centerlong)*(?long - ?centerlong) - (?lat - ?centerlat)*(?lat - ?centerlat) &gt; -0.01 )
}</code></pre>
2008-08-27JavaFX vs Plasmahttp://www.vandenoever.info/blog/2008/08/17/javafx-vs-plasma.html<p xmlns="http://www.w3.org/1999/xhtml">Today I came across <a href="http://www.weiqigao.com/blog/2008/08/05/watch_javafx_sdk_run_on_linux.html">an article</a> explaining how to run <a href="http://www.javafx.org/">JavaFX</a> on Linux. I managed to install the sdk by downloading <a href="https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=javafx_sdk-1.0-pre1-oth-JPR@CDS-CDS_Developer">the Mac version</a>. Next, I started the stopwatch example:</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="bu">cd</span> /tmp unzip javafx_sdk-1_0-pre1-macosx-universal.zip</a>
<a class="sourceLine" id="cb1-2" title="2"><span class="bu">export</span> <span class="va">JAVAFX_HOME=</span>/tmp/javafx-sdk1.0pre1</a>
<a class="sourceLine" id="cb1-3" title="3"><span class="bu">export</span> <span class="va">PATH=</span>/tmp/javafx-sdk1.0pre1/bin/:<span class="va">$PATH</span></a>
<a class="sourceLine" id="cb1-4" title="4"><span class="bu">cd</span> /tmp/javafx-sdk1.0pre1/samples/StopWatch</a>
<a class="sourceLine" id="cb1-5" title="5"><span class="fu">unzip</span> StopWatch.zip</a>
<a class="sourceLine" id="cb1-6" title="6"><span class="bu">cd</span> StopWatch</a>
<a class="sourceLine" id="cb1-7" title="7"><span class="ex">ant</span> run</a></code></pre></div>
2008-08-17Coolest picture from Akademyhttp://www.vandenoever.info/blog/2008/08/17/coolest-picture-akademy.html<p xmlns="http://www.w3.org/1999/xhtml">The coolest picture made at Akademy 2008 was made by Nepomuk developer Gunnar Aastrand Grimnes. This is the main square of Mechelen stitched together from 19 pictures. Check out <a href="https://farm4.static.flickr.com/3147/2770776723_88b2558b3a_o.jpg">the details</a>. You will probably be able to buy it as a clock from the Mechelen tourist office soon.<br />
<a href="http://flickr.com/photos/gromgull/2770776723/in/set-72157606641230628/"><img alt="Mechelen square" src="https://c4.staticflickr.com/4/3147/2770776723_b9c96293f7_b.jpg" /></a></p>
2008-08-17I love GIThttp://www.vandenoever.info/blog/2008/07/31/i-love-git.html<p xmlns="http://www.w3.org/1999/xhtml">I have many ideas and limited time. And many of the ideas I want to work on get interrupted by pressing concerns such as bug fixing and high priority features. Because of this, I tend to have many small improvements lying around in my trunk. Then when the time comes to commit a quick bug fix, I face an <code>svn status</code> output with lots of <code>A</code>, <code>M</code> and <code>?</code> indicators. In short: a time sink.</p>
<p xmlns="http://www.w3.org/1999/xhtml">But today I switched to git. I’d experimented with git before and had to get used to the new commands. But the advantages of maintaining many branches easily was always very appealing.</p>
2008-07-31Almost a gnomehttp://www.vandenoever.info/blog/2008/07/31/almost-gnome.html<p xmlns="http://www.w3.org/1999/xhtml">While reading <a href="http://esr.ibiblio.org/">ESR’s blog</a> I came across <a href="http://www.easydamus.com/character.html">a questionnaire</a> to find out what kind of D&amp;D character I’d be. I’ve only once joined in on a D&amp;D role-playing evening and found it was not for me. This query is interesting though because of the many questions you have to answer and for which you have to make up your mind about which of the given options applies best to you.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Here are the results. Scroll to the bottom to find out about the <a href="http://altijdeenmening.web-log.nl/mijn_weblog/images/kabouter_15_kopie.jpg">gnome</a> part.</p>
2008-07-31Only Firefox 3 handles Javascript menace wellhttp://www.vandenoever.info/blog/2008/07/29/only-firefox-3-handles-javascript-menace-well.html<p xmlns="http://www.w3.org/1999/xhtml">After visiting a really nice collection of <a href="http://www.boomkamp.com/">exhibit gardens</a>, I decided to make an application to see how different plants are related by making a <a href="http://en.wikipedia.org/wiki/Phylogenetic_tree">phylogentic tree</a> generating webpage.</p>
<p xmlns="http://www.w3.org/1999/xhtml">For many groups of species, the familiar relationships have been examined very well, but for the combination of arbitrary species, you have to rely on taxonomic data for now. A convenient resource for getting at this data is <a href="http://www.ncbi.nlm.nih.gov/Taxonomy/">NCBI taxonomy</a> (<a href="ftp://ftp.ncbi.nih.gov/pub/taxonomy/">ftp</a>). This data unfortunately has no timeline distance between the branch points, but it’s nice enough for starters.</p>
2008-07-29Looking for green plantshttp://www.vandenoever.info/blog/2008/07/25/looking-green-plants.html<p xmlns="http://www.w3.org/1999/xhtml">Do you know about <a href="http://dbpedia.org">DBpedia</a>? It’s a project that lets you perform complex queries on the content of wikipedia. I’ve been playing with it a bit and want to share some examples. Try to come up with cool queries!</p>
<p xmlns="http://www.w3.org/1999/xhtml">To query DBpedia, there is <a href="http://dbpedia.org/snorql/">convenient form</a>. Queries are performed in SPARQL. SPARQL is a query language that takes some getting used to. So I’ll start with a few simple examples.</p>
2008-07-25Re: Strigi Loadedhttp://www.vandenoever.info/blog/2008/07/24/re-strigi-loaded.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.blogs.kde.org/node/3573">Sebastian is apologizing</a> to me for writing code. This is a bit strange and I need to reply to his post. The discussion below is really more suited for a mailing list, but since I did not start it I have no choice in the matter.</p>
<p xmlns="http://www.w3.org/1999/xhtml">First of all, why do you apologize for writing code? That is no reason for apology. What you could apologize for is not what you present, but how you present it. You have written some code and talk about it like it is the solution for a big problem. You fail, however, to clearly analyze these problems. The title of the blog is “Strigi Reloaded - The Answer to all our Problems?”. This is a title which is worthy of the Bild newspaper. Any title with a question mark behind a sentence which is not a question is a sign that the title is meaningless agitation. It is a method to gather support of fanboys in the absense of real arguments and to sow confusion. I’m not saying that this was your intent, but I am saying that using question marks in titles is a sign of bad writing.</p>
2008-07-24Strange UDF DVDhttp://www.vandenoever.info/blog/2008/07/22/strange-udf-dvd.html<p xmlns="http://www.w3.org/1999/xhtml">My sister-in-law got married and the wedding photographer made a DVD with 412 pictures. Unfortunately, my parents-in-law could not read the DVD, either with Linux (which is their main OS) nor with Windows XP. So they gave the DVD to me and I had a look.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The DVD is a DVD-R and my Linux version (Hardy Heron) tried to open it: it showed the dialog asking if it should mount the DVD. A failure message opened asking me to have a look at <code>dmesg</code>. Hmm.</p>
2008-07-22Strigi 0.5.11http://www.vandenoever.info/blog/2008/07/20/strigi-0511.html<p xmlns="http://www.w3.org/1999/xhtml">A new version of Strigi, the desktop search, is <a href="http://www.vandenoever.info/software/strigi">available</a>.<br />
This is a bugfix release. It fixes some annoying issues seen in KDE 4.1. Check out the <a href="http://www.vandenoever.info/software/strigi/ChangeLog">ChangeLog</a> for the details.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Strigi has currently good basid Xesam support, but no good dedicated search interface for KDE 4.1 yet. This is ongoing work.</p>
2008-07-20W3C: Standardizing the widget landscapehttp://www.vandenoever.info/blog/2008/07/01/w3c-standardizing-widget-landscape.html<p xmlns="http://www.w3.org/1999/xhtml">The <a href="http://w3.org/">World Wide Web Consortium</a> is looking into the feasibility of standardizing desktop widgets. They have done a <a href="http://www.w3.org/TR/widgets-land/">survey</a> on the widget frameworks available in the market. The frameworks they have surveyed are Konfabulator, Windows Sidebar, Google Desktop Gadgets, Opera Widgets, Mac OSX Dashboard, Web-Runtime by Nokia, and Joost Widgets.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The survey was performed in the first quarter of 2008 and frameworks were chosen because of their perceived prevalence in the market place. Since KDE 4 was only just released and not available as a stable option for any distribution, W3C cannot be blamed for leaving out Plasma.</p>
2008-07-01UEFA is being cheated by NOShttp://www.vandenoever.info/blog/2008/06/17/uefa-being-cheated-nos.html<p xmlns="http://www.w3.org/1999/xhtml">The Dutch like it cheap. We do not like rules. That’s just the way we are. The people at NOS are no different. They have a contract with UEFA (or so they say) which requires them to broadcast the games of the European Championship <em>only</em> in DRM format.<br />
NOS is using this as an excuse to pendel Microsoft malware.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Well, guess what? They also broadcast it without DRM. The stream is a proprietary protocol, but it is not encrypted. You can even play it under Linux.<br />
We call this ‘van twee walletjes eten’ (eating from two dykes) or ‘pappen en nathouden’.</p>
2008-06-17Oranje scores for Microsoft, Dutch goverment says: ‘Use Silverlight’http://www.vandenoever.info/blog/2008/06/17/oranje-scores-microsoft-dutch-goverment-says-use-silverlight.html<p xmlns="http://www.w3.org/1999/xhtml">Today, the Dutch minister for Education and Culture, <a href="http://nl.wikipedia.org/wiki/Plasterk">Plasterk</a>, has defended the Dutch broadcaster NOS. NOS is broadcasting the games of the European Championship football using Microsoft malware <a href="http://www.daniweb.com/blogs/entry1418.html">Silverlight</a>. This means that in order to view this broadcast you need to install this software on your computer. You can only install the software on computers with Microsoft Windows or on Apple computers.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Another goal for Bill." src="slaveware.jpg" /><figcaption>Another goal for Bill.</figcaption>
</figure>
2008-06-17Using the European championship to spread malwarehttp://www.vandenoever.info/blog/2008/06/07/using-european-championship-spread-malware.html<p xmlns="http://www.w3.org/1999/xhtml">Microsoft is pushing their evil <a href="http://www.daniweb.com/blogs/entry1418.html">SilverLight</a> platform very hard. They want to make sure that providers of cross-platform software for delivering rich applications via the web browser are thwarted. This is normal behavior for a monopolistic company and certainly for Microsoft. To accomplish this goal they are throwing around bucketloads of money and FUD to get content providers to use the Microsoft malware Silverlight exclusively.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Their latest feat is the way they exploit the European soccer championship 2008. They have made a deal with a government funded Dutch broadcaster to deliver a live stream of all soccer games. The snag is: all visitors to the <a href="http://ek2008.nos.nl/live">broadcast website</a> must download and install the Microsoft malware called SilverLight.</p>
2008-06-07Spot the heronhttp://www.vandenoever.info/blog/2008/06/06/spot-heron.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://86.87.235.91/"><img src="02-20080606080100-05.jpg" /></a></p>
<p xmlns="http://www.w3.org/1999/xhtml">Please mail me if you see him.</p>
2008-06-06Chilling in Praguehttp://www.vandenoever.info/blog/2008/05/16/chilling-prague.html<p xmlns="http://www.w3.org/1999/xhtml">Today is day one of <a href="http://foscamp.org">FOSSCamp</a>. FOSSCamp is an unconference, which means there is no set program. The program consists of writing entries into the empty program grid. This is refreshing approach which seems to work rather well for one particular use case: recognizing and fixing problems.</p>
<p xmlns="http://www.w3.org/1999/xhtml">I’ve attended two particularly useful sessions. The first was about Xesam and the second was about KDE/GNOME interaction. Now these sessions mainly consist of sitting around a table talking about a particular subject. Since there are many knowledgeable people around, you hear many interesting facts and suggestions. Here are a few that are relevant to Strigi in an unordered list.</p>
2008-05-16Hardy Heron Alert!http://www.vandenoever.info/blog/2008/04/24/hardy-heron-alert.html<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="So long and thanks for all the fish" src="heron.jpg" /><figcaption>So long and thanks for all the fish</figcaption>
</figure>
<p xmlns="http://www.w3.org/1999/xhtml">Near where I live there’s a pond. Actually it is right outside of my living room. In this pond there used to be many a goldfish. Until this week.</p>
2008-04-24Running with the develhttp://www.vandenoever.info/blog/2008/03/27/running-devel.html<p xmlns="http://www.w3.org/1999/xhtml">Google Summer of Code has started taking student proposals. This year Strigi is joining <a href="http://techbase.kde.org/index.php?title=Projects/Summer_of_Code/2008">the KDE project in Google Summer of Code</a> again. For students looking for a nice project in information technology in the true sense of the word, Strigi is the project to join.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Last year we had a great project by Alexandr Goncearenco which resulted in giving Strigi the ability to extract information from a plethora of chemical datatypes.<br />
You can read all about his work in his <a href="http://neksa.blogspot.com/">blog</a>.</p>
2008-03-27Logging out of KDE 4 in 5 easy stopshttp://www.vandenoever.info/blog/2008/03/04/logging-out-kde-4-5-easy-stops.html<p xmlns="http://www.w3.org/1999/xhtml">Today we are helping novice KDE users to log out of KDE 4. Logging out of KDE 4 is nowhere near as hard as with some other popular programs. Here you do not need esoteric keyboard commands like ‘&lt;esc&gt;:q!’ or ‘ctrl-X followed by ctrl-c’. In KDE 4 you can easily log out by using your mouse.</p>
<figure xmlns="http://www.w3.org/1999/xhtml">
<img alt="Step 1" src="logout1_0.png" /><figcaption>Step 1</figcaption>
</figure>
2008-03-04Thinking about quittinghttp://www.vandenoever.info/blog/2008/02/07/thinking-about-quitting.html<p xmlns="http://www.w3.org/1999/xhtml">When logging out of your desktop session, you want all programs to shut down quickly. Strigi is one of the programs that can linger while it is analyzing a file. I’ve done some work to improve this latency and have measured the current latency after some improvements to analyzers that can potentially take long on some files.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Here is a graph with the analyzer latencies of my current version:</p>
2008-02-07digesting the Trolltech acquisitionhttp://www.vandenoever.info/blog/2008/01/28/digesting-trolltech-acquisition.html<p xmlns="http://www.w3.org/1999/xhtml">What a surprise we had today! A coworker came to my desk and told me ‘Guess what Nokia has done.’ I thought for a bit and tried to infer Nokia’s move from my colleagues demeanor. ‘They decided to use Windows mobile on their telephones.’ was my guess. As you all know by now, the right answer was much more interesting and much less gloomy.</p>
<p xmlns="http://www.w3.org/1999/xhtml">So what will Nokia do with Qt? Many people are worrying about the Nokia’s commitment to Trolltech’s products. This huge move (for us and for Nokia) certainly requires some analysis. Let’s have a look at what Nokia is saying. This image is from their press release:<br />
<img alt="Nokia switches to Qt" src="trolltech.jpg" /></p>
2008-01-28strigi planning and small kde4 reviewhttp://www.vandenoever.info/blog/2008/01/13/strigi-planning-and-small-kde4-review.html<p xmlns="http://www.w3.org/1999/xhtml">Yesterday we had an IRC meeting to plan our activities on Strigi for the near future. It was good to have an IRC meeting again after having been practically offline for over two months.</p>
<p xmlns="http://www.w3.org/1999/xhtml">We put a <a href="http://techbase.kde.org/index.php?title=Projects/Strigi/Strigi_status_meeting_2008">status document</a> online. Don’t read too much into it, we were focussing on the work we can do next. We came up with a planning that I <a href="http://sourceforge.net/mailarchive/forum.php?thread_name=c2dbc4260801130240x55937133l35ed009c188803ac%40mail.gmail.com&amp;forum_name=strigi-devel">posted</a> on our <a href="http://sourceforge.net/mailarchive/forum.php?forum_name=strigi-devel">mailing list</a>.</p>
2008-01-13Touched by an owlhttp://www.vandenoever.info/blog/2008/01/11/touched-owl.html<p xmlns="http://www.w3.org/1999/xhtml">Today at <a href="http://www.panalytical.com">work</a>, a new building was opened. To celebrate the happy event, <a href="http://en.wikipedia.org/wiki/Hugo_Rietveld">Hugo Rietveld</a> came to open the building. To do this, he needed keys and these were brought to him by a <a href="http://en.wikipedia.org/wiki/Barn_Owl">barn owl</a> (<a href="http://nl.wikipedia.org/wiki/Kerkuil">church owl</a> in dutch). The bird flew through the cafetaria and landed in front of Mr Rietveld with the keys.</p>
<p xmlns="http://www.w3.org/1999/xhtml">But the relatively small barn owl was not the only owl present. There was also a specimen of the largest european owl: the <a href="http://en.wikipedia.org/wiki/Eurasian_Eagle-owl">eagle-owl</a>. This is an enormous bird. And this bird too flew across the room. It almost touched my head as it aimed for the small mouse that was held up for it at the other end of the room.</p>
2008-01-11FOSS in Dutch governmenthttp://www.vandenoever.info/blog/2007/12/12/foss-dutch-government.html<p xmlns="http://www.w3.org/1999/xhtml">Today Dutch parliament discussed plans of the ministry of Economic Affairs to encourage Free and Open Source Software in government. <em>All</em> major parties seem to understand the issues. Even news agencies are talking about ‘vrije software’ which is the right term (‘Vrije’ means ‘free as in freedom’).</p>
<p xmlns="http://www.w3.org/1999/xhtml">It took five years for Economic Affairs to answer to a parliamentary request to do this. In the meantime, the (previous) government supported the attempted European legalization of software patents despite the wishes of parliament.</p>
2007-12-12Debugging help for dbus daemonshttp://www.vandenoever.info/blog/2007/12/11/debugging-help-dbus-daemons.html<p xmlns="http://www.w3.org/1999/xhtml">Like many KDE application, strigidaemon uses DBus to talk to other programs. Debugging inter-process communication is never very convenient and strigidaemon is no exception. So far, there are no unit tests for checking the quality of the DBus communication in Strigi. I set about to write some and found it was not so easy, so I’m documenting what I did for the benefit of all the other developers using DBus.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Here’s a summary of what is needed to start debugging DBus communication. In the tests, we will start a private dbus-daemon for handling the communication between client and server. In our examples, strigidaemon is the server and we test by sending messages from the client (libstrigiqtdbus) to the server. We will be debugging the code that has not been installed, but resides in the build directory, since this is the normal situation for unit tests.</p>
2007-12-11Disappearing facial hair explainedhttp://www.vandenoever.info/blog/2007/11/29/disappearing-facial-hair-explained.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://aseigo.blogspot.com/2007/11/chinny-chin-chin.html">The recent events in chinland</a> are well explained by <a href="http://dilbert.com/strip/2007-11-29">todays Dilbert</a>.</p>
2007-11-29free software in dutch governmenthttp://www.vandenoever.info/blog/2007/09/21/free-software-dutch-government.html<p xmlns="http://www.w3.org/1999/xhtml">2007 has seen huge events for Free Software. The java source code was (mostly) released by SUN, ATI/AMD opened up to the Free Software community, and the Dutch government has started using the term Free Software (vrije software) in its plans.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Especially the latter is a sweet sweet change in attitude. Earlier today, Richard Dale <a href="http://www.blogs.kde.org/node/3005">blogged</a> from Tenerife about the ever raging discussion about the use of the terms “Open Source” and “Free Software”. This reminded me of a wonderful crusade I held with Richard Stallmann (<a href="http://jimmysweblog.net/2004/10/richard-stallman.jpg">desktop background picture</a>) for Free Software in the Netherlands. It coincided wonderfully with the work of <a href="http://www.gendo.nl/index.php?option=com_content&amp;task=blogcategory&amp;id=29&amp;Itemid=32">Arjen Kamphuis</a> who lobbies the Dutch government about Free Software. Now, five years later, the Dutch authorities are still moving, albeit slowly, in the direction of freedom.</p>
2007-09-21The Strigi vs Tracker debatehttp://www.vandenoever.info/blog/2007/08/10/strigi-vs-tracker-debate.html<p xmlns="http://www.w3.org/1999/xhtml">A few days ago Aaron Seigo blogged about the <a href="http://aseigo.blogspot.com/2007/08/future-of-free-software-desktop.html">Strigi vs Tracker vs other search engines</a>. I agree with Aaron that we are wasting a lot of efforts by duplicating code with very similar features. Not only that, but we spend time discussing with each other trying to come up with ways to get some overlap and share some code. It’s not easy and can be really frustrating. As free software developers, we all put in a huge commitment by coding in our free time to make the world a better place with our code. At least that’s my motivation. So let us try to maximize the effect of our efforts.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Despite code duplication, I think that having different ideas is important. When we are talking about Strigi and Tracker, we see a lot of common functionality, but also some unique features for each application. I have to give kudos to Jamie for posting his POV on Aarons blog. The post is completely accurate in describing the history of attempted collaboration between the two projects. So far the only thing we collaborate on is the Xesam specification. Sadly, every day we do not merge at least parts of our efforts, is a day we grow further apart.</p>
2007-08-10The Semantic Desktop: Document Annotationhttp://www.vandenoever.info/blog/2007/08/10/semantic-desktop-document-annotation.html<p xmlns="http://www.w3.org/1999/xhtml">KDE 4 will have more semantic technologies than any KDE version before it. As an average user you may be baffled by the use of funny terms all the time. ‘What are semantic technologies?’, you are thinking. Many people that have seen what Nepomuk will do in KDE 4 will think that semantics is all about tagging and rating of files. This is the visible part the current state of the Nepomuk-KDE work Sebastian Trueg is doing. ‘So what’s the big deal?’ you will think next, because to be honest, tagging and rating are not all that special. Nice, sure, but not mind blowing.</p>
<p xmlns="http://www.w3.org/1999/xhtml">And what about Strigi? People say it will have semantic search. But what’s the big deal about that? Currently, Strigi will let you search in specific fields. For example, you may look for a word in the title of a song. This is partially semantic. You can tell the search engine that you want a song title. Again, you say, ok nice, so this is semantics?</p>
2007-08-10KDE4 is very attractive for software service companieshttp://www.vandenoever.info/blog/2007/07/31/kde4-very-attractive-software-service-companies.html<p xmlns="http://www.w3.org/1999/xhtml">The next version of KDE4 will run natively on Mac OS X and Windows XP and Vista. This means that it is a very attractive platform for software development. No other cross-platform toolkit looks as good as Qt and has an equally appealing API.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Linux and Mac OS X are steadily gaining popularity. I know from experience what a delight it is to administrate a large park of Linux computers, desktop and server. There is a tremendous software choice that can easily be updated and managed and kept in check. Departments or whole companies that can get away from windows, do so more and more. And in the wake of the successful iPod, Macs are reappearing on the workfloor. This means, that the market for cross-platform tools is growing again. And this is where the KDE development environment is a very credible proposition.</p>
2007-07-31Picking up slackhttp://www.vandenoever.info/blog/2007/07/27/picking-slack.html<p xmlns="http://www.w3.org/1999/xhtml">Dirk pointed me to an awesome application: <a href="http://sam.zoy.org/zzuf/"><code>zzuf</code></a>. This program can help you make your program more failsafe when dealing with broken data. <code>zzuf</code> inserts noise in your programs input. You call it as a wrapper about the code you want to test. The amount of noise is tunable and you can exclude files and directories from being ‘fuzzed’. What is really elegant, is that <code>zzzuf</code> adds noise on the fly. The data on you disk is not affected. <code>zzuf</code> just inserts itself between your program and libc and runs <code>read</code> and <code>fread</code> through its own noisy versions of these calls.</p>
<p xmlns="http://www.w3.org/1999/xhtml">With <code>zzuf</code>, I’ve found about five corner cases so far, while fuzzing gigs of data. This tool can really help adding the extra ‘9’ to the percentage of uptime of your programs.</p>
2007-07-27Pick a plugin!http://www.vandenoever.info/blog/2007/03/16/pick-plugin.html<p xmlns="http://www.w3.org/1999/xhtml">We’re working on porting all the plugins to strigi analyzers to make them faster and make the results indexable.<br />
You can look at the current status <a href="http://wiki.kde.org/tiki-index.php?page=Porting+KFilePlugin+Progress">here</a>. If you feel like helping in KDE then read <a href="http://techbase.kde.org/index.php?title=Development/Tutorials/Writing_file_analyzers">this tutorial</a> or look at the code that’s already available. We hope to port most of the plugins quickly.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Porting the will give KDE a great boost. Extracting metadata from files is much faster with the strigi classes. After parting the kfile_png plugin, we can extract metadata (including all comments) from a 4000 png files per second on an average laptop.</p>
2007-03-16Pit stophttp://www.vandenoever.info/blog/2007/03/14/pit-stop.html<p xmlns="http://www.w3.org/1999/xhtml">First off, I’m not a fan of formula 1 races. Nevertheless, some sort of analogy can be gotten from it to describe the adoption of Strigi in KDE. Ever since Strigi moved to the directory kdesupport in the source repository, many people have started contributing to it. It feels like I’ve driven into a pit stop and found that after emerging from it, my car has a lot of mechanics on top of it. And they are not siting idly, they are working on improving the car while it is speeding along while I’m trying to keep it on track. In addition to that, they are whispering in my ears and suggesting alternate routes for driving more elegant, taking shortcuts, being nice to other drivers and for <a href="http://nl.wikipedia.org/wiki/Ritsen"><em>ritsen</em></a> into the caravan that is KDE.</p>
2007-03-14Porting a simple KFilePluginhttp://www.vandenoever.info/blog/2007/03/13/porting-simple-kfileplugin.html<p xmlns="http://www.w3.org/1999/xhtml">Since last monday, the class <code>KFilePlugin</code> has been removed and all the <code>KFilePlugin</code> implementations have to be ported. As an example of how to port a <code>KFilePlugin</code>, I will rewrite <a href="http://websvn.kde.org/trunk/KDE/kdegraphics/kfile-plugins/dvi/kfile_dvi.h?view=markup">KDviPlugin</a> (<a href="http://websvn.kde.org/trunk/KDE/kdegraphics/kfile-plugins/dvi/kfile_dvi.h?view=markup">h</a>, <a href="http://websvn.kde.org/trunk/KDE/kdegraphics/kfile-plugins/dvi/kfile_dvi.cpp?view=markup">cpp</a>)as a Strigi analyzer.</p>
<p xmlns="http://www.w3.org/1999/xhtml">On first inspection, we see that <code>KDviPlugin</code> only implements <code>KFilePlugin::readInfo()</code> and not <code>KFilePlugin::writeInfo()</code>. This makes it easier to port it; we only need to write either a <code>StreamThroughAnalyzer</code> or a <code>StreamEndAnalyzer</code>.</p>
2007-03-13writing analyzers for KDE4http://www.vandenoever.info/blog/2007/03/08/writing-analyzers-kde4.html<p xmlns="http://www.w3.org/1999/xhtml">You may have heard that KFilePlugin will be replaced in KDE4. In KDE4, we will use analyzers to get text and metadata out of files. Since last monday, you can start porting you analyzers and now I have written <a href="http://techbase.kde.org/Development/Tutorials/Writing_file_analyzers">a tutorial</a> on how to actually go about this. The tutorial uses BMP as a simple example and it should be pretty simple to port the existing KFilePlugin implementations.</p>
<p xmlns="http://www.w3.org/1999/xhtml">If you are looking for a nice job in developing KDE4, check <a href="http://lxr.kde.org/ident?i=KFilePlugin">this list</a> of KFilePlugin implementations that need to be ported.</p>
2007-03-08An additional requirement on kdelibshttp://www.vandenoever.info/blog/2007/03/05/additional-requirement-kdelibs.html<p xmlns="http://www.w3.org/1999/xhtml">I just commited a change to the main <code>CMakeLists.txt</code> of <code>kdelibs</code> to require Strigi. There is no code actually using it, this will come next monday (promise!). Adding this dependency now will allow us to iron out potential problems with compiling Strigi that might pop up when many KDE developers try to compile it.</p>
<p xmlns="http://www.w3.org/1999/xhtml">To compile Strigi you need at least the following development packages: <code>zlib1g-dev</code>, <code>libbz2-dev</code>, <code>libssl-dev</code>, <code>libmagic-dev</code>, and <code>libexpat1-dev</code>. These are the names of the packages in Ubuntu Edgy. On some distros <code>libmagic-dev</code> is called <code>file-dev</code> or <code>file-devel</code>.</p>
2007-03-05Code on the movehttp://www.vandenoever.info/blog/2007/02/27/code-move.html<p xmlns="http://www.w3.org/1999/xhtml">Today, the code for Strigi moved to a more prominent position in the KDE subversion repository. The code now resides under <a href="http://websvn.kde.org/trunk/kdesupport/strigi/">/trunk/kdesupport/strigi</a>. This is a directory for code on which (parts of) KDE depend(s). The next step will be to make kdelibs use Strigi code for getting at file metadata. A branch in which this work is being done has existed for some weeks at <a href="http://websvn.kde.org/branches/work/kdelibs-strigi/">branches/work/kdelibs-strigi/</a></p>
<p xmlns="http://www.w3.org/1999/xhtml">You can update your Strigi directory with</p>
2007-02-27Awesome FOSDEMhttp://www.vandenoever.info/blog/2007/02/26/awesome-fosdem.html<p xmlns="http://www.w3.org/1999/xhtml">This weekend I was at <a href="http://fosdem.org">FOSDEM</a> and it was great. <a href="http://fosdem.org/2007/schedule/speakers/jim+gettys">Jim Gettys</a> was presenting the One Laptop Per Child progress (<a href="http://ftp.belnet.be/mirrors/FOSDEM/2007/FOSDEM2007-OLPC.ogg">video</a>).</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.vandenoever.info/software/strigi">Strigi</a> saw a lot of limelight. It was prominent in no less then three talks:</p>
2007-02-26Listening to entertaining biologyhttp://www.vandenoever.info/blog/2007/02/11/listening-entertaining-biology.html<p xmlns="http://www.w3.org/1999/xhtml">Today, Midas Dekkers read the last of 1250 entertaining audio columns on man and nature. Many of his columns are available on the website of <a href="http://www.vroegevogels.nl/">Vroege Vogels</a>. You can download either an mp3 of the two hour show of more than 100 mb in size, or you can stream the wma version and skip to the column. That’s at least the theory. Under Linux, I was so far unable to conveniently listen to the wma stream. Now I’ve found VLC and made a small perl script that calls VLC from the URL.</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="co">#! /usr/bin/perl -w</span></a>
<a class="sourceLine" id="cb1-2" title="2"><span class="ex">use</span> strict<span class="kw">;</span></a>
<a class="sourceLine" id="cb1-3" title="3"></a>
<a class="sourceLine" id="cb1-4" title="4"><span class="kw">if</span> <span class="kw">(</span><span class="ex">@ARGV</span> != 1<span class="kw">)</span> <span class="kw">{</span></a>
<a class="sourceLine" id="cb1-5" title="5"> <span class="ex">print</span> <span class="st">"Usage: </span><span class="va">$0</span><span class="st"> &lt;url&gt;\n"</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-6" title="6"> <span class="bu">exit</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-7" title="7"><span class="kw">}</span></a>
<a class="sourceLine" id="cb1-8" title="8"></a>
<a class="sourceLine" id="cb1-9" title="9"><span class="ex">my</span> <span class="va">$url</span> = <span class="va">$ARGV[0]</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-10" title="10"><span class="ex">my</span> <span class="va">$offset</span> = <span class="st">""</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-11" title="11"><span class="kw">if</span> <span class="kw">(</span><span class="va">$url</span> =<span class="ex">~</span> <span class="ex">m</span>/<span class="kw">(</span>\<span class="ex">d+</span><span class="kw">)</span><span class="bu">:</span>(\d\d?<span class="kw">)</span><span class="bu">:</span>(\d\d?)<span class="ex">/</span>) <span class="kw">{</span></a>
<a class="sourceLine" id="cb1-12" title="12"> <span class="va">$offset</span> = <span class="va">$1</span><span class="ex">*3600</span> + <span class="va">$2</span>*60 + <span class="va">$3</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-13" title="13"> <span class="va">$offset</span> = <span class="st">"--start-time "</span><span class="ex">.</span><span class="va">$offset</span><span class="kw">;</span></a>
<a class="sourceLine" id="cb1-14" title="14"><span class="kw">}</span></a>
<a class="sourceLine" id="cb1-15" title="15"></a>
<a class="sourceLine" id="cb1-16" title="16"><span class="ex">system</span>(<span class="st">"vlc </span><span class="va">$offset</span><span class="st"> </span><span class="va">$url</span><span class="st">"</span>);</a></code></pre></div>
2007-02-11Official: Strigi fastest and smallesthttp://www.vandenoever.info/blog/2007/01/17/official-strigi-fastest-and-smallest.html<p xmlns="http://www.w3.org/1999/xhtml">Today two Sun employees, Michal Pryc and Steven Xusheng Hou, <a href="http://mail.gnome.org/archives/tracker-list/2007-January/pdfLkb0uuBAEw.pdf">published a comparison</a> of four desktop indexers: Beagle, JIndex, Tracker and of course Strigi. The work is really extensive and is meant for Sun internally as well as feedback to the developers of the software.</p>
<p xmlns="http://www.w3.org/1999/xhtml">The document is good news for Strigi. The study shows that it uses the smallest amount of RAM (but Tracker uses just as little if you consider the error margin, the other two used at least 15 times as much RAM) and that it is <em>way</em> faster than the rest. Please look up Table 5 in the document.</p>
2007-01-17Browsing archives in KDE4http://www.vandenoever.info/blog/2006/12/17/browsing-archives-kde4.html<p xmlns="http://www.w3.org/1999/xhtml">Yesterday, I compiled KDE4 and ported the jstream kioslave to it. This means that now you can open email attachements or embedded files in any KDE application without writing a temporary copy. The screenshot below shows konqueror with a treeview of the testdata that comes with Strigi. You can see that the sizes and modification times of the files are displayed properly.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><img src="jstream.png" /></p>
2006-12-17view archives and emails with attachments as foldershttp://www.vandenoever.info/blog/2006/12/12/view-archives-and-emails-attachments-folders.html<p xmlns="http://www.w3.org/1999/xhtml">The screenshot below seems boring, but it is not. It means something nice and will start a useability discussion. The topic is ‘files in files’. How should the gui deal with files in files? Well, so far, KDE does a sloppy job of dealing with them. Different file types have different kio_slaves and some have none.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Since Strigi can search in files that are nested in other files, it should also allow the user to open these files. For this to work, it has a kio_slave called jstream:/. What this does is, it offers a common interface for opening embedded files read-only. Today I expanded this kio_slave a bit to allow the user to uses it to browse his home-directory too. Files in that contain other files are shown as folders and can be opened as folders.</p>
2006-12-12Histograms for easy searchinghttp://www.vandenoever.info/blog/2006/12/04/histograms-easy-searching.html<p xmlns="http://www.w3.org/1999/xhtml">Photo applications such as <a href="http://kphotoalbum.org/">KPhotoAlbum</a> have shown that navigation by histograms <a href="http://kphotoalbum.org/kphotoalbum-large.jpg">can be very convenient</a>. Prerequisite of such navigation is that you have fast access to numerical properties of the items you want to navigate. In Strigi, many numerical properties such as modification time, size, embedding depth, width or height are indexed. This enables Strigi to quickly make histograms of these properties. By clicking on a bar in the histogram, the user can quickly and intuitively focus on a subset the items that are shown.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Today I’ve committed code to SVN that allows any application talking to Strigi to easily get out histograms. With the call</p>
2006-12-04Bye bye Big Strigi Lockhttp://www.vandenoever.info/blog/2006/11/30/bye-bye-big-strigi-lock.html<p xmlns="http://www.w3.org/1999/xhtml">In the CLucene backend of Strigi, I was being conservative about allowing concurrent reads and writes to the index, hence making indexing slower if you were looking at the status. So if you were monitoring the indexing speed, it would be slower.</p>
<p xmlns="http://www.w3.org/1999/xhtml">This has now been fixed and it makes a huge speed difference if you are indexing and searching at the same time.</p>
2006-11-30Filename filtershttp://www.vandenoever.info/blog/2006/11/29/filename-filters.html<p xmlns="http://www.w3.org/1999/xhtml">Flavio Castelli added a nice feature to Strigi: the ability to include or exclude files from the index based on their file name. This feature has been in Strigi since the last two releases. And while Flavio has been busy writing a report about it, I have smoothed out the feature a bit and made it more universal so that it now also works on names of files that are embedded in other files. Here is a screenshot that shows the dialog for configuring these filters. (input from the usability teams is welcome ;-)</p>
<p xmlns="http://www.w3.org/1999/xhtml"><img src="filters_0.png" /></p>
2006-11-29Make and CMakehttp://www.vandenoever.info/blog/2006/11/28/make-and-cmake.html<p xmlns="http://www.w3.org/1999/xhtml">At aKademy, David Faure presented <a href="http://web.davidfaure.fr/scripts/makefromemacs">a script</a> for calling make from emacs when you write code in a different directory from the one you build in. Since I use vim and bash, I had to adapt it to work for me. One important aspect for vim users is that if you call ‘:make’ from vim, it calls the first ‘make’ it finds in the path. This call is associated with niceness like jumping to the right error lines after calling ‘:make’. The script I paste here should occur in your path before the real make (usually /usr/bin/make) and it should be called ‘make’. When called, it will move up in the directory hierarchy until it finds a directory called ‘build’. It enters there and calls the real ‘make’ with the arguments you passed.</p>
<div xmlns="http://www.w3.org/1999/xhtml" class="sourceCode" id="cb1"><pre class="sourceCode bash"><code class="sourceCode bash"><a class="sourceLine" id="cb1-1" title="1"><span class="co">#! /bin/sh</span></a>
<a class="sourceLine" id="cb1-2" title="2"></a>
<a class="sourceLine" id="cb1-3" title="3"></a>
<a class="sourceLine" id="cb1-4" title="4"><span class="co"># try to find a 'build' dir above the current dir</span></a>
<a class="sourceLine" id="cb1-5" title="5"><span class="va">OLDDIR=$PWD</span></a>
<a class="sourceLine" id="cb1-6" title="6"><span class="va">REALMAKE=</span>/usr/bin/make</a>
<a class="sourceLine" id="cb1-7" title="7"></a>
<a class="sourceLine" id="cb1-8" title="8"><span class="fu">enterdir()</span> <span class="kw">{</span></a>
<a class="sourceLine" id="cb1-9" title="9"> <span class="kw">while</span> ! <span class="bu">test</span> -d <span class="st">"</span><span class="va">$PWD</span><span class="st">/</span><span class="va">$1</span><span class="st">"</span><span class="kw">;</span> <span class="kw">do</span></a>
<a class="sourceLine" id="cb1-10" title="10"> <span class="bu">cd</span> ..</a>
<a class="sourceLine" id="cb1-11" title="11"> <span class="kw">if</span> <span class="bu">test</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">"</span> = <span class="st">"/"</span><span class="kw">;</span> <span class="kw">then</span></a>
<a class="sourceLine" id="cb1-12" title="12"> <span class="co"># no dir 'build' was found, we give up</span></a>
<a class="sourceLine" id="cb1-13" title="13"> <span class="bu">cd</span> <span class="va">$OLDDIR</span></a>
<a class="sourceLine" id="cb1-14" title="14"> <span class="bu">return</span></a>
<a class="sourceLine" id="cb1-15" title="15"> <span class="kw">fi</span></a>
<a class="sourceLine" id="cb1-16" title="16"> <span class="kw">done</span></a>
<a class="sourceLine" id="cb1-17" title="17"> <span class="bu">cd</span> <span class="st">"</span><span class="va">$PWD</span><span class="st">/</span><span class="va">$1</span><span class="st">"</span></a>
<a class="sourceLine" id="cb1-18" title="18"><span class="kw">}</span></a>
<a class="sourceLine" id="cb1-19" title="19"></a>
<a class="sourceLine" id="cb1-20" title="20"><span class="co"># find the build dir if this dir does not contain a Makefile</span></a>
<a class="sourceLine" id="cb1-21" title="21"><span class="kw">if</span> <span class="bu">test</span> ! -e Makefile<span class="kw">;</span> <span class="kw">then</span></a>
<a class="sourceLine" id="cb1-22" title="22"> <span class="ex">enterdir</span> <span class="st">'build'</span></a>
<a class="sourceLine" id="cb1-23" title="23"><span class="kw">fi</span></a>
<a class="sourceLine" id="cb1-24" title="24"></a>
<a class="sourceLine" id="cb1-25" title="25"><span class="va">$REALMAKE</span> <span class="va">$@</span></a></code></pre></div>
2006-11-28No Anthemhttp://www.vandenoever.info/blog/2006/11/24/no-anthem.html<p xmlns="http://www.w3.org/1999/xhtml">The elections that took place in the Netherlands last Tuesday were about more than the government. In the province of <a href="http://en.wikipedia.org/wiki/North_Brabant">Noord-Brabant</a>, there was an additional question. This question was about a unique aspect of the province: the absence of an anthem. The Queen’s Commisioner decided this should change. Three songs were proposed, all less than a hundred years old. One of them, from the same composer of the emotional song ‘kadeng kadeng’, is a disgrace to good taste. The other two are nice to sing along in the pub.</p>
<p xmlns="http://www.w3.org/1999/xhtml">And which song was chosen? None! 40% chose not to have an anthem in Brabant. This is a big relief. I did not like the idea of having an anthem at all and I’m glad so many people agree. The Netherlands is a country where the norm is being normal and not making a fuss about silly things like an anthem. This is reflected in the fact that the flag of Brabant looks more like a tea towel than a banner.</p>
2006-11-24searching progresshttp://www.vandenoever.info/blog/2006/11/23/searching-progress.html<p xmlns="http://www.w3.org/1999/xhtml">Strigi is moving along at a nice pace. To keep you all posted I’d like to report a bit on what exactly is the progress that has been achieved. Part of it is in SVN and will be in 0.3.10. Part of it has been released in 0.3.9. (0.3.10 is not too far away).</p>
<p xmlns="http://www.w3.org/1999/xhtml">The current development model of Strigi has much in common with the 2.6 kernel line: new features are being added whilst keeping stability but without fear of breaking APIs.</p>
2006-11-23PerlNomichttp://www.vandenoever.info/blog/2006/11/06/perlnomic.html<p xmlns="http://www.w3.org/1999/xhtml">Feel like upping your l33t Perl skills? <a href="http://perlnomic.org/">PerlNomic</a> is a very funny game that is a community effort in making a world where all laws are laid down in Perl code. The fuzzyness of natural languages is replaced by the illegibility of Perl code. Lawyers cannot help you here. You get points by having patches to the book of laws accepted by your fellow citizens. Everybody is in it for the points but without getting supporters for your patches you will get nowhere.</p>
<p xmlns="http://www.w3.org/1999/xhtml">You can provide patches for the wildest of ideas, e.g. a patch for setting up an insurance company that protects you against having your propopals rejected. Or you can try to get a patch passed that allows citizens to start a pol(ly)itical party that gets permission from users to vote in their interest.</p>
2006-11-06deepfind and deepgrephttp://www.vandenoever.info/blog/2006/10/21/deepfind-and-deepgrep.html<p xmlns="http://www.w3.org/1999/xhtml">Do you use <code>find</code>? Of course you do, everybody uses it – often. It’s a nice and quick program for finding files on your disk. A downside to <code>find</code> is that it does not list files embedded in other files like .deb, .rpm, .tar.gz, email attachments, and other files. Now there is a version of <code>find</code> that does exactly this. It’s called <code>deepfind</code>.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Do you use <code>grep</code>? Of course you do, everybody uses it – often. It’s a nice and quick program for finding files on your disk that match a particular string. A downside to <code>grep</code> is that it does not search in binary files like OpenOffice files, mp3s, Microsoft office files, pdfs and also not in files embedded in other files like .deb, .rpm, .tar.gz, email attachments, pdf and other files. Now there is a version of <code>grep</code> that does exactly this. It’s called <code>deepgrep</code>.</p>
2006-10-21post aKadamy musingshttp://www.vandenoever.info/blog/2006/10/01/post-akadamy-musings.html<p xmlns="http://www.w3.org/1999/xhtml">It’s sunday morning, the sun is agreeably peeping through the cloud deck and I’ve just booked a room in a hotel in the Elsass region in northern France after having spent two days at home resting from an exhilarating aKademy.</p>
<p xmlns="http://www.w3.org/1999/xhtml">This was my first aKademy and I’d not met anyone there before. So you can imagine I had quite a hard time remembering all the name/face pairs. Also I had to actively go out and get people to recognize me. For this reason, I proudly wore my badge, on which I’d scribbled ‘Strigi’ with a thick marker, all aKademy. And this worked wonderfully. Many people already knew Strigi and were enthusiastic about it. I heard many ideas from people on how it might benefit their project and KDE in general.</p>
2006-10-01Strigi Image Searchhttp://www.vandenoever.info/blog/2006/09/28/strigi-image-search.html<p xmlns="http://www.w3.org/1999/xhtml">Development of search technology is advancing at a mindmaming pace. The groupphoto of aKademy is now powered by Strigi. This allows you to search developers in the picture. You can search for names, projects or vaguely related ideas such as ‘undulating’.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Of course this is not really Strigi doing the work. It’s javascript scanning the imagemap and adding a searchbox.<br />
<a href="akademy-2006-group-photo.html"><img alt="groupphoto" src="akademy-2006-group-photo-big.jpg" /></a></p>
2006-09-28Strigi BoFhttp://www.vandenoever.info/blog/2006/09/26/strigi-bof.html<p xmlns="http://www.w3.org/1999/xhtml">The Strigi BoF went well and I’m pleased with the feedback. I’m glad most of the issues requested can be handle by Strigi or will be handled by the application coming from the Nepomuk project.</p>
<p xmlns="http://www.w3.org/1999/xhtml">Now there is time for hacking. The first feature I’ll add is possibility to index files via the DBus interface. The second feature will be to add a configuration file framework.</p>
2006-09-26Talking about search functionality in KDE4http://www.vandenoever.info/blog/2006/09/23/talking-about-search-functionality-kde4.html<p xmlns="http://www.w3.org/1999/xhtml">So Akademy started and the atmosphere is great. The talks so far are very nice and if the talks that are up next hold up to their title the next days will provide a lot if listening pleasure.</p>
<p xmlns="http://www.w3.org/1999/xhtml">In Aaron’s second talk (very unusual, he really doesn’t talk that much :-), he mentioned Nepomuk in relation to searching on the desktop. I’m very curious to hear what these guys are up to. If you are so excited about searching tools on the desktop that you cannot wait until the Nepomuk BoF on Tuesday evening, you can join the first BoF on Akademy 2006, the <a href="http://akademy.kde.org/codingmarathon/bof.php">Strigi Desktop Search BoF at 13.00 o’clock</a>, also on Tuesday.</p>
2006-09-23Strigi release 0.3.8http://www.vandenoever.info/blog/2006/09/13/strigi-release-038.html<p xmlns="http://www.w3.org/1999/xhtml">After more than two months of frantic development, a <a href="http://www.vandenoever.info/software/strigi/">new Strigi release</a> is available. This release has so many desirable features that you cannot help but upgrade. The numbering (0.3.8) is leading up to 0.4.0 which will be released around the time of Akademy. There I hope to start working on KDE4 integration.<br />
So what’s new?</p>
<dl xmlns="http://www.w3.org/1999/xhtml">
<dt><p>DBus support</p></dt>
<dd><p>Query Strigi from any application.
</p></dd>
<dt><p>Smoother GUI</p></dt>
<dd><p>It’s easy to write your own GUI to Strigi, but the one we write is now quite a bit smoother.
</p></dd>
<dt><p>Inotify support</p></dt>
<dd><p>Know about file changes instantly.
</p></dd>
<dt><p>jstream://</p></dt>
<dd><p>Strigi indexes mail attachments and other nested files. With the KDE3 kio_slave you can open these files in any KDE3 application, no matter how deep it is.
</p></dd>
<dt><p>PDF indexing</p></dt>
<dd><p>using pdftotext, but even faster and more complete parsing is coming soon…
</p></dd>
<dt><p>Word indexing</p></dt>
<dd><p>using wvWare
</p></dd>
<dt><p>much more…</p></dt>
<dd><p>and if you’re still not satisfied, just mail us.
</p></dd>
</dl>
2006-09-13SvnLine: a small demo app for a zoomable timelinehttp://www.vandenoever.info/blog/2006/09/06/svnline-small-demo-app-zoomable-timeline.html<p xmlns="http://www.w3.org/1999/xhtml">This evening I ported a widget I wrote with HTML and javascript to Qt 4.2. I wrote this widget last year. It can show a timeline into which you can zoom by scrolling the mousewheel. This is useful for a number of things like calendar information, browsing files by creation date or size and as shown in this application, for looking at SVN commits.</p>
<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.vandenoever.info/software/svnline.tar.bz2">SvnLine</a> retrieves the SVN log as XML and shows the messages on a time line.<br />
Here are some screenshots showing the new widget as a QGraphicsScene:<br />
<a href="svnline1.png"><img src="svnline1.png" /></a></p>
2006-09-06XML Data Binding for C++http://www.vandenoever.info/blog/2006/08/06/xml-data-binding-c.html<p xmlns="http://www.w3.org/1999/xhtml"><a href="http://www.vandenoever.info/software/strigi/">Strigi</a> has reached the point that the configuration files for it should be more advanced than a text file with one directory per line. Because I have good experience with using <a href="http://www.w3.org/TR/xmlschema-0/">XML Schema</a> for mapping from XML to java and back using <a href="http://jaxb.dev.java.net/">JAXB</a>, I’d been looking for a good toolkit that does the same in C++. The requirements for such a tool are:</p>
<ul xmlns="http://www.w3.org/1999/xhtml">
<li><p>Simple</p></li>
<li><p>Small</p></li>
<li><p>Few dependencies</p></li>
<li><p>Use XML Schema</p></li>
</ul>
2006-08-06