»Rejourn root
»LibreOffice Community Blogs
  • Thursday, 21 February 2019
    My hack week at Collabora: btLr text direction in Writer

    As mentioned in my previous such report, a hack week is when we are allowed to hack on anything we want in LibreOffice for a few days at Collabora. I used this time to implement core support for the btLr text direction in Writer.


    If you work with tables in Word, it’s very easy to create this writing direction: the context menu in a table cell has a menu item to set the direction of the text, where you can rotate the text by 90 degrees counter-clockwise or clockwise. The counter-clockwise btLr direction is the problematic one. Support for tbRl was fine already, since that is needed typically for Chinese/Japanese scripts as well.

    Results so far

    Here is how the baseline, the current and the reference rendering of btLr text looks like:

    btlr-cell.docx, baseline

    btlr-cell.docx, current

    btlr-cell.docx, reference

    You can see how the second paragraph in the cell was missing from the rendered result and now we basically pixel-by-pixel match the reference.

    How is this implemented?

    If you would like to know a bit more about how this works, continue reading… :-)

    The document model and UNO API were reasonably straightforward to implement, but the layout was much more challenging. Writer already supported 3 writing directions:

    • typically used for Latin (left to right, top to bottom)

    • Chinese/Japanese (top to bottom, right to left)

    • Mongolian (top to bottom, left to right) text.

    This new one is also a vertical direction, also left to right, but bottom to top. The initial layout contained code to read the new enumerator from doc model, extend the SwFrame class to handle this new bottom to top mode, some handling of switching between horizontal/vertical mode and at the end mapping from Writer layout’s direction to VCL’s "900" font orientation. There are more things to handle in layout, but this was good enough to look at other areas as well.

    The ODF filter required updating, which was a bit challenging as it was necessary to write different attribute names depending on which enumerator is used from an emumeration, and we don’t have good support for this. Once the filter code was in place, I could write some layout-level tests as well.

    Since we have .ui files for UI descriptions, adding UI support was really easy.

    Time came to step away from coding for a moment and write up paperwork to propose this feature to be part of the next ODF version (thanks to Andras for the help there!).

    Finally I went back to layout, and improved things a bit more: after fixing baseline offsets, the positioning of the text was exactly matching what Word does. How do I know? I used this little script:

    gs -dNOPROMPT -dBATCH -sDEVICE=jpeg -r75 -dNOPAUSE -sOutputFile=btlr.jpg btlr.pdf
    gs -dNOPROMPT -dBATCH -sDEVICE=jpeg -r75 -dNOPAUSE -sOutputFile=btlr-word.jpg btlr-word.pdf
    composite -compose difference btlr-word.jpg btlr.jpg out.jpg

    Which allows seeing the differences between our and Word’s PDF output. Additional work was needed to handle multiple paragraphs in a table cell. At this stage I was happy enough with the rendering result, so finally pulled the trigger and replaced the old DOCX filter hack (using character-level rotation) with simple DOCX filter mapping from OOXML’s btLr direction to Writer’s btLr direction — i.e. what was already done for the tbRl case.

    Future work

    The feature works good enough already so that this new core feature can be used by the DOCX filter by default, but there are still a few rough edges:

    • the shell code (cursor travelling, selection painting, etc) only has partial support for this new direction

    • RTF and DOC filters are not yet updated

    • the ODF proposal has a list of contexts other than table cells where the new writing direction could be used, which lack UI/filter support/etc at the moment.

    All this is available in master (towards LibreOffice 6.3), so you can grab a daily build and try it out right now. :-)

  • Monday, 04 February 2019
    Improving SmartArt import in Impress FOSDEM talk

    (via cor4office)

    The next step in the recent SmartArt story is my Improving SmartArt import in Impress talk at FOSDEM 2019, in the Open Document Editors devroom. The room was a bit far away from the popular places, but the livestream worked out nicely.

    There was also a hackfest before the conference, I looked at RTF export of rotated Writer pictures.

  • Friday, 04 January 2019
    SmartArt improvements in LibreOffice, part 3

    I recently dived into the SmartArt support of LibreOffice, which is the component responsible for displaying complex diagrams from PPTX. I focus on the case when only the document model and the layout constraints are given, not a pre-rendered result.

    First, thanks to our partner SUSE for working with Collabora to make this possible.

    Continuous Block Process, Accent Process and Organization Chart

    In this post I would like to present the progress done last month regarding the above mentioned diagram types — these are used in many documents.

    The improvement (as always) come in small incremental steps:

    • Continuous Block Process now reads space width from constraints.

    • Accent Process now has the missing bullets and fixes an incorrect large paragraph-level indent.

    • Organization Chart now has an initial implementation of the hierRoot and hierChild algorithms.

    • Organization Chart now handles multiple employees for a manager.

    With all these fixed, we reach a much better state for the mentioned diagram types.

    Results so far

    The SmartArt test documents from sd/qa/unit/data/pptx/ is what I used for testing this work.

    Here is how the baseline, the current and the reference rendering of Accent Process looks like:

    smartart-accent-process.pptx, baseline

    smartart-accent-process.pptx, current

    smartart-accent-process.pptx, reference

    And here is how the baseline, the current and the reference rendering of Organization Chart looks like:

    smartart-org-chart.pptx, baseline

    smartart-org-chart.pptx, current

    smartart-org-chart.pptx, reference

    This is not not perfect yet, but it’s clearly a large improvement, all text is now readable from the diagrams and bullets are no longer missing!

    All this is available in master (towards LibreOffice 6.3), so you can grab a daily build and try it out right now. :-)

  • Tuesday, 04 December 2018
    SmartArt improvements in LibreOffice, part 2

    I recently dived into the SmartArt support of LibreOffice, which is the component responsible for displaying complex diagrams from PPTX. I focused especially on the case when only document model and the layout constraints are given, not a pre-rendered result.

    First, thanks to our partner SUSE for working with Collabora to make this possible.

    Accent Process

    In this post I would like to present the progress regarding the Accent Process preset, available in PowerPoint — which is used in many documents.

    This exposed several shortcomings of the current diagram layout we have in LibreOffice:

    • Values are not read from constraints (there was a reason for this, they can be complex, given that depending on the context, the unit is points or millimeters and the unit is always implicit).

    • ZOrder offsets were ignored.

    • Linear algorithm did not take size from constraints when it came to recursing into child algorithms.

    • Data point assumed that all text for it is a single "run" (i.e. either all text is bold or nothing, not half of it).

    • followSib axis was not implemented for forEach, so when you have arrow shapes between objects, we created N arrows, not N - 1 ones.

    • Connectors were created as invisible shapes and had the wrong width/height aspect.

    With all these fixed, we reach a much better state for handling accent process.

    Results so far

    smartart-accent-process.pptx is what I used for testing of this work.

    Here is how the baseline, the current and the reference rendering of the test documents look like:

    smartart-accent-process.pptx, baseline

    smartart-accent-process.pptx, current

    smartart-accent-process.pptx, reference

    This is not not perfect yet, but it’s clearly a large improvement, all text is now readable from the diagram!

    All this is available in master (towards LibreOffice 6.3), so you can grab a daily build and try it out right now. :-)

  • Monday, 05 November 2018
    SmartArt improvements in LibreOffice

    I recently dived into the SmartArt support of LibreOffice, which is the component responsible for displaying complex diagrams from PPTX, especially in case only document model and the layout constraints are given, not a pre-rendered result.

    First, thanks to our partner SUSE for working with Collabora to make this possible.

    The problem

    There are several ones. :-) If you are just interested in high quality viewing of PPTX files, then your problem started with PowerPoint 2007 not writing a pre-rendered drawingML markup of the diagram to the files, only PowerPoint 2010 started behaving like this. Additionally, if a diagram is not edited, then re-saving with PowerPoint 2010 doesn’t seem to generate the drawingML markup, either. This means that data + constraints cases are quite frequent even today.

    Also, one day Impress should be able to actually edit these SmartArts as well, so having the knowledge how to lay out SmartArt (even if it’s import-time-only at the moment) is a good thing.

    Results so far

    I always write cppunit tests when I work on filter code (in this case OOXML), so far all fixes were visible in just two test files: smartart-vertial-box-list.pptx and vertical-bracket-list.pptx.

    Here is how the baseline, the current and the reference rendering of these test documents look like:

    smartart-vertial-box-list.pptx, baseline

    smartart-vertial-box-list.pptx, current

    smartart-vertial-box-list.pptx, reference

    vertical-bracket-list.pptx, baseline

    vertical-bracket-list.pptx, current

    vertical-bracket-list.pptx, reference

    In terms of code commits, the fixes are split into several ones:

    Clearly the results are not perfect yet, but in both cases nothing was visible, and now all text is readable, so we’re moving in the right direction!

    All this is available in master (towards LibreOffice 6.2), so you can grab a daily build and try it out right now. :-)

  • Monday, 01 October 2018
    Text layout performance in LibreOffice conference lightning talk

    Last Friday I gave a Text layout performance lightning talk at LibreOffice Conference 2018. Click on the image to get the hybrid PDF slides!

  • Friday, 28 September 2018
    ReqIF import/export in LibreOffice Writer conference talk

    Earlier today I gave an Editing ReqIF-XHTML fragments with Writer talk at LibreOffice Conference 2018. The room was well-crowded — perhaps because the previous talk was about OOXML interoperability. ;-)

    I expect quite some other slides will be available on Planet, don’t miss them.

  • Sunday, 23 September 2018
    odfsig: an Open Document Format (ODF) digital signatures tool

    I created a toy project to experiment with a few technologies I wanted to try out (cmake, googletest, xmlsec outside LibreOffice, libzip and AppVeyor). The result is a tool with a similar interface as pdfsig from poppler (for PDF files), just for ODF: a cmdline executable to verify the digital signature(s) in an ODF document.

    The source code now has CI on Linux and Windows, so perhaps in a shape that is interesting for others to have a look as well. And if not, then no problem, it was interesting to put together these building blocks and see them working as expected. :-)

  • Saturday, 22 September 2018
    mutt/vim offline address book with multiple sources

    I used to have a hackish setup to trigger address book in the form of code completion from vim, when mutt starts it. I recently migrated the last part of it from python2, so it’s now in a relatively consistent state. On a boring flight trip I finally got around to summarize how it works, perhaps it’s useful to someone else as well. :-)

    By multiple sources, I mean Google Contacts for my private account, and LDAP for work-related accounts. I have one script for each to have a local backup:

    Then comes mutt/contacts/search, which can read these backups from $HOME/.mutt/contacts/ (you can create symlinks to decide which backup should be included in the search results).

    The rest is just a short search.vim that integrates the search script into vim, so when mutt starts it with ft=mail, the search script is invoked when you start typing and you press Ctrl-X Ctrl-O (trigger code completion).

    And that’s it, I can start typing mails to friends and customers even without network connectivity, without manually maintaining an own address book just for mutt!

  • Friday, 07 September 2018
    Custom user profiles with unoconv


    Background: I was benchmarking Online vs jodconverter vs unoconv the other day for Collabora’s document conversion page. One problem with measuring unoconv performance was that it provided no ways to run multiple unoconv processes in parallel, while the underlying soffice binary obviously allows this.

    So while unoconv is not capable of launching the soffice process in a chroot (improves security), nor is capable of forking an already pre-initialized soffice process (improves performance, both are things Online can do for you), there is no real reason why you should not be able to run multiple unoconv processes in parallel. The previously mentioned benchmarking would be quite unfair if even this kind of multiprocessing would be ignored, but unoconv had no way to specify a custom user profile, which has to be different for each soffice process.

    So I filed a GitHub pull request on 1st Jun, and finally it was merged on 10th Aug.

    Here is how you can use it for example:

    unoconv --user-profile /tmp/tmpf_yreswi -f pdf --port 2002 test.txt
    It’s your responsibility to give --port a unique value, but that’s not too hard: if you use a thread pool to launch the unoconv processes, then you can add the thread index to a base port and that will give you a unique port.

    So this is available in unoconv master (towards unoconv 0.8.2+1), you can grab the sources from git and try it out right now. :-)

  • Wednesday, 08 August 2018
    API improvements in LibreOffice


    I worked on two small features to extend the public (UNO) API of LibreOffice. First, thanks to Vector for funding Collabora to make this possible.

    Aliased paths and text in the PNG export for Draw

    The UNO API of Draw allows you to build quite complex and custom shapes, but you may want to export the rendered result to a bitmap for testing purposes, so you can assert that the actual result matches a reference one.

    One problem in this area is anti-aliasing, which can easily differ between machines. Given that normally aliased rendering is ugly, there is now a way to enable AA, but disable it just during a single invocation of the PNG exporter.

    The above picture shows how the AA result looks like. You could write a Basic macro like this to trigger the PNG export from Draw:

    xExporter = createUnoService("com.sun.star.drawing.GraphicExportFilter")
    Dim aArgs(1) As new com.sun.star.beans.PropertyValue
    aArgs(0).Name  = "URL"
    aArgs(0).Value = "file:///tmp/debug/aa.png"
    aArgs(1).Name  = "MediaType"
    aArgs(1).Value = "image/png"

    Let’s see how it looks like if you turn AA off:


    You just need to specify a new Antialiasing key under FilterData:

    Dim aFilterData(0) As new com.sun.star.beans.PropertyValue
    aFilterData(0).Name = "AntiAliasing"
    aFilterData(0).Value = False
    xExporter = createUnoService("com.sun.star.drawing.GraphicExportFilter")
    Dim aArgs(2) As new com.sun.star.beans.PropertyValue
    aArgs(0).Name  = "URL"
    aArgs(0).Value = "file:///tmp/debug/non-aa.png"
    aArgs(1).Name  = "FilterData"
    aArgs(1).Value = aFilterData()
    aArgs(2).Name  = "MediaType"
    aArgs(2).Value = "image/png"

    You can imagine which rendering result is easier to debug when the reference and the actual bitmap doesn’t match. ;-)

    This feature is available for other bitmap formats as well, PNG is only an example.

    Default character style in Writer

    In most cases you don’t really need a default character style: if you’re fine with a default, then the default paragraph style should be enough for your needs. In general, paragraph styles can contain character properties, so if the default is fine for you, you just don’t set a character style.

    However, there is an exception to all rules. If you want to reset the current character style, it makes sense to just set the CharStyleName property to a default value, especially since this works with paragraph styles already.

    Now you can write C++ code like this (see SwUnoWriter::testDefaultCharStyle() for a full example):

    xCursorProps->setPropertyValue("CharStyleName", uno::makeAny(OUString("Standard")));

    And it’ll be handled as Default Style in English builds, or their localized versions in a non-English UI.

    All this is available in master (towards LibreOffice 6.2), or you can grab a daily build and try it out right now. :-)

  • Thursday, 05 July 2018
    Improved ECDSA handling in LibreOffice

    I wrote about ECDSA handling in LibreOffice last year, back then the target was to be able to verify signatures using the ECDSA algorithm on Linux.

    Lots of things happened since then, this post is meant to summarize those improvements. My personal motivation is that Hungarian eID cards come with a gov-trusted ECDSA (x509) cert, so handling those in LibreOffice would be nice. My goals were:

    • platforms: handling Windows as well, not only Linux/macOS

    • operations: handling signing as well, not only verification

    • formats: cover all of ODF, OOXML and PDF

    Let’s see what has happened:

    • Linux, ODF, sign: we had hardcoded RSA algorithm when generating a signature, now we infer the sign algorithm from the signing cert algorithm (commit)

    • Linux, OOXML, sign: same problem with hardcoded RSA (commit)

    • Windows, PDF, sign: the certificate chooser had to be ported to from CryptoAPI to CNG (commit)

    • Windows, ODF, verify / sign: this was the largest problem, this required a whole new libxmlsec backend (interface, implementation, all in C90) and also required conditionally using that new backend in LibreOffice (commit)

    • Windows, OOXML, sign: this was almost functional, except that the UI recently regressed, now fixed (commit)

    • Finally now that everything is ported on Windows to use CNG, I could enable it by default yesterday.

    I could test hardware-based signing after this, which was fine out of the box on both platforms. Some screenshots:

    • Linux:

    • Windows:


    (There is no reason why this would not work on macOS, but I did not test that.)

    Thanks Gabor Kelemen who helped me to get a sane card reader that has reasonable driver support on Linux.

    All this is available in master (towards LibreOffice 6.2), or you can grab a daily build and try it out right now. :-)

  • Tuesday, 05 June 2018
    Editing ReqIF-XHTML fragments in LibreOffice Writer

    I worked on a small feature to use Writer as an editor for the XHTML fragments inside Requirements Interchange Format (ReqIF) files. First, thanks to Vector for funding Collabora to make this possible.

    Writer already supported XHTML import and export before (see my previous post) as a special mode of the HTML filter, this work builds on top of that. The main speciality around XHTML as used for fragments inside a ReqIF file is embedded objects.

    The special mode to opt-in for ReqIF-XHTML behavior can actived like this:

    • during import: --infilter="HTML (StarWriter):xhtmlns=reqif-xhtml"

    • during export: -convert-to "xhtml:HTML (StarWriter):xhtmlns=reqif-xhtml"

    Three different cases are handled:

    1. Image with native data we don’t understand and just preserve.

    2. Image with OLE2 data, which we hand out to external applications (at least on Windows). On the above video this is an embedded PPSX file, handled by PowerPoint.

    3. Image with ODF data, which we handle internally. This is a Draw document on the above video.

    Regarding how it works, the import is a series of unwrapping containers till you get to the real data and the export is the opposite of this. Here are the layers:

    • Larger ReqIF files have the .reqifz extension, and are ZIP files containing an XML file, having the XHTML fragments. This is not relevant for this post, as Writer assumes that extracting the XHTML fragment from ReqIF is done before you load the content into Writer.

    • XHTML always has a PNG image for the object, and optionally it has RTF as native data for the object.

    • The RTF file is a fragment, containing just an embedded OLE1 container.

    • The OLE1 container is just a wrapper around the real OLE2 container.

    • The OLE2 container either has the data directly or MSO has a convention on how to include OOXML files in it (see the PPSX example above), and we handle that.

    On export we do the opposite: save the file, put it into OLE2, then into OLE1, then into RTF, finally into XHTML.

    There is no specification on how to put ODF files into OLE2, so I extracted the relevant code from LibreOffice’s binary MSO filters and now the Writer HTML filter uses that as well. This avoids code duplication and also could avoid inventing some new markup this way.

    All this is available in master (towards LibreOffice 6.2), or you can grab a daily build and try it out right now. :-)

  • Friday, 04 May 2018
    Lazy reading images from Microsoft formats in LibreOffice

    I worked on improving document load performance of Microsoft formats in general, and DOC/DOCX in particular in LibreOffice recently. First, thanks to TDF and users that support the foundation by providing donations for funding Collabora to make this possible.

    I built on top of the great work of Tomaz, focusing on these secondary, but important formats.

    The idea is that if you load an Microsoft binary or OOXML file, it should not be necessary to parse all images at load time, it’s enough to lazy read it when we first render e.g. a Writer page containing that image.

    The focus here was documents containing large images. I tested with an Earth photo of size 8000x8000 pixels from NASA, making little modifications to it, so each picture has a different checksum, embedding them into a binary DOC file.


    I measured the time from the soffice process startup to rendering the first page. We defer the work of loading most images now, as you can see on the chart. In contrast, we used to decompress all images on file import in the past. This means the new cost for e.g. 4 images is 37% of the original.

    All this is available in master (towards LibreOffice 6.1), or you can grab a daily build and try it out right now. :-)

  • Tuesday, 10 April 2018
    LibreOffice Hamburg Hackfest 2018

    (via Sweet5hark)

    I arrived home from Hamburg yesterday where I participated in the LibreOffice hackfest over the weekend as a mentor. First, thanks to The Document Foundation — and all the donors for funding Collabora to make this possible.

    There were a few topics I mentored:

    • Patrick was interested fixing tdf#116486, which required some background knowledge on the Writer document model and layout, so we explored the relevant details together towards providing an actual patch for the bug.

    • Nithin wanted to fix tdf#112384, which turned out to be an ideal task for a hackfest. On one hand, the scope is limited so that you can implement this mini-feature over a weekened. On the other hand, it required touching various parts of Writer (UI, document model, UNO API, ODF filter), so it allowed seeing the process of adding a new feature. The patch is merged to master.

    • Linus looked for a task that is relatively easy, still useful, we looked at tdf#42949, and he identified and removed a number of unused includes himself. This should especially help with slow incremental builds. Again, the patch is already in master.

    • Zdeněk (raal) wanted to write a uitest for tdf#106280 so we were figuring out together how to select images from pyuno and how to avoid using graphic URLs in uitests in general.

    The full list of achievements is on the wiki, if you were at the hackfest and you did not contribute to that section, please write a line about what did you hack on. :-)

    Finally, thanks for the organizers and the sponsors of the hackfest, it was a really great event!

  • Friday, 02 March 2018
    Optimizing ODT ↔ XHTML conversion performance for simple documents

    I worked on improving the ODT ↔ XHTML conversion performance for simple documents in LibreOffice recently. First, thanks to Vector for funding Collabora to make this possible.

    ODT → XHTML conversion


    The focus here was really simple documents, like just one sentence with minimal formatting. The use-case is to have thousands of these simple documents, only a minority containing complex formatting, the rest is just that simple.

    Performance work usually focuses on one specific complex feature, e.g. lots of bookmarks, lots of document-level user-defined metadata, and so on — this way there were room for improvements when it comes to trivial documents.

    I managed to reduce the cost of the conversion to the fifth of the original cost in both directions — the chart above shows the impact of my work for the ODT → XHTML direction. The steps that helped:

    • Recognize XHTML as a value for the FilterOptions key in the HTML (StarWriter) export filter, this way avoid the need to go via XSLT, which would be expensive.

    • Add a new NoFileSync flag to the frame::XStorable::storeToURL() API, so that if you know you’ll read the result after the conversion finished, you can avoid an expensive fsync() call for each and every file, which helps HDDs a lot, while means no overhead for SSDs.

    • If you know your input format already, then specifying an explicit FilterName key for the frame::XComponentLoader::loadComponentFromURL() API helps not spending time to detect the file format you already know.

    Note that the XHTML mode for the Writer HTML export is still a work in progress, but it already produces valid output for such simple documents.

    XHTML → ODT conversion


    The chart above shows the results of my work for the XHTML → ODT direction. The steps to get to the final reduced cost were:

    • The new NoFileSync flag, as mentioned previously.

    • A new NoThumbnail flag, which is useful if the ODT will be part of a next step in the pipeline and you know that the thumbnail image won’t be used anyway.

    • The default table autoformat definitions in Writer are now lazy-loaded. (This is my favorite one, you don’t have to opt-in for this, so everyone benefits.)

    • A new HiddenForConversion flag for frame::XComponentLoader::loadComponentFromURL(), which means we don’t lay out the UI elements (toolbars, sidebar, status bar, etc.) when we know the purpose of the document load is only to save the document model in an other format.

    All this is available in master (towards LibreOffice 6.1), or you can grab a daily build and try it out right now. :-)

  • Sunday, 04 February 2018
    EPUB export in LibreOffice Writer FOSDEM talk

    Yesterday I gave an EPUB export in LibreOffice Writer FOSDEM talk at FOSDEM 2018, in the Open document editors developer room. The room was well-crowded — perhaps because the next talk was about LibreOffice/Collabora Online. ;-)

    Quite some other slides will be available on Planet I expect, don’t miss them.

  • Thursday, 11 January 2018
    EPUB3 export improvements in Libreoffice Writer, take two

    I worked on improving the EPUB3 export filter in LibreOffice further recently. First, thanks to Nou&Off in cooperation with a customer who made this work possible. Since the previous blog entry there have been a number of improvements around a next set of topics.

    Cover images


    It is now possible to specify a cover image for the exported EPUB file. Given that a cover image is not naturally part of the Writer document model, I introduced the concept of a media directory for the EPUB export. The media directory is a directory next to the source file, with the <file name without extension> name. If that directory contains a file named cover.svg (or .gif, .jpg, .png), the exporter will automatically use it. Otherwise you can customize this default.

    The picture shows two EPUB files in Readium with different cover images.

    Improved metadata support


    It’s quite frequent that you are technically author of a document, but the logical author of the book is somebody else. Same for the date of the book, and so on. So the EPUB export dialog now has support for overwriting the defaults coming from the Writer document model. For mass-conversion of documents it’s possible to place a <file name without extension>.xmp file in the media directory and XMP metadata from that file will also overwrite metadata coming from the document model.

    The picture shows the extended EPUB export options dialog.

    Footnotes and image popups


    I’ve added support for footnotes. As a special case of this, image popups on images and text is now supported. This works by placing a relative link on a text portion or on an image, and placing an image with the same name (e.g. in high resolution) in the media directory. In this case the EPUB export will bundle the image from the media directory inside the EPUB file and clicking on the text or image will open the bundled image in a popup (or in some other container, depending on how your reader interprets footnotes).

    The picture shows such a popup in Microsoft Edge.

    Fixed layout


    The EPUB3 fixed layout is quite similar to PDF, just it is built on top of XHTML and SVG. Possible use-cases for this can be:

    • exporting a document where presenting the content as reflowable text would be misleading (e.g. comic books), but the publisher of the book only works with EPUB (reflowable or fixed layout, but no PDF)

    • printing (again, in case for some reason you want to avoid PDF)

    These might be very specific situations, but luckily supporting them is not too complex. I implemented an approach very similar to the PDF export, where we export individual pages of the Writer document’s layout as a metafile, and then consume that — this time with the SVG export. Building on top of the existing Writer layout and SVG export means the hard work is really done by these components, the EPUB fixed layout export just puts these together.

    The picture shows a Writer document with a table of contents containing page numbers, a header and a footer in Readium.

    All this is available in master (towards LibreOffice 6.1), or you can grab a daily build and try it out right now. :-)

  • Tuesday, 05 December 2017
    EPUB3 export improvements in Libreoffice Writer

    I worked on improving the EPUB3 export filter in LibreOffice recently. First, thanks to Nou&Off in cooperation with a customer who made this work possible. Since the previous blog entry there have been a number of improvements around 4 topics.


    The character properties of link text is now handled correctly, in the above example you can see that the text is red, and this comes from a character style.

    Improved table support

    Previously the support for tables was there just to not loose content, now all kinds cell, row and table properties are handled correctly. A few samples

    • custom cell width:

    • custom row height:

    • row span:


    So the table support should be now decent, covering row and column spanning and various cell border properties.

    Improved image support

    Previously only the simplest as-character anchoring was supported. Now much more cases are handled. Two examples:

    • image borders:

    • image with a caption:


    This includes various wrap types (to the extent HTML5 allows representing ODF wrap types).

    Font embedding

    If the user chooses to embed fonts (via File → Properties → Font → Embed), then the EPUB export now handles this. Here is a custom font that is typically not available:


    (The screenshot is from the Calibre ebook reader.)

    All this is available in master (towards LibreOffice 6.1), or you can grab a daily build and try it out right now. :-)

  • Friday, 10 November 2017
    Basic EPUB3 export in Libreoffice


    I worked on a new EPUB3 export filter in LibreOffice recently. First, thanks to Nou&Off in cooperation with a customer who made this work possible. The current state is that basic features work nicely to the extent that the filter is probably usable for most books (they typically mostly have just text with minimal formatting), so this post aims to explain the architecture, how the various pieces fit together.

    The above picture shows the building blocks. The idea is that nominally EPUB is a complete export filter, but instead of doing all the work, we offload various sub-tasks to other modules:

    • First we invoke the existing (flat) ODT export, so we can work with ODF instead of with the UNO API directly. This will be useful in the next step.

    • Then we feed the SAX events from the ODT export to a new librevenge text export. Given that the librevenge API is really close to ODF (and xmloff/ has quite some code to map the UNO API to ODF), here it pays off to work with ODF and not with the UNO API directly.

    • The librevenge text export talks to a librevenge generator, which is David Tardon’s excellent libepubgen in this case.

    • Finally libepubgen calls back to LibreOffice, and our package code does the ZIP compression.

    The setup is a bit complicated, but it has a number of advantages:

    • Instead of reinventing the wheel, LO and DLP now shares code, libepubgen is now a dependency of LibreOffice.

    • libepubgen doesn’t bring its own ZIP writer code, it can nicely reuse our existing one.

    • This is a great opportunity to finally write an ODT→librevenge bridge, so other DLP-based export libs can be added in the future (e.g. librvngabw).

    • If we ever want to export to EPUB from Draw/Impress, libepubgen will help us there as well.

    As a user, here is a list of features you can expect working:

    • plain text should work fine (formatting may be lost, but content should be fine)

    • table of contents, as long as you properly use headings or you separate chapters by page breaks

    • export options: EPUB3 vs EPUB2, split on headings vs page breaks

    • basic set of character and paragraph properties should work

    During development I regularly used epubcheck, so hopefully the export result is usually valid.

    All this is available in master (towards LibreOffice 6.0), or you can grab a daily build and try it out right now. :-)

  • Friday, 13 October 2017
    A year in LibreOffice’s PDF support LOCon talk

    A year in LibreOffice’s PDF support was a talk I gave today at LibreOffice conference 2017. Given that this was one of the last talks at the whole conference, thanks to the ones who still did not go home, but listened. :-)

  • Wednesday, 11 October 2017
    LibreOffice: Code Structure LOCon talk

    Today I gave a LibreOffice: Code Structure talk at LibreOffice conference 2017. These are an updated version of Michael Meeks' original slides, it’s actually surprised me how many things changed since April 2016. :-)

  • Monday, 25 September 2017
    pdfium path segment API for LibreOffice's test needs

    I recently fixed tdf#108963, which is a PDF export bug — in case of highlighted and rotated text in e.g. Impress, the highlight rectangle in the PDF export was not rotated.

    This is how the export result looked like:


    And this is how it now looks like, after fixing:


    For a long time the PDF export filter had no tests at all; the current approach I introduced is that we parse the PDF export result with pdfium, which is an excellent PDF rendering library (I covered it in general in an earlier post).

    So given that pdfium knows how that rectangle looks like, we should be able to query the details of it from a test as well, correct? It depends. Yes, it’s possible technically, but no, most of the pdfium functionality is actually not exposed at its public API.

    The current situation is that one could use FPDF_LoadMemDocument(), FPDF_LoadPage() to get access to a PDF page, then FPDFPage_CountObject() and FPDFPage_GetObject() to iterate over objects on a page. We can filter for the relevant object by using FPDFPageObj_GetType() and FPDFPath_GetFillColor(), that will give us the only path that has a yellow fill color.

    But getting more info about the geometry of the path isn’t really possible. As a workaround I went with FPDFPageObj_GetBounds() for the test, but wouldn’t it be nicer to get the individual segments (the objects that are the children of a path) and then get coordinates and other properties of a segment? This is what the recent API I added to pdfium now does. It provides the followings:

    • FPDFPath_CountSegments() gives you the number of segments of a path

    • FPDFPath_GetPathSegment() gives you a given segment, via a new FPDF_PATHSEGMENT opaque type

    • you can use FPDFPathSegment_GetPoint() to get the coordinates, FPDFPathSegment_GetType() to get the type (move to, line to, etc.) and FPDFPathSegment_GetClose() to see if the segment closes the current subpath of the path (or not)

    This means that after the next pdfium update in LibreOffice, PDF export tests can nicely assert these properties of paths instead of dubious bounding box should be larger after rotation assertions.

  • Friday, 25 August 2017
    Split sections inside tables for LibreOffice Writer

    Tables and sections in LibreOffice Writer are both containers, and in some cases it makes sense to have sections inside tables or tables inside sections. (For example you can mark a group of paragraphs as read-only by including them in a read-only section.) Tables in sections, split over multiple pages was already working, but now it’s possible to have sections in tables split over multiple pages as well.

    First, thanks Escriba who made this work possible.

    There were 3 parts of this work, you can read some details about them below.

    Split of multi-line paragraphs

    The first goal was to handle the split of multi-line paragraphs inside sections inside tables. Initially this looked like this:


    Split of one-liner paragraphs

    Technically this is a situation different to the previous one, as split paragraphs have a master (first) frame and one or more follow (non-first) frames; and the previous stage only addressed the move of follow frames to next pages. Initially such a document looked like this:


    Merge a split section

    The last piece was moving paragraphs back to previous pages when there is again space for them. Initially we did not use the newly available space:


    After commit tdf#108524 sw: handle sections inside tables in SwFrame::GetPrevSctLeaf() the paragraph is moved back properly:


    One more thing…

    Given that all code changes affect how sections in tables are handled in a parent frame in general (which is a body frame in all the above pictures), the same changes are also usable for other parent containers as well, e.g. linked text frames. Here is how that looks like:


    That’s it for now — as usual the commits are in master, so you can try this right now with a 6.0 daily build. :-)

  • Friday, 21 July 2017
    Mail merge Writer data source

    If you ever used the mail merge wizard with data sources, then you know how it works: it typically needs some kind of data source (e.g. a Calc spreadsheet), a Writer document containing the email or letter (that contains fields), and then mail merge can generate the personalized documents for you.

    In case you have an existing document where you already have such data in a Writer table, you had to somehow transfer it to one of the formats for which there was a data source driver, and then you could use it inside mail merge. I’ve now added a dedicated Writer driver in connectivity/, so picking up data directly from Writer tables is now possible.

    If you are interested how this looks like, here is a demo (click on the image to see the video):

    That’s it for now — as usual the commits are in master, so you can try this right now with a 6.0 daily build. :-)

  • Tuesday, 04 July 2017
    Using LibreOffice with xmlsec from the system

    LibreOffice uses a number of external libraries, and most of them can be configured to use a bundled version or a system version. libxmlsec was an exception previously (only the bundled version was usable), but LibreOffice master (towards 6.0) doesn’t have this limitation anymore.

    Using a bundled version is a good choice in case:

    • you want to create self-contained binaries

    • you want to bisect a regression, where possibly the regression was introduced by upgrading one of the external libraries

    • the system (e.g. macOS, Windows) doesn’t provide the relevant library

    Using a system version is a good thing in case:

    • you want to work with the system, not against it (if a Linux distro already provides libxmlsec, why ship a duplicated copy inside LibreOffice?)

    • being able to use a system version means our bundled version does not have custom patches which affect the functionality of the library

    • not having custom patches also means upstream benefit from our submitted patches, these patches are reviewed by competent maintainers and upgrading the external is easier, as there is no patchset to rebase.

    With that in mind, let’s have a look what blocked using system-xmlsec in the past:

    • LibreOffice inherited a large patchset from OpenOffice.org, commit 694a2c53810dec6d8e069d74baf51e6cdda91faa (2012-11-30) had 16 patches, with this scary diffstat:

     43 files changed, 5888 insertions(+), 1885 deletions(-)
    • I even increased this when I added the SHA256 patches, as back then I wasn’t sure if it’ll be ever possible to upgrade to a newer libxmlsec version.

    • Step by step I got rid of most of these patches, either by upstreaming them or realizing they are no longer necessary. Upstreaming wasn’t always trivial, as for our purposes it was always easy to patch something, but for upstream non-compatible changes always have to be conditional. Today we have 3 build-specific patches, 1 backport and 1 feature patch that is (at least) not necessary when signing / verifying documents with software-based certificates.

    • At the end two more commits were necessary to support building against system-xmlsec, only adding minimal differences when using the system or the bundled xmlsec variants.

    If you are a Linux distro packager then --with-system-libs already implies --with-system-xmlsec, so you probably don’t have to do anything. If you build LO for static analysis (e.g. Coverity) then this should be also useful, so not relevant issues in 3rd-party code don’t have to be ignored manually.

  • Wednesday, 31 May 2017
    LibreOffice Perugia HackFest 2017

    (via ogervasi)

    Last weekend I attended the LibreOffice Perugia HackFest 2017, with the primary goal of mentoring students (together with Eike and Christian): provided they manage to contribute at least one non-trivial easy hack, they get university credits for their work.

    I worked with Arianna, Claudio, Francesco and Gian, all of them managed to achieve something by the end of the third day.

    When I was not helping others, I also fixed a few bugs:

    • tdf#107976 sw: let a view handle multiple transferables

    • tdf#107837 DOCX export: fix balanced multi-col section at doc end

    • tdf#107684 DOCX export: fix duplicated <w:outlineLvl> element for styles

    • tdf#106950 sw: support CharShadingValue property on paragraph styles

    Some photos I took during the event are available.

    Thanks the organizers for the great event, also kudos to Collabora, Red Hat and TDF for allowing mentors to come! :-)

  • Wednesday, 17 May 2017
    xmlsec improvements in LibreOffice 5.4

    This post summarizes the plumbing work around ODF/OOXML digital signatures that I did on LibreOffice master after the 5.3 branch-off up to now. The big thing is the integration of the libxmlsec 1.2.24 release. Among other things, this contains 2 larger changes that I contributed upstream triggered by the needs of LibreOffice:

    • The ECDSA-SHA256 feature is something I already mentioned, but I did not bother to backport the SHA1 and the SHA256 part, so those now arrived to LibreOffice as well.

    • xmlsec’s XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS flag (while verifying signatures) was there, but its behavior was not clear (neither for nss nor for mscrypto). I’ve changed it to be in sync what you have in other commands to avoid certificate validation (like wget -k or curl -k), which means as a next step there will be one less xmlsec patch in LibreOffice that prevents us from using xmlsec from the system on Linux. (Adding tests also detected that in the nss case not using that flag also didn’t do verification by accident, this is now fixed as well.)

    After the release I also noticed that creating signatures on Windows was broken, this is now fixed on xmlsec master and also backported to LibreOffice.

    All this is available in LibreOffice master, towards 5.4.

  • Tuesday, 18 April 2017
    Improved rountrip of PDF images in LibreOffice

    This is a follow-up to the previous post that described how it is now possible to insert a PDF file as an image in LibreOffice and export that back to PDF, while keeping the original PDF contents. I’ve recently improved this feature so the resulting file is smaller and the vector image can be viewed in more viewers. First, thanks to PMG who made this work possible.

    Let’s look at the previously mentioned front page of a magazine sample when it’s viewed in okular. (A KDE pdf viewer, i.e. something that’s not Adobe Acrobat). The previously used reference XObject PDF markup is not handled by it, so the bitmap fallback was displayed:


    Compare it with the new result:


    Notice the sharp text in the first line.

    Also the size of this sample is smaller now, since we don’t write a large bitmap, and the not shown second page of the PDF image: 2 385 984 → 1 605 558 bytes (about one third of the output is avoided).

    Both techniques have pros and cons, here is a summary:

    • The reference XObject approach allows you to preserve the full PDF data of the image: if it was of multiple pages, even that. Also, the LibreOffice code for this is simple: we just preserve a byte array — that can hardly go wrong. The problem is that no non-Acrobat PDF viewer implements this, including e.g. your printer most probably.

    • The new approach uses the tokenizer I originally wrote for PDF signature verification purposes — it extracts the page stream of the first page from the original file and uses it as a form XObject in the export result — this is the same as how e.g. pdfcrop works. This markup is handled by almost all PDF viewers and also the resulting size is smaller, since the data of other pages is dropped and there is no fallback bitmap. The problem may be that this is a much more complex scenario, so it may go wrong (as usual, bugreports are welcome).

    Nevertheless, the new approach seems like a much better default, so LibreOffice no longer writes the reference XObject approach unless you explicitly request it in the PDF export dialog.

    Some perhaps interesting details:

    • PDF page streams may be provided by multiple objects, but form XObjects must have a single stream, so it we handle the case when different parts of the page stream are compressed in different ways.

    • LibreOffice writes PDF-1.4 by default, in case you insert a PDF image that uses PDF-1.5+, we use pdfium to downgrade that markup to 1.4, and only then insert it.

    • Copying the page stream of the image is not enough, we also recursively copy all referenced objects from the source PDF, while rewriting all contained references, since the objects IDs in the old and new files differ. We also take care of proper scoping of named references in the resource dictionary, so you can use this feature recursively (insert a document as a PDF image, even if that document itself contains PDF images already). :-)

    All this is available in LibreOffice master, towards 5.4.

  • Monday, 20 March 2017
    LibreOffice now uses pdfium to render inserted PDF images

    pdfium is the rendering library used in Chromium’s pdf viewer. It’s based on the foxit pdf renderer and its rendering quality is much better compared to the pre-existing "convert PDF to ODG, then to an image" code when it comes to just viewing a PDF file. First, thanks to PMG who made this work possible.

    Let’s look at a few samples that compare the old pdfimport rendering result and the new pdfium-based one. One important feature is that embedded fonts are handled. This is how this inserted PDF looked like previously:


    Compare it with the new result:


    Now let’s see the front page of a magazine, you can see 4 unexpected artifacts:


    New result:


    Finally a problem with pdfium was that LibreOffice got bitmaps from it, so in case you re-exported to PDF, the quality of these PDF images were worse than in the original PDF file. The PDF specification has a reference XObject feature that helps in this case: it allows the PDF export to still write the bitmap to the exported PDF, but in case the reader supports this feature, the vector-based original file will be shown, not the bitmap.

    Here is a simple hand-crafted star in a PDF file, as it looked initially:


    This is how it looks after LibreOffice’s PDF export learned to emit reference XObjects:


    All this is available in LibreOffice master, towards 5.4.

  • Monday, 13 March 2017
    ECDSA support in xmlsec-nss, bundled by LibreOffice

    Last month a LibreOffice bugreport was filed, as the ODF signature created with Hungarian citizen eID cards is not something LibreOffice can verify. After a bit of research it seemed that LibreOffice and NSS (what we use for crypto work on Linux/macOS) is not a problem, but xmlsec’s NSS backend does not recognize ECDSA keys (RSA or DSA keys work fine).

    The xmlsec improvements happened in these pull requests:

    After this the xmlsec code looked good enough. I had to request an update of the bugdoc in the TDF bug twice, as the signature itself looked also incorrect initially:

    • an attribute type in the signature that had no official abbreviation was described as "UNDEF" instead of the dotted decimal form

    • RFC3279 specifies that an ECDSA signature value in general should be ASN1-encoded in general, but RFC4050 is specific to XML digital signatures and that one says it should not be ASN1-encoded. The bugdoc was initially ASN1-encoded.

    Finally a warning still remains: while trying to parse the text of the <X509IssuerName> element, the dotted decimal form is still not parsed (see this NSS bugreport). The bug is confirmed on the mailing list, but no other progress have been made so far.

    Oh, and of course: Windows is still untouched, there a bigger problem remains: we use CryptoAPI (not CNG) there, and that does not support ECDSA at all. Hooray for open-source libs where you can add such support yourself. ;-)

  • Monday, 27 February 2017
    okular now supports online videos in PDF files

    I rarely write about work did by others, but given that in the previous post I mentioned that linked videos (when they are a http:// URL) are not working, I had a very positive experience which is worth noting. :-)

    I got a private mail nagging me to file a bug and just 3 days later it got fixed!

    Thanks to both Oliver for the nagging and to Albert for the actual fix.

  • Thursday, 16 February 2017
    LibreOffice PDF export now supports videos


    PDF supports screen annotations, which means it’s possible to play embedded and linked videos on top of a static image. Given that LibreOffice also supports videos, it made sense to add support for this in our PDF export filter. First, thanks to PMG who made this work possible. This is currently added for Writer and Impress.

    Linked videos

    Linked videos are the situation when the video is not part of the document itself, but it’s located somewhere else, e.g. a http:// location. This is helpful if you want to email around a PDF file, and want to avoid sending large files when it has video content.

    tdf#104841 is about this situation, first I added support for linked videos in Impress, then also in Writer.

    The result can be played using Adobe Acrobat Reader — for some reason okular on Linux is a bit confused about http:// URLs, wants to convert them to relative ones, and then fails as of today.

    Embedded videos


    tdf#105093 is the embedded video case, this is handy in case you want to create an entirely self-contained PDF, where even the video content is inside the PDF file as an embedded file.

    After Impress support (and a trick around Draw vs Impress shapes) the Writer part wasn’t too complicated.

    Regarding the situation around various video containers and codecs, the above code is quite agnostic. :-) On the LibreOffice side all we require is to be able to extract a key frame from the video to provide a preview image, so e.g. on Linux the support depends on what gstreamer plugins you have installed. The video content is written to the PDF file as-is, so again if it will work in the PDF reader is up to the reader’s codec support. On Linux e.g. okular uses vlc for video playback, so the range of supported formats is quite wide. The same is true on Windows, what I personally tested is LibreOffice’s VLC backend and the embedded QuickTime player in Acrobat Reader.

    All of this is available on LibreOffice master towards 5.4.

  • Tuesday, 31 January 2017
    Impress bugfixes, in time for FOSDEM 2017


    FOSDEM 2017 is here this weekend, and as Michael Stahl pointed out, this (together with the LibreOffice annual conference) are two time periods each year when lots of Impress bugfixes are made, as people start dogfooding. ;-) So below you can read about a pair of Impress bugs I fixed recently.

    Changing font size now takes table selection into account

    tdf#105502 is a situation where you have an Impress table shape, and you select part of the cells, then you click on the sidebar to change the font size. Previously this affected all cells of the table shape, now only the selected cells are updated.

    Background fill for shapes


    tdf#105150 is a PPT(X) filter bug where a shape was previously imported as transparent, but it actually has to have the same fill type as the slide background. In case of PPTX this was already handled in general, but not in case the slide had no explicit background. The result was that in case the shape was used to cover other shapes, they were visible, leading to e.g. this unexpected red rectangle on the screenshot.

    The same bug was present in the PPT import, though there existing support was even more limited: just the "background colored objects" were collected, but nothing was done to them. Now the above use-case should be as good for PPT as it is for PPTX.

  • Tuesday, 17 January 2017
    Hack-(rest-of-the)-week at Collabora


    As mentioned in the blog post of Mike already, last month we were allowed to hack on anything we want in LibreOffice for a few days. I used this time to progress with 3 different topics.

    Stepping through TextBoxes using the keyboard

    Given that a Writer shape with a TextBox is internally two shapes, this needed explicit support. After my TextBox bugfix it’s possible to have two such shapes in a document, and once you select one of them, tab properly jumps between the two shapes; previously nothing happened.

    What did happen is we tried to activate the TextBox of the selected shape, which selected the shape itself, so at the end nothing happened.

    RTF improvements

    For some time it was already possible to import and export custom string document properties from/to RTF, but just in case the value type of the property was string. Now I extended support for these custom properties, so also the remaining types are handled: numbers, bools, doubles and dates.

    xmlsec patch upstreaming

    Last, I’ve started working on upstreaming external/libxmlsec/xmlsec1-noverify.patch.1. xmlsec has no ability to disable the verification of certificates (think of curl -k or wget -k), so in LibreOffice currently we just patch out that code as we don’t need it. So I wanted to add a new verification flag to avoid patching, but it turns out that in the NSS case xmlsec didn’t do the verification, so as a first step I fixed that instead in this xmlsec GitHub pull request. Now that it’s merged, the next step will be to add such a flag, and then LibreOffice can get rid of the patch after the next xmlsec release.

  • Tuesday, 20 December 2016
    PAdES support for PDF files in LibreOffice

    Building on top of the previously mentioned signing of existing PDF files work, one more PDF feature coming in LibreOffice 5.3 is initial support for the PDF Advanced Electronic Signatures (PAdES) standard. First, thanks to the Dutch Ministry of Defense in cooperation with Nou&Off who made this work possible.


    PAdES is an extension of the ISO PDF signature with additional constraints, so that it conforms to the requirements of the European eIDAS regulation, which in turns makes it more likely that your signed PDF document will be actually legally binding in many EU member states.

    The best way to check if LibreOffice produces such PDF signatures is to use a PAdES validator. So far I found two of them:

    As it can be seen above, the PDF signature produced by LibreOffice 5.3 by default conforms to the PAdES baseline spec.


    I implemented the followings in LO to make this happen:

    • PDF signature creation now defaults to the stronger SHA-256 (instead of the previously used weaker SHA-1), and the PDF verifier understands SHA-256

    • the PDF signature creation now embeds the signing certificate into the PKCS#7 signature blob in the PDF, so the verifier can check not only the key used for the signing, but the actual certificate as well

    • the PDF signature import can now detect if such an embedded signing certificate is present in the signature or not

    Don’t get confused, LO does signature verification (checks if the digest matches and validates the certificate) and now shows if the signing certificate is present in the signature or not, but it doesn’t do more than that, the above mentioned DSS tool is still superior when it comes to do a full validation of a PAdES signature.

    As usual, this works both with NSS and MS CryptoAPI. In the previous post I noted that one task was easier with CryptoAPI. Here I experienced the opposite: when writing the signing certificate hash, I could provide templates to NSS on how the ASN.1 encoding of it should happen, and NSS did the actual ASN.1 DER encoding for me. In the CryptoAPI case there is no such API, so I had to do this encoding manually (see CreateSigningCertificateAttribute()), which is obviously much more complicated.

    Another pain was that the DSS tool doesn’t really separate the validation of the signature itself and of the certificate. The above screenshot was created using a non-self-signed certificate, hence the unclear part in the signed-by row.

    If you want to try these out yourself, get a daily build and feel free to play with it. This work is part of both master or libreoffice-5-3, so those builds are of interest. Happy testing! :-)

  • Monday, 12 December 2016
    Signing existing PDF files in LibreOffice

    TL;DR: see above — it’s now possible signing existing PDF files and also verify those signatures in LibreOffice 5.3.

    The problem

    LibreOffice already made it possible to digitally sign PDF files as part of the PDF export, so in case you had e.g. ODF documents and exported them to PDF, optionally a single digital signature could be added as part of the export process. This is now much improved. First, thanks to the Dutch Ministry of Defense in cooperation with Nou&Off who made this work possible.

    A user can already use an other application to verify that signature or sign an already existing PDF file. The idea is to allow doing these from inside LibreOffice, directly.


    As it can be seen above, now the Digital Signatures dialog not only works for ODF and OOXML files, but also for PDF files. If the file has been signed, then the dialog performs verifications of that signature. Signatures are also verified on opening any signed PDF file.

    I’ve also extended the user interface a bit, so that signing an existing PDF file is easy, similarly how exporting to PDF is easier than exporting to a random other file format. There is now a new File → Digital signatures → Sign exiting PDF menu item to open a PDF file for signing:

    When that happens the infobar has a dedicated button to open the Digital Signatures dialog, and also going into editing mode triggers a warning dialog, as going read-write is not needed to be able to sign a document:

    And that’s basically it, after you open a PDF file in Draw, you can do the usual digital signature operations on the file, just like it already works for previously supported file formats.


    What follows is something you can probably skip if you’re a user — however if you’re a developer and you want to understand how the above is implemented, then read on. ;-)

    PDF tokenizer

    The signing feature in ODF/OOXML is implemented by working directly on the ZIP storage in xmlsecurity/. This means that in the PDF case it’s necessary to work on the PDF file directly, except that we had no such PDF tokenizer ready to be used.

    Code under xmlsecurity/source/pdfio/ now is such a tokenizer that can extract info from PDF files and can also add incremental updates at the end of the file, this way we can make sure adding a signature to a file won’t loose existing content in the file. This is fundamentally different form the usual load-edit-save workflow, when we convert the file into a document model, and work on that.

    Verification of signatures

    Previously LO was only able to generate signatures, not verify them. I’ve implemented PDF signature verification using both NSS and CryptoAPI, so all Windows, Linux and macOS are covered. I have to admit that the initial verification was much easier with CryptoAPI. Until I hit corner-cases, I could use an API that’s well-documented and is higher level than NSS. (I don’t have to support different hash types explicitly, for example.)

    When I added support for non-detached signatures, that changed the situation a bit:

     1 file changed, 15 insertions(+), 11 deletions(-)

    was the NSS patch, and

     1 file changed, 104 insertions(+), 8 deletions(-)

    was the CryptoAPI patch.

    Signing existing files

    Signing an existing file means tokenizing a document, figuring out how an incremental update should look like for that file, writing an incremental update that has a placeholder for the actual signature (a PKCS#7 blob, where the input is just the non-placeholder parts of the document as binary data), and finally filling in the placeholder with the actual signature.

    For the last step, I could reuse code from the PDF export (modulo fixing bugs like tdf#99327). For the other steps, the tokenizer remembers the input offset / length for the given token, this way it’s relatively easy to create incremental updates. You can add new objects or update new objects in such an incremental update, and this source tracking feature allows copying even the unchanged parts of updated objects verbatim.

    PDF 1.5+

    Everything becomes a bit more complicated once I started to handle not only LO-generated PDF-1.4, but also newer PDF versions. I think this is important, as Adobe Acrobat creates PDF 1.6 by default today, which has a number of new features (I think all of them were actually introduced in PDF-1.5) that affects the tokenizer:

    • xref stream: instead of an ASCII xref table ("table of contents") at the end of the file, it’s now possible to write the binary equivalent of this as an xref stream. Because the binary version can describe more features we must also write an updated xref stream (and not an xref table) when the import already had an xref stream.

    • object streams: it’s now possible to write multiple objects inside the stream section of a single object in binary form. The tokenizer is necessary to be able to read these objects and also roundtripping (source tracking) should work not only with physical file offsets, but also inside such compressed streams where the offset is no longer just a number inside the input file. (It’s OK to write the updated objects outside object streams, still.)

    • stream predictors: this is a concept from the PNG format, but also used in PDF when compressing the xref stream. See the spec for the gory details, but in short it’s not enough that instead of plaintext you have to deal with binary compressed data, you also have to filter the data before actually parsing the file offsets, and the filter is defined not in terms of object IDs and file offsets, but in terms of adjacent pixels, since it’s documented in the PNG spec. :-) (To be close to the Adobe output, we also apply such predictors when writing compressed xref streams.)

    User Interface

    In addition to be UI changes already mentioned above, one more improvement I did is that now the Digital Signatures dialog has a new column to show the signature type. This is either XML-DSig (for ODF/OOXML) or PDF.


    I’ve added an integration test in the existing CppunitTest_xmlsecurity_signing to have coverage for the small new code that calls into xmlsecurity/ from sfx2/ in case of PDF files. But fortunately because all other code in xmlsecurity/ was new, I could do unit testing in CppunitTest_xmlsecurity_pdfsigning for the rest of the features.

    Needless to say that invoking the PDF tokenizer + signature creator/verifier directly is much quicker than loading a full PDF file into Draw, just to see the signature status. ;-)


    If you want to try these out yourself, get a daily build and play with it! This work is part of both master or libreoffice-5-3, so those builds are of interest. Happy testing! :-)

  • Saturday, 12 November 2016
    LibreOffice session at DevTalks Jr.

    (via DevTalksRo)

    Today I gave a Getting involved with LibreOffice Online and Android session at DevTalks Jr, Bucharest. The event had two tracks in parallel, with a total attendees of about 200 developers.

    Some photos I took after the event are available.

    Thanks the organizers and sponsors for the great event! :-)

  • Monday, 10 October 2016
    Insert PDF as image in LibreOffice 5.3


    LibreOffice 5.3 will add one more vector-based format that can be inserted as an image into documents: PDF. First, thanks to PMG who made this work possible. On the user interface you can now select PDF files when you choose e.g. Writer’s Insert → Image option:

    The first page of the PDF document will be shown, which is handy if the PDF file is basically used as a vector image format.

    Similarly to the SVG feature, the original vector image is stored in the document, but when saving to ODF, a replacement PNG file is also generated to be backwards compatible with older ODF readers. The image context menu → Save menu item allows to extract your original PDF data from the image, too:

    And that’s it, as long as you save your document in ODF, your PDF-as-an-image will be kept without loosing any data. As usual, you can try this right now with a 5.3 daily build. :-)

    However, if you’re interested in how this is implemented, keep reading…

    Document model

    The PDF image in the document model is really similar to how SVG is handled, next to Graphic::getSvgData(), there is now a Graphic::getPdfData(). This new member function exposes the original PDF data, otherwise the Graphic is just a metafile.


    The ReplacementGraphicURL property of the image at an UNO level now exposes the generated metafile for PDF images. This is implemented for both Draw and Writer images, and is used by the ODF export filter.


    When the Graphic instance is rendered, the layout knows nothing about the PDF data attached to the object, only parses the generated metafile. This way the display of the PDF image works out of the box.


    First I’ve implemented a PDF import-as-graphic filter, then the export equivalent of it. As you can see, the PDF import-as-graphic filter isn’t too complicated, it completely reuses the existing "import PDF into Draw" filter, it simply copies the first page of the resulting document model as a metafile.

    Second, once the graphic filters were working, I’ve also improved the ODF import to recognize PDF data — the export side needed no explicit work, once the ReplacementGraphicURL bits were in place.


    As mentioned above, the Draw and the Writer image implementation is separate, so first I’ve added tests for ODT files in the testEmbeddedPdf of CppunitTest_sw_odfexport, and then SdExportTest::testEmbeddedPdf() to cover ODP files (and other ODF formats). Second, the PDF part of the graphic swapout/in code has a dedicated test in GraphicObjectTest::testPdf(), and the UI’s "Save original PDF" feature has a new XOutdevTest::testPdfGraphicExport() test.

    Oh, and if you intent to test this manually in a self-created build, make sure to avoid --disable-pdfimport, otherwise this feature can’t work. ;-)

  • Monday, 03 October 2016
    Small capitals toolbar button in LibreOffice Writer

    It was requested to be able to set the small capitals character property via a toolbar button in Writer, which was indeed not possible. Not only the toolbar button wasn’t there, but the underlying UNO command was also missing (which you can use e.g. from a macro to format the current selection).

    So my commit added a simple set of icons to the galaxy theme for the new toolbar button, defined the new UNO command for Writer text and added it to Writer’s text object bar, next to the upper case and lower case buttons (hidden by default). One difference from those buttons is that those buttons perform a transliteration, while this one really just sets a character property, you can easily undo the property later if needed.

    Wrt. other icon themes, see this mail, hopefully the design team can help there.

    As usual, you can try this right now with a 5.3 daily build. :-)

  • Tuesday, 13 September 2016
    Using clang-based tools beyond loplugin LOCon lightning talk

    The last week I gave a Using clang-based tools beyond loplugin lightning talk at LibreOffice conference 2016, on the last day. Click on the image to see all the slides.

    If you’re a vim or emacs user and you work with C++11 code, you probably want to have a look at clang-rename, include-fixer and some editor plugin exposing the power of libclang (like YouCompleteMe or libclang-vim), sometimes these are really helpful.

  • Monday, 12 September 2016
    A year in LibreOffice's RTF support LOCon talk

    Last week I gave a year in LibreOffice’s RTF support talk at LibreOffice conference 2016, in the development track. Click on the image to see all the slides.

    I’ve also published a number of (mostly) sightseeing pictures based on wondering around in Brno before and after the conference.

  • Friday, 09 September 2016
    Collaborative editing using LibreOfficeKit LOCon talk

    Yesterday I gave a Collaborative editing using LibreOfficeKit talk at LibreOffice conference 2016, in the development track. There were many interested parties — not a surprise, as this is the power horse behind LibreOffice Online. :-)

  • Thursday, 08 September 2016
    Improved digital signature handling in LibreOffice LOCon talk

    Earlier today I gave a Improved digital signature handling in LibreOffice talk at LibreOffice conference 2016, in the development track. The room was well-crowded — seems this year classification was a hot topic. ;-)

    Quite some pictures are now available on Twitter, don’t miss them.

  • Friday, 05 August 2016
    LibreOffice now bundles the latest libxmlsec version

    I wrote about how LibreOffice uses the XMLSec Library in an earlier post from March. There are two long-term goals regarding xmlsec in LibreOffice:

    • bundle the latest xmlsec version, instead the one from 2009

    • upstream enough of the patches, so building & running against xmlsec as provided by a Linux distro also works

    I’m happy to say that the first goal is now reached:

    • libreoffice-5-1 bundled xmlsec 1.2.14 from 2009

    • libreoffice-5-2 bundles xmlsec 1.2.20 from 2014

    • master bundles the latest xmlsec 1.2.22, released earlier this year :-)

    This is good, as this way it’s easier to integrate xmlsec upstream improvements into LibreOffice in the future.

    Regarding the other goal, shrinking the patch list is still to be done. ;-)

  • Monday, 25 July 2016
    A LibreOffice / AddressSanitizer setup

    sanitizers (ASAN, UBSAN, etc.) is a collection of tools to detect memory corruption bugs, undefined behavior and more by instrumenting the code generated by the compiler. (That’s the main difference from valgrind.) From LibreOffice’s perspective one more important difference is that there is a Jenkins_Linux_Ubsan tinderbox that makes sure that the master branch is kept clean from errors detected by a given configuration.

    So when the tinderbox failed after a commit of mine, I wanted to set up a similar environment locally, reproduce and fix the bug, and push the fix once I saw that the fix indeed solves the problem. You can set many options both at build and runtime, so while we have some documentation on the TDF wiki (and also Stephan was kind enough to share his config) on how to use these sanitizers, it wasn’t clear to me what to do step by step. So here is one possible setup that worked for me — in my case I wanted to reproduce a stack-use-after-return problem. If you haven’t ever built LibreOffice before, then go to the Development wiki page, first do a normal build, and if everything went fine, came back here.

    Build options

    My autogen.input looks like this:

    CC=clang -fsanitize=address
    CXX=clang++ -fsanitize=address

    Which is a normal clang debug build, except:

    • you need to add -fsanitize=... to CXX (not to CXXFLAGS), as explained on the wiki

    • you need to explicitly disable Firebird integration for now


    My first attempt failed at build time, as even the tools used only during the build are instrumented, and some memory leak was detected there, which means the build aborted before reaching the problem I was interested in. To disable leak detection during build, and disable parallelism (I needed this, as I did the build in the background while using the machine for something else):

    make build-nocheck ASAN_OPTIONS=detect_leaks=0 PARALLELISM=1

    This also means that I explicitly disabled running any tests, as I knew which is the single unit test I want to run for the purposes of reproducing and fixing the problem.


    Once the build completed, it turns out that the stack-use-after-return detection is disabled at runtime by default, which means I could not see any problem locally. Here is the commandline to run one specific CppunitTest with this detection on:

    cd sw; make -sr CppunitTest_sw_tiledrendering ASAN_OPTIONS=detect_leaks=0:detect_stack_use_after_return=1

    Again, this is just one possible setup, you can use other -fsanitize=... options, other environment variables during build and during testing — but hopefully it helps in the future to avoid pushing fixes for such problems detected by sanitizers just blindly.

    Update, 2019-01-25

    The above described "do it yourself" way doesn’t work with LibreOffice master (towards 6.3) and openSUSE Leap 15.0 anymore. I tried to debug what is the exact problem, but there are many moving parts here:

    • gcc version (providing libstdc++)

    • clang version (5.0.2 is too old; 7 failed to build the plugins, trunk towards 9 also generated false positives for me)

    • various sanitizer-related environment variables

    • various sanitizer-related compiler options

    So it’s much easier to just use the combination used by the Jenkins_Linux_Ubsan tinderbox than something custom. Doing that is reasonably straightforward, but still there are a couple of non-trivial steps. What worked for me is:

    • Set up LODE according to its wiki page.

    • Instead of plain ./setup --dev, do:

    ./setup --jenkins
    ./setup --jenkins-san
    ./setup --dev
    cd $LODE_HOME/dev/core

    This will build a working version of both gcc and clang for you.

    • Instead of manually setting up the environment variables, do:

    . $LODE_HOME/bin/lode_ubsan_env
    • Instead of manually setting autogen options, use this autogen.input:

    • Finally to build the code and run a specific test based on tinderbox mail:

    make build-nocheck
    cd sw; make -sr CppunitTest_sw_unowriter CPPUNIT_TEST_NAME="testPasteListener"

  • Monday, 18 July 2016
    On LibreOffice's ViewContact/ViewObjectContact/ObjectContact

    I’ve recently fixed a missing-repaint problem in LibreOffice’s headless backend, but the root cause wasn’t close to the symptom I saw first. Part of the debugging process was to understand what’s the relation between sdr::contact::ViewContact, sdr::contact::ViewObjectContact and sdr::contact::ObjectContact.

    See this old presentation and the review of my documentation update for the details, but the short version is that:

    • somewhat confusingly, sdr::contact::ViewContact is part of the model, and there is one sdr::contact::ViewContact object per shape

    • sdr::contact::ViewObjectContact is part of a view, and there is one sdr::contact::ViewObjectContact per shape, per view

    • finally sdr::contact::ObjectContact is part of a view, and there is one sdr::contact::ObjectContact per view

    So the answer to my original Is it normal that I have two object contacts and a single view contact for a shape and two views? question is: yes, that’s expected. ;-) Hopefully the updated documentation is now more clear, the incorrect 1:N relation in the original class diagram first confused me.

  • Monday, 27 June 2016
    RTF shape import: group scaling and flip in LibreOffice Writer

    Some kind of simple logo was reported to be mis-imported in the RTF filter, it looked like this:


    which is interesting, but the reference output is different:


    With a bit of investigation, it turns out this was a flipped group shape with a few rectangles, so the mis-rendering of the logo was due to two independent problems. The first is that the child shapes inside a group shape were scaled incorrectly. See the commit for the exact details, after fixing scaling, it looked closer to the original:


    The second problem was that the group itself was flipped, and this was again ignored on import. After fixing that problem:


    the result is basically the same as the reference. Both fixes are not only on master (towards LibreOffice 5.3) but also backported to LibreOffice 5.2. :-)

  • Thursday, 02 June 2016
    Classification toolbar in LibreOffice: Multiple Categories

    I explained the concept of the classification toolbar appearing in LibreOffice 5.2 in a previous post. One incremental update on top of that is support for multiple categories, which I’m describing here.

    TSCP in its BAILSv1 spec defines 3 different policy types (IntellectualProperty, NationalSecurity and ExportControl), and you can set different classification categories for different policy types. Giving a practical example, if you’re communicating with someone, then you can declare what policy type will you be using for that communication, and tag a single document multiple times, once for all used policy types.

    This multiple-categories feature wasn’t supported by LibreOffice previously, we simply read the IntellectualProperty type from the document, and also only wrote that. Now the user interface still reacts to the IntellectualProperty policy type (since in case there are multiple policies and each of them wants a different e.g. watermark, the UI has to pick one in some way), but other than that we read all types from the document, all values are shown on the toolbar and of course you can also set all of them.

    All internal APIs and the .uno command that can be used from macros take a type parameter to get/set a given type of category, if wanted. As usual, you can try this right now with a 5.2 or 5.3 daily build. :-)

  • Wednesday, 18 May 2016
    Recent undo/redo fixes in LibreOffice Impress

    I’ve recently spent some time fixing a few bugs around undo/redo in Impress, in the area of table shapes. I’m mentioning these here as they’re all bugfixes, so they are backported to LibreOffice 5.1, and no major release notes will point them out. So if you are using Impress table shapes and you consider their usability suboptimal, then read on, I have some great news. :-)

    The first problem is tdf#99396, where there were actually two problems:

    1. Vertical alignment is a cell property, but when setting that property, the undo code was simply missing.

    2. When editing cell text (the user is inside "text edit") the undo stack is in a special mode — and ending text edit made the cell property undo items go away. This wasn’t a problem for vertical alignment only, it was a problem for example when the background color of the cell was changed, too. These cell property changes are now added to the undo stack after finishing text edit, so you can still undo them later.

    The second bugreport is tdf#99452 where resizing a table shape row separator and then undoing the resize didn’t restore the original state. See the commit for all the details, but the bottom line is: it isn’t a good idea to automatically re-layout the table when we’ve already resized the shape as part of undo, but the table rows were not yet resized to reflect their original sizes.

    As usual, you can try this right now with a 5.2 daily build. :-) (Or even with an 5.1 one, actually.)

  • Monday, 02 May 2016
    Classification toolbar in LibreOffice

    In the past few posts in this blog I wrote about various digital signing-related improvements that will land in LibreOffice 5.2. In this post I would like to cover an other aspect of helping secure document handling: classification. First, thanks to the Dutch Ministry of Defense who made this work possible (as part of a project implementing trusted signing and communication in LibreOffice) in cooperation with Nou&Off. The basic idea is that in case the user is required to follow a policy when editing a document, then LO can help the user respect these rules in case LO is informed about the rules.

    Luckily TSCP produced a number of open standards around this, which LO can implement without going after a specific vendor. For the scope of this post, two of them are interesting:

    So how does this look like? View → Toolbars → Classification can enable a toolbar that’s disabled by default:

    It has a list box that contains the categories described by the BAF policy. LO comes with such an example policy by default, that’s why you can see categories there already. If you want to use your own policy, you can do so: Tools → Options → LibreOffice → Paths has a Classification row to configure a custom policy:

    And if you select the Internal Only category, you’ll see most of the features described by a category: it can add an info-bar (UI only), header/footer fields and a watermark (stored in the document) as well:

    I would like to point out that the watermark is a proper scalable customshape, not a poor bitmap. :-) Perhaps this part could be extracted to a separate Add Watermark feature later, as I think it’s quite useful on its own as well.

    Finally, one feature is that LO knows how secure the document is once it has a classification category, which means a classification scale and level. For two documents that have the same scale, LO can detect if the user would accidentally try to leak sensitive content from a document with higher classification level to a document that has a lower one. This is implemented when copy&pasting:

    Most of these features work in all Writer, Calc and Impress. The header/footer fields and the watermark are Writer-only, and also Calc/Impress does classification checks only in its internal copy&paste code (e.g. not when doing paste special and choosing RTF).

    Putting all of these together, LO can now help users required to follow classification rules in a number of different ways, as long as the rules they have to follow are available as a BAF XML policy. As usual, you can try this right now with a 5.2 daily build. :-)

  • Thursday, 14 April 2016
    OOXML signature export in LibreOffice

    After adding support for reading OOXML signatures in LibreOffice, I continued with implementing OOXML signature export (as in: not only verification, but signing).

    By verification, I mean that I count the signature of the input document, then compare it with an existing signature, and if they match, it is verified. This can be also called "import", as I only read an existing signature, I don’t create one. By signing, I mean the creation of a new signature, which is always good — if it isn’t, that’s a programming error. This can be also called "export", as I write the new signature into the document.

    First, thanks to the Dutch Ministry of Defense who made this work possible (as part of a project implementing trusted signing and communication in LibreOffice), this included:

    • signing a previously unsigned document

    • appending a signature to an already signed document

    • removing a signature from a document with multiple signatures

    • removing the last signature of a signed document, turning it into an unsigned one

    Obviously the hardest part was the initial success: signing a previously unsigned document, in a way that is accepted by both LibreOffice and MSO. One trick here is that while in ODF the signature stream is simply added to an existing document storage, in OOXML the storage has to refer to the signature sub-storage (it’s not a stream, as it has a stream for each individual signature), then it has to be signed, and finally the signature can be added to the document storage. So instead of reading the document, then appending the signature, here we need to modify the document, and then we can append the signature. By referring the signature sub-storage, I mean it is necessary to modify [Content_Types].xml (so it contains a mime type for both the .sigs extension, and also for the individual /_xmlsignatures/sigN.xml streams) and also the _rels/.rels stream has to refer _xmlsignatures/origin.sigs, which will contain the list of actual signatures. A surprising detail is that the signature is required to contain quite some software and hardware details about your environment, like monitor resolution, Windows version and so on. For a cross-platform project like LibreOffice this isn’t meaningful, not to mention we have no interest in leaking such information. So what I did instead is writing hardcoded values based on what my test environment would produce, just to please MSO. ;-)

    After the initial OOXML signature exporter was ready, the next challenge was adding multiple signatures. The problem here is that you have to roundtrip the existing signatures perfectly. And when I write perfectly, I really mean it: if a single character is written differently, then the hash of the signature will be different, so the roundtrip (when we write back an existing and a new signature to the document) will invalidate the signature. And there is no way around that: the very point of the signature is that only the original signer can re-calculate the signature hash. :-) So what we do is simply threating the existing signatures as a byte array, and when writing back, then we don’t try to re-construct the signature stream based on the xmlsecurity data model, but simply write back the byte array. This way it’s enough to extract parts of the signature which are presented to the user (date, certificate, comment), and we don’t need to parse the rest.

    Removing one of multiple existing signatures isn’t particularly hard, you just need to update _xmlsignatures/_rels/origin.sigs.rels and [Content_Types].xml which refer each and every signature stream. It’s a good idea to truncate them before writing, otherwise you may get a not even well-formed XML as a result.

    Finally removing the last signature is a matter of undoing all changes we did while adding the first signature (the content type list and the toplevel relation list), finally removing the signature sub-storage all-together. I also factored out all this signature management code from DigitalSignaturesDialog (which is a graphical dialog) to DocumentSignatureManager, so that all the above mentioned features can be unit-tested.

    Putting all of these together, LO can now do all signature add, append, remove and clean operations a user would expect from what is referred as simply OOXML signature support. As usual, you can try this right now with a 5.2 daily build. :-)

  • Thursday, 31 March 2016
    OOXML signature import in LibreOffice

    (via ascertia)

    After adding support for SHA-256 hashes in LibreOffice, I turned towards implementing OOXML signature import (as in: verification, not signing) in LibreOffice. First, thanks to the Dutch Ministry of Defense who made this work possible (as part of a project implementing trusted signing and communication in LibreOffice), I collected a list of building blocks needed for this to work:

    • support for the Relationships Transform Algorithm (described in ISO/IEC 29500-2:2012) in xmlsec

    • an actual XML parser for the OOXML signature in xmlsecurity/

    • a new filter flag, so that our code no longer assumes "is ODF" means "supports digital signing" and

    • some refactoring in xmlsecurity/, so that our digital signature code doesn’t assume that multiple signatures are always written to a single file

    The xmlsec bits are now upstream, it seems to me that new algorithm is needed, so that MSO can avoid signing a number of streams (files in ZIP containers), while still being able to verify that all normal streams are signed. Given that MSO by default doesn’t sign all streams (so that e.g. the metadata of the document can be modified without invalidating signatures), this is in use even for a hello-world document. This implies that a typical OOXML signature will never gain the best "signed" category in LO, as we’ll always warn that even though the signature is valid, not all streams are signed. This is a bit of a rant, but better not hide the reality: a default ODF signature covers more than a default OOXML signature.

    The OOXML signature parser had to extract all information from the signature markup that’s interesting for LibreOffice, like the certificate, the signature date or the signature description. I considered extending the ODF signature parser instead of implementing a new one for OOXML, since both markups are based on the same W3C signing spec, but they are different enough that the added complexity doesn’t outweigh the benefit of code sharing here.

    The next step was to add a new SUPPORTSSIGNING filter flag in filter/, and mark the DOCX, XLSX and PPTX file filters as such, and then of course find places mostly in sfx2/ and xmlsecurity/ that assume only ODF files can be signed, and modifying those checks to also handle this new flag.

    Finally, a difference between ODF and OOXML signatures is that ODF puts all of them in a single stream, and all the signing and verifying code works with that stream. However, in case of OOXML, all signatures are in separate streams, so if we want to work with a single object as kind of a signature context, we need a storage (a sub-directory inside the ZIP container), and work with that.

    Putting all of these together, we now have unit tests that take test documents having "good" and "bad" signatures, and the verification result in LO will match with the one of MSO. As usual, you can try this right now with a 5.2 daily build. :-)

  • Wednesday, 23 March 2016
    SHA-256 hashes for ODF signatures in LibreOffice

    As it happened with MD5 hashes in the past, the world is currently moving from SHA1 hashes to SHA-256 hashes these days. This affects LibreOffice’s ODF signing feature as well, where we previously wrote and read SHA-1 hashes, but not SHA-256 ones. First, thanks to the Dutch Ministry of Defense who made this work possible (as part of a project implementing trusted signing and communication in LibreOffice), I could start work on tdf#76142 which attached a reproducer document as well, helping the implementation of this feature.

    If you’re not into the digital signature details, SHA-256 is relevant in two aspects here:

    • it can be a signature method, denoted by the http://www.w3.org/2001/04/xmldsig-more#rsa-sha256 URI, and

    • it can be a digest method, denoted by the http://www.w3.org/2001/04/xmlenc#sha256 URI

    Hashing is interesting in the context of digital signatures because typically not the whole document is signed, just a hash of it, and crypto frameworks like nss or mscrypto typically tie these two together, so you just say you sign with rsa-sha256, which in more detail means hashing with SHA-256 and then signing using rsa.

    A valid signed document using SHA-256 hashing looked like this before:

    I.e. we failed to validate the signature, and presented a dialog that suggested the signature is not valid. After my changes, it looks like this:

    I.e. no error on loading, and the status bar icon tells the user that everything is fine, except that we can’t validate the certificate used for signing.

    As for when should LibreOffice start writing (not reading) SHA-256 hashes when creating signatures, it’s an open question. Probably best to wait till most users already have a version that can read those hashes. Then we would still keep support for reading SHA-1 hashes, but we would use SHA-256 when creating new signatures.

    Another detail is that the hard work of signing in LibreOffice is done by using libxmlsec. We bundled a heavily patched version from 2009, and it wasn’t clear how much work it is to port our patches to a newer upstream version, so I’ve initially backported the SHA-256 patches to our older version (for the nss and mscrypto backends of libxmlsec, as that covers what LibreOffice uses on Linux, Windows and OS X). At the end I managed to update our bundled libxmlsec to a newer (even if not the newest yet) version, so latest master got rid of those custom backports. As usual, you can try this right now with a 5.2 daily build. :-)

  • Wednesday, 16 March 2016
    Signature descriptions in LibreOffice

    LibreOffice’s user interface prohibited creating multiple signatures by the same author on a document, because there was no semantic meaning of signing the same document multiple times. I’ve recently extended the user interface to be able to provide a signature description: this way it makes sense to allow multiple signatures from the same author, because now each signature can have a different meaning. First, thanks to the Dutch Ministry of Defense who made this work possible.

    When the user selects File → Digital Signatures, the dialog lists existing signatures together with their description (if they have any):

    When the user clicks on the Sign Document button, the dialog for certificate selection now also asks for an optional description:

    Changing the value of the description invalidates the signature. For this feature to work, I have extended LibreOffice’s ODF signature markup to store not only a <dc:date> element as signature metadata, but also the <dc:description>. Given that the metadata of an ODF signature is not part of the ODF specification, it is allowed to extend the metadata with custom child elements, so it was not necessary to submit an ODF enhancement proposal for this file format change at this stage. As usual the commits are in master, so you can try this right now with a 5.2 daily build. :-)

  • Thursday, 25 February 2016
    Import of DOCX and RTF linked graphic into LibreOffice Writer

    As it has been reported, the RTF includepicture field was ignored on import. As writerfilter has quite some shared code for DOCX and RTF import, I also looked at the state of linked graphics in the DOCX import, and that wasn’t better, either.

    Although, the root causes were different. ;-) Regarding DOCX, a linked and a non-linked graphic has quite similar drawingML markup: the only difference is if the graphic has a relationship alias (embedded case) or a (possibly relative) external URL. Relative external URLs were broken, as the writerfilter → oox call (to import the graphic) did not forward the base URL, so oox had no chance to properly resolve a relative URL.

    Regarding RTF, a linked graphic is represented as an includepicture field, and now the RTF tokenizer resolves that to a real graphic. As you can see on the above screenshot series (new Writer behavior, old Writer, and reference), we now behave the same way as the reference (or the Writer DOC import).

    A related interesting fact I noticed is that includepicture fields in OOXML are valid, but it seems Word never writes them: either their expanded field result is outdated (e.g. it’s some text), or if the user updates the field, then their implementation instantly replaces the field with a drawingML markup that links the graphic.

  • Sunday, 31 January 2016
    Mail merge embedding in LibreOffice Writer FOSDEM talk

    Yesterday I gave a Mail merge embedding in LibreOffice Writer talk at FOSDEM 2016, in the Open document editors developer room. The room was well-crowded — seems this year LibreOffice Online was a hot topic. ;-)

    We also had a hackfest with about 20 hackers attending, (again) kindly hosted by Betacowork on Thursday and Friday, before FOSDEM.

    There were a few topics I hacked on:

    • .uno:Paste AnchorType param for Writer

    • tdf#97371 DOCX import regression fix about TextBoxes

    • tdf#96175 RTF export feature about company doc property

    • refactoring around Writer’s new (in 5.1) hide-whitespace feature, as requested by Ashod

    • code coverage: RtfExport::WriteRevTab() was completely untested previously, now fixed

    A full list of achievements is available, if you were at the hackfest and you did not contribute to that section, please write a line about what did you hack on. :-)

    Quite some other slides are now available on Planet, don’t miss them.

  • Tuesday, 12 January 2016
    RTF page background export in LibreOffice Writer

    While I added support for page background colors in the RTF import back in 2013, the export part was missing up to now.

    If you set a solid color fill for a page style, and you export it to RTF, here is how the reference rendering output looks like:

    However, in Libreoffice only the background of the paragraph reflected the color set by the user:

    After implementing this feature in the RTF export filter, it now looks much closer to the reference:

    At the moment only solid fill is implemented, so other advanced fill types like graphics or gradients are still missing.

  • Friday, 11 December 2015
    Rich RTF comment export in LibreOffice Writer

    As it has been reported in tdf#94377, the state of Writer comment contents in the RTF export filter wasn’t great.

    With two recent changes, however, the situation is now much better:

    • I’ve added support for multiple paragraphs

    • I’ve added support for both paragraph and text portion formatting

    It wasn’t necessary to implement this from scratch, because comment contents uses the same editeng store as the shape text, and there formatting was already handled. A benefit of this code sharing is that shape text also handles multiple paragraphs without a problem now. :-)

    The commits are backported to libreoffice-5-1, so users will see them already in the upcoming 5.1.0 release.

  • Thursday, 26 November 2015
    Sanitizing member variable names in LibreOffice Writer

    Robinson just branched off libreoffice-5-1 from master in LibreOffice’s core.git repository, so time to talk about what happened behind the scenes in the 5.0 → 5.1 development cycle from my side.

    One stylistic detail that annoyed me for a while was the inconsistency around naming class member variables. In new code it’s common to give them an m_ (or at least an m) prefix, but in older code that wasn’t that common, and various custom hacks were invented to differentiate between pointers which point to the same memory address, but one being a parameter of a member function, and the other being a member variable.

    Probably the worst scenario is when one was an abbreviation of the other, like pTable and pTbl or pCursor and pCrsr. I took this as an opportunity to play with Clang’s LibTooling, and I wrote two tools back during the Cambridge hackfest to automate the process of finding and fixing missing prefixes.

    To scope the renaming, I changed all classes in the sw module having more than 20 unprefixed members to follow the above convention, hopefully this nicely improves code readability, together with the mass-rename of pointless abbreviations, also done before the branch-off, so affecting both libreoffice-5-1 and master. :-)

  • Wednesday, 04 November 2015
    PNG export in LibreOffice Calc

    Both LibreOffice Writer and Impress has the ability to export the document as PNG, which is one way to create thumbnails for documents — i.e. being able to preview them before the real loading of the document happens. It turns out Calc did not have this feature, and given that ScModelObj also supports the css::view::XRenderable interface (just like Writer), I hoped that it won’t be too complex to add one.

    You can refer to Fridrich’s overview blog post for the complete list of steps on how to add a new filter to LibreOffice, here the following steps were needed:

    • improve DocumentToGraphicRenderer, so that it can handle that Calc does not implement the text::XTextViewCursorSupplier interface (Writer uses this one to expose the cursor is on what page)

    • register png_Portable_Network_Graphic as filter type for Calc

    • create a new calc_png_Export filter fragment

    • register a Calc graphic filters configuration type and filter group in Configuration_filter and CustomTarget_registry

    • testcase

    If you can’t wait till LibreOffice 5.1 is released to try out this new feature, you can get a daily build. :-)

  • Tuesday, 20 October 2015
    Flat ODF support in LibreOffice's Android port

    While LibreOffice’s Android port has as good support for ODF as the desktop version, flat ODF was lagging behind. There were two reasons for this:

    With these two fixes my favorite test documents (of which the ODF version worked already previously) in flat ODF version also load properly in all Writer, Calc and Impress — as can be seen on the above montage of screenshots.

  • Friday, 09 October 2015
    Restarting timer of the presenter console

    This use-case came up during this year’s LibreOffice conference. I started the Impress slideshow a few minutes in advance, so the audience could check if they are at the correct room, seeing the title side. Right after starting the slideshow, the presentation timer also started to count. I had to stop and start the presentation, so I had an idea how much time my talk took so far. The side effect of this workaround was that the audience saw an ugly short flash while the presentation was not running at the moment I started talking.

    Because hacking the presenter console requires you to have two monitors, it’s not something I looked into during the conference’s hackfest, but now here it is: I added a button to just restart the timer, then it’s not needed to stop/start the presentation manually.

    The icon is just a placeholder for now, the real design is in progress.

  • Friday, 25 September 2015
    LibreOffice's Android port

    (via Andras Timar)

    I had the pleasure to share where we are wrt. the Android port of LibreOffice yesterday. Abstract on the conference website, slides at the usual place, video record "soon" as usual. :-)

  • Wednesday, 16 September 2015
    Fixing Base form image backgrounds

    In this post I want to go further, and after touching Calc, here is my first story about Base. Of course I lie, it seems that Base forms are kind of read-only Writer documents, at least that’s how I could fix the bug I’m describing here. :-) The topic is still the same, rounding rough edges after the fill attributes rework, this time a stretched background of a Base form. (Which was not stretched at all, it was simply centered both horizontally and vertically on the page.)

    I’m not entirely sure how the document from tdf#92586 is created, but the interesting part from styles.xml is:

    <style:page-layout-properties ... style:repeat="no-repeat">
         <style:background-image ... style:repeat="stretch"/>

    So the schema allows specifying the way how the bitmap is repeated at two places, and in the past the later attribute won, and with the rework this got lost.

    An additional problem that the commit had to solve is that the attribute on the page-layout-properties XML element is mapped to our FillBitmapMode API, while the attribute with the same name on the background-image XML element is mapped to the BackGraphicLocation API, which is specific to Writer. As a result, now there is a compatibility map from the old enumeration to the new one, that’s how the bug document is now rendered the same again, as in the past.

    The fix is already backported to the libreoffice-5-0 branch.

  • Wednesday, 02 September 2015
    Fixing Calc header image backgrounds

    I think this is my first Calc bugfix. :-) The problem I wanted to fix is that while LibreOffice 4.4 learned advanced fill attributes (gradients, hatches, etc) for page headers / footers in Writer, this broke the saving of simple graphic header backgrounds in Calc. Seeing that no-one stepped up to fix this, I tried to do this myself — and luckily the problem was in the ODF export filter, which is much more familiar to me, compared to Calc core.

    Part of that larger feature was changes to the ODF filter, and the bug was exactly about touching shared ODF filter code to please Writer without testing other LibreOffice applications.

    The actual problem was overlapping constants: as in multiple constants had the same numeric value. Such issues are sometimes hard to track down, in this case it wasn’t that hard: the context filter that tried to make sure we don’t write duplicated XML attributes removed the background property when it tried to guard header repeat offsets.

    Given that this affected the LibreOffice 4.4 and 5.0 series, both branches got a backport of the commit, and so the next release from those lines will have the fix.

  • Tuesday, 18 August 2015
    8884 VirtualDevices

    (via teq)

    If you are into C++ programming, you probably know that smart pointers are not just literally strange things like the above ones. ;-) LibreOffice 5.0 got VclPtr, which is smart pointer specialized to VCL’s needs.

    Such refactorings are good things, except that there is no huge rework without regressions. In this case the WMF filter had 3 places where we were leaking VirtualDevices due to a misconversion to the new VclPtr API. The problem was that the document had 135 images, WMF files to be exact. Now given that the leaks were during parsing of WMF records (a WMF file consists of multiple WMF records), at the end we leaked 8884 VirtualDevices. At first the problem was seen as Windows-specific, as at least X on Linux has no problem with creating that many VirtualDevices, but Windows' default resource limits are hit in this case.

    A note about testing this bugfix effectively, so it never happens again. The problem was that I wanted to create a minimal reproducer, but I also needed a document with lots of WMF images, each complex enough to trigger the resource limit. At the end I manually created a DOCX file that had the same image copy&pasted multiple times: that way we really imported them multiple times (normally we notice that they’re the same, and only save the image to the file once, and put multiple references to it), and because DOCX is also a ZIP container, the test file can be still only 99KB instead of the original 17MB RTF.

    Thanks to the 4.4 → 5.0 Windows bibisect repo, it was immediately obvious that this is a VclPtr problem, and then it was possible to identify the root cause, and finally see that the bug title mentioning RTF was just container of the WMF images in this case, the problem had nothing to with with RTF and the leak wasn’t Windows-specific, either.

  • Tuesday, 28 July 2015
    Mail merge embedding

    If you ever used the mail merge wizard with a Calc data source, then you know how it worked in the past: you’ve got 3 files: the .odt mail template, the .ods data source and a .odb data source definition that defines how to access the .ods.

    The target of this LHM-funded project was to get rid of the .odb file and just embed it into the .odt mail template. Why?

    Here is the problem description from a user’s point of view: "When a mail merge document is being saved a separate database file is being automatically created. It links the Writer file to the spreadsheet (ODS, XLS, XLSX etc.) as data source. This additional 2kB ODB file confuses users, they might delete it without knowing to break the connection to the data source." An additional problem is that because the non-embedded data source definition is part of the user profile, you can’t just move the three files to an other machine, as .odb registration will be missing there.

    If you are interested how this looks like, here is a demo (click on the image to see the video):

    That’s it for now — as usual the commits are in master, so you can try this right now with a 5.1 daily build. :-)

  • Monday, 29 June 2015
    ctags vs override/SAL_OVERRIDE


    If you use ctags to help your LibreOffice development, there are already good descriptions for that — e.g. for vim there is one on the TDF wiki.

    What was problematic is that since C++11, override is a valid keyword after a member function declaration, and we have our SAL_OVERRIDE macro that I added to be able to use it before all our supported compilers recognize it. Unsupported parsers include ctags, so if a member function have SAL_OVERRIDE, ctags only indexed the definition, not the declaration.

    I created patches to fix these problems in ctags, the override one is probably interesting for all C++ projects, the SAL_OVERRIDE one is LibreOffice-specific.

    The hope is that the later will go away in the long run, so it won’t really be a problem that ctags do not recognize that macro out of the box. :-)

  • Monday, 08 June 2015
    Cleanup of resourcemodel in LibreOffice

    (via jbparrott)

    The libreoffice-5-0 branch is created, and in each release cycle there is at least one topic that was a long overdue cleanup. In this post, I’m describing how and why the writerfilter/inc/resourcemodel/ and writerfilter/source/resourcemodel/ directories disappeared — though probably nobody will miss them. :-)

    The resourcemodel building block of writerfilter (that handles Writer’s DOCX and RTF import in LibreOffice) was basically a bucket of old and unused stuff. After the removal of the unused .DOC tokenizer, it turned out that most of that code was just referring to itself or template code that was used with a single type only (hello TableManager). resourcemodel was about 6000 lines of code at the time LibreOffice was started, and after some manual cleanup and moving the still needed small part to dmapper (the shared part of the RTF / DOCX import), tools like loplugin:unreffun and callcatcher helped to detect what became truly unused — at the end resulting in the complete removal of these directories.

    That means that after folding the last remaining header into dmapper, the relevant documentation can hopefully now describe source contents easier, having just 4 directories: the RTF and the DOCX tokenizer, the shared part and the UNO service implementations. One less cryptic leftover nobody really knows what it is! ;-)

  • Tuesday, 26 May 2015
    LibreOffice Cambridge Hackfest


    The first ever UK LibreOffice Hackfest took place in the city of Cambridge on May 21st to 23rd (Thursday → Saturday), kindly hosted by Collabora.

    My starter idea was to fix tdf#90315, i.e. to support both nested tables and multiple columns with the proper spacing in between them in the RTF import. For comparison, here is how this looked in LibreOffice 3.4:


    The table borders looked OK due to correct column spacing, but the nested table is missing. Then here is the LibreOffice 4.4 state:


    Nested table is OK, but the table borders are strange due to incorrect column spacing. Finally here is how it looks like now, when the import result is correct:


    Other than this, here is a list of other topics I hacked on:

    After fixing two more less interesting regressions, now it seems we’re down to 0 for the regressions having RTF in their summary, which is promising. :-)

    I few pictures I took while punting and a panorama is available, too.

  • Monday, 18 May 2015
    Protocols Plugfest Europe 2015

    (via plugfestcon)

    Last week I went to Zaragoza to give a talk on how LibreOffice handles interoperability at Protocols Plugfest Europe 2015 on Tuesday. Although I was told this conference is a successor of the previous Zentyal Summit (and I were not there) the conference seemed well-attended — proof above. :-)

    Jacobo also gave a LibreOffice-related talk on Wednesday.

    On the same day, there were some explicit spare time, so I took the opportunity to walk in the historical parts of the city, see my photos and a panorama if that kind of pictures are of your interest. FWIW, Hotel Sauce has free wifi in the rooms, that’s kind of impressing for a two-star category. ;-)

    As usual, thanks Collabora for sponsoring this travel!

  • Sunday, 03 May 2015
    MathType import in the RTF and DOCX filter

    TL;DR: Import of old-style (pre-2010 for RTF, pre-2007 for DOCX) math equations embedded into text documents should be now imported as editable embedded math objects.

    Longer version: if you want to embed math equations into RTF or DOCX files, you have two choices. The older approach is to embed a MathType OLE object into the file, the newer one is a native OOXML markup, which has an RTF markup equivalent as well. Handling of the later has been implemented by Luboš Luňák for DOCX a long time ago, and I contributed the RTF equivalent almost 3 years ago.

    What remains is the handling of the older version, the embedded OLE object. Previously only the replacement graphic was imported, so regardless of the Tools → Options → Load / Save → Microsoft Office → MathType to Math checkbox, the result was never editable.

    Here is how it looks like now:


    Given that the RTF and the DOCX importers share lots of code in the writerfilter/ module, I implemented the same for the DOCX import at the same time, too. The interesting challenge was that writerfilter wants an XFilter implementation for the embedded object if it is to be handled internally by LibreOffice, but the MathType filter (originally created to handle math objects inside binary DOC files) didn’t have one. Once I implemented such a filter wrapper, the rest wasn’t too hard.

    Here are test documents if you want to try it yourself. You’ll need a 5.0 daily build for that, though. ;-)

    If I’m at describing features new in LibreOffice Writer 5.0 file filters, here are a few more:

    And a number of bugfixes for the RTF filter:

    • tdf#86182 better RTL paragraph handling

    • tdf#80708 related to the improved old-style Writer table export handling work

    • tdf#90421 hyperlink export tweak

    Do these sound interesting? Look at what others did for LibreOffice 5.0 on the TDF wiki, even if it’s far from complete, as the 5.0 branch is not yet created. :-)

  • Tuesday, 21 April 2015
    Open IT 2015


    On Saturday I gave a talk at the Open IT 2015 conference about the new features of LibreOffice 4.3 and 4.4. My uploaded slides are available here.

    Thanks Óbuda University for hosting us, it was a great event! Other than talking to the usual suspects like Tamás Zolnai or Gábor Kelemen, I enjoyed two OpenStreetMap talks: it was extermely cool to hear that finally the turistautak.hu community changed their license in February so that all their free maps can be imported to OpenStreetMap — finally one pointless fight ends.

  • Friday, 17 April 2015
    Open Source Budapest 5. meetup

    On Tuesday the 5th Open Source Budapest meetup was held, I was one of the invited speakers, and gave a lightning talk about ged2dot, both as a standalone Python script and as a LibreOffice extension.

    My uploaded slides are available here.

  • Thursday, 02 April 2015
    Android editing: from graphic handling to formatting

    In from selections to graphic handling, I wrote about how we let the LibreOffice Android app select, resize and move images and shapes. Now that we have all type of selections (at least for Writer) in this TDF-funded project, let’s do some formatting! The example implemented by Jan Holesovsky here is to mark the text bold, but you can imagine that using the same technique a number of other character or paragraph properties could be set the same way with little work.

    Here is how it works:

    • When you click on toolbar buttons on the desktop UI, so-called UNO commands are invoked, bold is .uno:Bold.

    • This command is generated by the native Android UI as well, and passed to the lok::Document::postUnoCommand() LOK API.

    • Then the LOK implementation uses the recently introduced comphelper::dispatchCommand() internal API to actually execute it.

    • In all applications (Writer, Calc, Draw and Impress) this command is then evaluated on the current selection: so if you have a cursor position, then from now on the new characters will be bold — or if you have a selection, then that will be adjusted. The point is that this works exactly how it happens with the desktop UI, reusing the same code.

    If you are interested how this looks like, here is a demo (click on the image to see the video):

    Notice that Calc also gained a number of new features, like cell selection, blinking cursor, text selection with much help from Henry Castro.

    Now that Writer is nearly functional for the basic editing features that would be good to see in all four applications, time to look at what’s new in Impress-land!

    To bring Impress in line with Writer, we implemented the followings with Tomaž Vajngerl:

    • shape text now has a blinking cursor with a cursor handle that can be dragged

    • long push on a word results in a shape text selection with selection handles that can be dragged

    • it’s now possible to resize shapes

    • Impress table selections can be created in two ways: either by long pushing on an empty Impress table cell, or by long pushing on shape text inside a cell, and then turning that shape text selection into a table one.

    • it’s possible to tap on a selected shape without text to add text to it.

    Here is a demo to show this in action:

    For many of the above features, the core part was already implemented due to Writer shapes, what was missing is to call the same editeng methods from Impress and/or do missing core coordinates → LOK coordinates conversions. The later is twips for both cases in Writer, but Impress works in 100th millimeters internally, so it was necessary to do a number of conversions here and there so that LOK callbacks always emit coordinates in twips.

    We also prepared more in-depth technical documentation about the Android editing work, libreofficekit/README and android/README now has much more details about how exactly the editing works.

    That’s it for now — as usual the commits are in master (a few of them is only in feature/tiled-editing for now), so you can try this right now, or wait till the next Tuesday and get the Android daily build. :-)

  • Thursday, 19 March 2015
    Android editing: from selections to graphic handling

    In from input handling to selections, I wrote about how we let LibreOffice Android app draw the selections around text content natively. A next step in this TDF-funded project is to provide selections around more UI elements: images and shapes.

    Here are a number of challenges we (Tomaž Vajngerl and me) faced while we implemented this:

    • On Linux (the desktop), the move and resize operations are really similar: if you click near a resize handle (you "hit it"), then it’ll be a resize, otherwise it’ll be a move. Defining "near" means that you don’t have to click exactly at the center of the handle, but we allow some tolerance. Turns out that the tolerance depended on the pixel size of the handle drawn on the desktop: and because we don’t package the bitmaps of the desktop UI, that tolerance was 0.

    • Writer normally requires a click and a double-click to start editing shape text. One to select the shape and another to actually start the text editing. Instead of literally translating this to a tap and a long push, we wanted to start text editing right away if the user tapped on shape text.

    • Shape text doesn’t use the normal Writer text, but editeng — used by Impress and Calc, too. So we had to instrument the editeng module as well to expose the blinking cursor, so that if you tap inside the editeng text, you have some feedback where you are. Same is true for the cursor handle: once we knew where the cursor is, we could draw the cursor handle, but dragging it did nothing: now the setTextSelection() LOK API handles the case when the cursor is inside editeng text and can adjust the cursor position there, too.

    • On Linux, users got used to the following resize behavior: when images are resized, the aspect ratio is kept, but this is not the case for shapes. We wanted to keep this behavior on Android, too.

    If you are interested how this looks like, here is a demo (click on the image to see the video):

    Notice how the word selection in a table turns into a table selection, or how a long push inside an empty cell creates a selection containing only the empty cell.

    An other direction we’re working towards is to show / hide the soft keyboard of Android as you would expect it. On Linux, it’s easy: the keyboard is always available. However on Android you should track when it makes sense to use the keyboard and when not — and show/hide automatically according to the context. Examples:

    • When you tap inside text, we show the keyboard.

    • When you finish editing, we hide it.

    • When you start scrolling, we hide it.

    • When you select an image, we hide it.

    Additionally, we need to handle the situation when this automagic goes wrong. The Android soft keyboard has a button to hide itself, but we added a toolbar button to force-show it, too (click on the image to see the video):

    Finally, Siqi Liu added a new callback type, allowing to tap on hyperlinks and handle them according to how you configured URL handling on your Android device. Here is a demo to show this in action:

    That’s it for now — as usual the commits are in master (a few of them is only in feature/tiled-editing for now), so you can try this right now, or wait till the next Tuesday and get the Android daily build. :-)

  • Saturday, 14 March 2015
    Document Liberation Project regression testing


    Earlier I wrote about my setup to hack libvisio. One missing bit was testing the contributed code. Testing can be performed at various levels, so far DLP libraries were tested by recording the output of the various foo2raw tools and then comparing the current output to some previously known good state. This has a number of benefits:

    • If you know that the current state is good, then there is no need write testcases, you can just record your state automatically.

    • Any change in the output fill signal instant failure, so it gives pretty good test coverage.

    The same technique was used in LibreOffice for Impress testcases initially, however we saw a drawback there: Being automatically generated, you have no control over what part of the output is important and what part is not — both parts are recorded and when some part changes, you have to carefully evaluate on a case by case basis if the change is OK or not. The upshot is that from time to time you just end up regenerating your reference testsuite and till the maintainer doesn’t do that, everyone can only ignore the test results — so it doesn’t really scale.

    In short, both techniques have some benefits, but given that the libvisio test repo is quite empty, I thought it’s a good time to give an other method (what we use quite successfully in LO code) a go, too. This method is easy: instead of recording the whole output of some test tool, output a structured format (in this case XML), and then just assert the interesting part of it using XPath. Additionally, these tests are in libvisio.git, so you can nicely put the code change and the testcase in the same commit. So the hope is that this is a more scalable technique:

    • Provided that make distcheck is ran before committing, you can’t forget to clone and run the tests.

    • Writing explicit assertions means that it’s rarely needed to adjust existing tests. Which is a good thing, as there are no tests for the tests, so touching existing tests should be avoided, if possible. ;-)

    • Having testcase + code change in the same commit is one step closer to the dream e.g. the git.git guys do — they usually require documentation, code and test parts in each patchset. :-)

    Technically this method is implemented using a librevenge::RVNGDrawingInterface implementation that generates XML. For now, this is part of libvisio, so in case you want to re-use it in some other DLP library, you need to copy it to your import library, though if indeed multiple importers start to use it, perhaps it’ll be moved to librevenge. The rest of the test framework is a simple testsuite runner and a cppunit TestFixture subclass that contains the actual test cases.

    So in case you are planning how to test your import library, then now you have two options, evaluate them and choose what seems to be the better tool for your purpose.

  • Friday, 27 February 2015
    Tiled editing: from input handling to selections

    In from a living document to input handling, I wrote about how we handle touch and on-screen keyboard events in the LibreOffice Android app. A next step in this TDF-funded project is to provide more UI elements which are specific to touch devices: selections is one of them.

    Here are the problems we had to solve to get this working:

    • Long push is not an event core would recognize.

    • If you use the mouse and have a selection in Writer, it’s only possible to extend the end of it. If you use the keyboard, then it’s possible to shrink the end of it, but still no adjustment of the start. On touch devices, it’s natural to have selection handles at the start and end of the selection and be able to adjust both, in both directions.

    • Additionally, when the user drags the selection handles, the expected behavior is that the position of the selection and the handle are never the same: the handle is placed below the selection position and when you drag the handle, the new selection position is above the handle… ;-)

    Long push is reasonable to map to double mouse click, as in both cases e.g. in Writer the user expects to have a select word action. But for the adjustment of selections, we really had to define a new API (lok::Document::setTextSelection()) to allow setting the start or end of the selection to a new logical (in document coordinates, not paragraph / character indexes) point.

    If you are interested how this looks like, here is a demo:

    An other direction we’re working towards is to have the same features in other applications as well: Impress and Calc. Perhaps not so surprisingly, we hit similar problems in these applications as well that we had to solve in Writer. The typical problems are:

    • LibreOffice assumes a given portion of the document is visible (visual area), but the Android view is independent from what LO thinks is visible. Example: LO thinks a table is not visible, so it doesn’t send the selection events for the text inside the table, even if it’s in fact visible on the Android app.

    • Instead of calling Invalidate() and waiting for a timer to call Paint(), at some places direct Paint() is performed, so the tile invalidation notification triggered by Invalidate() is missing → lack of content on Android.

    • We render each tile into a VirtualDevice — kind of an off-screen rendering  — and at some places LO assumed that certain content like the actively edited shape’s text is not interesting, as it’s not interesting "during printing".

    • LO’s mouse events are in pixels, and then this is translated to mm100 (hunderd of milimeters) or twips in core. So counting in pixels is the common language, while the Android app counts everything in twips, and doesn’t want to care about what would be visible at what pixel on the screen, if LO would run in desktop mode. So we had to make sure that we can pass in event coordinates in twips, and get invalidation coordinates in twips, even if previously it was a mix of mm100, twips and pixels.

    Here is how Impress looks like, with working tile invalidation, touch and keyboard handling:

    Calc is lagging a bit behind, but it also has working tile invalidation and keyboard handling:

    That’s it for now — as usual the commits of me and Tomaž Vajngerl are in master (a few of them is only in feature/tiled-editing for now), so you can try this right now, or wait till the next Tuesday and get the Android daily build. :-)

  • Monday, 09 February 2015
    Tiled editing: from a living document to input handling

    In from viewing only to a living document, I wrote about how tile invalidation can handle updates in the Android app in case what should be displayed on the screen changes. A next step in this TDF-funded project is to handle more than blinking text: keyboard and mouse/touch events from the user.

    First let me enumerate over the issues we had to face:

    • Gtk, Android and LibreOffice’s VCL use different key codes for the same physical keys. We solved this by mapping the special keys manually on the Gtk/Android side (using the C++ and Java UNO binding), and for the rest, we simply use the unicode representation of the keys.

    • Special keys: while "return" was easy to map, getting "backspace" to work was more challenging. It worked fine on the Gtk side, but on Android we had to make sure that the whole sfx2 dispatching framework works properly, only then could map the backspace key to the correct UNO command, which is .uno:SwBackspace in case of Writer.

    • Mouse handling: VCL sends pixel coordinates to the editing windows, they then calculate the offset of the editing area (think about toolbars and menus that have to be excluded), and then converts the pixel values to document coordinates. In case of tiled editing, we always work with document coordinates in logical units (twips), so we had to add the possibility to send the coordinates in document ones. This allows core not knowing where the user exactly is (in case the tiles are already ready, swiping can be handled without any LOK calls), and also allows Android not knowing the implementation details of the desktop app (where menus and toolbars would be).

    • Cursor caret overlay: we wanted to be sure that it’s not necessary to re-render the affected tiles each time the cursor blinks, so we added a LOK API to send the rectangle (its width is nearly zero) of the cursor to Android, and then it can handle the blinking cursor itself in a transparent overlay. This overlay will be useful for presenting selections as well.

    As usual the commits of me and Tomaž Vajngerl are in master, so you can try this right now, or wait till tomorrow and get the Android daily build. However, if you are just interested how this looks like, here are some demos:

    • Keyboard handling in gtktiledviewer:

    • Same on Android, including newlines and backspace handling:

    • Mouse handling in gtktiledviewer:

    • Same on Android, including the transparent selection overlay that can efficiently blink the cursor:

    That’s it for now — next on our list are selections, so you can delete and overwrite more easily. :-)

  • Wednesday, 04 February 2015
    LibreOffice on Android FOSDEM talk

    (via LOfCollabora)

    Today is my last day in Brussels where I gave a TextBoxes: complex shapes with complex content and a LibreOffice on Android talk at FOSDEM 2015, in the Open document editors devroom. The devroom was well-crowded, with about 100 users in the rows of the audience — proof pictures above and below. ;-)

    (via deneb_alpha)

    We also had a Hackfest with about 20 hackers attending, (again) kindly hosted by Betacowork on Monday and Tuesday:

    (via floeff)

    There were a few topics I hacked on:

    • tdf#88583: a fallout from the Writer fillattributes work introduced in LibreOffice 4.4

    • tdf#68183: a small new feature missing since the RSID GSoC project ended

    • build on HiDPI screens should now no longer fail

    • tdf#88811: an RTF regression fix, so that now the counter is down to zero again

    • we no longer produce invalid ODF output when writing character borders

    A full list of achievements is available, if you were at the hackfest and you did not contribute to that section, please write a line about what did you hack on. :-)

    Quite some other slides are now available on Planet, don’t miss them. Mines are also uploaded.

  • Tuesday, 27 January 2015
    Tiled editing: from viewing only to a living document

    As it has been announced last week, an Android port of LibreOffice in the form of a viewer app is now available for download. What’s next? Editing, naturally. First, thanks again to The Document Foundation — and all the donors who made this (ongoing) work possible. In this post I would like to explain what did we do with Tomaž Vajngerl at Collabora so far in that direction.

    If you ever touched the Android port of LibreOffice, you probably noticed that sadly developing for Android is much harder compared to Linux (desktop). On Linux, if you just touch a single module, it’s possible to rebuild just that module in a few seconds, and then you can run soffice again with your modifications included. On Android, this is much harder:

    • due to a limitation of the Android linker, we link all the native code into a single shared object, that has to be re-linked after each native code modification

    • the native + the Java code has to be packed into a .apk archive

    • the .apk archive has to be uploaded to the device (or emulator) and installed there

    and only then can you test your changes. To partly sidestep from this problem, we split the "Android editing" into two:

    • tiled editing: this can be tested on Linux using the gtktiledviewer test application (and ideally any core problem can be seen here already)

    • Android LibreOfficeKit client: replacing gtktiledviewer with the real Android client code, and this time testing it on the device

    One problem with this approach was that while Android properly rendered small tiles of 256x256 pixels, gtktiledviewer rendered a single huge tile. This means that in case part of the document changes and we need to re-draw it, we always repainted the whole document in gtktiledviewer, while we only repainted the necessary parts on Android. Guess what, if the area to be repainted is wrong, it’ll be visible on Android but not on gtktiledviewer. So the first task we solved was to let gtktiledviewer also render small tiles. For debugging purposes, small red rectangles are painted at the top left corners of each rectangle, so the size and position of the tiles can be seen easily:

    The next step was to somehow start work on real editing — but where to start? We identified two critical building blocks:

    • there should be some way for the user to provide input (e.g. press a key on the software keyboard)

    • once the document changed, the application has to redraw the changed part of the view

    To avoid solving two problems at the same time, we first went after the second. One use case that only requires the update of the view is blinking text. Even if no touch or key events are available, a blinking text wants to update the view using a timer, so it’s a good testcase. It’s now possible for LibreOfficeKit clients to register a notification callback, and using that, LibreOffice can notify clients if part of the view has to be redrawn. Here is how it looks using gtktiledviewer:

    This demonstrates that the LibreOfficeKit implementation in LibreOffice core and also the gtktiledviewer client code handle correctly tile invalidations. Once that was done, we could also implement a similar client code in the Android app — it looks like this:

    That’s it for now — next on our list is adding support for input handling, so it’s possible to type in some text. :-)

  • Saturday, 24 January 2015
    Perfect WW8 comment import

    TL;DR: Import of annotated text ranges from binary DOC format was a problem for quite some time, now it should be as good as it always was in the ODT/DOCX/RTF filter.

    Longer version: the import of annotation marks from binary DOC was never perfect. My initial implementation had a somewhat hidden, but important shortcoming, in the form of a "Don’t support ranges affecting multiple SwTxtNode for now." comment. The underlying problem was that annotation marks have a start and end position, and this is described as an offset into the piece table (so the unit was a character position, CP) in the binary DOC format, while in Writer, we work with document model positions (text node and content indexes, SwPosition), and it isn’t trivial to map between these two.

    Tamás somewhat improved this homegrown CP → SwPosition mapping code, but was still far from perfect. Here is an example. This is how this demo document looks like now in LibreOffice Writer:

    And this is how it looked like before the end of last year:

    Notice how "Start" is commented and it wasn’t before. Which one is correct? Here is the reference:

    The reason is that the document has fields and tables, and the homegrown CP → SwPosition mapping did not handle this. A much better approach is to handle the mapping as we do it for bookmarks: even if at the end annotation marks and bookmarks are entires in sw::mark::MarkManager, it’s possible to set the start position as a character attribute during import (since mapping the current CP to the current SwPosition is easy) and when we know both the start and end, delete the character attribute and turn it into a mark manager entry. That’s exactly what I’ve done. The first screenshot is the result of 3 changes:

    Hopefully this makes LibreOffice not only avoid crashing on such complex annotated contents, but also puts an end to the long story of "annotation marks from binary DOC" problems.

    Just like how C++11 perfect forwarding isn’t perfect — if you think it is, see "Familiarize yourself with perfect forwarding failure cases." in this post of Scoot — the above changes may still not result in a truly perfect import result of DOC annotation marks. But I think the #1 problem in this area is now solved. :-)

  • Saturday, 10 January 2015
    Export validation as a new year's resolution

    TL;DR: If you touch the ODF and/or OOXML filters in LibreOffice, please use the --with-export-validation configure option after you ran the setup.sh script.

    Markus Mohrhard did an excellent job with adding the --with-export-validation build switch to LibreOffice. It does the following:

    • it validates every Calc and Impress zipped XML document (both ODF and OOXML) produced during the build by export filters

    • it does the same for Writer, except there only a subset of documents are validated

    One remaining problem was that it required setting up both odfvalidator and officeotron, neither of them are standard GNU projects but Java beasts. So even if I and a number of other developers do use this option, it happens from time to time that we need to fix new validation regressions, as others don’t see the problem; and even if we point it out, it’s hard to reproduce for the author of the problematic commit.

    This has just changed, all you need is to get export-validation/setup.sh from dev-tools.git, and run it like this:

    ./setup.sh ~/svn /opt/lo/bin

    I.e. the first parameter is a working directory and the second is a directory that’s writable by you and is already in your path. And then wait a bit… ODF validator uses maven as a build system, so how much you have to wait depends on how much of the maven dependencies you already have in your local cache… it’s typically 5 to 15 minutes.

    Once it’s done, you can add --with-export-validation to your autogen.input and then toplevel make will invoke odfvalidator and officeotron for the above mentioned documents.

    The new year is here, if you don’t have a new year’s resolution yet — or if you hate those, but you’re willing to adopt a new habit from time to time — then please consider --with-export-validation, so that such regressions can be detected before you publish your changes. Thanks! ;-)

  • Saturday, 27 December 2014
    Fixing the cloud problem

    TL;DR: see above -- a number of preset shapes are now rendered correctly at any scale factors, where previously rendering problems occurred.

    fdo#87448 has a reproducer document that shows rendering errors with the scaled cloud preset shape definition. At first I thought that the OOXML spec has wrong definition for this shape type, but that turned out to be not the case. What was a problem is our implementation of the drawingML arcTo command. This implementation defines how we render such arcs as polygons when the shape is to be painted, and given that LibreOffice has native support for the drawingML arcTo / ODF G command, this implementation is invoked during rendering, it’s not an import/export problem.

    The rendering result looked like this before:

    The cloud is drawn using a set of moveTo and arcTo commands. MoveTo is easier, as it uses explicit coordinates, but arcTo is more complex. It has 4 parameters: the height and width of a "circle", and the start / end angle of an arc on that circle. (Of course if height and width do not equal, than that’s no longer a circle… ;-) ) The problem is that due to this, the distance vector between the arc’s start and end points is implicit — so if something is miscalculated, errors are nicely added to each other as more and more arcs are drawn. This is especially a problem if you later return to the end of an earlier arc using moveTo: if arcTo has some problem, then it’ll be clearly visible.

    After fixing UNO ARCANGLETO to only take care of scaling / translation only after counting the actual arc, we started to produce correct end points for the arcs and shapes started to appear correctly at any scale factor, yay! :-)

    One remaining problem was how to test this from cppunit, in the above commit I exported the shape to a metafile, and then I could use Tomaž's excellent MetafileXmlDump to assert that the end of an arc (implicit location) and the parameters of a moveTo command (explicit location) equal — when they do not, that’s what your eyes call a "rendering problem".

  • Saturday, 29 November 2014
    Document Liberation Project hacking experience

    As someone who usually hacks on LibreOffice, external import filters produced by the Document Liberation Project cut both ways: they are great, as they deal with obscure formats and we get them for free, OTOH hacking such code is more complex than the usual LO code. I recently contributed a few patches to libvisio and libodfgen, but before I was able to do actual code changes, I had to set up a number of repositories and configure them to talk to each other — this post describes one possible setup that suited my needs.

    Building blocks

    DLP’s central project is librevenge and everything builds on top of that, either by calling it or called by it. In case the task is to turn VSDX files into ODG ones, it looks like this:

    libvisio can build a librevenge document model from Visio files (more on the various librevenge-based libraries here), libodfgen can generate ODF output from such document models (one other possibility would be e.g. libepubgen), and the writerperfect module provides kind of a controller for the remaining modules, e.g. for our purpose, a vsd2odg binary.

    Alternatives considered

    One possibility is to build LibreOffice, use --with-system-libvisio and similar switches, then clone the repos, install them system-wide (possibly with your modifications), and then you can test your changes just with building the various libs, without changing your LO build (more here). The drawback is that this way you pollute your system with unstable versions of those libs.

    An other possibility is to build LibreOffice as usual, and then use the external libraries patching mechanism to hack on the code. The drawback is that you have to work without git on the code, and also you can only work with a released version.

    The pkg-config approach

    So here is what I did to avoid the above mentioned drawbacks: all DLP projects use pkg-config to find the required libraries, so you can configure them in a way that allows building as a user, avoid installing them at all, and still execute vsd2odg using the libs with your changes. Here is how to do it:

    • librevenge:

    git clone git://git.code.sf.net/p/libwpd/librevenge
    cd librevenge
    ./configure --enable-debug

    • libvisio:

    git clone git://gerrit.libreoffice.org/libvisio
    cd libvisio
    ./configure REVENGE_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-0.0" REVENGE_GENERATORS_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_GENERATORS_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-generators-0.0" REVENGE_STREAM_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_STREAM_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-stream-0.0" --enable-debug --enable-werror

    • libodfgen:

    git clone git://git.code.sf.net/p/libwpd/libodfgen
    cd libodfgen
    ./configure REVENGE_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-0.0" REVENGE_STREAM_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_STREAM_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-stream-0.0" --enable-debug

    • writerperfect:

    git clone git://git.code.sf.net/p/libwpd/writerperfect
    cd writerperfect
    ./configure REVENGE_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-0.0" REVENGE_STREAM_CFLAGS="-I/home/vmiklos/git/libreoffice/librevenge/inc" REVENGE_STREAM_LIBS="-L/home/vmiklos/git/libreoffice/librevenge/src/lib/.libs/ -lrevenge-stream-0.0" ODFGEN_CFLAGS="-I/home/vmiklos/git/libreoffice/libodfgen/inc" ODFGEN_LIBS="-L/home/vmiklos/git/libreoffice/libodfgen/src/.libs -lodfgen-0.1 -lrevenge-0.0 -lrevenge-stream-0.0" VISIO_CFLAGS="-I/home/vmiklos/git/libreoffice/libvisio/inc" VISIO_LIBS="-L/home/vmiklos/git/libreoffice/libvisio/src/lib/.libs -lvisio-0.1 -lrevenge-0.0" --enable-debug --with-libvisio

    Of course, replace /home/vmiklos/git/libreoffice/ with any other directory you like, just be consistent. ;-)

    Now you can hack on any of these libraries, you just need to build your changes, and then vsd2odg will produce a flat ODG that you can quickly test with any ODF processor, like LibreOffice. One remaining trick (in case you’re not an autotools expert) is that vsd2odg is a libtool shell script, not a binary. If you still want to run the underlying binary in gdb, here is how you can do that:

    libtool --mode=execute gdb --args vsd2odg /home/vmiklos/git/libreoffice/test.vsdx

    In case the above considered two alternatives are not sufficient for your purposes, then I hope you find this setup useful. ;-)

  • Sunday, 26 October 2014

    A vízben jó. Ez nagyon hamar tudatosult bennem, és a mai napig a víz a kedvenc közegem. Megnyugtat. Magabiztossá tesz. Otthon vagyok benne. Ha beugrom és elmerülök, megszűnik minden más. Csak a víz van, és én meg a csend. Simogató csend. De a külvilág akkor sem jut el hozzám, ha följövök. A vízben más tudatállapotba kerülök.

    — M. Kiss Csaba - Kásás Tamás: Kása avagy egy pólós világsztár életének első harminchat éve

    (bookline, de a lira.hu is árulja DRM-mentes ebookban)

  • Saturday, 25 October 2014
    The yellow border around the pig

    It turns out LibreOffice’s RTF and DOCX import filter ignored borders around Writer pictures. Given that this worked in the RTF case in the past, it’s a bit amusing that now the very same commit implements a new feature for the DOCX case and at the same time fixes a regression in the RTF filter. Code sharing FTW! :-)

  • Friday, 10 October 2014
    A Grand Budapest Hotel

    Végre egy film ami nem romantikus vígjáték, nem háborús dráma és még nem is bántam meg a rászánt időt. Persze nem is véletlenül kapott 10-ből 8.2 pontot. ;-)

  • Saturday, 20 September 2014
    UPC vs port forwarding

    UPC traditionally had a setup consisting of a cable modem providing internet access to a single computer, and then it was up to the users if they use that access to really connect to a computer or to a router, providing wireless access and so on. It seems, these days they are more after actually encouraging people to use their subscription on multiple devices — possibly that way it’s easier to sell larger packages (like 60 MBit/s download rate instead of 30 MBit/s, etc). One fallout from this move is that they started to replace modems with a combination of modems and routers, in this case this is an Ubee EVW3226, with the brand removed. I wanted to try out if this new device could replace my previous router or not — so far it seems to be good enough, though there was one pitfall, hence this post.

    It’s possible to define a range of IP addresses to be used for DHCP purposes, though you can’t serve fixed IP addresses based on the MAC address of the clients. Given that my home network isn’t that large, I can tolerate that: as long as there is a range that can be safely used for fixed addresses, I can configure that manually. It’s also possible to do port forwarding, e.g. redirecting the incoming ssh traffic to a given address — except you can’t do both at the same time: you can’t redirect traffic to an address that’s not known (served via DHCP) to the router. Which is a shame, the #1 use case for port forwarding is to redirect traffic to a home-server that will then also have a fixed IP internally…

    So here is a hack that allowed me to still do this: set the start of the range of the DHCP served IP’s exactly to the address of the (to be used in future as) fixed address, e.g. Connect with one client, so that the address will be known to the router. Then add the port-forwarding rule, finally set the DHCP range back to its original value (in my case I use for fixed addresses and 100+ for dynamic purposes). It’s a stupid trick, but it works… ;-)

  • Monday, 08 September 2014
    LibreOffice Conference 2014, Bern

    This year’s LibreOffice conference was held in Bern, Switzerland. Links to my slides:

    During the sessions I also had some time to hack on the followings:

    • RTF export: added support for custom wrap polygon of Writer pictures

    • fixed fdo#82067 FILEOPEN: RTF images not in correct position

    • fixed fdo#82078 FILEOPEN: RTF bold text spilling over to non-bold text

    • fixed abi#10039 crasher on RTF export of page-anchored pictures

    Regarding the number of attendees, draw your own conclusions from the group picture — probably around 300 attendees, counting all days.

    Thanks for the organizers for this beautiful event — and also the sponsors! :-)

    My pictures are available here (and I also made a panorama).

  • Thursday, 28 August 2014
    Cleanup of ooxmltok in LibreOffice

    (via aigle_dore)

    In June, we decided to get rid of XSLT usage in writerfilter, the module responsible for RTF and DOCX import in LibreOffice. As usual with cleaning up mess, this took time (about two months), but I’m now happy to say that I’m mostly done with this. :-)

    See the doctok blog post for some background, the topic here was to clean up the OOXML tokenizer, that is that building block that turns a zipped XML document into a token stream.

    The following problems are now solved:

    • Part of the module was generated code, the generator was implemented mostly in XSLT, but some bits were written in Perl and sed. About 4200 lines of XSLT code is now rewritten in Python, in about 1300 lines.

    • Given that we have much more developers who speak Python, compared to XSLT, nontrivial changes are now much easier in the generator: Jan Holesovsky cleaned up boost::unordered_map usage at places where we depended on the order of elements. (Yes, you read it correctly, that was the situation up till now!) This also helps reducing the size of the resulting writerfilter shared library.

    • The input of the code generator was the large model.xml file, and generator scripts only extracted interesting information from it, so if you mistyped something, you got no error messages, just silent failures. I’ve removed quite some XML elements and attributes from it which were parsed by none of the generator scripts and written a relax-ng schema for the remaining markup. Validating against this schema is part of the default build, so no more typos without a build failure. ;-) (The schema also contains quite some documentation, finally.)

    • A gperf hash of all possible OOXML elements / attribute names were duplicated in writerfilter, even if that information was already available from the oox module. This is now fixed, reducing the size of the shared library even further.

    • Also, both oox and writerfilter had a list of namespace URL’s, mapping them to an integer enumeration, and when the two lists didn’t match, Bad Things happened (read: usually resulted in a crash.) This is the past, I’ve refactored writerfilter to use the same namespace alias names as oox, and this allowed to get rid of the writerfilter copy of the namespace alias list. So in the future, if new namespaces have to added, only oox has to be extended.

    Oh and the bonus feature: I’ve implemented a script called watch-generated-code.sh, which can record a good state of the generated code, and then compare later generated results against that, so that refactoring of the generator can now be performed in a safe way: you can change the generator in any way to make it better, and still avoid accidental output changes. :-) This is particularly useful, as it only diffs the end result of the whole generation process (cxx and hxx files), not temporarily files, which are OK to change, as long as the end result is the same.

    As a conclusion, here are sizes of a stripped dbgutil version of the writerfilter shared library, from the libreoffice-4-3-branch-point and today’s master:

    $ git checkout oldest
    HEAD is now at b3130c8... 2014-05-21
    vmiklos@o9010:~/git/libreoffice/daily$ ls -lh opt/program/libwriterfilterlo.so
    -rwxr-xr-x 1 vmiklos users 8,3M aug   28 14:00 opt/program/libwriterfilterlo.so
    $ git checkout master
    Switched to branch 'master'
    vmiklos@o9010:~/git/libreoffice/daily$ ls -lh opt/program/libwriterfilterlo.so
    -rwxr-xr-x 1 vmiklos users 6,1M aug   28 14:01 opt/program/libwriterfilterlo.so

    Again, the 8,3MB → 6,1MB size reduction is mostly thanks to Kendy’s map cleanups + the duplicated gperf hash going away. :-)

  • Monday, 11 August 2014
    So many bugs

    From time to time developers feel that they have little time, but they would want to take care of many bugs. Last week I was frustrated enough to actually design a T-shirt for just that. ;-)

    Above is how it looks like. In case you don’t get the joke, see here for a hint. Oh, and if you would like to build your own binary… err T-shirt, you can do it: here is the ODG file that can serve as a source. Happy bugfixing! :-)

  • Wednesday, 16 July 2014
    TextBox: complex LibreOffice Writer content inside shapes

    TL;DR: see above — it’s now possible to have complex Writer content (charts, tracked changes, tables, fields, etc.) inside drawinglayer shapes, yay! :-)

    The problem

    Writer in LibreOffice 4.3 can have two kind of shapes: drawinglayer ones or Writer TextFrames. (Let’s ignore OLE objects and Writer pictures for now.) Drawinglayer shapes can be triangles (non-rectangular), rectangles can have rounded corners and so on, but shape text is handled by editeng — the same engine that is used for Impress shapes or Calc cells. OTOH a Writer TextFrame can contain anything that is supported by Writer (Writer fields, styles, tables, etc.), but its drawing capabilities are quite limited: no triangle, rounded corners, etc. Together with CloudOn, we thought the best would be to be able to have both, and started to use the "shape with TextBox" term for this feature.

    A user can already sort of to do this by creating a drawinglayer shape, then a Writer TextFrame, and by setting the properties of the Writer TextFrame (position, size, etc) to appear as if the TextFrame would be the shape text of the drawinglayer shape. The idea is to tie these two objects together, so the (UI and API) user sees them as a single object.


    I’m providing here a few screenshots. Above, you can see an ODF document having a rectangle with rounded corners, still containing a table.

    Given that OOXML has this feature since its birth, I’m also showing a few DOCX documents, which are now handled far better:

    • chart inside a left arrow callout:

    • tracked changes inside a cloud callout:

    • SmartArt inside a snip diagonal corner rectangle:

    • Table of Contents inside a pentagon:


    What follows is something you can probably skip if you’re a user — however if you’re a developer and you want to understand how the above is implemented, then read on. ;-)

    Situation in 4.3

    From the drawinglayer point of view: SwDoc contains an SdrModel (SwDoc::GetOrCreateDrawModel()), which contains a single SdrPage (SdrModel::GetPage()) — Draw/Impress contain multiple sdr pages. The SdrPage contains the shapes: e.g. a triangle is an SdrObjCustomShape. For TextFrames, a placeholder object called SwVirtFlyDrawObj is added to the draw page.

    The writer-specific properties of an SdrObject is stored as an SwFrmFmt object, an SwFrmFmt array is a member of SwDoc ("frame format table"). The anchor position and the node index of the frame contents counts as a property.

    At UNO level, a single DrawPage object is part of the Component (opened document), which abstracts away the internal SdrPage.

    For TextFrames, the UNO API works exactly the same way, except that the implementation stores all properties of the TextFrame in the SwFrmFmt (and some properties are different, compared to a drawinglayer shape).

    One remaining detail is how the shape text is represented. In case of drawinglayer shapes, this is provided by editeng: internally an EditTextObject provides a container for paragraphs, at UNO API level SvxUnoTextContent provides an interface that presents paragraphs and their text portions.

    For TextFrames, the contents of the frames is stored in a special section in the Writer text node array (in the 3rd toplevel section, while the 5th toplevel section is used for body text), that’s how it can contain anything that’s a valid Writer body text. An offset into this node array of the "content" property of the SwFrmFmt.

    Document model

    At a document model level, we need a way to describe that an SdrObject (provided by svx) has an associated TextFrame (provided by sw). svx can’t depend on sw, but in the SwFrmFmt of the SdrObject, we can use the so far unused RES_CNTNT ("content") property to point to a TextFrame content.

    So behind the scenes the UNO API and the UI does the following when turning on the TextBox bit for a drawinglayer shape:

    • creates a TextFrame

    • connects the SdrObject to the TextFrame

    Also, every property of the TextFrame depends on the properties of the SdrObject, think of the followings:

    • position / size is the largest rectangle that fits inside the shape

    • borders are disabled

    • background is transparent

    Finding the largest rectangle that fits inside the shape is probably the most interesting here, it’s implemented in SwTextBoxHelper::getTextRectangle(), which uses SdrObjCustomShape::GetTextBounds().


    The UNO API hides the detail that the TextFrame and the SdrObject are in fact two objects. To get there, the followings are done:

    • SwXShape is modified, so that in the TextBox case not editengine, but the attached TextFrame is accessed when getText() is invoked. This was a bit tricky, as SwXShape doesn’t have an explicit getText() implementation: it overrides queryInterface() instead (see SwTextBoxHelper::queryInterface()).

    • SwXDrawPage (its XEnumerationAccess and XIndexAccess) is modified to ignore TextFrames in the TextBox case

    • SwXTextPortionEnumeration is modified to ignore TextFrames in the TextBox case

    • SwXText::insertTextContent() and SwXText::appendTextContent() is modified to handle the TextBox case


    This was the easiest part: the "merge TextFrame and SdrObj into a shape with TextBox" approach ensured that that we use existing layout features here, no major effort was necessary here.

    One interesting detail here was the positioning of as-character anchored shapes having TextBoxes, that’s now handled in SwFlyCntPortion::SetBase().


    The primary point of this feature is to improve Word (and in particular DOCX) compatibility, and of course I wanted to update ODF as necessary as well.

    Regarding the new feature, I did the followings:

    • DOCX import now avoids setting service name from original to css.text.TextFrame in case shape has shape text

    • DOCX export now handles the TextBox case: reads Writer text instead of editeng text as necessary

    • ODF export now adds a new optional boolean attribute to make export of the TextBox case possible

    • ODF import now handles the new attribute and act accordingly

    Note that regarding backwards compatibility, we keep supporting editengine-based text as well. This has the best of two worlds:

    • existing ODF documents are unchanged, but

    • the TextBox feature is enabled unconditionally in DOCX import to avoid formatting loss

    User Interface

    I took care of the followings:

    • the context menu of shapes now provides an item to add / remove a TextBox to/from a shape

    • when moving or resizing a shape, the TextBox properties are updated as well

    • when the shape is deleted, the associated TextBox is also deleted

    • editing individual TextBox properties is no longer possible, since they depend on the shape properties


    If you want to try these out yourself, get a daily build and play with it! If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.4 gets branched off. Last, but not at least, thanks for CloudOn for funding these improvements! :-)

  • Tuesday, 08 July 2014
    Updated Writer training slides

    (via michaeljosh)

    Last year I published some Writer training slides, which are hopefully a useful extension to in-tree documentation like sw/README and sw/qa/extras/README.

    Last week I reviewed those slides and realized that some of them are outdated. So here comes an updated version:

    The intention is that these build nicely on top of Michael’s generic intro slides, and with that, the reader can have a good "big picture" understanding of the code base. For the gory details, you always need to read the code anyway. ;-)

  • Thursday, 19 June 2014
    CLUC 2014 Conference

    I’ve arrived home yesterday from Zagreb where I gave a keynote at CLUC 2014 on Tuesday.

    Here are a few talks I enjoyed:

    I also took a panorama and some pictures, available here, including photos of some speakers.

    Thanks Elizabeth for the above photo, and also to the organizers of the conference, it was a great one! ;-)

  • Sunday, 08 June 2014
    Improved handling of track changes in groupshape text

    Shapes in Writer are provided by LibreOffice’s drawing layer — they are independent from the normal Writer paragraphs. Given that the drawing layer does not support tracking changes, just Writer’s "native" paragraphs, fully featured tracked changes in real shape text would be quite some work. In case of ODF, the markup describes tracked changes in a way, so that in case the reader does not support tracking changes, it can at least read the normal and inserted text, i.e. the current version.

    This is exactly what I implemented in the DOCX import filter now:

    Previously we just ignored both inserted and deleted text, so if you had content which was all either deleted or inserted, you ended up having no shape text at all (can be tested using e.g. this test document):

    To be fair, the reference layout looks like this:

    I still hope to fix that as well one day, but the above fix is something we’ll already provide in 4.3. :-)

  • Sunday, 01 June 2014
    Balaton Maraton 2014

    Idén is részt vettünk LGee-vel a Balaton egy napos körbetekerését célzó, 10 órás szintidős Balaton Maratonon, a tavalyihoz hasonló feltételek mellett. Elég csak a fenti képen látható rajt látványát összehasonlítani a tavalyival. ;-)

    A velo.hu idén is végigfotózta a résztvevők nagy részét, így engem is:

    A kmóra ezeket mérte: idő 8h52m14s, táv 221.68km, átlag 24.9 kmph, max 49.2 kmph.

    A bruttó időm pedig idén 9h20m körül volt, ami ugyan a szintidőn belül van, de rosszabb volt a tavalyinál. Erre biztos sok magyarázatot lehet adni (a héten sikerült megfázni, főleg az északi parton erős szél volt), viszont szerintem a döntő körülmény az volt, hogy kevesebb szakaszon sikerült találni olyan bolyt, akikkel kényelmesen tudtam volna együtt haladni — már pedig ha ez adott, akkor jelentősen jobban lehet haladni.

    A GPS log sebesség / idő diagramja egyébként így néz ki:

    Szépen látszik rajta az 5 rövid pihenő, illetve egy pillanatnyi megállás, ahogy elbizonytalanodtunk a 71-esről a 7-esre áttérés során. :-)

  • Thursday, 22 May 2014
    Bringás ellenőrző lista

    A hétvégén a K100 útvonalát jártam végig edzés céljából. A fenti képen a Vácrátót előtti egyik alattomos emelkedő látható ;-)

    Az emelkedő vége felé jutott eszembe, hogy itthon hagytam a kulacsom. Mivel már olyan is előfordult, hogy az SPD-s cipőmet hagytam otthon (mikor nem itthonról indultunk, hanem kocsival Mátrába, és csak ott bringáztunk), ill. pár éve LGee a bukósisakját hagyta otthon (és kellett a Pelso helyszínén vegyen egyet), gondoltam összeállítok egy listát, hogy mi az a 10 legfontosabb dolog, amit semmiképpen nem érdemes otthon hagyni, ha dedikáltan bringázni indul az ember:

    1. első és hátsó lámpa

    2. bukósisak

    3. cipő

    4. nyeregtáska (pótbelső, minimális mennyiségű szerszám, pumpa)

    5. kulacs

    6. kaja (ha a szervezők nem biztosítanak)

    7. kmóra

    8. kesztyű

    9. fényvisszaverő csík (hosszúnadrág esetén, hogy ne legyen olajos)

    10. láthatósági mellény (este, lakott területen kívül)

    11. láncolaj, GPS

    12. naptej / krém

    13. bringás nadrág / mez

    Hátha ez segít, hogy a jövő heti Pelsora menet most ne hagyjunk itthon semmit. :-)

  • Sunday, 18 May 2014
    OTRS plugin for Supybot

    OTRS is quite different to Bugzilla (what we use for upstream LibreOffice development for quite some time). On the plus side, e.g. it has strong support for multiple customers. OTOH, it deals with tickets instead of bugs, and sadly it doesn’t have a single identifier for tickets. It has a ticket number (which by default even includes the date), which is searchable, and it has a ticket ID, which is used for URL’s.

    In case of Bugzilla, you can easily lookup "bug#12345" in Firefox. Create a bookmark with the following properties:

    and then you can just copy&paste bug#12345 to Firefox, replace the # with a space, and Firefox will do the right thing.

    Unfortunately (due to the above detailed reasons), this is not possible with OTRS. So I decided to write a Supybot plugin that can notice "bug#12345" on an IRC channel, and give you the clickable URL (after finding out the ticket ID from the ticket number).

    The result is available on GitHub, it looks like this:

    09:58 < vmiklos> bug#1000068
    09:58 < supybot> https://localhost/otrs/index.pl?Action=AgentTicketZoom;TicketID=73

    Given that I found no relevant hits when searching for supybot otrs, I hope this code may be useful for others as well.

    Thanks to James Scott for his YouTube plugin that helped to quickly figure out the relevant Supybot API’s.

  • Sunday, 13 April 2014
    Chihiro szellemországban

    Valamiért sose fogott meg a japán anime műfaj, de erről annyi pozitívumot olvastam, hogy megnéztük. Tényleg nem rossz.

  • Wednesday, 02 April 2014
    Improved support for text frames with relative sizes in LibreOffice Writer

    When using text frames in Writer, you can always choose if you set an absolute size for it or you set a relative one. Oddly enough, in case of relative sizes, it wasn’t entirely clear what 100% percent means. With a bit of searching, the help says "it’s the page text area", which in practice means the page size, excluding the margins.

    And that’s where the problem lies: in many cases (importing foreign formats, cover page of a document, etc.) you want to have a textframe which is 100% wide, compared to the full page size, including margins. It was already possible previously to work this around by manually specifying the same size what was used for page size, but that’s ugly, you duplicate the setting at two places.

    As you can see on the above screenshot, in LibreOffice 4.3, I now implemented this as a new option, you can choose what 100% means for both width and height. File filters are also updated accordingly: in case of ODF an extension is proposed, and also DOCX and RTF filters are updated, where the file format already supported this feature.

    For the curious ones, the feature is in master for almost two months now, but I only implemented my favorite part — RTF filter — only last week, that’s the "news" here. ;-)

    If you want to try these out yourself, get a daily build and play with it! If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.3 gets branched off. Last, but not at least, thanks for CloudOn for funding this improvement! :-)

  • Sunday, 30 March 2014

    Délelőtt a Kavicsos-tónál jártunk, illetve egész pontosan erre. Az ötletet a holkerekparozzak.hu egyik GPS trackje adta, azt leszámítva, hogy ténylegesen a tököli reptér mellett simán úgy elmentünk, hogy észre se vettük…

    Jah, és még egy érdekesség: miért van Közvágóhídnak elnevezve ez meg az a megálló is? ;-)

  • Saturday, 22 March 2014
    DOCX import progressbar in LibreOffice Writer

    I’m sure in this case a few words are worth more than the above picture, so let me describe what you see above. :-)

    In case of opening an ODT, DOC or RTF document in LibreOffice Writer, you already got some feedback on where the importer is, in case the process needed more time than what you feel "instant". However, this wasn’t supported for DOCX. According to git blame, I added this to my todo on 2012-10-29, and a few months later also a bugreport was opened, requesting the same, but up to yesterday, nothing changed. However, now I’ve implemented this on master, it’ll be part of the 4.3 release.

    Back to where I started, what you actually see there is when LibreOffice is in the middle of the import process of the Holy Bible in DOCX format, which takes around 12 seconds on my machine. One could say that speed up quite acceptable for that amount of data, but with a progressbar, it’s definitely better. ;-)

  • Friday, 21 March 2014

    Ma láttam ezt a filmet, csak ajánlani tudom. Tipikus példája annak, hogy annak ellenére, hogy ez 8.1 pontot kapott IMDB-n, míg pl. A Wall Street farkasa a 8.4-et, mégis nekem az egyértelműen jobban tetszett.

    Pedig nem volt benne se orrvérzésig kokózabálás, se szaporodás, és még szakkifejezésből is alig. :-)

  • Sunday, 09 March 2014
    Death of doctok in LibreOffice

    Last year in September we decided to get rid of the writerfilter-based DOC tokenizer, and I volunteered to actually do this. As cleanups in general have a low priority, I only progressed with this slowly, though yesterday I completed it, that’s why I’m writing this post. :-)

    Some background: the writerfilter module is responsible for RTF and DOCX import in Writer. As the above picture shows, the currently used DOC import is independent from it, and there was also an other DOC import filter, that was in writerfilter which was disabled at runtime. As I don’t like duplication, I examined the state of the two filters, and the linked minutes mail details how we decided that the old filter will stay, and we’ll get rid of the writerfilter one. It’s just a matter of deleting that code, right? :-) That’s what I thought first. But then I had to realize that the architecture of writerfilter is a bit more complex:

    It has the following components:

    • the dmapper (domain mapper), that handles all the nasty complexities of mapping Word concepts to Writer concepts (think of e.g. sections ↔ page styles)

    • one tokenizer for each (RTF, DOCX, DOC) format

    The traffic between the tokenizers and dmapper is called tokens. Naturally it’s not enough that tokenizers send and dmapper receives these tokens, they should be defined somewhere as well. And that’s where I realized this work will take a bit more time: instead of having a single token definition, actually the ooxml tokenizer defined its own grammar, and doctok also defined two additional grammars. And of course dmapper had to handle all of that. ;-) Given that OOXML is a superset of the DOC/RTF format, it makes sense to just use the ooxml grammar, and get rid of the other two.

    Especially that — by now you probably found this out — if I wanted to kill doctok, I had to kill the sprm and rtf grammars as well. Otherwise just removing doctok would break the RTF and DOCX import as well, as those also used the rtf/sprm grammars.

    So at the end, the cleaned up architecture now looks like this:

    And that has multiple advantages:

    • It removes quite some code: In libreoffice-4-1, the doctok was 78849 (!) lines of code (well, part of that was XML data, and some scripts generated C++ code from that).

    • dmapper now doesn’t have to handle the rtf and sprm grammars anymore, so now there is a single place in dmapper that handles e.g. the italic character property.

    • Smaller writerfilter binary for the end user: even if doctok wasn’t enabled at runtime, it was shipped in the installation set.

    • Hopefully it’s now a bit more easy to understand writerfilter: at least e.g. if you want to look up the place where dmapper handles the character bold ("b") XML tag of OOXML, you don’t have to know that the binary DOC equivalent of that is sprmCFBold, just because we have an unused DOC tokenizer there as well. :-)

    • Given that DOC and RTF formats are a dead end, I think it’s a good thing that in writerfilter now the grammar is OOXML (that keeps introducing new features), rather than some dead format. ;-)

  • Saturday, 08 March 2014
    Walter Isaacson — Steve Jobs

    Leginkább a The Social Networkhöz tudnám hasonlítani ezt a könyvet, itt se törekedett a szerző arra, hogy csak pozitív vélemények jelenjenek meg a könyvben, sőt. Talán ami a legjobban tetszett benne az pont ez: azzal, hogy Jobsot rendszeresen bírálja a fekete-fehér látásmódja miatt, maga a könyv sokkal árnyaltabb képet fest az emberről, és így nekem hitelesebb is.

  • Friday, 28 February 2014
    LibreOffice Writer now supports nested comments in its DOC/RTF filters

    If you ever tried to use nested comments in Writer (make a selection, Insert → Comment, then make an overlapping selection, and do it again), you may have noticed that only the ODF filter can load and save such a document properly. Recently I have improved this situation a lot. Motivated by seeing this is now supported in the DOCX import filter, I now added support for this also to the DOCX export, RTF import/export and binary DOC import/export filters.

    If you want to try this out, core.git has a ODT and DOC samples to play with.

  • Saturday, 22 February 2014


    Múlt hét elején láttuk ezt a darabot, egy mondatban a Kontrasztkiállítás színpadi adaptációjaként tudnám jellemezni, de mivel musical, azért ez kicsit emészthetőbb és élvezetesebb volt. ;-)

  • Thursday, 06 February 2014
    InteropGrabBag in LibreOffice Writer

    I’ve arrived home yesterday from Brussels where I presented at FOSDEM 2014, in the Open document editors devroom.

    We also had a Hackfest, kindly hosted by Betacowork on Monday and Tuesday.

    Here are a few talks I enjoyed, not counting the LibreOffice ones:

    I was also happy to meet Jacobo, Matus, Tim and Tomaž finally personally. :-)

    Quite some other slides are now available on Planet, don’t miss them. I also took some pictures, available here, including photos of all speakers in our devroom.

  • Sunday, 26 January 2014
    Csapd le csacsi!

    Ha nem szerepelne a filmben Béla (Eperjes Károly) karaktere, biztosan azt hittem volna, hogy ez a film valójában még a rendszerváltás előtt játszódik. Leginkább a Szamárköhögésre emlékeztet stílusában, talán nem is véletlen, hogy a Nagyit mindkét filmben Töröcsik Mari játssza…

    Amúgy az hogy van, hogy IMDB-n '92-es, port.hu szerint viszont '90-es a film? ;-)

  • Saturday, 11 January 2014
    OOXML shape improvements in LibreOffice Writer 4.3

    Although LibreOffice 4.2.0 is not yet released, it was already branched off from master in November last year, and improvements for the next release are already cooking in master. One of these will be a major improvement of shape handling in the DOCX import/export filter.

    Some background: when DOCX was initially introduced, it still used VML (which is in short an XML equivalent of the binary shape format), and only Word 2010 started to write shapes using drawingML. Given that Word still understands VML, it wasn’t urgent for us to write shapes using the drawingML markup. As for import, Word still writes an approximate version of the shape in VML as a fallback — that’s what we read till now. Needless to say, newer drawingML features have no VML equivalent so with time it became more and more important for us to finally read and write shapes in DOCX using drawingML, which just happened in Writer.

    I’m posting here a few screenshots showing the improvements I’ve implemented. Note that final 4.3 is still far from being released, so this is not a complete list. :-) In each case I’m providing a screenshot showing how it looked (at the end of an import/export/import again roundtrip) before, how it looks now in 4.3 and the reference layout. Click on the images to get a larger image:

    • document with different colors (test doc):

    OK, this has four pictures: before, now, Word 2007 and Word2010. As you can see now we’re now on par with Word 2010. ;-)

    • document with textboxes inside a group shape (test doc):

    • document with a shape having a custom adjustment (test doc):

    • document with different colors (test doc):

    If you want to try these out yourself, get a daily build and play with it! If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.3 gets branched off. Last, but not at least, thanks for CloudOn for funding these improvements! :-)

  • Sunday, 05 January 2014
    Lazacfogás Jemenben

    A szituáció abszurdságát tekintve akár "adathalászat Jemenben" is lehetett volna a film címe, de a film végére a nézőt valóban érdekli, hogy a lazacok úsznak-e felfelé. ;-)

  • Saturday, 28 December 2013
    A LibreOffice Draw GEDCOM import filter

    You may remember that I wrote about my little ged2dot project about two months ago. It’s a Python script that can be used from commandline with quite some options. I’m happy to announce that there is a GUI for it now, in the form of a LibreOffice Draw import filter. If you open this GEDCOM file, you’ll see something similar to the above image. You can simply build the .oxt from the Git repo, or just get it from the LibreOffice Extensions site.

    Technical details for the interested readers: the import filter just glues together existing pieces. First it runs ged2dot, then dot to generate an SVG. To keep things simple, then the filter "inlineizes" all the included images, finally the already existing SVG import filter does the real work. I find it elegant that each step works from and to the memory, and not ugly temporary files. :-) It works on Linux and Windows, feedback on if it works on Mac is appreciated.

    Also, if you ask why this is an extension, not part of LibreOffice core: I guess most users are not interested in building family trees; also being someone who works on the core most of the time, I wanted to try out how implementing an import filter as an extension (filter detection, import options dialog, etc.) works. ;-)

  • Saturday, 21 December 2013

    Eredetileg azért érdekelt a film, mert kíváncsi voltam, mi adta a névötletet a hasonló nevű "sorozathoz", amit kifejezetten értékesnek tartok. A film se rosszabb, bár kevesebb százalékban szól túrázásról.

  • Saturday, 30 November 2013
    Software Freedom Day Hungary, 2013

    This year’s Software Freedom Day event was held yesterday at Szeged, here at Hungary. I gave a talk about the news of LibreOffice 4.1 / 4.2 (slides), and I was happy to notice there were other LibreOffice-related talks as well:

    I would like to thank the organizers all their work, it was a pleasure to attend this event! :-)

  • Wednesday, 27 November 2013
    Kövek a zsebben

    Tegnap voltunk ezen az előadáson a Thália színházban. Nem egy szokványos darab, érdekes volt. Bár talán kevesebb trágár beszéddel is megállta volna a helyét. :-P

  • Tuesday, 12 November 2013
    LibreOffice Writer can now write .dot files

    It was pointed out that LibreOffice Writer is only able to open, not save .dot (Word binary template) files. From mso-dumper experience, I knew that the difference is quite small between .doc (which we already export) and .dot files. The feature freeze for LibreOffice 4.2 is here next week, so why not adding this feature before that deadline? You can see above the result. :-)

    For the ones who love our --convert-to commandline switch, an extra fix was necessary to make --convert-to dot work as well, both commits are now in master. You can try it out yourself using a daily build or just wait for the libreoffice-4-2 branchoff and the first beta from that branch.

    Happy templating! ;-)

  • Thursday, 07 November 2013
    Hat keréken Jeruzsálembe

    A könyv három magyar bencés szerzetes útjáról számol be, ahogy Magyarországról bringával eljutottak a Szentföldre tavaly. Ketten igen részletes naplót írtak az út során, ezeket vegyítve készült a könyv — az utolsó fejezet pedig a harmadik szerző munkája.

    (A képre kattintva lehet a kiadó honlapjára jutni, ott van róla egy szokványosabb leírás is.)

  • Saturday, 02 November 2013
    ged2dot, a GEDCOM to Graphviz converter

    It’s All Souls' Day, so let’s celebrate it by writing Free Software that helps us to remember our ancestors. I already enjoyed ancestry.com as a GEDCOM editor, but it always just shows a small part of the family tree. So here comes ged2dot, that will convert your GEDCOM file to a DAG, resulting in a layout similar to this:

    Of course you can also feed more sensitive info into it, like disabling anonymous mode: then it’ll show the name and birth/death date on the nodes; it’ll also show something more useful than placeholder images. ;-)

  • Wednesday, 16 October 2013
    Change tracking improvements in LibreOffice Writer spellcheck popup

    If you ever had to review a document that had change tracking enabled in LibreOffice Writer, you might have noticed an odd behaviour: if e.g. the inserted text has a spelling error, it’s not easy to reject that change. The reason for this is that in case of spelling errors, right mouse click activates the spellcheck popup menu, which lacked the change tracking operations previously.

    As you can see in the above screenshot, this is no longer an issue: LibreOffice 4.2 will have the previous change, next change, accept change and reject change operations in the spellcheck popup menu as well.

    In one sentence, with LibreOffice 4.2, Writer allows to reject a spelling error it detected itself. ;-)

  • Monday, 30 September 2013
    Nyílt adatok - Open access konferencia

    Konferenciákról általában utólagosan írok, de mivel Máté (volt kollégám) külön kért rá, hogy terjesszem az igét, ezt most kivételesen az esemény előtt írom:

    Nyílt adatok - Open Access konferencia a W3C Magyar Iroda szervezésében

    A W3C Magyar Iroda Nyílt adatok - Open access témában konferenciát rendez 2013. október 3-án.

    A konferencia a szabadon hozzáférhető adatok szerepét, illetve felhasználását járja körül olyan területeken, mint a kutatás, az államigazgatás, valamint a web világa. A programot "Nyílt hozzáférés a hazai kutatóhálózatban" címmel Makara Gábor akadémikus előadása nyitja. Phil Archer, a W3C munkatársa a weben közvetlenül elérhető nyílt adatok szerepéről tart előadást a nap folyamán.

    A konferencián való részvétel ingyenes, de regisztrációhoz kötött. Jelentkezni Pataki Máténál lehet az office@w3c.hu címen.

    További információk és részletes program erre.

  • Sunday, 29 September 2013
    LibreOffice Conference 2013, Milan

    This year’s LibreOffice conference was held in Milan, Italy. Links to my slides:

    Why so many talks? I couldn’t decide what topic to pick up (git or Writer filters), so I did both, the rest — those weren’t sessions where I spoke for 30+ minutes, so those don’t really count. :-)

    Regarding the number of attendees, draw your own conclusions from the group picture, made on 26th — probably more than 100 attendees, counting all days.

    Thanks for the organizers for this beautiful event — and also the sponsors, including Google (free food/beer during one hackathon) and CloudOn (fee free/beer during the other hackathon + tablets for the best commits)!

    My pictures are available here.

    For Hungarian readers, Gábor Kelemen (maintainer of the LibreOffice Hungarian translation) also provided blog posts for the first and second day, also libreoffice.hu had a related article.

  • Friday, 20 September 2013
    'Select All' improvements in LibreOffice Writer 4.2

    LibreOffice Writer had an old limitation we inherited from OpenOffice.org times: if a document started with a table, it wasn’t possible to select the whole document text. There were various bugreports for this problem: one from more than 2 years ago, an other from 2002 (!) — and I’m happy to post screenshots about how I improved this in LibreOffice 4.2 (before and after):

    If you want to try this out yourself, get a daily build and play with it. :-)

    That’s all for today, thanks for you attention.

  • Wednesday, 04 September 2013
    Open Day 2 @ Budapest

    On Monday, KAMI once again organized an event called "Open Day 2" here at Budapest, to promote free software like Mozilla projects and LibreOffice. I was also invited as a speaker, giving overview of what happened in LibreOffice-land during the past few months. My slides are here.

    Thanks for nice evening, it was good to talk again to other free software contributors like our Hungarian Firefox and LibreOffice translator, etc. :-)

  • Sunday, 01 September 2013
    OOXML floating table improvements in LibreOffice Writer 4.2

    I’m posting here a few screenshots showing improvements I’ve recently implemented in our DOCX import and export filter, done in the 4.2 development cycle. Note that final 4.2 is still far from being released, so this is not a complete list. :-) In each case I’m providing a screenshot showing how it looks now on 4.2, how it looked before and the reference layout. Click on the images to get a larger image:

    • document with paragraph shadow (test doc):

    OK, this has nothing to do with floating tables. But I promise the rest is all related to that. ;-)

    • document with floating table (test doc):

    • document with floating table and special margins (test doc):

    • the same document after roundtrip (load, save and load again):

    If you want to try these out yourself, get a daily build and play with it! :-) If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.2 gets branched off. And remember, there are lots more improvements coming in LibreOffice 4.2 (even if some of them is not yet documented), stay tuned! ;-)

  • Tuesday, 27 August 2013
    Tési fennsík

    Vasárnap a Tés környéki erdőben voltunk bringázni. A sok szeder mellett még sok érdekességet láttunk, ellátogattunk pl. a Jásd mellett található Szűz Mária Kápolnához is, stb.

    LGee képei erre, a kmóra ezeket mérte: idő 3h7m11s, táv 43.84km, max 52.9kmph.

    (Ötletgazda az alpinbike.)

  • Wednesday, 14 August 2013
    Using a git push tree

    I just checked, I created my git push tree more than a year ago, but yesterday I was reminded that this technique isn’t really documented anywhere, so let me describe it.

    Some background: for the LibreOffice codebase, we decided to do all micro-features directly on the master branch. This means that we typically rebase our local master branch against origin/master, then push it. The benefit of this is that code gets wider testing quickly and the commit history is not polluted with meaningless merge commits.

    The problem: one drawback of the above situation is that after you pull, some changes of other developers in the lower layers may trigger a full rebuild, typically wasting about an hour of your life (or more, in case of slower machines).

    Push tree is one hack to avoid this problem. Using a push tree, you have two separate repositories locally, you update your main one less regularly, and when you have a commit to push, you push it from the push tree to be able to avoid pulling in your main tree.

    Here is how to do it. To set this up:

    git clone --reference /path/to/master ssh://logerrit/core master-push

    Then to use it, instead of git pull -r && git push in your master tree, do these:

    cd /path/to/master
    git show -s <1>
    cd /path/to/master-push
    git pull -r
    git cherry-pick $sha1 <2>
    git push
    1. copy the sha1 hash from the output

    2. replace $sha1 with the sha1 hash you got in the previous step

    (There is a trick here, given that master-push already references the original tree, you can go ahead with cherry-pick directly, without fetching branches from your master tree.)

    And that’s it, you were able to push without waiting for a long rebuild!

    Note: of course this technique has some drawbacks as well, so use with care. Keep in mind the followings:

    • If your local master is not up-to-date enough, you’ll get conflicts while cherry-picking. I usually update my master tree once a day in the morning. If you have a slower machine, do it once a week in the night, or so.

    • Even if you don’t get conflicts, there can be cases when the result of the cherry-pick in the push tree won’t be what you want. Chances that this happens is pretty low if your master tree is not super-old, see the previous note.

    • An other non-technical but social reason to still update your master tree regularly is that if everyone uses an infrequently updated master tree, then nobody will fix breakages caused by others on origin/master. So updating your real tree infrequently is a bit unfair to other developers.

    Other than these, I can just recommend using a push tree, it helped me many times not to loose focus in the middle of the day. (And as we all know, pushing all your risky changes on Friday afternoon is also a bad idea. :-) )

  • Sunday, 11 August 2013
    Iskola a határon

    Ez még gimiben lett volna kötelező olvasmány, és rémlik, hogy akkor azt sulykolták belénk, hogy az a mű mondanivalója, hogy egy megtörtént esetet még ugyanaz az ember se tud pontosan ugyanúgy elmondani kétszer, hát még ha több ember máshogy éli meg. Van ebben valami. ;-)

    A Wikipédia ide vonatkozó szócikke mondjuk mást emel ki… Mindenesetre örülök, hogy sikerült végre időt szakítani erre a könyvre, tetszett.

  • Tuesday, 06 August 2013

    Múlt héten Badacsonytomajban jártunk, szállásadónk a Borbély családi pincészet volt.

    A helyi strandokon kívül azért körbejártuk a környéket is:

    • volt egy gyalogtúránk magán a Badacsony-hegyen

    • ellátogattunk Szigligetre

    • Badacsonyörsön megnéztük (és kóstoltuk, ld. lenn) a Folly arborétumot

    • utolsó nap Fonyódra is elkatamaránoztunk

    Néhány kép — és a huginnak köszönhetően panoráma — erre.

  • Sunday, 28 July 2013
    TPB AFK: The Pirate Bay Away from Keyboard

    Nehéz megmondani, hogy ez akkor most egy olyan film amit a svéd állam szponzorált, hogy népszerűsítse a mások bűnözéséből vagyont szerző állampolgárait — vagy éppen napjaink három hőséről szól. ;-)

    Minden esetre izgalmas dokumentumfilm, csak ajánlani tudom mindenkinek.

  • Monday, 22 July 2013
    OOXML improvements in LibreOffice Writer 4.1

    See here for a 3.6/4.0 version of this post.

    I’m posting here a few screenshots showing improvements in our DOCX filter, done in the 4.1 development cycle. In each case I’m providing a link to the test document, a screenshot showing how it looked before and how it now looks on 4.1. Click on the images to get a larger image:

    • document with a complex groupshape: multiple shapes had text (test doc):

    • document with tabs over the margin (test doc):

    • document with rotated text: content should not fit the cell size (test doc):

    • document with numbering, where bullets are pictures (test doc):

    If you want to try these out yourself, get a daily build and play with it! :) If something goes wrong, report it to us in the Bugzilla, so we can try fix it in the next 4.1 bugfix release. And remember, there are lots more improvements coming in LibreOffice 4.1, stay tuned!

  • Saturday, 13 July 2013
    Az elveszett cirkáló

    Ezt még a hamburgi utazás alatt olvastam, azon prózai okból, hogy itt árválkodott a könyvespolcon, és emlékeztem, hogy repülőn sokkal egyszerűbb papír könyvet olvasni, mint hallgatni, hogy fel- és leszállás alatt még ebookot se szabad olvasni. ;-)

  • Friday, 28 June 2013
    SUSE Conference 2013 @ Budapest

    Yesterday Novell Hungary organized SUSE Conference 2013 here at Budapest. As you can see above Andras held a LibreOffice-related presentation there — and we also ran a LibreOffice booth. As it was requested, we set up quite some (publicly available) Android demos:

    • Impress remote

    • LibreOffice4Android (document viewer) on my phone (I needed a fix to get it running on a non-tablet, though)

    • The desktop app on a tablet — thanks goes to the organizers who provided that for us!

    About 200 visitors attended the conference, which counts as a great success in this category. :-)

  • Thursday, 20 June 2013
    Az Antarktisz meghódítása


    Ugyan ez konkrétan nem egymászó könyv, azért majdnem. Az egyik szerző Edmund Hillary, a Mount Everest egyik első megmászója. A félreértések elkerülése végett, ez a könyv nem a Déli-sark meghódításáról szól, azt már megtették a Norvégok korábban. A könyv azt a brit expedíciót írja le, akik először keltek át a kontinensen — erős technikai háttérrel. Elsőre ez talán nem is tűnik olyan nagy teljesítménynek, de a könyv során kiderül, hogy azért ez koránt sem volt triviális…

  • Tuesday, 18 June 2013
    LibreOffice Hamburg Hackfest 2013

    This year, LibreOffice’s Hamburg hackfest happened last weekend, with more than 20 attendees. Thanks to the sponsors, we had free drink and food during the whole hackfest. ;-)

    My original plan was to add support for tables inside text frames in Writer, when importing from RTF. At the end I managed to do that, though not the way I originally wanted to implement that feature. :-)

    Here is how this looked with the RTF importer we inherited from OpenOffice.org (LO 3.4), and then with the new RTF import filter (LO 3.6):

    Here is how this looks like in latest master, and how it should look like:

    Other than that, there were a few other topics I hacked on:

    • various additional fixes for fdo#58819, so watermark is exported (with correct size, position, rotation, opacity, etc.), and reasonably imported

    • the last character of the git hash is no longer missing from the about dialog (commit)

    • number of leaking files when running the writer filter tests is now down to 2 from 527 (commit)

    • RTF import of text frame’s AutoSize property (commit)

    • File → Properties → Security → Record Changes is now imported and exported in the RTF filter (commit)

    • finally added UI for fine dashing — so not only existing documents are rendered correctly, but you can create such documents as well (commit)

    You can see some photos here.

    Last, but not at least, thank you Eike and Bjoern for organizing this event! :-)

  • Sunday, 09 June 2013
    Free Software Conference and Exhibition 2013

    The Free Software Conference and Exhibition 2013 — organized by FSF.hu — was held yesterday @ Budapest. I gave a talk about hacking on Writer file format problems (slides), this time in Hungarian.

    After the talk I also held a one-hour workshop, showing how to start hacking on LO in practice:

    We (with Andras Timar and Tamas Zolnai) also ran the LibreOffice booth. This year speakers got a free t-shirt and lunch, thanks for the organizers! :)

  • Monday, 03 June 2013
    Balaton Maraton 2013

    Idén is volt Balaton Maraton (a tizenhatodik, nekem a negyedik), sikerült idén is teljesíteni a szintidőt, sőt… de ne szaladjunk ennyire előre.


    Idén igyekeztem a korábbi évek gyakorlatával ellentétben egy kicsit tudatosabban készülni. Így került sor a következő túrákra:

    • április 7: Pilis, 126 km (erről már írtam)

    • április 14: Gödöllő K30, 102 km (GPS track, a kmóra ezeket mérte: idő 4h27m11s, átlag 22.8 km/h, max 45.7 km/h)

    • április 27: Dunakanyar, 125 km (GPS track, a kmóra ezeket mérte: idő 5h33m29s, átlag 22.4 km/h, max 37.0 km/h)

    • május 4: Ráckeve, 105 km (GPS track, a kmóra ezeket mérte: idő 4h31m31s, átlag 23.1 km/h, max 31.8 km/h)

    • május 27: Gödöllő K100, 168 km (GPS track, a kmóra ezeket mérte: idő 7h35m3s, átlag 22.0 km/h, max 51.4 km/h)

    Ez utóbbi 4 túra valahogy majdnem mindig az utolsó pillanatban dőlt el, így végül egyedül mentem. A K30/K100 útvonalakon szoktak szervezett versenyt is csapni, korábban így jártam ezeken a helyeken, de most nem akartam alkalmazkodni az általuk kitalált időpontokhoz. Sőt, a K100 útvonalán jól látható, hogy Vácduka és Rád között van egy gyalog (meg persze MTB-vel :-) ) járható út, amit ki is használtam, egy felesleges kerülőt így megspórolva.

    Lényeg a lényeg, abban a reményben indultam el az idei maratonra, hogy reméltem, sikerül javítani a korábbi időkön.

    A maraton

    Innentől felpörögtek az események: szokás szerint a rajtnál a depóból nem indulhattunk el pontban 9:00-kor, mivel akkor még csak a verseny indul. Valahogy így festett:

    Aztán 9:15-kor lassan elindult a maraton eleje is, az a rész ahol én álltam a kmóra szerint 9:22-kor. Mint mindig, most is lassú rajt kellett volna legyen Zamárdiig (tilos előzni), de azért ezt nem sokan tartották be. Ugyanezen a szakaszon szoktak jönni a sajtófotósok és végigvillantanak sok-sok embert; LGee ki is keresett engem:

    Idén 5 frissítőpont volt:

    • Fonyód

    • Keszthely

    • Badacsony

    • Balatonfüred

    • Balatonalmádi

    Nagyjából Balatonfürednél (160. km környéke) kezdett el jobban esni az eső, és ennek hatására konzekvensen le is állt a kmóra. ;-) Aztán már újra a hetesen karikázva a cél előtt kb. 8 km-rel újra bekapcsolt. Így a következőket mérte: idő 6h24m42s, táv 168 km, átlag 26.1 km/h, max 49.8 km/h.

    Szervezett versenyről lévén szó, a tényleges táv változatlanul 209 km volt, és a célba 18h előtt sikerült beérni, ami azt jelenti, hogy sikerült megjárni az egészet 8h29m alatt! :-) Összehasonlításképpen, a korábbi években az idők így alakultak: 2012-ben 9h45m, 2011-ben 9h51m, 2010 9h29m.

    Hivatalos eredmények erre.

  • Sunday, 26 May 2013
    DOC support in mso-dumper

    mso-dumper is a project that creates some — more or less human-readable — dump from binary files. Initially Kohei Yoshida developed it to dump XLS, then Thorsten Behrens added support for PPT files, finally during last November I started to add DOC support.

    You may ask: why that is useful? My answer is that I spend quite some time on the import/export filters of LibreOffice Writer, and to be able to improve or fix such filters, some knowledge of the file format in question and Writer internals is needed. Regarding the file format knowledge, I find it much easier to read the specification once and implement some simple dumper based on that — than reading the specification again and again, and just trying to understand what’s going on inside a binary file using a hex editor.

    To my knowledge, such a dumper for the DOC format (in particular the WW8 version of it) did not exist previously. WW8Dumper was the closest match, but that was far from complete and I found extending mso-dumper easier.

    To stress-test the parser, I used get-bugzilla-attachments-by-mimetype to get all DOC attachements from the Freedesktop bugzilla, and during the last days I fixed the remaining crashes (actually this is why I write this post now ;-) ). If you want to try it out you can do so by:

    git clone git://anongit.freedesktop.org/libreoffice/contrib/mso-dumper
    cd mso-dumper
    ./doc-dump.py /path/to/doc/file.doc

    The idea is that on any input the dumper should not crash: instead either it should give you usable result, or in case some unhandled structure is reached, it should print a <todo> XML tag. Other than that, of course patches welcome — that said, Maxime de Roucy already contributed a patch to the DOC part of mso-dumper, thanks! :-)

  • Wednesday, 22 May 2013

    A hétvégen Pécsett jártunk. Javában zajlott a Zsolnay Fesztivál, így talán az átlagosnál több ember hemzsegett az utcákon, de nem volt nyomasztó tömeg így sem. A következő helyeket érintettük:



    • Lyceum templom

    • Zsolnay-mauzóleum

    • Zsolnay család- és gyártörténeti kiállítás: itt rengeteg időt töltöttünk azzal, hogy megpróbáljuk a családfát rekonstruálni, a sok ismétlődő Zsolnay <keresztév> miatt, persze nem tudtuk, hogy a legutolsó teremben lesz egy kiosk ahol végig lehet követni interaktívan mindazt amit magunk próbáltunk összerakni ;-) (TL;DR: a család nagyrésze külföldön él, aki itt, az is inkább Budapesten — a gyárhoz pedig végképp nincs sok közük, mivel még '89 előtt gyakorlatilag mindegyiküket kirakta állambácsi a saját gyárukból)

    • Trio Á fellépés: szegények kellemes háttérzenét játszottak a tűző napon, a közönség a közelben lévő árnyékot adó fák alatt helyezkedett el, és kellemesen diskurált, mivel ugye annyira nem volt izgalmas, hogy csak a zenére figyeljenek :-)

    • Széllel szembe - poénok és poémák - Jordán Tamás stand up estje: talán ez volt a legtartalmasabb programpont; ezt persze biztos itthon is meghallgathattuk volna, de itt "ingyen" volt, és kifejezetten tetszett


    Szállásunk a Corso Hotel volt, akik egyből adtak egy Irány Pécs! kártyát, valamint náluk vettük meg a fenti fesztiválra is a napi belépőt, ezek után már a legtöbb helyre ingyenesen bejuthattunk.

    Képek erre.

  • Monday, 22 April 2013
    Az elveszett boldogság nyomában

    Egyik ismerősünk említette ezt a könyvet, a következő idézetet ragadva ki belőle:

    Az egyik ilyen meglátás az volt, hogy a jekána indiánok szókincsében nem létezik kifejezés a „munká"-ra. Egyedül a tarabaho kifejezést használják a nem indiánokkal való ügyletek megnevezésére, akiket - rajtunk kívül - gyakorlatilag csak hallomásból ismertek. Ez a spanyol trabajo szó pontatlan kiejtése volt, de elég pontosan arra utalt, amit a konkvisztádorok és utódaik értettek rajta. Érdekes módon ez volt az egyetlen spanyol eredetű szó, amit tanultam tőlük. A jekánáknak nem volt a mienkhez hasonló munka-fogalmuk. Voltak szavaik minden olyan tevékenységre, amely beletartozhat a munka fogalmába, de nem volt rá egy általános összefoglaló kifejezésük.

    Később derült ki, hogy amúgy Jean Liedloff 1975-ös könyve gyereknevelésről szól, és megvannak a maga ellentmondásai: érdekes dolog például szidni az olyan embereket akik „könyvből tanulják" a gyereknevelést mikor a könyv maga is e témában íródott, de ettől függetlenül nem bántam meg, hogy elolvastam.

  • Monday, 15 April 2013
    Hackweek 9

    Last week was Hackweek at SUSE — below is a quick summary on what experiments did I do during that timeframe.


    I did some experiments with using lcov on the LibreOffice codebase. The goal is to have a quick iteration, so you can see the current coverage of a file or a directory, select a method that is not yet tested, add a test for it, and "test" the test by checking if the coverage indeed got improved. As a first step, I tried this out on the Writer RTF import:

    cd writerfilter
    touch source/rtftok/*
    make -sr -j8 gb_GCOV=YES <1>
    cd ../sw; make -sr -j8 CppunitTest_sw_rtfexport CppunitTest_sw_rtfimport <2>
    lcov --directory workdir/unxlngx6/CxxObject/writerfilter/source/rtftok/ --capture --output-file libreoffice.info <3>
    genhtml -o coverage libreoffice.info <4>
    1. rebuild selected files with lcov options

    2. run the tests

    3. extract coverage information to a single .info file

    4. generate some nice HTML output from the .info file

    lcov had problems with gcc-4.7, fully updated openSUSE 12.2 or 12.3 is known to work.

    There is a script available to make the above a bit more automated.

    The speed of the above depends on the amount of code needing a rebuild + the number of tests, but it should not take more than a minute.

    E.g. I noticed the bookmark import code isn’t tested, added a test for it, and that indeed improved the line coverage of rtfdocumentimpl.cxx: 84.1% → 85.0%.

    A next area I wanted to test is the Writer RTF export. Let’s pick something in rtfattributeoutput.cxx… StartURL() is not tested, so a hyperlink testcase should help. Indeed it did: 50.2% → 52.0%.

    Last, but not at least, thanks to Norbert Thiebaud, who added gb_GCOV to gbuild.

    gdb pretty-printers

    Then I experimented with improving our Writer gdb Python pretty-printers. One annoying shortcoming was the lack of handling uno::Reference<text::XTextRange>. Imagine one searches for a bug related to table import for DOCX or RTF. One idea is to check the arguments of the convertToTable() method call. The first argument is a 2D array of XTextRange pairs, that describe what will be the input for cell contents. So if you want to check the first cell, you do something like this:

    (gdb) b DomainMapperTableHandler.cxx:798
    (gdb) r
    (gdb) print (*m_pTableSeq)[0][0]
    $1 = uno::Sequence of length 2 = {uno::Reference to (XInterface) 0x1a73648, uno::Reference to (XInterface) 0x1a77f68}
    (gdb) print (*m_pTableSeq)[0][0][0]
    $2 = uno::Reference to (XInterface) 0x1a73648
    (gdb) print (*m_pTableSeq)[0][0][1]
    $3 = uno::Reference to (XInterface) 0x1a77f68

    Not that helpful. Here is how one could work it around:

    (gdb) print (*m_pTableSeq)[0][0][0]._pInterface->m_pImpl->m_pMark->m_pPos1
    $4 = boost::scoped_ptr SwPosition (node 10, offset 0)
    (gdb) print (*m_pTableSeq)[0][0][1]._pInterface->m_pImpl->m_pMark->m_pPos1
    $5 = boost::scoped_ptr SwPosition (node 10, offset 20)

    But this is not something anyone will remember. After adding a few new pretty-printers, now it’s like this:

    (gdb) print (*m_pTableSeq)[0][0]
    $1 = uno::Sequence of length 2 = {uno::Reference to (SwXTextRange *) 0x1a72b98, uno::Reference to (SwXTextRange *) 0x1a773b8}
    (gdb) print *(*m_pTableSeq)[0][0][0]._pInterface
    $2 = (SwXTextRange) SwXTextRange sw::UnoImplPtr SwXTextRange::Impl = {mark = sw::mark::IMark = {pos1 = boost::scoped_ptr SwPosition (node 10, offset 0), pos2 = empty boost::scoped_ptr}}
    (gdb) print *(*m_pTableSeq)[0][0][1]._pInterface
    $3 = (SwXTextRange) SwXTextRange sw::UnoImplPtr SwXTextRange::Impl = {mark = sw::mark::IMark = {pos1 = boost::scoped_ptr SwPosition (node 10, offset 20), pos2 = empty boost::scoped_ptr}}

    Technically, it would be possible to make print (*m_pTableSeq)[0][0][0] work as well, but for a larger class without a pretty-printer that would result in multiple pages of output. Anyway, _pInterface is the same for all UNO objects, so something that is not too hard to remember.

    An other improvement is the XTextCursor pretty-printer. Example usage: debugging of the commented text range ODF import. Before:

    (gdb) b txtfldi.cxx:559
    (gdb) print *rHlp.GetCursor()._pInterface->m_pImpl->pRegisteredIn->m_pMark
    $1 = SwPosition (node 9, offset 4)

    After the new pretty-printers one doesn’t have to type that much:

    (gdb) print *rHlp.GetCursor()._pInterface
    $1 = (SwXTextCursor)
        SwXTextCursor sw::UnoImplPtr SwXTextCursor::Impl = {registeredIn = SwModify = {point = SwPosition (node 9, offset 4), mark = SwPosition (node 9, offset 4), next = 0x1a28b88, prev = 0x1a28b88}}

    RTF filter text frame rework

    Finally, I experimented with reworking the textframe code in the RTF filter. In short, the motivation is to bring the RTF filter in sync with the OOXML one, which can nicely import and export text box gradients. To get there, there are 3 different problems to solve:

    1. The RTF import filter currently imports rectangle and textbox shapes as drawinglayer rectangles, even if they have some text inside. Just like the OOXML import filter, we would better import these shapes as Writer textframes, as long as they contain some text.

    2. The RTF export writes Writer textframes as old-style Word frames, not as text box shapes. This should be changed, as the old syntax doesn’t support gradients, and in general both the DOC and DOCX export filters already export new-style Word frames, so there is no reason why the RTF filter would not do the same.

    3. Once all the above is done, add support for gradients in the RTF filter, in a similar way OOXML filters were already improved to handle gradients.

    4. Once this all is done, add new testcases to cover the new code.

    First I had hacked on #1, sadly Writer textframes and drawinglayer rectangles don’t share the exactly same UNO API, like drawinglayer has TextWritingMode and a Name property, Writer textframes have a WritingMode property instead, and additionally they implement the XNamed UNO interface, etc.

    Then I switched to #3 — there I managed to reuse our existing VML import to do the hard work: the RTF tokenizer reads the RTF shape properties, then constructs the same VML model what is normally built from v:fill and v:shadow XML elements inside DOCX files, finally the VML import does the mapping of Word’s gradient concept to the Writer gradient concept.

    At the end of the week I also hacked on #2 and #4 — and while I did so, I noticed two more interesting details of Word’s new-style RTF textframe markup:

    • The bad news: Writer supports having different top/left/bottom/right borders, RTF still just supports the concept of a single line around the textframe.

    • The good news: old-style RTF frames didn’t support different left/right or top/bottom external margins, but Writer does — so now using the new syntax, this is exported properly.


    Unrelated to the above, I fixed an annoying git bug, when one tried to cherry-pick multiple commits at the same time, and copy&paste went wrong, the "unrecognized" arguments were just silently ignored. Now one gets an error instead.


    In parallel to the above, Thorsten was kind enough to explain how to update docs.libreoffice.org: The new output is generated using doxygen 1.8, it contains a bit more eye-candy. E.g. notice the new foldable subsections here. ;-)

  • Saturday, 13 April 2013

    Múlt vasárnap (fehérvasárnap) bringázni voltunk a Pilisben. Nem mondom, hogy a végére nem fáradtam el, ez volt idén az első alkalom, hogy 100km feletti túrára mentem — de már bőven ideje volt.

    A GPS track mutatja, hogy mi Budapestről mentünk, a társaság másik fele pedig Szentendréig HÉV-vel, és ott csatlakoztak hozzánk. Onnantól pedig a Dömör-kapu, Pilismarót, Két-bükkfa-nyereg, Dobogókő útvonalat követtük.

    A kmóra a következőket mérte:

    • nettó idő 6h38m32s

    • táv 125.91km

    • max 51.6km/h

    A túrán használtam először hosszútávon a nyári (nem havas, stb) időkre szánt Schwalbe Silento külsőket, egyelőre meg vagyok velük elégedve.

  • Sunday, 07 April 2013
    LibreOffice Writer now supports graphic bullets in its DOCX/RTF filters

    If you ever tried to use graphical bullets in Writer (Format → Bullets and Numbering → Graphics), you may have noticed that only the ODF filter can load and save such a numbering. This is now improved a lot. Motivated by seeing this is now handled in the binary DOC filter, I now added support for this also to the DOCX and RTF import and export filters. If you want to play with this feature, core.git also contains a DOCX and an RTF sample as well.

  • Saturday, 16 March 2013

    Az elmúlt hat napban a Bosznia-Hercegovinában található Jahorinán voltunk síelni. Mivel aránylag kevés információt találtam a neten, igyekszem összefoglalni tapasztalatainkat.

    0. nap

    Az utazást a szigoru.hu baráti társaság szervezte (itt nem utazási irodára kell gondolni, tényleg csak a buszt, szállást, síbérletet intézték — kb. a Ryanair sielős megfelelői lehetnének… :-P), Facebookos továbbküldős üzenetből értesültünk a lehetőségről. A magyar határtól kb. 500 km-re lévő síterepre busszal utaztunk az SCH elől. Hivatalosan 7:00-kor volt gyülekező, és 7:15-kor indulás, már itt csúszott a program. Az odautazás amúgy eseménytelenül telt, nem számolva a szokásosan 10 percesnek kikiáltott 3-4 óránkénti megállásokat, amik rendszerint 2 óránként és jó fél órasak voltak, elsősorban a cigizők igényeit kiszolgálva.

    Ennek eredményeképpen 17:30 helyett inkább 20:30 körül érkeztünk meg a szállásunkra (Pahuljica panzió), amiben viszont sok kivetnivalót nem találtunk: az igényelt kétágyas szobában történetesen egy franciaágy, egy sima ágy és egy kihúzható heverő is volt, saját fürdőszoba, általunk megszokott (és nem a bosnyák közvécék kategóriájába eső) mellékhelység. Wifi csak a földszinten, de ott ingyen.

    Az árak első hallásra valóban a hazainak feleltethetők meg, kettőnknek egy vacsora (főétel, köret, ital) 15 euróból kijött (a helyi konvertibilis márkát a legtöbb helyen 1:2 arányban simán váltják, mi nem is vettünk otthon külön márkát).

    Este még gyorsan körbejártuk a környéket: a panziótól pár perc sétára közért is található, mely persze vacsora után már zárva volt.

    1. nap

    Reggel 9-kor megkaptunk mindenféle mizéria nélkül a heti síbérletet (vö. Franciaország, ahol a fényképes bérletekkel állandó gond van csoportok esetén: fényképet kell vinni, majd a helyi serpák ragasztgatják be a bérletre a fényképeket, így tipikusan órák mennek el a drága síidőből az első nap), és miután szert tettünk egy ingyenes sítérképre, nekikezdtünk a pályák felderítésének.

    Sajnos még délután is erős köd volt, így egész nap nem járt több felvonó. A síterep keleti oldalán található szállásunkról először egy tányéros (ez u.úgy nagyot ránt mint a szlovák társai, némi nosztalgikus érzést kiváltva azokból akik már nem először találkoznak a jelenséggel) és egy 6 fős üllős liftet próbáltunk ki. A helyi nevezéktan érdekessége, hogy a felvonókat ékes szerb nyelven — de (a turisták kedvéért) legalább nem cirill betűkkel — azonosítják, a sítérkép pedig egyszerű betűkkel azonosítja őket. A megfeleltetésre a sítérkép alján lévő apróbetűs táblázat ad lehetőséget.

    A pályákat szerencsére mind a térképen, mint a valóságban számokkal azonosítják, bár a kijelzés meglehetősen visszafogott: a pálya száma csak hébe-hóba van kijelezve. Az esetek többségében egyszerű kék/piros/stb (a pálya nehézségére utalva) színű póznák jelölik a pálya határát. Ez alól is vannak kivételek, ott egyszerűen abból lehet tájékozódni, hogy merre nincs (vagy kevesebb) a szűzhó.

    Délután aztán a szomszédos völgybe is ellátogattam (az "mi" völgyünk aljából induló felvonó tetejéről kényelmesen át lehet csúszni), ahol modernebb, plexiüveggel fedett felvonóval szállítják fel a sportolókat. A kijelzést itt se vitték túlzásba, harmadik nekifutásra sikerült úgy letalálni a pályán, hogy sehol se kellett visszagyalogolni. Úgy tűnik helyi marketing-trükknek számít, hogy a pálya elkanyarodik, de az egyenesen továbbsíelőket is várja egy étterem, ahonnan viszont vissza kell gyalogolni egy keveset. A liftek nyitvatartását úgy tűnik sehol se rögzítik írásban, de egy angolul beszélő szerb szerint az íratlan szabály a 16:00-s zárás (hétvégén 12:30). Szerencsére mi hetfőtől péntekig síelünk, így a szokatlanul rövid hétvégi nyitvatartás minket nem érint. A nap végén felkerestük a már említett boltot: 8:00-21:30 a nyitvatartása, így a 9 órás felvonó-nyitás előtt, vagy azok zárása után is kényelmesen lehet vásárolni. A mai kedvenc a 2l-es helyi sör, amiért kb. u.annyi eurót kellett kifizetni, mint Brüsszelben egy 3decis testvéréért. :-)

    2. nap

    Reggel megvaxoltattam a lécemet, meglepő módon a szervízben csak egyszer kellett mutogatás nélkül elmondani, hogy mit akarok, egyből értették. Délelőtt a már tegnap megismert pályákon síeltünk, sajnos egyelőre úgy tűnik, hogy a szállásunkhoz vezető völgybe visszajutni a nyugatibb völgyekből továbbra se lehetséges rendes pályán: a nap folyamán 2 megoldást is kipróbáltam, de mindkettő szűzhavas síelésbe torkollott.

    Ebédre újfent valami egyszerűt akartunk enni, de kezd körvonalazódni a helyi szabály: minden étel 5 euró körül van, ennyi pénzből viszont bőven jól lehet lakni. Jelen esetben két kolbászt kértünk (gondolva, hogy elég kenyérrel egy könnyű ebédre jó lesz), mire kihoztak 2 tálat, a tálakon 4 kolbásszal, hasábburgonyával, salátával, hagymával, pitával…

    Délután sikerült felfedezni a tegnap még nem érintett pályákat: mint kiderült a felvonók aljában itt nincs információ arról, hogy milyen felvonók üzemelnek, de interneten meg lehet nézni, és az az információ tényleg naprakész. Kipróbáltam egyet az olimpiai pályák közül is — nem lepett meg, hogy ezek normális fekete/piros pályák, ha nem lenne kiírva, hogy olimpiai, észre se venné az ember.

    Valamint tanultunk 2 új hasznos szerb szót: konobar = pincér, és naziv = név.

    3. nap

    Délelőtt a hozzánk legközelebb eső, majd a tőle nyugatabbra lévő völgyben síeltünk: az idő kifejezetten szeles volt, így az üllő felvonókon a kilengés jól érezhető volt. Annyira, hogy miközben beültünk "ebédelni" egy forró csokira, le is állították a két völgy üllő felvonóit, ezáltal gyakorlatilag egyetlen tárcsás használatára kötelezve mindazokat, akik még időben nem startolak el a síterep nyugati felén fekvő olimpiainak titulált pályákra.

    Pánikra persze semmi ok, így esett meg, hogy e tárcsás felvonó mellett kipróbáltam egy sífutó utat is, ami végül lesikló léccel is síelhető volt: tehát ma is találtunk új pályát.

    Amúgy ez a lezárás kellemes nosztalgikus hangulatba sodorta a társaság jelentős részét: a folyamatos tárcsás felvonó-használat, a többperces várakozási idők érdekes módon mindenkiben a régi szlovák síterepek hangulatát idézte fel.

    Azokat, akik a szomszéd völgyben rekedtek volna, állítólag kisbuszokkal hozták át hozzánk — úgy tűnik nagyon sürgősnek tartották a szeles időben az üllőliftek leállítását. Ennek ellenére azért az alsóbb szakaszokon ma is volt csendes, napsütéses idő, így volt lehetőség fotózkodásra. A szervezők az utolsó utáni pillanatban értesítettek SMS-ben, hogy 2 euróért bevisznek "bulizni" Szarajevóba: ezt mi kihagytuk, mivel inkább pihenésre vágytunk az egész napos síelés után; illetve várost nézni önállóan csak úgy lett volna értelme, ha előbb utána olvasunk, hogy mit lenne érdemes megnézni.

    4. nap

    Ma kifejezetten zord időjárást kaptunk, egy fél órát leszámítva egész nap esett a hó (és így nem sütött a nap). Ami viszont pozitívum, hogy alig volt szél, így újra járt az összes felvonó.

    A mai síelésre vittem GPS-t is: az 1916 méteres csúcsot sikerült 1904 méterre megközelíteni, valamint a teljes nap folyamán 54.6 km-t síelni, amivel teljes mértékben meg lehetek elégedve, ha belevesszük, hogy ebben volt egy egy órás ebédszünet is.

    A hóesés amúgy egész előző nap is folytatódott, és ez rámutatott a bosnyák pályakarbantartás egy gyengéjére is: a pályákat délután/este ratrakolják, így az egész éjszakás hóesés után vagy 10 centi szűzhó borította az amúgy ledolgozott pályákat. Persze a népszerű szakaszokon a síelők ezt gyorsan ledolgozták.

    Ezen kívül megjött a magyarok következő turnusa, akik csütörtök estétől vasárnapig maradnak, az egyik felvonón pl. szarvasi pálinkával kínáltak.

    5. nap

    És egyben az utolsó. A terv az volt, hogy reggel síelés előtt becuccolunk a buszba, síelünk amíg járnak a felvonók, majd 4 után indulunk haza. Hogy ez jó ötlet volt-e vagy nem, az kérdéses: jó volt kihasználni a lehetőségeket, de a -tizenvalamennyi °C, az erős szél és a köd (röviden: a helyhez képest is ridegnek számító időjárás) azért kissé rossz szájízt adott az utolsó napra.

    Ennek ellenére sikerült betartani a régi szabályt, hogy utolsó nap óvatosan: senki nem sérült meg, és aránylag időben el is tudtunk indulni hazafelé.


    A nagy kérdés adott: jó ötlet-e Jahorinára menni egy jól bejáratott osztrák/francia/stb síterep helyett?

    Én a következő előnyöket láttam:

    • évek óta osztrák/francia terepeken síelve végre valami változatosság

    • nagyjából egy megszokott minőségű síterepre jut az ember, a nyugati árak töredékéért (u.úgy jelezve vannak színekkel a pályák, van sítérkép, ratrak, stb.)

    • hétköznap a pályákon minimális a terheltség

    • az utazás csak 8 óra Bp-ről (Franciaországnál 1-1 teljes nap elment csak az utazással)

    Persze vannak hátrányok is, amit érdemes figyelbe venni, ha az ember kompromisszumképtelen:

    • a pályák kijelzettsége rosszabb: többen kérdezték, hogy itt a fekete pályáknál alap feltétel, hogy ne legyenek kijelezve? ;-) (vagy például nincs led-panel a kasszánál, hogy mely felvonók járnak, csak neten lehet megnézni)

    • az angol nyelvtudása a helyieknek csapnivaló, bár erőltetve a tőmondatok használatát minden felmerülő problémát megoldottak, így sok paraszra nem lehetett okunk

    Pár ár-referencia (TL;DR: 2 KM kb. = 1 EUR):

    • forró-csoki a Peggy "hüttében": 4,5 KM

    • 2l-es LAV sör a helyi boltban: 3,3 KM

    • szállás a Pahuljica panzióban félpanzióval: 50 KM

    • nagy (32cm) pizza a VATRA étteremben: 10KM

  • Thursday, 28 February 2013

    LibreOffice started to use Gerrit for code review, and while occasional contributors can submit patches manually, in case one does many reviews, it’s handy to use a dedicated tool. In core.git, we have logerrit, but that’s not advised for regular reviewers, either, git-review is recommended instead.

    So I looked into git-review. The good news is that it’s packaged already for most distributions, e.g. a simple

    zypper in python-git-review

    on openSUSE installs it.

    I wanted to use this tool for two tasks:

    • Submitting changes to Gerrit: git review -R could do that. -R prevents automatic rebase, so a test build won’t fail because your patch is based on an already broken commit. The other good thing is that you don’t have to remember where to submit: both the master and libreoffice-4-0 branches contain a .gitreview file that contains the necessary server / branch information.

    • Cherry-picking changes from Gerrit: I found no option for this. A cherry-pick command is generated on the web interface, but it’s more complicated than a simple <some command> <number of the change>. So I submitted this change to git-review itself, the next release will be able to do git review -x <number of the change>.

    Probably the browser interface is still the best to comment (especially inline comment) and approve changes, though David even submitted a proof of concept patch for that as well.

    Finally, let me just clear two myths:

    • If you use Google for OpenID login, you can have multiple OpenID accounts associated with your Gerrit login, so it’s not a problem (first I thought it is) if you use one email for Gerrit and an other one for accessing other Google services.

    • Somewhere I read that the stock LibreOffice hooks conflict with git-review: nope, git-review didn’t touch the hooks, you can use the tool without corrupting them in any way.

  • Saturday, 23 February 2013
    Mary Poppins

    Pár hete láttuk ezt a musicalt: kifejezetten látványos, nem kifejezetten gyerek-közönséget megcélzó előadás, tetszett. A végén konkrétan Mary "átrepült" esernyőjével a nézőtér felett… ;-)

    Úgy tűnik elég népszerű előadás, a Madách honlapján nincs meghirdetve olyan előadás, amire lenne még jegy is.

  • Monday, 18 February 2013
    LibreOffice Writer now supports gradients in text frame backgrounds

    When you create a rectangle or text frame in Writer, you have two choices. You can use the draw toolbar to create a drawinglayer rectangle, and you can also insert a text frame. The drawinglayer shapes are shared between the LibreOffice applications, and already supported having not only a bitmap or a color but a gradient or a hatch as a background. The benefit of Writer text frames is that they can contain anything a normal Writer document can — think of columns, tables, etc. These features are not supported by drawinglayer rectangles.

    So till now you had to decide what to pick, but it wasn’t possible to have both. LibreOffice 4.1 makes this situation better. Now it’s possible to have gradient backgrounds in Writer text frames as well:

    The nice thing is that this feature was already supported by ODF, just not by Writer, so no such paperwork was needed this time. Also the OOXML filters are updated. As I already stated in this comment, the binary DOC and RTF filters are not yet touched regarding this feature — though I already looked into the RTF one, and have some idea what rework is needed there first.

  • Saturday, 16 February 2013
    Egy bolond százat csinál

    Olyasmi ez — stílusában meg terjedelmében is — mint a Vesztegzár a Grand Hotelben. Hogy miért számít a Bookline szerint szépirodalomnak, azt inkább tőlük kéne megkérdezni. ;-)

  • Thursday, 07 February 2013
    FOSDEM 2013

    We spent the last weekend in Brussels, at FOSDEM 2013. Outside attending great talks, I most enjoyed meeting people I haven’t met in person before, in no particual order:

    Also fixed fdo#48440, fdo#58646 and fdo#59419 during less-interesting talks. ;-)

    Additionally, during the last day we had time for some site-seeing, some pictures are here. Slides of other LibreOffice talks are also available.

  • Wednesday, 30 January 2013
    Sunset Boulevard

    Régóta terveztem megnézni ezt krimit, nem véletlenül kapott magas score-t, ritka jó film.

  • Sunday, 27 January 2013

    There are multiple strategies how to add testcases for code that sort of works, but has no or too few tests. One approach (that works quite well in LibreOffice, for example) is to just add tests for new code, and there the test is "good", if it passes, but it fails if you revert the corresponding real change.

    An other approach to avoid duplicated tests is to use a tool like lcov, that can perform line or function coverage analysis for you, so a test is "good" if it increases the coverage. I wanted to look into this later approach for LibreOffice, but I decided it’s more fun to try this out for a smaller project first. That’s when adding testcases for BitlBee’s Skype plugin came into my mind.

    The problem there is that manual testing typically includes multiple online Skype clients and an IRC client as well, and such tests are extremely unreliable. So I thought: if I’m able to mock both the interactive IRC and Skype clients, then it’ll be easy to test the C Skype plugin itself, even for very special scenarios (like changing a groupchat topic in the middle of inviting somebody to a groupchat or similar).

    So here is the result looks like:

     skyped mock file   +--------+         +---------+   pyexpect mock file
    ------------------> | skyped | <-----> | bitlbee | <--------------------
                        +--------+   TCP   +---------+

    For skyped, the exact traffic is recorded and played back later; for BitlBee, only the outgoing traffic is exact, for the incoming traffic pyexpect allows just patterns (to allow tolerance for not interesting changes). Once the framework was available, it was quite easy to add testcases: I already have 70%+ coverage, and I think approaching the 100% function coverage is realistic. :-)

    What was also interesting is that it turned out the latest upstream lcov release is not compatible with gcc-4.7, but the necessary patches are now integrated, and the next upstream release will work out of the box.

    The BitlBee mock files can be found here. Given that there are now instructions to do similar analysis for LibreOffice as well, I hope to look into increasing test coverage for the classes I maintain as well.

  • Saturday, 26 January 2013

    Botond barátom keres fejlesztőket:


    Szoftverfejlesztőt keresünk elsősorban C# nyelvű, érdekes munkához, jó fizetéssel. Előny, ha van tapasztalatod webfejlesztés (ASP.NET, JavaScript, jQuery, HTML, CSS), adatbázisok (MySQL, PostgreSQL, MongoDB), a többszálú programozás és a verziókezelő rendszerek (svn, git) terén. Fontos az önálló munkavégzés és a rendszerszintű gondolkodás.

    Ha érdekel a munka, kérlek, küldj egy részletes szakmai önéletrajzot a balazsbotond@gmail.com címre.

    Balázs Botond
    Gépikód Magyarország Zrt.

  • Monday, 14 January 2013

    Ezt a filmet még gimiben láttam, pár hete néztük meg újra, nem véletlenül kapott 8.5 pontot IMDB-n. :)

  • Friday, 04 January 2013
    Are you open?

    Sounds like an easy question, but I learned over the past few years that for software projects, the answer is typically not a yes or no question.

    Technically — for example — Virtualbox OSE is considered opensource, even the OSE abbreviation suggests that it’s a stripped down version of the real codebase, that is kept as a secret. At first thought I wouldn’t even imagine it’s possible to contribute back a patch from someone not working on the original — closed — codebase, but of course I may be wrong in case of Virtualbox.

    There is also the question of what is open. Only tarballs of releases, or also the SCM repo used for development? Think of Amazon’s custom kernels where the code is open, but it’s obviously only a code dump, one is not supposed to contribute to it, and the individual changesets are not public.

    Finally, even if the software itself is developed in a truly free manner, some enterprise version (which is based on the free version) may not be publicly developed, e.g. only the resulting tarball is public. I’m happy to see that at $dayjob even this last detail is quite public, think of LibreOffice or the Linux kernel.

  • Thursday, 03 January 2013
    Forrest Gump

    Úgy rémlik, eredetileg ezt valamikor nyelvvizsgára készülve láttam, meg most pár hete újra. Jó látni ezeket az igényesen felépített filmeket.

  • Wednesday, 02 January 2013
    mdadm upgrade

    Even though I spend little of my free time with sysadmin stuff these days, this came up recently. A few years ago I hit an issue about mdadm creating too new metadata that wasn’t handled by the installed kernel, so I remembered to use --metadata 0.90 when creating a new array. Additionally, I preferred using cfdisk for partitioning.

    It turns out this caused quite some grief when it came to grub2, I wrote about this earlier — that was about the theory, in a VM. This is about the practice. In practice, gparted turned out to be too risky, and I choose the following approach to repartition the hard drives (so there is enough space for grub2) and upgrade the mdadm metadata.

    First, I broke the mirror by removing one leg of the RAID1 array:

    mdadm --manage /dev/md126 --fail /dev/sdd1
    mdadm --manage /dev/md126 --remove /dev/sdd1

    Then I created a new array (with a single leg) with the new metadata and formatted it:

    fdisk /dev/sdd
    mdadm --create /dev/md125 --metadata=1.0 --level=1 --assume-clean --raid-devices=2 missing /dev/sdd1
    mkfs.ext4 /dev/md125

    Finally I copied over the live system:

    mkdir /mnt/md125
    mount /dev/md125 /mnt/md125
    rsync --delete -avxP / /mnt/md125
    umount /mnt/md125

    The rest was easy: I booted a livecd to do the rsync once again (taking a few minutes only), and once the system was running from the new array, added the leg of the old array to the new one as well — and that’s it.

  • Monday, 31 December 2012
    Szokásos év végi összefoglaló 2012

    A tavalyit folytatva:

    1. Januárban — két diplomával a hónom alatt — végre búcsút intettem a BME-nek.

    2. Február óta van szerencsém teljes munkaidőben LibreOffice-t hackelni.

    3. Májusban esküdtünk és költöztünk.

    4. LibreOffice utazások: Hamburg, Berlin/Prága, München.

    5. Nyaralás: egy hét Őrség, majd ősszel egy hét Ρόδος.

    6. Frugalware: idő hiányában ezt feladtam.

    7. Bringa: idén kicsit több, mint 1900 km-t sikerült tekerni, a fő műsorszám még mindig a Balaton Maraton.

    8. Szakmai előadások: 3 magyar, 1 angol.


  • Sunday, 30 December 2012
    Recent contributions

    Here are a few contributions I made recently:

  • Saturday, 29 December 2012
    American History X

    Az olasz melóból ismerős Edward Norton főszereplésével, tanmese arról, hogy egy neonácinak hogyan jön meg az esze a börtönben.

  • Friday, 28 December 2012
    Zero RTF Regressions?

    I think the first attempt to track LibreOffice RTF Writer regressions (bugs not presenting in some earlier versions) was in this mail. That started with 14 bugs, and of course while I fixed a few, new ones were added as well. I guess this is mostly due to testing work, since new fixes are usually covered by unit tests, so re-introducing the same problems nowadays is a bit more work.

    I remember I was down to one regression a few months ago, but we still had performance problems, which got solved a few weeks ago, so I had the idea that I want to go down to zero during the holidays. It seems today I finally managed to do so — bugs tagged as rtf_filter and regression are gone, thanks everyone who helped! :-)

    For the reference here are the queries: RTF regressions, fixed RTF regressions, Writer regressions.

    Now that the list is empty, feel free to tag more bugs as rtf_filter from the long Writer list when needed.

    Update: the list is now empty again, as of 2014-11-24, for the 4.4 release. ;-)

  • Wednesday, 26 December 2012
    Földes András: Erőss Zsolt - A Himalájánál magasabbra

    Névnapomra kaptam ezt a könyvet — jó ilyen sportolásra motiváló könyvet olvasni, csak ajánlani tudom.

  • Saturday, 08 December 2012
    Free Software Conference 2012

    The Free Software Conference 2012 — orginized by FSF.hu — was held today @ Budapest. I gave a talk about hacking on new Writer features (slides).

    We (with Andras) also ran the LibreOffice booth, and in idle cycles I also had time to kill this annoying bug. This year speakers got a t-shirt and a fine lunch, thanks for the organizers! :)

  • Monday, 03 December 2012

    Valamelyik hétvégén átnéztem a pólóimat, a rég nem hordottakat eljuttatandó a Máltai Szeretetszolgálatnak. Persze a többség valamilyen szabad szoftveres eseményről származott, így biztos ami biztos lefotóztam őket. Itt van például egy 5 elemű GSoC sorozat:

    További fótók erre.

  • Monday, 26 November 2012
    LibreOffice Hackfest in Munich, 2012

    During the weekend I was in Munich to visit our second LibreOffice hackfest this year. The archivements are detailed here. Here are a few interestings details I learned during this event:

    • Laszlo explained on the train to Munich that single line spacing is 15% of the font size, by definition. That finally explains why it is that the height of a 12pt single-line paragraph in Writer is not 240 but 276 twips.

    • Finally Michael motivated (and also helped!) me to improve the copy&paste in the new RTF filter, so it seems that removing the old filter completely is near.

    • The ability to sign each other’s gpg key was a great idea. I didn’t know too much about this topic, so I read up on this here. (Additionally, the gpg-key2ps command from signing-party — yes, there is such a package! —  is useful.)

    • We set up a nice icecream farm from the laptops, one more aspect that boosted our productivity.

    Speaking about icecream — there were two reasons why I didn’t really use it:

    • it required re-configuring your build tree (--enable-icecream)

    • it required shutting down your firewall

    It turns out none of this is really needed, so let me share the way to avoid these problems:

    • look into the wiki, you only need to open a few ports, even broadcasting/auto-discovery works with a started firewall

    • use CCACHE_PREFIX="icecc" make build-nocheck PARALLELISM=30 to enable icecream for a single make run

    Additionally, if you run openSUSE 12.2, by default the daemon reports that the box can’t compile x86_64 binaries (probably it hasn’t been updated to deal with the 3.0 kernel or something), a quick workaround is to install Lubos' updated package:

    zypper -p http://download.opensuse.org/repositories/home:/llunak:/clang/openSUSE_12.2/ in icecream-0.9.7-64.1s.x86_64

    Thanks for the organizers, once again this hackfest turned out to be really useful! :)

    As usual, some pictures are available.

  • Friday, 16 November 2012
    LibreOffice OOXML improvements in Writer

    It’s possible you noticed that in each LibreOffice release notes, we have a line saying something like "improved DOCX support", but is rarely explained in detail. I’m posting here a few screenshots to correct this. The first series is a list of import fixes which are already available in our shipping 3.6 release. In each case I provide a test document, and a screenshot how it looked like with LibreOffice 3.3 and how it looks like with LibreOffice 3.6 today. Click on the images to get a larger image:

    • document with a checked checkbox (test doc):

    • document with contextual spacing enabled for the numbering (test doc):

    • document with a field that has a custom font size (test doc):

    • document with a SmartArt inside (test doc):

    • document with lots of VML shapes (test doc):

    • document produced by Microsoft Office 2010 (test doc, thanks Fridrich!):

    Now let’s also have a look at some OOXML features which will be imported correctly in our upcoming 4.0 release:

    • document with commented text ranges (test doc):

    • document with a floating table (test doc):

    • document with ink annotations (test doc, thanks Eilidh!):

    • document with an OLE object inside a rectangle (test doc):

    • document with an inline image with custom margins (test doc):

    If you want to try these out yourself, get a daily build and play with it! :) If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.0 is released. And remember, there are lots more improvements coming in LibreOffice 4.0, stay tuned!

  • Saturday, 10 November 2012
    LibreOffice RTF import Drawing Objects improvements

    It all started with this bugreport about a year ago. RTF has two different markups to describe shapes. The old one (used till Word 6.0) is called Drawing Objects, the new one talks about Shapes. The first picture shows the "support" for this syntax in LibreOffice 3.4, and the situation did not change with my RTF import rework, as I wasn’t aware of any document still using this old syntax. So when I got this bugreport, I knew it’ll take some time to produce the correct layout, but now during the LibreOffice conference I spent quite some time on this, and at the end even the Hebrew text is imported correctly. ;-)

    Thanks to Lior who politely nagged me from time to time, this is now available on master (see the second picture), which will become LibreOffice 4.0.

  • Saturday, 27 October 2012
    LibreOffice / openSUSE Conference 2012 in Berlin / Prague

    I spent the last two weeks on two conferences:

    • LibreOffice Conference in Berlin, where I gave a talk

    • openSUSE conference in Prague, where I just attended.

    In general, thanks for the organizers for these fantastic events!

    A few fun facts I discovered during the conference:

    • Armin is referred in the source tree as AW due to… well, it’s easy to find out once you heard about OD’s ORW reincarnation. :-)

    • solver stands for "solar version", it does not solve anything (read Michael Stahl’s talk for details)

    • I just discovered this presentation of Thorsten, slide 15 mentions a bug on x86, which is still the case on Android, 6 years later.. (even mentioned in Tor’s talk)

    • "Java? I hope that language dies" (Jan Engelhardt, openSUSE Sparc guy)

    • "Browser: we’re there; Office: with LibreOffice — even if it’s not perfect, we’re getting there. Groupware: we’re weak here" (Georg Greve, Kolab guy)

    • Don’t try to change EUR to CZK in the Prague main station, they have ridiculously bad rates

    A few pictures here.

  • Monday, 15 October 2012

    Múlt hétvégén voltunk Bence barátommal Dobogókőn bringával, és visszafele jövet a kék turistajelzés választásának áldásos hatása lett, hogy a — valószínűleg egy korábbi esés során elrepedt — nyergem most végképp megcsonkult. ;-) Az i-re az tette fel a pontot, hogy végül Békásmegyer környékén egy második defektet is kaptam, nálam meg se második pótbelső, se ragasztókészlet nem volt, így maradt a HÉV-ezés.

    A képen látható WTB nyerget amúgy 3 éve használtam, és állítólag ha esés vagy hasonló baleset miatt nem sérül meg, simán kibírt volna még ennyit. R.I.P. :-)

  • Wednesday, 10 October 2012
    LibreOffice Writer now supports first page header/footer

    When you want to have pages with different properties in Writer, you use page styles. If you want to do something similar in Word, you have to use sections. One of the benefits of page styles is that you can use them multiple times, and — as usual with styles — whenever you change your mind, you can edit just the style, and all its uses will be updated consistently. There is, however, one feature that Word sections have and we lacked so far: sections can have different headers and footers on first, left and right pages. In Writer, you had to use two different page styles if you wanted to achieve the same: typically named "First page", then a "Default". This was because Writer could differentiate only between right and left pages, not first ones.

    In LibreOffice 3.7, there will be a new checkbox to "unshare" the header and footer of the first page with right/left pages:

    Right now, only ODF filters are updated to open / save this feature (as suggested by this old proposal) — in later versions it’s planned to update the DOCX, DOC and RTF filters as well, removing quite some code from import filters working around this limitation of Writer core.

  • Monday, 01 October 2012
    A csillagok, akár a por

    Nemrég fejeztem be ezt a regényt, először a Galaxis útikalauz stopposoknak jutott róla eszembe, pedig nyilván időrendben fordítva íródtak. ;-) Mindenesetre az cselekmény mindkét esetben többségében űrhajó(ko)n játszódik, és hasonlóan kacagtató egy-egy fordulat.

  • Saturday, 29 September 2012
    Duna TV stream lementés

    Pl. itt egy műsor, a cél ezt valahogy offline nézhetővé varázsolni. Alapból a Firefox valami plugint igényelne a lejátszáshoz, persze ez a legtöbb felhasználónak nincs telepítve, nálam se. De firebuggal megnézve az iframe címe kideríthető. Annak a forrását megnézve megkaphatjuk a stream címét. Sajnos úgy tűnik az MPlayer ezt képtelen lejátszani, de a VLC viszi. Az utolsó trükk, hogy ezt hogyan mentsük le, pl. így:

    vlc --sout=file/wmv:test.wmv

    Egyébként konkrétan ezt a műsort érdemes is megnézni, de az már csak hab a tortán. :-)

  • Thursday, 27 September 2012

    So even if I bookmarked a thread to have a look at the CyanogenMod install on my phone last year, I didn’t have a look at that till yesterday. The final motivation was that I thought that CM 9.1 (not containing any Samsung code) will not be vulnerable wrt. the issue reported 2 days ago. Later turned out that installing this app is enough, even if you stick to the older firmware supplied by Samsung, but once CM was installed, I haven’t looked back.

    The install guide was easy to follow, it seems that newer Samsung devices have download mode enabled by default, so you need no cracking, the ClockworkMod Recovery and then CyanogenMod can be installed without any problems. Probably the only nontrivial part is that you do want Google Apps, even if you disable most of that stuff later, as the Play Store is part of that collection as well. As the guide suggests, I made a full backup, then after the install I restored the important part of my settings.

    For the reference, here is how my home screen looked before and after the reinstall:

  • Monday, 24 September 2012

    Ez a könyv elsősorban azért tetszett, mert a már korábban olvasott (A mezítelen nap, A Hajnal bolygó robotjai, Robotok és Birodalom) regényekben tényként emlegetett Baley földi nyomozását meséli el, így újabb mozaikkő került a helyére. ;-)

  • Saturday, 22 September 2012
    Robotok és birodalom

    A robotok/robotikáról szóló Asimov regények közül azt hiszem ez az egyik utolsó (másik az Acélbarlagok) amit idáig nem olvastam, talán leginkább azért tetszett, mert végre elmagyarázza, hogy Asimov univerzumában hogyan vált radioaktívvá a Föld, amit az Alapítvány-sorozat már csak tényként kezel.

  • Sunday, 16 September 2012
    Frugalware history


    Given that Frugalware was founded by me, and recently James recently took over the project leadership, I think it makes sense to look back and summarize the past 6 years.

    The beginning

    It all started with this announcement about 6 years ago. It was a one-man show before, there was a manually written ChangeLog but even then there were already quite a few packages, so don’t ask me when I started hacking on this. Yes, normally there would be a first commit in git, but remember this was before git existed, and I hated centralized CVS so much that we didn’t use anything.

    Looking back, it was all quite lame. :-) I used a mail address called "mamajom" (English translation could be "momonkey"), tied to an ISP, with a lengthy signature at the end of every mail I sent and was using my IRC nick instead of my real one everywhere… OTOH, I made some decisions I’m happy about even today. The first four developers (Ádám Zlehovszky, Krisztián Vasas, Zsolt Szalai and me) were all Hungarian and despite of this, I forced every code, test and documentation to be in English, to possibly turn the project into an international one in the future. And that proved to very, very useful.

    It was between 0.1 and 0.2 that we (Krisztián, Zsolt and me) showed up in a Hungarian TV (video record) explaining Frugalware. This is something never happened later for some reason.

    The way we found a free hosting at a university I never attended may be also interesting. In the grammar school, our IT teacher found my Linux distribution idea interesting enough to support, and his friend was a teacher at the Eötvös Loránd University, which is at the same Budapest city where I live. So, with my friend Botond Balázs (who later was my witness at our wedding) we bought an ultra-slow old PC (some Pentium 1 with a single HDD) and we were extremely happy, as the uni offered to host it for free. I remember it ran some Slackware version, as Frugalware didn’t support i586… ;-)

    Early days

    Then some more developers joined and we started to package all the usual free software which is available in other distributions but I personally didn’t use. Think of GNOME, Xfce, OpenOffice.org and so on.

    Of course we were still lame, the announcements still were not spellchecked by someone native and knowledgeable enough, ending up in words like "splitted" or "optimalization". However, we started to use an SCM (Darcs, which was horribly slow, but at least not the centralized CVS crap). Another developer I should mention was Bence Nagy, he came up with the idea of how we should avoid duplication in FrugalBuilds, leading to the various package templates under source/include/ in the source tree.

    Then we went multiarch, Krisztián Hamar contributed the x86_64 port to the 0.3 release. At the same time, I invented syncpkg, which avoided having to build the same package on multiple architectures manually.

    We also got Gábor Lőcsei (later we met IRL and completed several bike marathons together, resulting in a great friendship) who helped users in general on IRC, but more importantly, for some time he did quite some bug triaging, leading to a much better bugzilla (actually it was running Flyspray at that time) state.

    The constant questions of László Csécsy (who nowadays mostly hacks Drupal core and its modules) generated more and more improving documentation. We first started with a LaTeX documentation, then later turned it to an asciidoc one, in the hope of attracting more non-math contributors. ;-)

    Then we started to have some beautiful artwork, Viktor Gondor contributed some really cool wallpapers.

    Finally, I think the last two Hungarian guys who spent a hell of a time on the project was András Vöröskői (we still link his getting started HOWTO for new contributors) and János Kovács. I remember for a long time I used the home-hosted server of János when we didn’t have a fast dedicated i686 build server and my desktop was still 32bit.

    Going international

    Then things started to happen fast. Developers outside Hungary showed up: Gabriel Craciunescu from Germany and Michel Hermier from France worked a lot on KDE, Gabriel also hacked a lot of the core OS, like kernel, glibc, etc.

    Priyank Gosalia from India started to work on GTK tools like a package manager frontend. David Kimpe contributed a PPC port years before I got my iBook (which I used as my primary box for a few years).

    And needless to say, we still made mistakes. We thought that the development of the original Pacman package manager slowed down, its rewrite (providing a separate library and a console frontend, instead of one monolithic binary) seemed to never complete, and given that we were not Archlinux developers, we never got access to its CVS. We started to use that library API in the installer, testcases, GUI tools, while changing the API for them wasn’t an issue, since officially it was still unreleased. All this frustration (and underestimating the cost of maintaining a fork) resulted in our Pacman-G2 project. First it appeared to be shiny, but once Krisztián Hamar left Frugalware, we constantly lacked manpower and today the consensus is that with git, maintaining a patchset over pacman.git would be far better, just nobody did the work of merging the two projects. Pacman-G2 is in maintenance mode today, and it still well serves its purpose, but it didn’t see any new major feature in years.

    We also saw a rewrite of the installer. The original one was written in bash, then the second was written in C, using libdialog. And currently James works on a third one, hopefully fixing lots of instability, resulting from the design errors of the current one. ;-)

    More and more developers

    And then somehow more and more developers came. Gourdin Gaetan (bouleetbil) and Sébastien Vincent (Baste) worked a lot on the GNOME support, James Buren took over the base system from me. Paolo Cretaro (Melko) does KDE bumps nowadays and Marius Cirsta (mcirsta) did heroic work of including OpenJDK 7 into Frugalware.

    Abdelmoumene Hamza (Slown) is a guy who volunteered to do a log of boring work. When you can install a random Perl on Python module from a package, chances that it was packaged by Slown are high. ;-)

    Regarding infrastructure, Benjamin Nolmans (Xarkam) stepped up, and finally converted the data from our Flyspray instance to the more mainstream and maintained Trac format. Regarding architectures Boris Albar (Elentir) contributed an ARM port. Our press noise was generated by Russell Dickenson (phayz) for a long time: he wrote newsletters regularly, and these days he works as a documentation writer for Red Hat.

    For a long time, no more Hungarians joined the project. Then Bagdán Róbert (kikadf) came, and even if he’s rarely present on IRC, he still contributes from time to time, and these small, but valuable contributions are what keep Frugalware alive. :-)

    Regarding other big upgrades, Daniel Exner (dex) was the guy who stepped up and finally packaged KDE4 for Frugalware. All KDE4 users meeting him should buy a beer for him. ;-) Anthony Jorion (pingax) joined in 2010, and since then he does XFCE updates.

    Finally, I should not forget about Daniel Eledut (Devil505), who probably helped me the most with my "the rest" task: he really helped out in various areas, and he was a major Frugalware contributor for a long time.

    The end of my leadership

    Contributing to other projects is something I did regularly, since every time I got a bugreport for a package, first I created a patch to fix the problem (in case it could not be worked around in the buildscript), and then of course tried to upstream it, knowing the maintenance cost of non-upstreamed patches. Still, these were minor and my main project was Frugalware for years.

    The bigger contributions came when I started to complete Google Summer of Code projects, first SWIG, then git, finally OpenOffice.org — which turned into LibreOffice. The motivation is easy: these were still Free Software hacking, but given that they are not bash hacking (like most packaging work for Frugalware), more interesting problem had to be solved, GSoC also provided nice payments, and needless to say: was useful to many people not using Frugalware.

    The idea of passing over my leadership to someone else first came when I looked back, and I saw that I spend more time on LibreOffice than on Frugalware, even after the paid GSoC ended (later resulting in joining SUSE to work on LibreOffice fulltime). My focus somehow just shifted from hacking a distribution to hacking something that is directly useful for average users as well. It’s not worse or better, it’s just different, and after lots of years, I wanted to do something different.

    To sum up, I did not reach my expectations as a project leader and I waited for a candidate I could teach and finally who could become as good as I was in earlier years, or hopefully even better. And then James came, who first took over the base system, and we agreed that after 1.7, he’ll do releases. So it was not unexpected, but still I was a bit surprised when I saw his role-changing commit. But needless to say, when thinking a bit more, it was completely logical, all I really do these days is fixing things left and right regarding my arm port needs, and maintaining the LibreOffice package.


    The idea of writing this post is not mine. However, when I thought about how many individuals helped this project so far, I realized I really need to create a summary, thanking their work. Reading the above, I hope that in the past years my leadership to Frugalware were useful and I realize that these days I have to step back, given a better leader appeared. I honestly wish the project to see at least as many releases as we already have, now that fresh energy leads it. :-)

    I tried to point out all our heroes during the last years, but it’s possible I forgot someone. If you think you’re missing from this post, please leave a comment. Thanks.

  • Tuesday, 11 September 2012

    Múlt héten Ρόδος (Rodosz) szigetén jártunk, az Unitravel szervezésében. Röviden a következő helyeket érintettük:

    • Φαληράκι (Faliraki): itt laktunk a Matina Hotelben

    • Anthony Quinn öböl, majd Ρόδος városnézés: Μανδράκι (Mandraki) kikötő, Apollón templom, akropolisz, óváros

    • Marmaris (Törökország): katamaránnal keltünk át a tengeren, és İçmeler érintésével töltöttünk egy napot a török városban

    • Σύμη (Symi) szigete, ami a szivacs halászatáról, fűszereiről, mindenféle tengeri herkentyűiről híres

    • Végül hazautazás előtti nap a sziget 2/3-át bejártuk Αρχάγγελος (Archangelos), Λίνδος (Lindos), Μονόλιθος (Monolithos), Σιάνα (Siana) és végül a pillangók völgyének érintésével.

    Pár kép erre.

  • Monday, 27 August 2012
    Singin' in the Rain

    Az 1952-es filmet pár hete néztük meg, és mikor tegnap eláztunk az esőben, akkor jutott eszembe, hogy még nem írtam róla. Imdb top 250-es, esti szórakozásnak pont megfelelt.

  • Sunday, 26 August 2012
    Scooter @ Unique Fesztivál

    Pénteken ismét Magyarországra látogatott a Scooter, pár telefonos kép, ami valószínűleg nem adja vissza a helyszíni hangulatot:

    Érdemes összehasonlítani a 3 évvel ezelőtti és az idei tracklistát, nem sokat változott… persze ennek az előnye, hogy így különösebb felkészülés nélkül is alig volt ismeretlen dal. ;-)

  • Monday, 20 August 2012

    Tegnap-tegnapelőtt Horvátországba utaztunk, a következő célpontokkal:

    • szombaton le a Plitvicei tavakig, majd este egészen Abbáziáig

    • vasárnap délelőtt körbenéztünk a szállás környékén, majd délután Zágráb érintésével haza.

    Pár kép erre.

  • Sunday, 12 August 2012

    Gimnáziumi irodalomtanárom regénye, melyet tanítás közben sokat emlegetett, de ennek ellenére meglepett, mikor az emlegetett mű dedikációjára kaptam meghívást facebookon. A könyvnek még blogból fabrikált honlapja is van kedvcsinálónak; nekem kifejezetten tetszett, csak ajánlani tudom. Mint látható, a dedikáláskor a résztvevőket megkérték, hogy a plakátot meg mi dedikáljuk, szerencsére elég jó felbontásban került rögzítésre a mű ahhoz, hogy felismerhetők legyünk rajta mi is. ;)

  • Friday, 10 August 2012
    LibreOffice Writer can now attach comments to text ranges

    More than 10 years ago, a bug was opened in the OpenOffice.org bugzilla to support this feature. Later this got imported to LibreOffice’s bugtracker. Now that LibreOffice 3.6 is out, time to talk more about what features will show up in 3.7, and this will be one of them:

    Now that it’s there, let’s have a look at the details:

    • ODF 1.2 already supports commenting text ranges, but LibreOffice support was missing.

    • Word already supported it as well, and now LibreOffice RTF/DOCX import/export filters are updated to take care of the new feature.

    • If I was already messing with comments, I also implemented roundtrip of comment author initials to ODF (see proposal), so now if you open a DOCX/RTF file in LibreOffice, save it as ODF, and later save it back to DOCX/RTF, this information won’t be lost.

    Finally, one known limitation is that the text range currently can’t include multiple paragraphs — something to improve later if necessary.

  • Wednesday, 01 August 2012
    LibreOffice can now import/export native RTF math expressions in Writer

    You may remember that LibreOffice 3.5 learned to import RTF OLE objects (including math expressions) in Writer. In LibreOffice 3.7, the same is now true for math expressions expressed using native RTF math markup:

    If you are interested in the details, then the nice thing about this implementation is that:

    • The importer internally turns RTF markup to OOXML tokens, and that does the hard job.

    • The non-XML-specific part of the existing OOXML export was abstracted to a base class, and that’s the driver of the RTF exporter.

    So if you like this new feature, don’t forget to thank Luboš Luňák, who is the author of the OOXML math import/export. :-) In case you way to play with this feature, test documents are available.

  • Sunday, 29 July 2012
    GRUB2 vs. RAID1, cfdisk and serial console

    Since the Frugalware 1.7 release is near, and it uses GRUB2 by default, I created a virtual machine, that is similar to the one we use under genesis.frugalware.org, which hosts this blog as well.

    The relevant details:

    • it has two RAID1 arrays with ext3:

    $ mount|grep /md
    /dev/md126 on / type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
    /dev/md127 on /home/ftp/pub type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
    • the partition tables are created by cfdisk:

       Device Boot      Start         End      Blocks   Id  System
    /dev/sda1              63  1465144064   732572001   fd  Linux raid autodetect
    • the machine has a serial console configured:

    # cat /proc/cmdline
    root=/dev/disk/by-uuid/7e41c95d-cd73-4043-b0ba-4797af6ddeff ro vga=normal nomodeset console=ttyS1,115200

    Now the question is how does this config deal with the GRUB2 upgrade. First, don’t miss the official upgrade howto, it covers most cases. What I want to detail here is how did I avoid starting from scratch and creating a proper partition table using fdisk.

    Here are the steps I needed:

    • Backup. Yes, I did screw up for the first time, so it’s really needed.

    • Resize parts of the / RAID1 (/dev/sda1 and /dev/sdb1) with gparted livecd (resizing ext3 from cmdline parted didn’t work for me).

    • mdadm re-creation as described in the upgrade howto, from fw install cd, so you’ll have the required 1.0 metadata.

    • Reinstall GRUB1 to sda and sdb, since the physical location of GRUB1’s stage* changed.

    • Boot back to 1.6, run pacman-g2 -Syu, and grub-install — again, see the upgrade howto for details.

    • Now given that serial console needs a custom GRUB config and kernel parameters, you need to modify GRUB2’s /etc/default/grub. Here is my diff:

      /etc/default# diff -u grub.orig grub
      --- grub.orig   2012-07-19 01:57:20.000000000 +0200
      +++ grub        2012-07-29 14:45:50.000000000 +0200
      @@ -1,11 +1,12 @@
       GRUB_DISTRIBUTOR="Frugalware 1.6"
      -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
      +GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset plymouth.enable=0 console=ttyS0,115200"
      +GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x3f8"

      (Refer to this post if you don’t know the needed port number.)

    • Finally run grub-mkconfig to create the real config from the just modified default settings.

    • Reboot, and GRUB2, the boot process and the login prompt should be accessible over the serial console again.

  • Sunday, 22 July 2012

    LGee ajánlása nyomán, nekünk is tetszett.

  • Sunday, 01 July 2012
    It's a Wonderful Life

    Nem is találhattam volna időszerűtlenebb pillanatot a kánikula közepén… — szóval ha valakinek melege van es téli filmet akar nézni, ezt csak ajánlani tudom, valamikor karácsony környékén láttuk, aztán elfelejtettem róla írni.

  • Sunday, 17 June 2012
    Múzeumok éjszakája 2012

    Úgy tűnik erről a témáról 2009-ben írtam utoljára, pedig a közbelső években is lelkes résztvevői voltunk ennek a programnak.

    Idén először a Rádió- és Televíziótörténeti Múzeumban jártunk, ahol a kiállítás végén egy csomó régebbi DVD-t is kiraktak. Megakadt egy szemem egy ismerősön:

    LGee blogjában volt már róla ajánló, a film nekünk is tetszett. Ez után áttértünk a BKV időszakos kiállítására, ahol retróplakátokban gyönyörködhetett a néző (bár ez elmenne egy korabeli demotivátornak is):

    Következő célpontunk a Bodies2 kiállítás lett volna, de ide horribilisan hosszú sor állt, konkrétan mi a Trófea étteremig követtük a helyzetet:

    és hozzá kell tenni, hogy ráadásul még nem is haladt a sor különösebben. Elkeseredésünket az dobta fel, hogy az Hősök terén mindenféle gyümölcsös Sopronikat osztogattak:

    Sör íze persze nem volt (keserű legalábbis), de amúgy szénsavas gyümölcslé kategóriában finom volt. Innen a Fővárosi Nagycirkusz felé vettük az irányt, ahol éppen egy olasz bohóc-család (értsd: generációk óta a család ezzel foglalkozik) produkálta magát:

    A produkciójuk végén volt Q&A is, bár érdekes, hogy nem sikerült tolmácsot találni, így a magyar kérdéseket angolra fordították nekik. További érdekesség a cirkusz server roomja:

    Jobb nem elképzelni, miket hostolnak a porond alatt. ;-) A cirkusz tömény popcorn-szagát megelégelve végül a Renrőrmúzeumba érkeztünk, ahol többek között "ilyen volt, ilyen lett" jeligére állítottak ki fénykép-párokat, pl. ezt a jetskit:

    Zárásképpen pedig egy kép, ami hűen bizonyítja, hogy a bullshittel teletűzdelni valami fontos szöveget bizony nem kapitalista találmány:

    Csak így egyet kiemelve: mióta szokás bármilyen harcossá nevelni egy rendőrt? :-)

  • Monday, 11 June 2012
    Sorting photos by date using exif date info

    For a family event I received photos from about 6 persons, and wanted to view all of them, sorted by date. The problem was that the timestamps of the files were sometimes incorrect, and also in all but one cases the exif timestamp was incorrect as well (but at least that was consistently incorrect, e.g. all behind of time by 20 mins, etc.)

    So first I searched for a photo where a clock is shown, then matched photos by different authors showing the same action to know the time delta of each camera. The rest can be scripted: just read the exif info, apply the necessary time correction based on the camera model, and touch the file with the correct date. Then any image viewer can show the photos, sorted by date.

    Here is the script I came up with:

    for i in *.jpg
        # 2012:01:01 01:01:01 -> 2012-01-01 01:01:01
        date=$(exiv2 $i |grep timestamp|sed 's/.* : //'|sed 's/^\([0-9][0-9][0-9][0-9]\):\([0-9][0-9]\):\([0-9][0-9]\)/\1-\2-\3/')
        # date string -> epoch
        unix=$(date --date="$date" +%s)
        model=$(exiv2 $i |grep model|sed 's/.*: //')
        if [ "$model" == "NIKON D40" ]; then
            unix=$(($unix-1320)) # Alice
            unix=$(($unix+3600)) # Bob
        # epoch -> date string
        date=$(python -c "import time; print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime($unix))")
        # profit!
        touch --date="$date" $i
    # write back the timestamps to the exif info (thx boobaa)
    jhead -dsft *.jpg

    And additionally if you don’t want to mess up the settings of the image viewer, you can use:

    c=0; for i in $(ls -lhtr *.jpg|sed 's/.* //'); do c=$((c+1)); cp -a $i new/$(printf "%03d" $c).jpg; done

    to order filenames based on the file timestamp.

  • Thursday, 07 June 2012
    Merging git notes

    The git notes command is really about local annotation of commits — nothing to share. If you decide to still do so, for example the git-scm.com HOWTO can show you how to pull and push them. But what about merging? There is no UI for that, but — given that with git, everything is possible — you can still do so manually.

    So the problem comes when Alice fetches notes, Bob does so, Alice pushes her notes back, Bob annotates a different commit and when Bob wants to push, he gets rejected, non-fast-forward. Normally you would merge or rebase in this situation, but given that git notes by default updates the refs/notes/commits ref and you typically have a different branch checked out, you can’t use git merge or git rebase directly.

    What works is:

    git checkout refs/notes/commits
    git fetch origin refs/notes/commits
    git merge FETCH_HEAD
    git update-ref refs/notes/commits HEAD
    git checkout master
    1. Check out the notes, so if you have conflicts, you can resolve them.

    2. Fetch remote notes to FETCH_HEAD.

    3. Do the merge.

    4. Necessary, as git merge won’t update the ref automatically, since we’re not on a branch.

    5. Or whereever you were before.

    And now you can push your notes, as detailed in the above referred blog post. Yes, rebasing would be possible as well, that’s left as an exercise for the reader. ;-)

  • Wednesday, 06 June 2012
    LibreOffice can now import SmartArt in Writer

    You may remember that LibreOffice 3.5 learned to import SmartArt in Impress. In LibreOffice 3.6, the same is now true for Writer:

    Note that just like in Impress, Writer produces far from perfect result if the prerendered output of the diagram is not present in the document. In practice, we can open files produced by Word 2010 just fine, but problems with Word 2007 are expected.

    In case you way to play with this feature, a test document is available.

  • Sunday, 03 June 2012
    Balaton Maraton 2012

    Tegnap voltunk idén is a Balaton Maratonon (Tour de Pelso rendezvény keretében). A táv meglepő módon megegyezik a tavalyi értékkel (204 km), GPS log erre, hivatalos eredmények itt.

    A kmóra ezeket mérte:

    • idő: 9h30m32s

    • táv: 220.64 km

    • átlag 23.1 km/h

    • max 43.5 km/h

  • Monday, 28 May 2012

    A múlt hetet Apátistvánfalván töltöttük. Végül nem kocsival mentünk, így értelemszerűen inkább a közelebbi környéket jártuk be:

    • Kétvölgy: itt a Vendvidéki Vendégházban próbáltunk ebédhez jutni, felettébb furcsállták, hogy hétköznap meleg ételt keresünk, de végül kiváló krumplileveshez jutottunk.

    • Szentgotthárdon a Thermal Spa egy nemrég felhúzott termálpark, nem meglepő módon a sok osztrák között inkább a magyar érzi magát külföldinek… de amúgy ötletesen van megoldva, például a kabinhoz használt tokennel lehet kaját rendelni az épületen belül, és csak a végén kell fizetni, kikerülve ezzel a védetlenül hagyott pénztárcák problémáját.

    • Orfalu: Na itt a haranglábon kívül nem találtunk semmit, cserébe utána ellátogattunk a Hársas-tóhoz, amit nem bántunk meg, később még egyszer visszatértünk ide biciklivel.

    • Őriszentpéterre bringával mentünk, de végül a nap inkább amiatt lett emlékezetes, hogy visszafele megálltunk Pityerszeren megnézni a skanzent, illetve megkóstoltuk, mi az a dödölle.

    • Utolsó teljes napunkon elmentünk Farkasfára turistaúton, de sajnos itt (pedig ez már hétvégének számított) semmilyen ebédelési lehetőséget nem találtunk, így gyorsan visszatértünk a szállásra.

    Szállásadónk az Apát Hotel volt (csütörtökig mi voltunk az egyetlen vendégek), a turistautakon való navigációhoz meg a Locus volt segítségünkre.

  • Sunday, 29 April 2012
    Linux in the Education Conference 2012

    The Hungarian Linux in the Education Conference 2012 was held today @ Budapest, I held a generic session about LibreOffice (slides), also talked a few guys into submitting Easy Hacks. ;)

    Other interesting stuff: a free Logo interpreter in PyUNO by Laszlo, available here.

  • Monday, 16 April 2012
    Thanks for the Hackfest 2012


    We were in Hamburg during this weekend, and I think all of us had great fun, kudos go to the organizers! If you are curious, here are the topics I worked on besides mentoring when I was asked to do so:

    Also thanks Stefan for correcting the misleading icons of the horizontal/vertical flipping in Writer. ;)

  • Wednesday, 07 March 2012
    OpenSource is the Source of Innovation Conference

    We presented TDF on this conference with Andras today. It was nice to see familar and new faces as well, we turned some mentioned problems into bugreports and I also fixed the barcode extension to work again with LibreOffice 3.4+, as requested by a user.

  • Sunday, 26 February 2012

    The title is a wireless card usable for desktop machines. Why I can recommend it:

    • It’s better than those cheap wifi stricks, having a high(er) gain antenna.

    • It has proper Linux support. Kernel module name: ath9k_htc, the required htc_9271.fw firmware is part of kernel-firmware, so it works out of the box on any modern distro.

  • Tuesday, 21 February 2012

    Amugy kolbasz hossza is epp 56 cm. ;)

  • Monday, 13 February 2012
    L'art pour L'art társulat

    Multheten voltunk a L’art pour L’art eloadasan. Mivel korabban sose voltunk (csak a youtube-rol volt ismeros par produkcio), a tobbiek mondtak el, hogy a 3.5 oras eloadas tenyleg maratoninak szamitott. ;)

    Nehez egy szamot kiemelni, de az egyik amit nem ismertunk a zengo abc volt.

  • Sunday, 29 January 2012

    We will give a talk about LPSP and CMIS with Cedric at FOSDEM2012. If you wonder what LPSP and CMIS are:

    • LPSP: LibreOffice extension providing connection to SharePoint

    • CMIS: Content Management Interoperability Services

    See you in Brussels!

  • Thursday, 26 January 2012
    LCA 2012 Videos

    I think last year it was the systemd video I watched, now it was btrfs. Especially the "can’t you do online corruptions?" part. ;)

    Also: did you know the filefrag and sum commands? (e2fsprogs, coreutils)

  • Monday, 23 January 2012

    Alex Kendrick tavalyi filmje. Ugy latszik nem csak Clint Eastwood szeret foszerepet jatszani a sajat filmjeiben. ;) Kifejezetten tetszett, csak ajanlani tudom.

  • Sunday, 15 January 2012


    Csak eros idegzetueknek, de amugy van benne nehany magvas gondolat, erdemes.

  • Friday, 06 January 2012

    Quick node about this useful project I packaged two days ago. It has a long FAQ - I was interested in how can one access the builtin nand storage on an arm board using it.

    First, check your dmesg, you should see something like:

    Creating 3 MTD partitions on "orion_nand":
    0x000000000000-0x000000100000 : "u-boot"
    0x000000100000-0x000000500000 : "uImage"
    0x000000500000-0x000020000000 : "root"

    As the names say, the three items here are the bootloader, the kernel and the root filesystem. To access and mount the last one, you need:

    ubiattach /dev/ubi_ctrl -m 2
    mount /dev/ubi0_0 root
    ... hack hack hack ...
    umount root
    ubidetach /dev/ubi_ctrl -m 2

  • Thursday, 05 January 2012
    Bringas terdmelegito

    Karacsonyra kaptam egy par bringas terdmelegitot. Hozzam hasonlo nem-orvosok szamara ez roviden arra jo, hogy hidegben (kb. 5 °C alatt) ne fazzon meg a terd, ami kesobb terdfajast okoz — tehat nyugodtan lehet telen is bringazni, csak erdemes ilyesmit hordani.

    Reszletesebb verbalis leiras az utvonalunkrol erre, terkepes meg arra, sot LGee meg kepeket is rakott fel.

    A kmora ezeket merte: ido 6h22m31s, tav 96.33km, max 33.3 kmph (jol lathato, hogy tul gyorsan sehol se mentunk, nem vicces dolog 50-nel rafutni egy jeges szakaszra).

  • Wednesday, 04 January 2012
    Frugalware arm port install HOWTO

    I recently got a GuruPlug. It has Debian by default, and it’s apt config is set to stable, while in fact at the moment what’s the factory default is considered as oldstable by upstream. So if you blindly do a few apt-get install foo, soon you’ll have newer userspace than kernel, and your device will no longer boot (based on true story - and yes, this is not Debian’s fault). Moreover, I was interested in how to install Frugalware on this device, so here is a quick howto.

    Install rootfs

    First you need to bootstrap Frugalware from Debian. It’s a good idea to install Frugalware on a USB stick, so you can switch back to Debian in case you messed up something and start from scratch again.

    Partitioning is up to you, you’re recommended to have a small FAT (type: 0x0b) partition (32MB for example) at the beginning, we’ll use that later. The second can be the rest, ext4 or so.

    Format and mount it (your device name may differ!):

    mkfs.ext4 /dev/sda2
    mkdir -p /mnt/sda2
    mount /dev/sda2 /mnt/sda2

    Then install our pacman-g2 binary to the Debian system, so you can bootstrap:

    wget http://ftp.frugalware.org/pub/frugalware/frugalware-stable/frugalware-arm/pacman-g2-3.8.3-2mores2-arm.fpm
    unxz pacman-g2-3.8.3-2mores2-arm.tar.xz
    cd /
    tar xf /path/to/pacman-g2-3.8.3-2mores2-arm.tar

    Installing the required packages is a single command, as described here:

    pacman-g2.static --noconfirm -Sy core base -r /mnt/sda2/

    Upgrade the bootloader

    Once the rootfs is ready, you need a new bootloader that will be able to boot our vanilla kernel.

    You need a JTAG Board, so you can access the serial console. If you connect the USB cable to you PC, you can use for example

    screen /dev/ttyUSB0 115200

    to access the device.

    Given that we want to boot a vanilla kernel, we need a vanilla bootloader as well. Before you mess with the bootloader, it’s a good idea to make a backup of its config (there is a 3 second timeout during boot - if you press any key there, you get the Marvell prompt). Here is my config:

    Marvell>> printenv
    bootcmd=${x_bootcmd_ethernet}; ${x_bootcmd_usb}; ${x_bootcmd_kernel}; setenv bootargs ${x_bootargs} ${x_bootargs_root}; bootm 0x6400000;
    x_bootcmd_usb=usb start
    x_bootcmd_kernel=nand read.e 0x6400000 0x100000 0x400000
    x_bootargs_root=ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs
    bootargs=console=ttyS0,115200 ubi.mtd=2 root=ubi0:rootfs rootfstype=ubifs

    The only semi-unique part is the MAC address of the network interface(s).

    If you want to update the bootloader, a possible way is to put the new binary to a pendrive. Given that the default bootloader does not support ext*, we need a fat filesystem. So format the first small partition we created already (the device name may be different in your case!):

    mkdosfs /dev/sda1

    Till Frugalware 1.6 is released, support for GuruPlug is available in Frugalware -current only, so download the binary package from there, extract the u-boot.kwb file from the guruplug directory, put it to the new partition. (A few other models are explained here).

    Before you reboot, copy also /boot/uImage to the fat partition, you may have problems problems with reading the kernel from the ext4 partition with u-boot.

    Once copying the kernel is done, reboot and in the u-boot shell do:

    usb start
    fatload usb 0:1 0x0800000 u-boot.kwb
    nand erase 0x0 0x60000
    nand write 0x0800000 0x0 0x60000

    You can verify the updated bootloader with the version command:

    Marvell>> version
    U-Boot 2011.12 (Jan 03 2012 - 16:55:38)
    gcc (Frugalware Linux) 4.6.2
    GNU ld (GNU Binutils) 2.22

    If Frugalware is mentioned, that’s a good sign. :)

    Boot the new rootfs

    Now you can boot your new rootfs:

    usb start
    fatload usb 0:1 0x00800000 /uImage
    setenv bootargs console=ttyS0,115200 root=/dev/sda2 rootdelay=5
    bootm 0x00800000

    If it booted fine, you may want to make this the default:

    setenv bootargs 'console=ttyS0,115200 root=/dev/sda2 rootdelay=5'
    setenv bootcmd_usb 'usb start; fatload usb 0:1 0x00800000 /uImage'
    setenv bootcmd 'run bootcmd_usb; bootm 0x00800000'


    The rest is up to you:

    • setting up a root password

    • setting up network by default using netconfig

    and so on… you know this already, nothing arm-specific.

    For the reference, here is the tested CPU and Frugalware version:

    $ cat /proc/cpuinfo
    Processor       : Feroceon 88FR131 rev 1 (v5l)
    BogoMIPS        : 1191.11
    Features        : swp half thumb fastmult edsp
    CPU implementer : 0x56
    CPU architecture: 5TE
    CPU variant     : 0x2
    CPU part        : 0x131
    CPU revision    : 1
    Hardware        : Marvell GuruPlug Reference Board
    Revision        : 0000
    Serial          : 0000000000000000
    $ cat /etc/frugalware-release
    Frugalware 1.5 (Mores)

  • Sunday, 01 January 2012
    Szokasos evvegi osszefoglalo 2011

    A tavalyit folytatva:

    1. Masodszorra is voltunk januar vegen Isolan sielni.

    2. Februarban tartottuk eljegyzesunk.

    3. Szakmai utazasok: HackFest Munchenben, LibreOffice konferencia Parizsban.

    4. A nyarat iden is hackelessel toltottem, a tavalyi OpenOffice.org RTF temat folytatva most a LibreOffice-szal.

    5. Frugalware: az idei ket slager talan a systemd ill. a kernelpatch-mentes livecd volt.

    6. Nyaron a horvat tengerparon bringaztunk egy hetet.

    7. A szakmai eloadasok meg mindig gyakoriak, 2011-ben osszesen 6 helyen adtam elo.

    8. Decemberben leadtam az MSc diplomatervem.

    9. Az immar 4 eves Nokia S40-emet migraltam Androidra.

    10. Ev vegevel kozos megegyezessel kileptem a SZTAKI-bol (amit amugy meg mindig jo helynek tartok azok szamara akiket erdekel az akademiai szfera).


  • Thursday, 22 December 2011
    Samsung Galaxy S

    As this post already suggested, about a week ago I replaced my S40 with $title. (Yes, I know that S II is just released, but that pushed down the price of S a bit, and I don’t want to waste so much money for a phone.)

    So far I’m quite pleased about the product, here are the tools I used to migrate data:

    • gammu, to convert the calendar to ics, which can be imported by the calendar

    • gammu2gcontacts to extract contacts from the gammu backup (earlier post)

    • mgmaps can export to kml, which can be imported to my maps

    • finally a throw-away (use once, and never look back) script to generate emails from my notes, which can be imported by gnotes

    The hardware is supported by CyanogenMod, but I did not experiment with that so far. (bookmark)

  • Sunday, 18 December 2011
    Recent contributions

    • BitlBee: a patch for skyped got merged, helping to avoid the cryptic openssl error messages when the certificate is missing.

    • openSUSE: the mutt package now contains one more patch from Frugalware’s mutt-ng package, which means my mutt config can be used unmodified (no more unknown config settings)

    • jBPM and bpm-console: these were part of my MSc thesis, github branches are available, upstreaming is in progress (on IRC they confirmed that they are interested in the feature, at least)

  • Thursday, 15 December 2011
    S40 applications I use

    See this post for motivation.

  • Tuesday, 13 December 2011
    Inserting current date and time vs. Hungarian keyboard layout

    There was an old Calc bugreport about this, and it was an interesting challenge, since I never touched Calc code before.

    First, the references:

    Given that there is no easy way to enter Ctrl-Shift-";" using a Hungarian keyboard, the Hungarian equivalent is Ctrl-Shift-".".

    Actually, once this feature will be implemented, not sure how the Hungarian users will access it. :)

  • Thursday, 08 December 2011
    Duplex printing

    This will be similar to my mysql post.

    In case you do duplex printing, select:

    • long side: in general

    • short side: if the PDF already contains a 2 pages per sheet

  • Saturday, 03 December 2011
    Magyar Szamitogepes Nyelveszeti Konferencia

    Kollegammal csutortokon Szegeden jartunk az idei MSzNy-en, ahol elo is adtunk. A slide-ok itt erhetoek el (valosagos tinyurl!), illetve a konferenciakotetbe is irtunk egy cikket.

  • Monday, 28 November 2011
    Patience, please!

    So Lennart already had great slides about what is the preferred attitude when you’re hacking Free Software (don’t expect gratefulness && be grateful), but recently there was such a great example, I wanted to mention it. :)

    So I saw there is a new etckeeper release and I checked its changelog, mentioning me. What the hell? I didn’t contribute anything to that project in the past 3 years! It turned out it was a patch that was considered "too new" at that time, but now got merged. ;) Remember, if you contribute, usually integration takes much less time, so no need to whine about it.

  • Sunday, 27 November 2011


    Az Asimov-fele ertelemben vett jo kis scifi foszerepben a The Prestige-bol ismeros Hugh Jackmannel, kar, hogy a veget elhollywoodiasitottak. ;)

  • Friday, 25 November 2011
    Lenovo szerviz beszelni magyarul


    A pontos reszletekre mar nem emlekszem, lenyeg, hogy valamikor augusztus elejen leadtam a Lenovo netbookom szervizbe (kotyogo ventillator, megrepedt haz, elveszett (!) enter billentyu), es pofatlanul sok ideig ultek rajta, valamikor oktober vegen lett kesz a cucc. Persze garancialisan csak az elso problemat javitottak, de megis a legzavarobb a hihetetlen lassu kiszolgalas volt. Ma jott egy email, hogy ertekeljem a szerviz munkajat, a form elkuldese utan a fenn lathato kep fogadott. Ki hany hibat talal benne? ;)

  • Thursday, 24 November 2011
    From gammu to Google Contacts

    One typical migration people do when changing phones is migration of contacts and calendar items. In case of mine, this is about migrating data from an S40 phone to Google apps, where every smartphone can sync from.

    Migrating calendar items is easy: gammu can save the data from the phone to a .ics file and Google Calendar can just import that. The situation is a bit harder for the phonebook, as Google Contacts would take a .csv, while gammu as its own ini-like format for storing this data.

    I already found a script doing something similar, but the result was unusable. ;) Given that the whole task is not that complex, I decided to write my own converter, available here.

  • Monday, 21 November 2011
    Replying to SCM commits using Gmane

    SCM commit mailing lists are handy in case you want to comment others' commits in an email. OTOH they are problematic, as they generate a lot of mails, and in case I subscribe to the list, usually I don’t read those commits at all. (In case you have time to read them, that’s a different use case.)

    So here is an example how to reply properly — without having to subscribe.

    • search for the commit ID you want to comment (here b863767bd1ddc2af18900fa1df0cd61ef2fa6edb)

    • extract the article ID associated to the push from the link (here 1643)

    • download the article in mbox format, so you can reply to it from mutt (or your other favorite MUA).

  • Friday, 04 November 2011
    First openSUSE contribution

    More than 3 years ago I gave a talk on Frugalware, and part of that was a comparison to various other distributions, including SUSE. My argument against SUSE was its closed development process.

    Times change, earlier this year they even renamed their build system to signal its open nature.

    I wanted to try it out how open they are so I made an experiment.

    First, I created a cpm package in OBS to get familiar with the packaging process a bit. (Note that anyone can just register and use the build system to share their binaries-- sadly we don’t have resources in Frugalware to provide something similar.) Then I happily noticed that their mutt package already contains my favorite sidebar patch, though the edge of the sidebar looked awful. So on Monday I mailed the maintainer of the mutt pkg if he would take a patch, fixing this issue. I got a positive reply today, submitted a patch and in minutes it got accepted.

    So it looks like they are really open, which is just cool. :)

  • Thursday, 20 October 2011


    Szoval a multheti konferencia utan meg maradtunk 3 napot varost nezni, nagyjabol a kovetkezoket erintettuk:

    • vasarnap: Eiffel-torony, Notre-Dame, Obeliszk, Arc de Triomphe

    • hetfo: Jardin du Luxembourg, Sacre-Coeur, Sainte-Chapelle (vegul ide nem mentunk be, mert hosszu volt nagyon a sor), Pantheon, Moulin Rouge

    • kedd: Versailles (maga a palota, kert, Grand/Petit Trianon)

    A szallasunk a Bastille-hoz kozel volt, de legkozelebb biztos valami minosegibbet fogunk valasztani:

    • ugyan ugy volt meghirdetve, hogy van a szallason wifi, csak a recepcion volt, az emeletunkon nem + a recepcion nem volt konnektor, ill. a szobaban is csak egyetlen konnektor volt (persze lehetett volna onsite elosztot venni, de az milyen mar)

    • a furdo egy vicc volt, egyreszt koedukalt, masreszt a furdokabinok ugyan zarhatoak voltak, de az eloter ahol le lehetett rakni a szaraz ruhakat csak egy mellmagassagig ero lengoajtoval volt csak elvalasztva a folyosotol (ez persze elsore vicces, de egy ido utan inkabb idegesito)

    Persze ezek ellenere is jol sikerult az utazas. A kepeinket erre tessek.

  • Wednesday, 19 October 2011
    LibreOffice Conference 2011


    I’ve been invited to the first LibreOffice conference in Paris to give a short talk about this year’s GSoC work of mine: the RTF import rewrite in Writer. (Here are the slides.)

    It also allowed me to allocate some time on hacking, including:

    Thank you for the invitation, it was great fun!

  • Monday, 10 October 2011
    MKK ejszakai bringatura 3

    Csutorotokon volt ujra MKK ejszakai bringazas, ezuttal pihenosebb, egyszeruen kimentunk a Megyeri hidhoz a budai oldalon, majd vissza a Westendig a Vaci uton (itt merult le a GPS), vegul be a nagyi palacsintazojaba.

    GPS track erre, a kmora a kovetkezoket merte: Ido 3h10m36s, tav 48.41km, max 37.9km/h.

    Tekintve, hogy meg lathatosagi melleny is volt nalunk, teljesen KRESZ-konformak voltunk.

  • Sunday, 02 October 2011

    Tegnap voltunk bringazni a Borzsonyben, konkretan a Csovanyosra is felmentunk. Egesz pontosan eredetileg ez volt a terv, a valosagban erre mentunk es a webcam is rogzitette (mirror) LGee-t. ;)

    A kmora a kovetkezoket merte: ido 6h55m31s, tav 104.93km, max 59.8kmph (suprise: Nagy Hideg-hegyrol lefele).

    A GPS nyilvan kicsit kevesebb tavot mert, hiszen a palyaudvarrol ki meg vissza tav nincs benne a trackben.

  • Saturday, 24 September 2011
    Userspace boot speed: less than a second

    I did not care about boot speed for a long time, since servers usually restarted only for kernel upgrades, laptops suspend to ram all the time, and I have no desktop machine at home for years now. Though one use case started to motivate me recently: I use virtual machines a lot, and waiting for them to boot up is boring.

    So I looked at the systemd-analyze blame output, and it turned out that for a base-only install the only service that takes a lot of time is netconfig. It’s because it was a oneshot service, so the whole boot process waited for dhcpcd to get an IP. A much better solution is to just start netconfig in the background and move on — and that’s exactly frugalwareutils in git does now.


    $ systemd-analyze
    Startup finished in 2030ms (kernel) + 1166ms (initrd) + 6755ms (userspace) = 9953ms


    $ systemd-analyze
    Startup finished in 2039ms (kernel) + 1146ms (initrd) + 892ms (userspace) = 4079ms
    Again, this is for a virtual machine (where the host has some IO cache) and for a base-only install.

  • Sunday, 18 September 2011
    Speeding up build with a lot languages enabled

    When we got back from Munich, Andras had an idea what is the current bottleneck with the build when there are a lot of languages enabled, and it was the po2oo script, which is part of translate-toolkit.

    First I tried to optimize that script, but then I tried to do the same gettext-to-SDF conversion from scratch, without using that framework at all, and it seems that caused a drastic speedup.

    There were a few iterations, but now the two patches are in master, along with a fix in fast_merge.pl, which was there since at least commit 654810b (2009-06-17). ;)

  • Monday, 12 September 2011

    Hatarozottan emlekszem, hogy nem ez volt az elso alkalom, hogy Dobogokore mentunk bringaval, de ugy tunik idaig nem irtam rola.

    8-kor talalkoztunk a Margit-hidnal Botonddal, majd Pomaz fele vettunk az iranyt, kozben utbaejtve egy Auchant reggeli celjabol. Az egesz turanak az egyik celja az volt, hogy osszehasonlitsuk eronletunket, ami szamomra pozitiv csalodas volt: gyakorlatilag a Ketbukkfa-nyeregig kenyelmesen jottunk teljesen egyutt, de a csucson is alig kellett varnom. A kis fahazban meg mindig u.az a neni arulja a sutiket, be is zsebeltem egy almas pitet, bar eleg bosszanto volt elfogyasztani a sok darazs miatt. Innen Pilisszanto es Pilisvorosvar fele vettuk az utat, majd a 10-es uton haza.

    Pontos utvonal erre.

    A kmora ezt merte: ido 4h22m, tav 89.81km, max 57.6 km/h.

  • Monday, 05 September 2011
    Thanks for the Hackfest


    We were in Munich during this weekend, and I think all of us had great fun, kudos go to the organizers! If you are curious, there is a growing list of features implemented during the event.

    Update: Oh, and I forgot to mention that we (Andras and me) especially thank the FSF.hu foundation for funding our travel!

  • Monday, 29 August 2011
    Matra Maraton


    Voltunk tegnap a 2011-es, X. Matra Maratonon. En a rovid tavon indultam (ez utolag nem is volt rossz dontes, mivel elotte meg voltam fazva, ami az eronletembol visszavett), majd a verseny utan meg aszfalton lementem Matrafuredre, ill. fel a Kekes-tetore, vegul Bp-en az Arpad-hidtol haza.

    A kmora a kovetkezoket merte: ido 5h0m9s, tav 72.33 km, max 53.2 km/h.

    A gps szerint a teljes kapaszkodas 3067m volt.

    Meglepo modon a kerekparinfo.hu-ra sok kep kerult fel, konkretan mindkettonkrol, illetve Picasan is fel lehetett lelni hasonlo — agyonvizjelezett — fotokat.

    Informativ cikk a temaban.

    Tovabbi kepek: 1, 2.

  • Friday, 26 August 2011
    Positions in RTF font tables

    Tonight I worked on fdo#39337, and while the writerfilter-based RTF import filter almost handled the document in question correctly, the fonts were not correct.

    It turned out that this was caused by the fact that RTF’s font table (a table where each row has an ID and it contains the font name, charset and other properties) does not require continuous ID’s (for example positions 0, 2, 3 are allowed, even if 1 is not set), but dmapper (the glue layer between the RTF tokenizer and the Writer UNO API) does.

    I already sent the position of the entry to dmapper, but the position turned out to be ignored, so now I fixed the RTF tokenizer to send continuous ID’s.

    A related improvement is that I just discovered the writerfilter::TagLogger::unoPropertySet() method, which can dump the properties of an UNO object, and now I’ve enabled dumping of shape properties, which can help a lot when something goes wrong there.

  • Wednesday, 24 August 2011
    KVM port forwarding

    This is going to be like my mysql password set post, I got tired of looking up the docs all the time, so here it is.

    If you have a host running kvm instances and you want to forward the TCP port $hostport of the host machine $host to a port $guestport of the guest machine $guest, then you need:

    iptables -t nat -A PREROUTING -p tcp -d $host --dport $hostport -j DNAT --to-destination $guest:$guestport

  • Thursday, 18 August 2011

    So I’m testing a ThinkPad T520 for about 3 weeks now.

    My motivations were:

    • so far I was using a netbook as my primary desktop, but recently did too much hacking on it, so I needed something more powerful

    • it’s interesting how many people I respect is a happy ThinkPad user, so I wanted to join the fun

    • I got fed up with not having any 3D acceleration on the netbook, I wanted back the sane Intel VGA that requires no blob drivers and still satisfies a non-gamer, like me

    • sometimes I did miss a larger screen, while 12" is handy, hacking in Eclipse (when I have to), watching a movie with family, etc is not really optimal

    The official homepage is here, the exact model I got has the following spec:

    • display: 15.6" WUXGA FULL HD (1920x1080), AntiGlare

    • cpu: Intel Core i7-2630QM 2,0

    • memory: 8GB (2x4GB) DDR3, 1333MHz

    • hdd: 500GB, 7200rpm, SATA

    • dvd writer

    • vga: Nvidia Quadro NVS 4200M, 1024MB + Optimus

    • wireless: 802.11a/g/n

    • bluetooth: 2.1 + EDR

    • card reader: 4 in 1 (SD, SDHC, SDXC, MMC)

    • interfaces: 3xUSB2.0, 1xeSATA/USB2.0 combo, fingerprint reader, 1xRJ45, 1xExpressCard/34, 1xDisplay port, 1xVGA, 1xmic, 1xheadphone

    • webcam: 1 Mpixel

    • battery: 9 cells, 94Whr, marketing says 14h

    • warranty: 36 months

    What I did not test:

    • Nvidia

    • fingerprint reader

    • RJ45, eSATA, ExpressCard

    Driver support: every portion works with Linux 2.6.39 without installing any external drivers, except the out-of-core vga.


    • the cpu is an x86_64 4-core 2GHz (in case the above link would became 404), so far it seems that enabling hyper-threading just causes trouble, once I turned that off, I no longer got random failures when doing multithread builds

    • I considered SSD but so far I think it’s too new technology for me, probably I’ll consider for the next machine

    • luckily the Nvidia card in it did not cost too much, since it would just eat my battery, one of the first things I did was to enable the in-core intel vga

    • the external vga port is nice, when I plug the external monitor in, a KDE gui pops up and manually typing xrandr commands seems to be unnecessary

    • the wireless works fine with the iwlagn Linux kernel module, but so far I was unable to connect to hidden access points (need to debug later, I only use advertised ESSID + wpa2 on a daily basis)

    • the fingerprint reader is a joke, I did not try this one, but with a similar model it seemed to work 9 times from 10 cases, but in case it did not, repeating the read did not help and finally you just had to type in your password

    • battery: with my usecase, it’s around 8h when I do nothing cpu-intensive, otherwise around 3h

    • my mini benchmark: build of LibreOffice master took more than 24h on my netbook, now it’s under an hour, an in case there were minimal changes only (so ccache has many hits), it’s around 20 minutes — and that includes installing the product and running the testsuite as well. ;)

  • Sunday, 24 July 2011
    bitlbee-skype is now merged


    Back in April I had the idea to merge my bitlbee-skype plugin to the main BitlBee project. The reason is simple: BitlBee does not really have plugins (basically my Skype plugin was the only one) and because of this, ABI compatibility was not guaranteed, so I usually had to rebuild or even fix it after each BitlBee release (though Wilmer was helpful in case I was in doubt). Today this is all past, the plugin is part of the main BitlBee repo I won’t make separate bitlbee-skype releases anymore. (Latest version of the code is here, bzr info here.)

    I’m quite happy this little piece of software did not get lost, but now is in the hands of an active maintainer again. :) If you need help with BitlBee, ask on #bitlbee, at irc.oftc.net.

  • Saturday, 23 July 2011


    A heten bringazni voltunk az Adrian. Roviden erre jartunk:

    • Porec: le kocsival Bp-rol, helyben bringaval, 14.95km

    • Rovinj: vegig bringaval, 106.21km

    • Pula, Premantura: kocsival, csak helyben Pulaban bringaval, 22.90km

    • Krk sziget: a szigetig kocsival, szigeten bringaval, 102.57km (itt voltak szep emelkedok is lejtok, max: 62.2 km/h)

    • Portoroz, Piran, Trieszt: vegig kocsival

    • Moscenicka Draga, Lovran: Moscenicka Draga-ig kocsival, majd tengerszinttol fel 1020m-re (gps szerint: 1107m-re) bringaval, vegul nyilvan vissza a kocsihoz, 52.25km

    Kepeket erre tessek.

  • Monday, 27 June 2011
    Source Code


    Kicsit matrixos, de ahhoz kepest, hogy 90 percben probal meg sajat univerzumot teremteni (ahogy anno az Æon Fluxnak nem sikerult), nagyon jol csinalja. A technikai reszletekrol — a Social Networkben tobb kockulas volt, szoval nem kell felni.

  • Friday, 17 June 2011
    Reservoir Dogs


    Tarantino elso filmje. Ahhoz kepest, hogy egy "masik" film utolso 20p-e alapjan csinalta, eleg mozgalmas. Tetszett.

  • Sunday, 12 June 2011


    Idei film, agykapacitas-kihasznalos scifi kategoria. Vizualis effekteket tokjol hasznalja, kar, hogy a vege eleg suta, annyira kis utalasokbol derul ki a film vege, hogy wikipediabol kellett osszerakni a puzzle-darabokat.

  • Thursday, 09 June 2011
    Blood Work


    Kivancsi voltam egy Clint Eastwood filmre ami nem volt kasszasiker. Teny, hogy egyszer nezos film, hiszen masodszorra mar le van love a poen, de ettol fuggetlenul ez is igenyes darab.

  • Sunday, 05 June 2011
    Pelso 2011

    Iden is voltunk a Tour de Pelso rendezvenyen, melynek potencialis celja megkerulni a Balatont, esetunkben szintido (10 ora) alatt.

    Hivatalos eredmenyekrol egyelore nem tudok, addig is:

    • gps log itt

    • kmora ezt merte: ido 8h48m16s, tav 214.56km, atlag 24.3 km/h (ez gyakorlatilag megegyezik a tavalyi ertekkel), max 47.2 km/h

    • LGee kepei erre

  • Sunday, 29 May 2011
    Million Dollar Baby


    Ugy tunik a Clint Eastwood altal rendezett filmek bejonnek, a Gran Torinohoz hasonloan ebben is szinesz es rendezo egyben. Valamint Hilary Swank (P.S. I Love You) es Morgan Freeman (The Dark Knight, Batman Begins, Se7en, stb.) is hozzak a vart szintet. Akit nem zavar, hogy nem happy end a vege (sot! ;) ), annak csak ajanlani tudom.

  • Friday, 27 May 2011
    Mennyibe kerul 2011-ben egy jogsi?

    Azt tudjuk, hogy a reklam szerint csak 49.000 Ft. A kerdes inkabb az, hogy ez a valosagban hogy alakul.

    Remelhetoleg a sajat peldam eleg atlagosnak mondhato: volt jopar potoram, viszont a vizsgakon elsore atmentem. Van akinek mondjuk a forgalmi csak masodszorra sikerul, de ott meg lehet nincs ennyi potora, es akkor ugyanott tartunk.

    Lenyeg, hogy irogattam, hogy a Taltosban (fo kivalasztasi szempont: ma este hol indul KRESZ tanfolyam :) ) nalunk miert mennyit kellett fizetni, ime hat a lista, amibol tenyleg nem hianyzik semmi:

    Szakasz Mire Mennyit

    139 300,00 Ft


    Oktatas I.

    12 000,00 Ft


    4 600,00 Ft


    4 000,00 Ft

    Oktatas II.

    12 000,00 Ft


    Normal ora

    12 000,00 Ft


    4 700,00 Ft


    1 500,00 Ft

    Potora I.

    4 000,00 Ft

    Potora II.

    4 000,00 Ft

    Potora III.

    4 000,00 Ft


    Normal ora I.

    12 000,00 Ft

    Normal ora II.

    12 000,00 Ft


    11 000,00 Ft

    Potora I.

    12 000,00 Ft

    Potora II.

    12 000,00 Ft



    8 000,00 Ft


    5 500,00 Ft


    4 000,00 Ft

  • Sunday, 22 May 2011


    Ha jol emlekszem valamilyen moziakcio kereteben neztuk meg 1-2 eve ezt a filmet. Csak ajanlani tudom, a TV-s csillogo-villogo, penznyeros vilagot zsenialisan utkozteti az indiai nyomorral, ami a film vegere nem is all olyan tavol egymastol.

  • Saturday, 21 May 2011
    Seven Samurai


    1954-es film, kicsit zavaro volt, hogy vegig olvasni kellett a feliratot (japan hang, angol felirat). Valamennyi hatterismeret nem art, kulonben a szereplok felelmeit nehezebb megerteni. Jah, es 3h27p, szoval nem erdemes lefekves elott agybol nezni ha masnap idoben kell kelni. ;)

    Tartalmilag nekem tetszett, kicsit feltem tole, mert nem vagyok Japan-manias (sot), de a film hossza ellenere vegig le tudta kotni a figyelmemet, nem veletlenul van a Top 250 13. helyen jelenleg.

  • Saturday, 14 May 2011
    Velence 2011

    2 eve voltam MSD-vel (az a bizonyos linkelt tweet meg mindig rulez!) meg Vadasz urral is a fenn megnevezett tavon is.

    Iden ujra arra kerekeztem. Ugy volt, hogy 3-an megyunk, aztan ok lemondtak, nekem meg mar nem volt kedvem nem-menni. Este finom volt a sutott szalonna, mas erdekes nagyon nem volt.

    Ugy tunik viszont, hogy az eronletem sokat nem valtozott: a legutobbi 5p-cel gyorsabban, viszont szuk 2 km-rel kisebb tavon sikerult, tehat majdnem u.az. A kulonbseg raadasul alapbol adott volt, mivel annak idejen a Gardonyi strandhoz mentunk, most pedig Velencen voltunk.

    Ido 5h2m27s, tav 111.12km, atlag 22.0kmph, max 51.6kmph. Pontos utvonal erre.

  • Sunday, 08 May 2011
    Elazott Godollo

    Mint azt mar korabban beharagoztam, erre indultunk el reggel. Az mar a met.hun is latszott, hogy valszeg esni fog, ami onmagaban meg nem baj. A szivas ott kezdodott, hogy egyreszt olyan hideg volt, majus ide vagy oda, hogy a kezem meg a labam is fazni kezdett, az pedig vegkepp elgondolkodtato volt, hogy mikor megalltunk, latni lehetett a lehelletunk.

    Eredeti terv szerint a 2 evvel ezelotti tura megismetlese lett volna, viszont a fentiek miatt jelentosen levagtuk a hivatalos utvonalat, igy:

    • mar delre itthon voltam

    • haztol hazig volt csak meg az eredeti hivatalos tav

    Termeszetesen panikra semmi ok, edzesnek igy is kivalo volt.

    A kmora ezeket merte: ido 4h45m13s, tav 100.75km, atlag 21.1kmph, max 54.5kmph.

  • Saturday, 07 May 2011

    Szerda este erre jartunk. Ez egyreszt kivalo alkalom volt kiprobalni a bakancsnak beharaongozott, de inkabb edzocipo objektumot amire nemreg tettem szert, masreszt pedig hamar multhet csutortokon meglett a forgalmi vizsga (igy mar csak az EU vizsga van hatra a jogsihoz), ideje volt megnezni ezt a tankolas dolgot, amit sose probaltam elotte — barmennyire is trivialis ha egyszer megvolt.

  • Wednesday, 04 May 2011
    LibreOffice 3.4 Packaging

    The next major LibreOffice version, 3.4, means some work for (Linux distribution, and other) packagers, as the build repo is now deprecated and packagers are suggested to use the bootstrap repo directly, which is a different build system.

    On one hand, this is a nice cleanup - there is now a single configure script. OTOH this needs major rework of distro build scripts.

    The interesting part here is that the official binary installers are not using the make DESTDIR=/some/path install method to install the compiled binaries, so it was discovered quite late that it wasn’t working properly. First Hanno and Petr worked on this, then I fixed a minor, but blocking glitch.

    As a result 3.4 beta4 will be something packagers (even the ones not using the split build) can offer to distro users for testing without patching. Binaries for Frugalware users here (i686-only at the moment).

  • Friday, 29 April 2011
    MKK ejszakai bringatura

    Tegnap megvolt a forgalmi vizsga, sikerrel atengedtek elsore, igy ezt melto volt megunnepelni egy bringaturaval.

    Az utvonal erre volt, mivel felmentunk a Normafara, Janos-hegyre es a Harmashatar-hegyre is, volt benne szint boven. :)

    Az egyetlen baleset a Janos-hegyrol lefele jovet volt, az egyik lany nem tartotta meg a kello fektavolsagot es az egyik eles kanyarodas elott beleszallt az elott levo srac hatso kerekebe. Annak ellenere, hogy a tarsasagbol csak rajtam volt buko (!), szerencsere senki sem serult meg annyira, hogy nem folytathattuk volna a turat.

    A bringaora a kovetkezoket merte: netto ido: 3h57m08s, tav: 57.43km, atlag: 14.5km/h, max: 57.4 km/h. Latszik, hogy igyekeztek a szervezok rendszeresen nem bringazok reszere is teljesithetove tenni a turat, bar a szint es tav kicsit tul lett mereteve, ha ez tenyleg tervezesi szempont volt.

    A turat az MSZT-tol kezdtuk 21:45-kor es a Batthyany-teren levo nagyi palacsintazojaban vegeztuk, a palacsintak betermelese utan 4:30 korul indultunk haza.

    Ezuton is koszonet a szervezoknek, tokeletes bemelegites a jovoheti turara. :)

  • Monday, 25 April 2011
    GSoC 2011 - Accepted


    I just got the mail about my LibreOffice proposal got accepted to Google Summer of Code 2011. I’m looking forward to an exciting summer. :)

  • Monday, 18 April 2011
    Fight Club


    Ez se mai film, sot eredetileg nem is mostanaban, hanem bo 2 eve lattam. Egyszerre elmebeteg es zsenialis. De inkabb az utobbi - legalabbis mindenfele sablontol mentes, es ez mar onmagaban kiemeli a gyartosoron keszulo szutykok kozul.

  • Sunday, 17 April 2011


    Igazi krimi, 16 evvel ezelottrol. Al Pacino a jofiu, Robert De Niro a rosszfiu, indulhat a macska-eger jatek!

  • Friday, 15 April 2011
    A gyulolet


    Amolyan rasszizmust lejarato film. Az elso fele gyakorlatilag cselekmeny nelkuli, csak felvazolja az alapszituaciot, majd azt hozza ki, hogy barmennyire is pattognak a kissracok, igazabol nem ok a veszelyesek.

    Ami igazan tetszett benne, hogy nagyon szepen visszaadja a szituacio feszultsegeit, es ehhez a fekete-feherseg sokat segit.

    Arra mar rajott valaki, hogy az hogy van, hogy 8.1es imdb potja van a filmnek, megsincs a top250-ben, ahol az "alja" 8.0-val is bekerult?

  • Wednesday, 13 April 2011
    The Fighter


    Ahol Batman drogos idiotat jatszik, amugy meg boxolos, szerelmi szalas, idealis pentek esti film volt.

  • Friday, 08 April 2011
    Web framework fejlesztes

    Ilyesmivel kerestek meg, en most nem keresek munkat, de hatha mas igen.

    Olyan embert keresek aki nagyon ért valamilyen web frameworkhöz. Akármelyik javascriptes vagy GWT vagy javas vagy esetleg groovy on grails.

    A feladat egy már meglévő web alkalmazás felületének az átalakítása lenne. Spring Roo-val készítettem de már nem használom mert túl sok mindent átírtam benne és a Roo korai verziója ezt nem támogatta megfelelően, az upgrade meg még keményebb lett volna. Ebből adódóan Spring MVC-t használok sima JSP-vel. (Akkori Roo-ba még nem volt GWT) Van pár ajax hívás, pl. autocomplete mezők, de nem ez a jellemző, ehhez jQueryt használtam és nehány egyéb dologhoz még Dojo-t mert a Roo alapból azt használja de nekem nem jött be.

    Szeretném sokkal felhasználóbarátabbá tenni az egészet és ehhez a JSP meg az én javascript tudásom nagyon kevés. A teljes megjelenítést szívesen lecserélném bármi másra ennek érdekében. Konkrétumokat akkor mondanék ha van jelentkező, nem azért mert titkos csak nekem is össze kéne szedni :)

    Nem fulltime munkáról van szó és nem nagy pénzről, de legalább valami sajátot lehet csinálni. Én heti 10-15 órában foglalkozom ezzel, persze a megrendelő szeretné ha többet csinálnám, de valamiből meg is kell élni és munka+gyerek mellett ennyi jut :)

    Kb 25 CRUD karbantartó van, ebből 4-5 bonyolultabb. És kb 5 statisztika képernyő amiken csak egy táblázat található. Meg egy grafikonos. De ezek fognak bővülni a közeljöbőben.

    Jelentkezes, tobb info: leventewe kukac gmail.com.

  • Thursday, 07 April 2011
    A kiraly beszede


    Tovabbi cimkek: igaz-torteneten-alapul, oscar-dijat-nyert.

  • Wednesday, 06 April 2011


    Most volt par napja a premiere, tipikus Philip K. Dick sztori, kicsit misztikus, kicsit Istenes, kicsit szerelmes. A mozijegy arat megerte.

  • Friday, 01 April 2011
    KVM vs Windows 2003

    A few days ago I wanted to try out Windows 2003 (to be used for a task at the university) in KVM, to be exact using libvirt. First I didn’t do any non-intuitive trick, but later it turned out what virtio should be enabled for the block devices or the whole machine will be slow as hell. For the records, here is what worked for me:

    wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-1.1.16.vfd
    virt-install --name=vmiklos-w2003 --arch=x86_64 --vcpus=1 --ram=2048 \
            --os-type=windows --os-variant=win2k3 --connect=qemu:///system \
            --network network=default \
            --cdrom=/virt/vmiklos-w2003/en_windows_server_2003_with_sp1_enterprise.iso \
            --disk path=/virt/vmiklos-w2003/vmiklos-w2003.img,size=24,bus=virtio \
            --disk path=/virt/vmiklos-w2003/virtio-win-1.1.16.vfd,device=floppy \
            --accelerate --vnc --noautoconsole --keymap=us

    When the installer asks if you have a special SCSI driver floppy, ask for it, then you can select the virtio driver.

  • Monday, 28 March 2011
    Apply button to style edit dialog in Writer


    LibreOffice 3.4 will have a new feature, if you edit styles in Writer, then you can test your style changes without manually closing and opening the style edit dialog again.

    Do you like this feature? There are still similar remaining dialogs to improve like this, send in a patch!

  • Sunday, 27 March 2011
    Menzak BME kornyeken

    Valamelyik heten sikerult 5 nap 5 helyen kajalni, lassuk a valasztekot:

    • Golmann menza: draga es szerintem kifejezetten visszataszito kajakat adnak itt ("nem tudod mit eszel"). Nem beszelve rola, hogy multkor az egyik tejbegrizuk utan hasmanest is sikerult osszeszedni. Azota kerulom.

    • Pizzaboy: talan egyetlen gyengeseguk, hogy a hazhozszallitasra vannak kitalalva, helyben sokszor nincs hely. Nincs messze, jo pizzakat csinalnak, olcsoak (tipikusan 1000 Ft alatt jol lehet lakni).

    • SZTAKI menza: olcso (450 Ft a menu), finom kajak vannak, hatranya, hogy csak magneskartyaval lehet bejonni, tehat tipikusan nem az utca emberenek van. (Nyilvan ezert engedhetik meg maguknak az arak alacsonyan tartasat.)

    • A Karman aljaban is van egy menza, ezt talan sokan nem ismerik. Neha kicsit lassuak, de turheto aron finomat adnak.

    • Vasarcsarnok/Skala: ez kicsit arrebb van, a 4-es villamos vegallomasanal. Az elfogyasztashoz kinalt kornyezet hagy kivannivalokat maga utan (leull melled egy csoves, stb), de a kaja finom es majdnem olyan olcso, mint a SZTAKI.

  • Monday, 21 March 2011
    Tech talks

    First, I was recently recommended this systemd video, a record of Lennart’s presentation at linux.conf.au, I liked it.

    Second, I just realised Junio (the maintainer of git) went Google last year, as he states this in a recent interview. OK, I don’t really follow closely git development anymore, but good to know he now works on this not only one day a week. :)

    Finally, I just saw Michael’s FOSDEM talk. I was innocently just watching it, then was surprised to see my name here and there. ;)

  • Saturday, 19 March 2011
    Kokardas tura

    Voltunk 15-en a Vertesben bringazni. Csak vazlatpontokban:

    • Tatabanyaig mentunk vonattal, onnan fel a turulhoz, ami elott egy felreertes kovetkezteben estunk egyet.

    • Onnan eredetileg a kek turistajelzesen mentunk volna a Vitanyi majd a Gesztesi varba, de tul nagy sar volt, igy ezt feladtuk.

    • Vegul Velencere erkeztunk, es onnan haza vonattal.

    • Legkozelebb nem kene otthonfelejteni a diakot, kokardat meg odaadni az elhozott installcdket. :)

    • kmora ezt merte: ido 4h50m17s, tav 78.19km, atlag 16.1, max 52.0km/h

    • gps track itt

  • Monday, 14 March 2011
    Requiem for a Dream


    IMDB top100-ban benne van, amolyan "a drogprevencios filmek iskolapeldaja" kategoraban akar nyerhetne is.

    Amit kiemelnek, hogy szerintem nagyon jo zeneje van.

  • Sunday, 13 March 2011
    Gran Torino


    Clint Eastwood rendezesevel es szereplesevel. Tetszett.

  • Sunday, 06 March 2011

    Voltunk tegnap az idei bringaexpon. En nem vittem fenykepezogepet, de felesleges itt lett volna, annyi kep keszult igy is.

    Par elgondolkoztato darab:

    Es persze megvolt az en Konam egy evvel ujabb verzioja, ezuttal szurkeben, 40e forinttal dragabbert. Zolden, kevesebb penzert meg mindig elegedett vagyok vele. :)

  • Sunday, 27 February 2011
    Git @ Meetup

    Lesz Git eloadas a marcius 9-ei Meetupon, ha erdekel a tema, gyertek.

  • Saturday, 26 February 2011
    KDE 4.6 vs hibernate

    We recently merged KDE 4.6 in Frugalware -current and since now it uses upower, it catches the sleep button of my netbook. The problem is that it tried to suspend instead of hibernation - what I wanted.

    The trick is easy, but not really obvious. First, I disabled suspend/hibernate in /usr/share/polkit-1/actions/org.freedesktop.upower.policy so that I can play with this without actually hibernating/suspending the system.

    Second, I went to System Settings → Input actions → Global, selected "KDE services" and there you can see Suspend and Hibernate as well. Go to Hibernate, and set a custom shortcut: it will ask if you want to remove the sleep button from Suspend - the answer is obviously yes.


  • Friday, 25 February 2011

    Red Certified Hat Engineer:


    Ha valaki tenyleg elvegzett volna egy ilyen vizsgat, feltehetoen a vizsga nevet csak le tudna irni.

  • Friday, 11 February 2011
    Whip It!


    Elvileg vigjatek, de mintha tudatosan odafigyeltek volna, hogy ne legyen kozhelyes. Nincs a vegen happy end, a szerelmi szal is eltunik a sullyesztoben, es igy tovabb. Igy maris van benne annyi eredetiseg, hogy nem kidobott ido megnezni a magyarul Hajra Bliss! neven futo alkotast.

  • Monday, 07 February 2011
    Isola 2000 - 2011-ben


    Volt mar szo errol a helyrol, hiszen 2 eve ugyanitt jartam. Vegulis a lenyegi kulonbsegek a kovetkezokben foglalhatoak ossze:

    • teljesen mas tarsasag

    • akkor 7 napbol 6 nap nem sutott a nap, az utolson pedig lazasan fekudtem az agyban - most 6 napbol elso nap esett a ho, onnantol szikrazo napsutes (es ennek megfeleloen volt ido visszafele beugrani 3 orara Monacoba is, ahelyett, hogy az ut lavinabol valo kiasasara vartunk volna)

    • kaptam kolcsonbe egy joval jobb lecet

    Leginkabb a kozepsobol eredendoen volt ertelme uj kepeket csinalni.

    Erdekessegkeppen (napi tav, sebesseg maximum, stb.) kiraktam az utolso elotti nap es a hazaut GPS trackjet is.

  • Sunday, 06 February 2011
    KRESZ vizsga


    Ami a kepen lathato az tenyleg megtortent, de persze nem a tenyleges vizsga volt (ott volt 2 hibam), hanem az egyik elotte levo esti gyakorlas. A lenyeg, hogy megvan a "beugro", es kezdodhet az igazi tanulas.

  • Thursday, 27 January 2011
    Russian characters in RTF export

    I got a report about two problems which got fixed in master now.

    The first error is triggered, if you have special (in RTF terms, so for example { or }) characters in style names. The result was not so friendly when you opened such a document:


    After applying the first fix, the document was imported but the original Тест text was replaced by something non-unicode:


    The second fix addresses this, and now the result is the expected one:


  • Friday, 21 January 2011
    LibreOffice's git-hooks now warn about undocumented classes

    There was a thread about this topic already, but just refusing to commit new files without documentation sounded too aggressive. So the current code just prints a warning.

    It was also requested to show some good/bad examples. Lubos volunteered to add detailed instructions in the wiki, so I’m just describing in short what did I test so far.

    A good example:

    /// Handles export of foos using RTF markup
    class RtfFoo

    A bad example:

    class RtfBarBuggy

    Example output when a warning is emitted:

    ~/git/libreoffice/master/sw$ git commit -a -m foo
    sw/source/filter/ww8/bar.hxx:30: warning: Compound RtfBarBuggy is not documented.
    [master 1b11571] foo
     3 files changed, 68 insertions(+), 0 deletions(-)
     create mode 100644 sw/source/filter/ww8/bar.hxx
     create mode 100644 sw/source/filter/ww8/foo.hxx

  • Tuesday, 18 January 2011
    systemd vs. LVM

    Yesterday I enabled udev support in our LVM package, and that means LVM volumes under systemd not work as expected. Thanks to Lennart for the quick answer. :)

  • Saturday, 15 January 2011


    Nem osszekeverendo ezzel. A sztori egyszeru: elszabadul egy mergezett anyagokkal megrakott tehervonat es meg kene allitani, hogy ne ott robbanjon fel ahol a leginkabb pusztitana. Kerdes, hogy sikerul-e. :)

  • Friday, 14 January 2011
    Nationality of currently active Frugalware developers


    Just a FYI:

    $ ./chkacc --verbose
    Accepting active developer 'vmiklos' [hu]
    Accepting active developer 'iron' [hu]
    Accepting active developer 'voroskoi' [hu]
    Accepting active developer 'boobaa' [hu]
    Accepting active developer 'crazy' [ro]
    Accepting active developer 'priyank' [in]
    Accepting active developer 'hermier' [fr]
    Accepting active developer 'devil505' [fr]
    Accepting active developer 'bouleetbil' [fr]
    Accepting active developer 'ryuo' [us]
    Accepting active developer 'gholafox' [fr]
    Accepting active developer 'phayz' [au]
    Accepting active developer 'elentir' [fr]
    Accepting active developer 'cedynamix' [fr]
    Accepting active developer 'jercel' [fr]
    Accepting active developer 'exceed' [fr]
    Accepting active developer 'dex' [de]
    Accepting active developer 'kooda' [fr]
    Accepting active developer 'centuri0' [fr]
    Accepting active developer 'kikadf' [hu]
    Accepting active developer 'pingax' [fr]

  • Thursday, 13 January 2011
    Wrapped images in Word (LibreOffice RTF export)

    I’ve got a report which turned out to be two separate issues. One is a regression from Go-OO 3.2.x, this post is about this part. The other part is about the improvement of both the import/export RTF filter, the bug has some detail on that part as well.

    So the problem was that wrapped images (when the image is a frame and not a character) had some extremely small height. I did not notice this bug in LO as an LO-specific extension hides that value, but in Word you can see it:


    The fix is to use the height of the containing frame instead of the height of the picture itself, then it’ll look fine:


  • Monday, 10 January 2011
    HP vs. Hungary


    Yesterday I bought a HP LaserJet Pro P1566 printer. The device itself is nice, supported by foo2zjs, though of course that support is unofficial. I was curious what do they offer a "Linux support" on their website, since the case of the printer mentions Linux support. And I had to use the above picture to select my country.

    1. It’s Magyarország, not Magyarorság.

    2. The map of the country isn’t even close to reality, what are they smoking? ;)

  • Sunday, 09 January 2011


    Kar, hogy Magyarorszagon nem vetitik. Az pedig kulon erdekes, hogy ugymond a film "eleje" csak a trailerbol derul ki - mintha arra alapoztak volna, hogy azt mindenki latta mikor beul megnezni az alkotast. Amugy Alien-jellegu, akinek az tetszett, az nem fog itt se unatkozni. ;)

  • Saturday, 08 January 2011
    LibreOffice vs. F13


    About four days ago it has been asked on #libreoffice if it’s possible to bind functions to F13..F16 in Calc. The short answer is no, but it turned out it’s pretty trivial to allow that (and of course not only in Calc).

    Cedric’s great post is helpful here to find the relevant code. It also truned out that VCL already supports those keys, so only the user interface has to be improvied to export that feature.

    The patch is here.

  • Wednesday, 05 January 2011
    systemctl now supports auto-paging

    If you use systemd, you know systemctl. That’s the command that controls systemd: you can use it to start, stop or list (and so on) services. Now in case you use list, there is a lot of output, probably it won’t fit your screen. git already invented auto-paging, which means it’ll feed its output to a pager if the output is more than a screen, for example when using git log. With my recent commit this now the case with systemctl as well. :)

  • Monday, 03 January 2011
    bitlbee-skype now supports groups

    I released bitlbee-skype 0.9.0 today. The last feature that triggered the relase born in git during the last two days: now it reads and writes Skype group info. This means if you have a Skype group "work", then you can just /j &work to see work contacts only, and /invite also works in that channel as expected.

    More in the BitlBee wiki and in the NEWS file.

  • Friday, 31 December 2010
    Szokasos evvegi osszefoglalo 2010

    A tavalyit folytatva:

    1. Januarban felvettek BME mernok informatikus MSc kepzesre.

    2. Februarban lecsereltem a 2005-ben vasarolt, mara mar igencsak elavult notebookomat egy Lenovo S12-re.

    3. A bringazas tovabbra is meghatarozo: csinaltunk iden Balaton-kort meg Bp-Kekes-Bp kort is 1-1 nap alatt. Augusztusban pedig elkezdtem SPD-zni.

    4. A legnagyobb nyari elmeny egyertelmuen a Pragai kozos nyaralasunk volt.

    5. Ezutan nemsokkal megvettem eletem elso GPS-et, amit azota is orommel hasznalok.

    6. Nyaron amugy az OpenOffice.org-on dolgoztam, es szerencsere sikerult is befejezni a melot elvarasaimnak megfeleloen.

    7. Egyeb utazasok: szeptemberben Poznan (SZTAKI-s "nyari" iskola), oktoberben Nurnberg (openSUSE konferencia)

    8. Majusban volt 20 eves FeGe koncert.

    9. Frugalware: el es virul, a szokasos eves ket kiadason egy ideje tulvagyunk. Csak hogy ket ujdonsagot emlitsek: KDE4, GUI installer.

    10. SZTAKI: az utobbi idoben legizgalmasabb dolog sajnos meg nem publikus.


  • Wednesday, 29 December 2010
    Tron Legacy


    Annak ellenere, hogy itt lehordtak, nekem tetszett. Ezuton is koszonet a csaladnak akiknek koszonhetoen ingyen nezhettuk meg. :)

  • Tuesday, 28 December 2010

    CSP, as in Constraint satisfaction problem. A while back I wrote a custom sudoku solver in Erlang, and now I hit something similar. Of course, since then I learned that there are nice CSP engines, so this time I did not try to write my own. :)

    First, I checked out python-constraint, and then I sticked with it, as it fulfilled my needs.

    So, the problem. Here is a Christmas tree:


    The tree has 4 chains, each one contains 7 items. A few ones already has a number. The exercise: number the empty items with numbers between 1 and 7 so that:

    • Each chain contains the numbers 1..7 exactly once.

    • All the horizontal and diagonal lines cannot contain the same number twice.

    A possible solution is here. If you get less or more than one solution, you did something wrong. :) (I’m not pasting here the output of the script to leave some exercise for the readers. ;) )

    As an experiment this time I draw the image using TikZ. Based on these ideas I converted the source to PNG using tikz2png.

  • Monday, 27 December 2010
    Systemd: kernel, bluetooth, bitlbee

    • Finally I can run systemd on my desktop, and not in a virtual machine only, since there is a patch for the sched/cgroup issue I had. It was not a systemd bug, but systemd triggered a kernel issue, which was hidden so far.

    • I just updated our bluez package, and bus activation works fine. This means bluetoothd is not started till somebody connects to it. Given that I sometimes do not log in to KDE to use kbluetooth, but just want to do something on the console, where having bluetoothd running is totally unnecessary, I consider this really nice.

    • It came up on #bitlbee that there is a Fedora bug where they ask for systemd unit files for BitlBee. So I created a patch, and the nice thing is that the second iteration now seems to be fine for Frugalware/Fedora/Debian, so we managed to build something cross-distro here. (I think I mentioned that’s the #1 feature I like in systemd.)

  • Sunday, 26 December 2010

    I wanted to create some calendar present for Christmas in the family with pictures and Hungarian year / month order, national holidays, etc.

    After looking at a few solutions, pcal seemed to be the best choice.

    There are 3 key points here:

    • The order of the year / month can be changed only in build-time. If your locale has "year month" and not "month year" order, then you need this patch.

    • You need some config for each locale, here is mine, containing the Hungarian national holidays.

    • Finally you need a script like this to put in the pictures.

    The result fully localized, free software, contains my custom images and support custom marks for days using a quite flexible syntax.

    (Let me know if you know some other project where you can set the year/month order runtime and the result can be still generated from a script, ie. it’s not some LibreOffice or similar template. ;) )

  • Saturday, 25 December 2010
    Karacsonyi fail


    En: Mindket helyre csongettem, nem volt kiirva a ket csengo kozul egyik re se nev, remelem nem gond.

    O: Nem, a masik a nagymama.

    En: Jaj, remelem nem ebresztettem fel.

    O: Ot mar nem…

    Pasztorjatek vegen:

    Pap: Es gyerekek, iden a Jezus egy kisbaba volt, majd biztos orulni fog neki nagylany koraban, ha emlegetik…


    Neni: Nem tudja merre van az Urom utca sarkan levo ter?

    En: Szerintem nincs ilyen utca ebben a keruletben, biztosan jol tetszik emlekezni?

    Neni: A testveremhez megyek, lehet, hogy tavaly ota elfelejtettem, hogy hol lakik…

  • Friday, 24 December 2010
    August Rush


    A magyar cime ("A szeretet szimfoniaja") alapjan akar karacsonyi film is lehetne, amugy nem az. De kivetelesen nem sejtettem a veget, valamint a foszereplok egyiket se lattam meg korabban masik filmben, es igy kifejezetten tetszett.

  • Thursday, 23 December 2010

    I needed a tiny tool to generate something classdiagram-like from CORBA IDL files. Given that I did not find such a tool, I wrote it.

    You can find it here.

    An example: idlscalable output.

    Right now it does not support typedefs, enums and exceptions. If you need such a feature, patches are welcome. :)

  • Monday, 20 December 2010
    Systemd Podcast

    I just found this podcast, it’s a bit dated since it happened in August and things have been improved a bit since then, but still I was happy to listen it. (The interesting part starts at 1:10:50; 17 minutes.)

    I already had a short post about systemd, and I mentioned the killer feature for me is the compact distro-independent service file (initscript for sysvinit) format it uses, since even if the initscript format we use in Frugalware right now is mostly bullshit-free, it’s still more bloated than the systemd service files.

    Now back to why I began writing this post. :) So there is the post about systemd, but it’s rather long, and it’s easy to miss the point. Since the previous post, I think there are a few more killer features in systemd:

    • Every service is started in a separate control group (cgroup). Do you remember the situation when you wanted to know who the hell started a given particular process? This is typically a problem if the process is running as root. Now this is no longer a problem, systemd-cgls will show you if it was started by a user or a given service, etc. (Yes, I consider this a security feature.)

    • Upstart already had this "restart if it crashed" feature, but systemd does it better: if the daemon supports socket activation, then messages sent to the socket are buffered by the kernel, and no message will be lost during the restart.

    • systemd provides this on-demand feature, which is pretty much like inetd, so hopefully we can get rid of inetd, which was a constant problem previously. (We inherited a fork of the OpenBSD inetd from Slackware, and being a fork it did not improve since years, causing a constant problem.)

    Why writing this post today? Because this morning systemd appeared in -current, so you can even try it out without installing any unofficial package.

  • Wednesday, 15 December 2010
    Splashy vs. systemd

    So we have this systemd wip repo and one of the remaining todo items was to fix up splashy to work with systemd.

    First, why doesn’t it out of the box of systemd is a drop-in replacement? Because splashy is not a simple init script, it hooks itself to rc.sysvinit, so it was specific to sysvinit.

    Now given that plymouth was already ported to systemd, it served as a good example. You may also ask: why don’t we just switch to plymouth? Because:

    • we don’t want to introduce multiple changes at the same time

    • it requires kms, while Splashy did not require it - so as long as it’s not true that most video cards support kms (think of via or anything else which supports vesafb, but not kms), such a switch would be a regression

    Okay, enough anti-Plymouth rant. As you can see, right now the task is to fix Splashy.

    The steps I did were:

    • updated the Splashy theme to remove the progressbar: given that now we start services parallel and on-demand, it does not really make too much sense

    • introduced unit files: to start on boot, to stop before getty/xorg, to start before kexec/reboot/halt/poweroff

    • added the usual compatibility symlinks to avoid starting the old rc.splash (which would happen anyway)

    • added a simple wrapper that fires up splashy and once it’s ready it sends the Booting…/Rebooting…/etc text to it

    The last problem is a bit more complex: now that xorg startup wants to stop splashy, a dependency has to be declared. xorg startup is handled by prefdm.service, but in case it depends on splashy-quit.service, what will happen if you don’t have or don’t want a splash?

    The solution for now is to declare an After= relation: that means xorg startup will happen after the quit of splashy, if it happens at all.

    This way:

    • you can disable the splash, it won’t cause any dependency errors

    • if you don’t have prefdm.service enabled, you can even have splashy uninstalled

    • (this one is a bit ugly) you can disable the splash, but if you uninstall it and have prefdm.service enabled, you’ll get a dependency error, as systemd will have no idea what splashy-quit.service is.

    To test the above:

    • you need to enable the systemd wip repo (see the link above)

    • run pacman-g2 -Sy systemd

    • boot with init=/bin/systemd

    Stay tuned, we still have a few blocker issues before merging the (disabled by default, as you need that kernel parameter) systemd support to current.

  • Monday, 13 December 2010
    The Book of Eli


    Stilusos film a maganyos harcosrol, akirol a film vegen egesz erdekes dolog derul ki. ;)

  • Saturday, 11 December 2010

    So we have two machines next to each other: genesis and helicon. The original idea years ago was to put a serial cable between the two so that it’s possible to manage the machines even in case ssh dies for some reason. Of course we never did that, because we were lazy - but in the meantime both machines were replaced by a newer mainboard, supporting Intel AMT.

    In short, this is a poor man’s IP console, it supports serial-over-lan, so with a bit of configuration and a special client tool you can control grub, watch the bootup process (will you miss the risky few minutes after a reboot till it turned out if a remote machine boots up after a kernel upgrade or not?) and finally can even log in when ssh is not running.

    First you need to set up grub to listen on the serial port as well. To do this, you need to know the device name and I/O port of your serial-over-lan port. The boxes mentioned above have one physical and one virtual serial port, so we need the later - that will be /dev/ttyS1. Now let’s grep in dmesg to get the port:

    $ dmesg|grep 'ttyS1 at'
    0000:00:03.3: ttyS1 at I/O 0xf1c0 (irq = 17) is a 16550A

    Now we know everything to set up grub. Just prepend the following lines to your /boot/grub/menu.lst:

    serial --port=0xf1c0 --speed=115200
    terminal --timeout=30 console serial

    The speed is AFAIK the same for each SoL port, so you can just copy&paste it.

    It’s also recommended to change the timeout line to 30 as well, this way you will have half minute to press any key to tell grub you want to control is on the serial port and you’ll again have half minute to hit any key to edit the kernel parameters, etc. (The whole grub part is useful because this way in case you upgraded the machine and it fails to boot up, you can still boot using init=/bin/sh and fix the system.)

    Second, you want to see the boot process, this way you can fix the system remotely, even if fsck fails and asks for root password, etc.

    For this, you need to change your kernel parameters, so that messages sent to /dev/console will end up on the serial port.

    I changed

    root=/dev/md0 ro quiet vga=791


    root=/dev/md0 ro vga=normal nomodeset console=ttyS1,115200

    and that achieved this.

    Third, you want to start a getty on ttyS1 once the machine booted up, in case ssh fails to start up. If you don’t use systemd yet, add the following line to /etc/inittab:

    s1:12345:respawn:/sbin/agetty ttyS1 115200 vt100-nav

    (Don’t forget to run init q to reload the config!)

    Finally, you need amtterm on the client side - I plan to package it for Frugalware once 1.4pre2 is out. Till then you can just download, unpack and build the source tarball using make - no installation is necessary, you can run amtterm in-place. In my case I can’t connect directly to the machine as (for obvious reasons) the AMT is reachable from the local subnet only. So I build an ssh tunnel to the other machine and use socksify to pretend I run amtterm on the local subnet. The commandline I use is:

    $ socksify ./amtterm -p <pass> <ip>

    And that’s it - enjoy editing your kernel parameters, watching your boot process and login to the box even if ssh is not running and you don’t have IP console. :)

    If you can’t try it out right now but you want to see it in action: grub in amtterm and boot in amtterm - without any virtualization! ;)

  • Friday, 10 December 2010
    How to get rid of Wikipedia spam header

    You probably already noticed it. I have no major problems with Jimmy Wales, but given that this spam header will not be hidden even after you donate (since I browse Wikipedia without logging in), this is really just spam. Here is a nice greasemonkey script to get rid of it.

  • Thursday, 09 December 2010
    TDF Interview

    The Document Foundation guys made an interview with me. In case you find out there something new about me, happy reading!

  • Wednesday, 08 December 2010
    BitlBee-Skype 0.8.4

    I just released 0.8.4. The happy thing about it is that basically the only fix I added to this release is to make it work when python is python3k (so we need to use python2.7 to get python2 support), but the rest is just merge from:

    • email

    • github

    • Debian

    Now the total number of contributors increased to 7. :)

  • Thursday, 02 December 2010
    LibreOffice comment finder

    So I wrote a short script to find undocumented classes in the LibreOffice source code - I don’t mean when some of the public methods are not documented, but the case when the class itself doesn’t even have a one-liner mission statement.

    Of course it should be used with care - if someone starts adding bullshit or misleading documentation using this script, that just makes the situation even worse.

    The patch generated a nice thread where basically they argue if it makes sense to have a KDE-like API documentation for LibreOffice or it’s just better to refactor code to have self-documenting function names, etc.

    At the end of the they, looks like there are people who find it great. :) (In the meantime that patch has been pushed, of course.)

  • Wednesday, 01 December 2010
    JGit eloadas

    Holnap lesz 5 hete, hogy eloadtam JGit / EGit / Gerrit temaban a BME-n, e targy kereteben. Az elaodas eleje gyakorlatilag copy&paste a korabbi Git eloadasombol, de mivel a targy kifejezetten Javaval foglalkozik, igy az elobb emlitett harom temat is feloleli. A slide-ok megtalalhatoak a szokasos helyen.

  • Tuesday, 30 November 2010


    Zsenialis film a repulon, kocsiban, hotelban, hoban es tengerparon tengerparton jatszodo almokrol. ;)

  • Saturday, 27 November 2010
    Poor man's PDF duplex printing

    Yesterday I wanted to print a PDF document: two pages per sheet, and of course I wanted duplex printing as well (on the short side).

    Given that the hardware (the printer) was not capable of duplex printing, I needed some software workaround. If you want one page per sheet, this is trivial, as the print dialog of any PDF reader will let you select "odd pages", then you re-feed the printer with the output paper and you select "even pages" and that’s it.

    OTOH, if you want 2 pages per sheet, then first you need some trick first to create two PDF from the original: the first containing the pages 1, 2, 5, 6, etc. - and the other containing 3, 4, 7, 8, etc.

    After all this isn’t really hard using pdftk. First, the input PDF was around 150 pages, so I wanted to split the input to one file / page:

    pdftk in.pdf burst output out/%03d.pdf

    Then let’s move the pages to the subdirs a or b, based on the above pattern:

    cd out
    mkdir a b
    for i in *.pdf
            base=$(basename $i .pdf)
            if [ $base -lt 100 ]; then
                    rem=$(($(echo $i|sed 's/^0\+\(.*\)\.pdf/\1/')%4))
            if [ "$rem" = 1 -o "$rem" = 2 ]; then
                    mv $i a
                    mv $i b

    Finally concat the files from the a and the b dir to a single file:

    cd a
    pdftk *.pdf cat output ../a.pdf
    cd ../b
    pdftk *.pdf cat output ../b.pdf

    That’s it!

  • Friday, 26 November 2010

    I tried to search back when did I create Java bindings for libwpd - it seems this was the first commit.

    First I kept back the source code to get some money for it (there were a customer who seemed to be willing to pay, but then disappeared), then I just abandoned the idea and pushed it to SourceForge.net to some CVS repo, (I even mentioned it in a blog post), which is finally now converted to git.

    Long story short, a week ago finally Fridrich released the first version of the code, after about 2.75 years. :)

  • Wednesday, 24 November 2010

    Background: OSL_TRACE() is an internal LibreOffice macro that is like printf(), but it’s only enabled in debug mode. Without it, you would add a debug printf during development:

    printf("debug, foo\n");

    then you would comment it out when the code started working,:

    //printf("debug, foo\n");

    then remove the comment when it breaks again, etc.

    In the past, if you built a LibreOffice module, then you executed:


    inside a module, and in case you wanted debug symbols and such messages you built using:

    build debug=t

    which increased the debug level to 2 (from 0), where 1 is required for debug symbols, 2 for debug messages. (See the OOo wiki page.)

    The recent update, why I’m writing this post: Now this has been changed, and debug=t gives you debug symbols only, but no extra debug output. While this is great in most cases, sometimes you still want the old behaviour to get the debug messages. In that case the solution (as pointed out in the mailing list post) is to use:

    build debug=t dbglevel=2

    (Hopefully this post will be handy for who missed that post, like I did the first time.)

  • Tuesday, 23 November 2010

    I first heard about systemd from voroskoi, later Michael pointed it out again during the OOoCon 2010, finally it somehow came up on #frugalware.dev today.

    So I read up some documentation in this area, and I definitely like it. (Note: I didn’t say I’m willing to do all the work to integrate this into Frugalware, but I like the idea.) For me, the killer post is this one: a distro-independent init script in 8 lines is very much like our FrugalBuild scripts which are no longer than 11 lines for a project with a standard build-system.

    I like that minimalism a lot.

  • Sunday, 21 November 2010
    MKK Katalin bal 2010

    Visszakeresve ugy tunik, hogy csak egyszer irtam az ilyen balokrol, pedig egy evben 3x szokott lenni (tavaszi, Katalin, szilveszter) - mindenesetre tegnap is volt. Es mint mindig, most is jol ereztuk magunkat, csak ajanlani tudom barkinek aki amugy szeret tancolni.

  • Thursday, 18 November 2010
    Rejourn: Using an unpatched version

    One may have noticed that right now my rejourn tree is empty. That’s not an accident, after Ram accepted my 15th patch, finally the site runs an unpatched version of rejourn - of course with a custom config and design.

    Of course I still have a few ideas on what to improve, so this is not the end of the story, but still - I’m happy he was so open for changes and new features that we reached this post. :)

  • Wednesday, 17 November 2010
    How to split gpx files using gpsbabel

    I usually just download the gpx track from my GPS and delete the track from device each time I arrive home and I was at some interesting place before. Last week this was not the case, I was at Gyúró two weeks ago, then I borrowed by device, without clearing the log from it.

    So the task was easy: I had a timestamp and I had the full log from the device, and I want to split it: before and after a given timestamp. It turned out that I had some log from Oct 28th as well, so I wanted:

    • The log till Oct 28th

    • The log between Nov 5th and 8th

    • The log after 10th.

    Luckily the gpsbabel documentation is quite clear in this area (see Example 4.8), I just needed the following commands:

    $ gpsbabel -t -i gpx -f in.gpx -x track,stop=20101028 -o gpx -F out1.gpx
    $ gpsbabel -t -i gpx -f in.gpx -x track,start=20101105,stop=20101108 -o gpx -F out2.gpx
    $ gpsbabel -t -i gpx -f in.gpx -x track,start=20101110 -o gpx -F out3.gpx

    Update: two more notes:

    • the stop is exclusive, start is inclusive

    • when using the result in digikam, the camera time zone has to be set to "manual: gmt+0", even if both the gpx result and the camera time is in local time

  • Sunday, 14 November 2010
    OpenOffice.org: vmiklos01 CWS integrated

    Once I was ready with this year’s GSoC work I started to submit it back to OpenOffice.org. Before that was completed, LibreOffice was launched, though I thought if I started working on submitting it to OpenOffice.org as well, I’ll finish it. About 6 weeks later they now integrated (merged) the vmiklos01 CWS (the branch containing my GSoC work) to DEV300, what will became OpenOffice.org 3.4 later.

  • Saturday, 13 November 2010
    The Social Network


    Tegnap lattuk a cimben szereplo filmet. Egy tipikus valos tortenet alapjan jellegu film, szoval nyilvan van alapja, de azert nem kell szoszerint venni mindent:

    In real life, he (Mark Zuckerberg) was just sitting around with his friends in front of his computer, ordering pizza … Who wants to go see that for two hours?

    — Sheryl Sandberg

    Az mindenesetre tetszik, hogy Mark Zuckerberg nem feher vagy fekete embernek van beallitva.

    Pozitivan allitja be (szakmai reszletek):

    • LAMP mania (meg akkor is, ha nem vagyok LAMP fanatikus, meg mindig jobb, mint valami Java vagy Microsoft technologia ;) )

    • tul nagy baromsag nem hangzik el, leszamitva a film vegen levo ping localhost es egyebeket. :)

    • vegre egy film ahol nem mindenki Mac-ezik, hanem KDE-t tol. ;)

    Ezen kivul az is elhangzott, hogy nem az egoja miatt keszult a film:

    I just wished that nobody made a movie of me while I was still alive.

    — Mark Zuckerberg

    Meg talan ehhez hozzaadodik meg a Wikipedian olvashato egyeb pozitiv sztorik, mint pl a donation-ok, stb.

    Es szerencsere nem feledkezik meg a negativumokrol se:

    • a nem tul legalis kezdes ;)

    • a kezdeti penzugyi segito kikozositese

    • az otlet lopas (bar az is egy erdekes gondolat, ami elhangzik a filmben, hogyha valakinek jo otletei vannak, akkor nem gaz ha ellopnak egyet, majd kitalal masikat)

    Ezen kivul amugy vannak a filmben jo poenok, az evezos jelenet filmes szemponbol is jol meg van csinalva, szoval elgondolkodtato film sztem, csak ajanlani tudom.

  • Friday, 12 November 2010
    Google account migration

    The whole story starts here. The whole conflict is about I had a google account with my vmiklos.hu domain already, but now the google apps account took it over and they asked me to rename the old account to something else.

    I joined the early adopter program and I was happy about it, finally I could access Picasa with my google apps account, though I could not make it to picasa.vmiklos.hu or something. But at least I could use it.

    Why I’m writing is that now they changed something regarding google groups as well, since I just noticed I can no longer post to the invite-only lists hosted on google groups where I use my personal address… It turns out the trick is to get the old (renamed) address unsubscribed and get the new one subscribed.

    I’m not really claiming, since the new state is much more clear, but this unsubscribe + subscribe dance is rather uncomfortable…

    Oh, and a related doc link in case you want to use gtalk on your domain as well (for now I decided not to use it).

  • Wednesday, 10 November 2010
    German comment finder mentioned on LWN

    So we had this script with Jonas, and the current news about it is that it’s mentioned by in this LWN article. I just innocently read the article and noticed:

    After ten years, the code still has over 100,000 lines of German-language comments; those are now being targeted with the help of a script which repurposes the built-in language-guessing code which is part of the spelling checker.

    — LPC: Michael Meeks on LibreOffice and code ownership

    Nice! :)

  • Monday, 08 November 2010
    Marty Ashton: 101 dolog, amit jo lett volna tudni az autokrol


    A cimben szereplo konyvbe szombaton botlottam bele, amolyan egypercesek gyujtemenye. Tehat tipikusan nem egyben elolvasando - talan nem meglepo, hogy en megis igy tettem. ;)

  • Sunday, 07 November 2010


    Tegnap lattuk ezt az 1984-es lengyel remekmuvet. Alapvetoen csak szorakoztato, de van benne nemi tanulsag is. ;)

  • Friday, 05 November 2010
    BitlBee 3.0

    Even if I gave it a quick testing about two weeks ago, now I tried the new Twitter / identi.ca support and I like it a lot. Now messages are not coming from a single user by default, but a separate channel is created, nicks are appearing there, and I can just highlight people to reply to their last tweet or simply type to submit a new one.

    And of course my Skype module still works, as Wilmer fixed it up. :)

  • Thursday, 04 November 2010
    tgt is now available as a package

    Today I packaged tgt an iSCSI target (server). The upstream package provides a large number of examples, though I thought it’s a good idea to note what I used for testing:

    # egrep -v '#|^$' /etc/tgt/targets.conf
    default-driver iscsi
    <target iqn.2010-11.local.test:storage>
        backing-store /dev/sdb

    Something offtopic: a rejourn patch accepted and a LibreOffice bug fixed today.

  • Wednesday, 03 November 2010
    Handy Latex bookmarks

    Today I had some Hungarian mathematical logic notes to type in Latex, and again I had to dig up the various references to get the proper symbols I needed.

    I used the following pages:

  • Tuesday, 02 November 2010
    QtSql vs. SQLite

    The problem was the following: I had this example code and the size() method just gave me insane result all the time, while just changing the driver to QMYSQL made the code work properly. After asking on #qt, I have been pointed out that the SQLite backend of QtSql does not support the size() method. :/

    So - for now - I’ll just use MySql for my unit tests, even if that means I have to manually truncate the contents of each table. Worths checking a bit later again, though - since I already used in-memory SQLite for my unit tests when I had a project in PHP with Doctrine, and it was working just fine.

  • Monday, 01 November 2010
    A song mentioning Frugalware!

    chee on #frugalware linked a song and its lyrics, mentioning Frugalware. Please don’t compare it to an OpenBSD professional release song, then you’ll like it! :)

  • Sunday, 31 October 2010

    The story is old, it was exactly 3 years ago when last time I switched the engine under my blog. That time I switched from my custom php/mysql blog to b2evolution, and I hoped that using that engine it’ll require less time to manage it. Actually this wasn’t true:

    • When the php-5.3 upgrade came, I had to manually fix stuff.

    • I got a lot of spam, even if the captcha provided by the ready-to-use b2evo plugin was enabled.

    • The last thing: It turned out that it created the SQL schema in latin2, so utf8 comments had problems.

    At that point I had enough trouble to think about migrating away from b2evo. And then I found rejourn, which is quite close to what I think is ideal to me. I just changed it a bit:

    • Added asciidoc support next to markdown.

    • Added RSS support, as my blog is part of the Frugalware and the LibreOffice planet, and I didn’t want to lose those readers.

    • Added support for tags, so that I can have a feed with a given tag only (to avoid OT posts on planets).

    Before you ask: yes, I plan to submit back these feature to rejourn, if Ram accepts them. ;)

    And finally, some more benefits:

    • the whole blog is now static HTML, generated by a single Makefile (so it’s faster + the server load is lower)

    • I can blog while I’m offline then later just git push the result.

    • I no longer have to use WYSIWYG editors or write HTML manually, I can use asciidoc. :)

    Update: I forgot to mention:

    • I put up a simple b2evo → rejourn conversion script.

    • I just discovered that when I get email about new comments, I can reply via email as well - that’s really cool! :)

  • Saturday, 30 October 2010
    LibreOffice RTF exporter sajtokozlemenyben

    Ki gondolta volna, hogy kkemenczy addig lobbizik, amig sajtokozlemenyben is megemlitik. ;)

  • Monday, 25 October 2010
    Slides of my GSoC 2010 Presentation

    As requested, the slides of my presentation, titled "GSoC project: Improving RTF Export - Presentation of a Go-OO student" are available here.

  • Sunday, 24 October 2010
    openSUSE Conference 2010

    So I have been invited to this year's openSUSE conference in Nurnberg to give a short presentation about my GSoC work (the RTF export rewrite in LibreOffice).

    As I expected, the really interesting part was to meet people I never had the ability to meet in person previously - and of course to learn other new stuff. :)

    So some of the items I really liked:

    • We actually did some hacking, see here (thanks Cedric for pointing out the issue for me).
    • I learned about trigraphs - thanks Fridrich!
    • I now heard about flat ODF from Muthusuba.
    • Nice jokes by Tor about old UNIX systems where the default installation added a login for Kernighan and Ritchie by default. :)
    • Met great people from the LibreOffice team (Kohei, Noel, Muthu, Cedric, Tor, Fridrich, Petr, Lubos), and outside: Stephan Kulow (coolo, the ex-kde-master) and others.

    To sum up: thank you for the invitation, I enjoyed it! :)

  • Sunday, 17 October 2010
    Oszi teljesitmenytura helyett

    Szoval a teljesitmenytura honlapjan pentek este kiderult, hogy nem indul a biciklis valtozat, igy sajat turat csinaltunk tegnap.

    A kmora ezeket merte: ido 6h16m40s, tav 111.26km, atlag 17.7 km/h, max 51.8 km/h.

    Pontos utvonal itt.

  • Thursday, 07 October 2010
    LibreOffice: even on ppc

    You probably have read that ooo-build has been renamed to LibreOffice (technically it's just a rename).

    Test packages for i686 available here if you want to test it on Frugalware.

    Aaand this time, as a very special gift, ppc packages are available as well! :)

    I just built it, but Bouleetbil was kind enough to provide a screenshot when he tested it.

  • Tuesday, 05 October 2010
    gammu-1.28 issue

    I recently upgraded gammu from 1.27 to 1.28 in -current and I noticed that the backup of my phone is now way slower than before. The fix was trivial (already backported to the Frugalware package as well) for the maintainer so it's now fine again.

    Well done, mcihar! :)

  • Sunday, 03 October 2010
    Playing with libvirt

    I've been playing with libvirt in the last two days. My motivation was that I saw:

    1. plain kvm is not that fast
    2. there is this virtio framework which aims to make it faster
    3. using virtio directly is hard, better not reinventing the wheel and just try libvirt

    So if you want to try it yourself, you need to pacman -S libvirt, service libvirtd start. Check /var/log/syslog for error messages, in case it can't find some commands (bridge-utils, dnsmasq, etc.), install them.

    If you want to create a new virtual machine, you need pacman -S virtinst. Then you can use something like:

    virt-install --name=syncpkgcd-helicon --arch=x86_64 --vcpus=1 --ram=1024 --os-type=linux --os-variant=virtio26 --connect=qemu:///system --network network=default --cdrom=/virt/iso/frugalware-1.3-i686-net.iso --disk path=/virt/syncpkgcd/syncpkgcd.img,size=40 --accelerate --vnc --noautoconsole --keymap=us

    See man virt-isntall for more info about the meaning of the switches. One trick: kvm can't handle the gfxmenu in our grub on the install cd, so you need to disable that. One way to do it is to use vim -b frugalware-1.3-i686-net.iso, search for "menu /boot", and change "gfx" to "#fx". Then you can run virt-install. It'll start the install in the background. The easiest way (for me) to connect to the console is to create an ssh tunnel to the server running the kvm machine (for example ssh -L 5900:localhost:5900 server), then run krdc localhost:0 on my own machine.

    Next trick is that you need kernel support to boot from virtio disks (/dev/vda), that's enabled in frugalware-current.git but there were no rebuild yet, so you need to build it yourself for now.

    Once the installation finished, the machine will be shut down. You can use virsh to start it. Here is a great summary about virsh subcommands. Something not to forget: if you want to automatically start the machine after the host booted, use virsh autostart $name.

    (You can also do a service libvirt-guests add, that way all guests will be automatically suspended/resumed on shutdown/boot. Just to be clear: if you want the "resume if it was a proper shutdown, start if there was a power cut" feature: you need both init scripts because libvirtd will always start/resume autostart guests, but it will never suspend them on shutdown.)

    If grub hangs after reboot, try creating a small (I used 32MB) separate /boot partition first, that should fix the issue.

    virsh shutdown $machine won't work if you don't install acpid and enable it as well, so it's a good idea to do so.

    The last trick: if you want to use the virt-manager gui from your local machine to manage a remote host, it isn't trivial to do so. First, it would try to login via ssh as root, and that's disabled by default. (And why would you enable it?). Also, even if you allow that, it would try to use nc -U which is supported by the openbsd nc only, the gnu nc does not have such a switch. Instead, we can use socat to connect to unix sockets. So I created a wrapper script under ~/bin with the following contents:

    if [ "$1" == "-U" ]; then
            sudo socat - unix-client:$2
            /usr/bin/netcat $@

    Don't forget to add PATH=what_you_want line to ~/.ssh/environment, and include the full path of ~/bin there. This way you can keep using gnu nc and you can also login as a user to manage your machines, as long as you set up nopasswd sudo for your user for socat.

    Finally a mini-benchmark:

    The SBU of yugo (i686 buildserver, a bit old HW) is 645 seconds, SBU of an i686 guest on helicon (c2q machine with 8g ram) is 264, SBU of the host build on helicon is 76.

    I would call this usable (not right now, but once we sort out the kernel part). Finally something that is free software and is comparable to VMware ESX. :)

    Update: I recently did the same install with 1.4pre1 (which installs -current, so the kernel is 2.6.36), the list of tricks you still need:

    • separate /boot (haven't tried without)
    • edit iso image to get rid of gfxboot (tried, still fails without)
    • some problem with grub, you need to manually add "(hd0) /dev/vda" to /boot/grub/device.map, then run grub-install /dev/vda

    So no more custom kernel, boot from virtio works by default! :)

  • Saturday, 02 October 2010

    I've been testing anyremote during the last week. I'm aware that there is kanyremote and ganyremote available, but I wasn't really interested in those, since they would hide the glory details. :)

    So I decided to give the server mode mode a try and I choosed okular as a test application. My commandline is:

    anyremote -s bluetooth:19 -f /usr/share/anyremote/cfg-data/Server-mode/okular.cfg

    Once I started the server on my notebook I could choose it in the midlet on my phone in the j2me client and it worked as expected.

  • Sunday, 26 September 2010

    A multheti SZTAKI-s poznani kiruccanas utolso napjan a varsoi atszallasnal volt 10 szabad orank, igy bementunk a varosba kicsit korulnezni.

    Nehany kep itt.

    Ja es erdekes kiserlet volt, mivel nem volt sok idonk, tobb esetben csak ugy fotoztam, aztan a koordinatak alapjan kesobb panoramion kerestem vissza, hogy pontosan mi volt az az epulet, pl itt igy derult ki, hogy valojaban az "a" szinhaz. ;)

  • Saturday, 25 September 2010
    HP meztelen reklam

    Hewlett Packard, 2010...

  • Friday, 24 September 2010
    Scripts used in the Python 2.7 rebuild

    First, I could almost reuse the same set of scripts as described here. The only change I needed to do is that aborting the build loop after each fail is a waste of time, so now I did:

    for i in $(cat ~/test.list)
            echo $i
            cd ~/git/python27/source/*/$i || continue
            sudo makepkg -t python27,current -C
            git clean -x -d -f
            git checkout -f
            sed -i 's|python>=2.6|python>=2.7|g' FrugalBuild
            if bumppkg -t python27,current --rebuild "- rebuilt with python-2.7"; then
                    repoman -t python27 -k push
                    echo $i >> ~/failed.list

    Then investigated the failed builds manually.

    Oh, and obviously I no longer had to build the x86_64/ppc fpms manually, I just enabled syncpkgd for the python27 WIP repo.

  • Tuesday, 21 September 2010

    Mult heten a SZTAKI jovoltabol resztvehettem a Summer School Service Science 2010 rendezvenyen.

    Par cim ami felgyult:

    • Egyetem: ul. Powsta?ców Wielkopolskich 16, Pozna?, Poland
    • Szallas: ul. Do?ynkowa 9 D, Pozna?, Poland
    • Repuloter: Pozna?-?awica Airport, Bukowska, Pozna?, Poland

    Par kep itt.

  • Friday, 10 September 2010
    Next RTF fix: tables at the start of a document

    This was almost two days ago, but... So I got the next problem report from OS, where he attached a sample document which had a table at the beginning. The document text was exported but no the table structure. (So if you had at least one line of text before the table, the bug was not there, that's how I did not notice it.) The one-liner fix is now in the CWS and it's backported to ooo-build master as usual.

  • Saturday, 04 September 2010
    Four RtfFilter fixes

    During the week I got some feedback from Oliver Specht on my GSoC work. I decided to dedicate a whole day to address those issues (these were all regressions compared to the old RTF exporter). Here are the results:

    • Numbering indentations were problematic, this is now fixed.
    • Outline numbering was missing, fixed as well.
    • Explicit character style support was missing, I now implemented it.
    • Finally (which was the most time-consuming), text frames were now exported, this is now implemented, too.

    One remaining question is that he mentioned something is problematic with the table of contents export, but I could not reproduce the bug so far.

  • Sunday, 29 August 2010

    Mert mar annyian kerdeztek, hogy "es azt te nem is lattad?" - hat megneztem. Tetszett.

    (imdb, trailer)

  • Friday, 27 August 2010
    Globalsat BT-338X GPS

    Yesterday I bought a cheap GPS data logger / receiver, and given that the attached install CD did not support Linux, I'm collecting some hopefully useful links here.

    Putting everything together, to get the log from the device using bluetooth I first had to create an rfcomm interface, as gpsbabel does not support bluetooth natively:

    # rfcomm bind 0 00:0D:B5:38:BA:C6

    Then to download and erase the log from the device:

    $ gpsbabel -i dg-100,erase=1 -f /dev/rfcomm0 -o gpx \
            -F $(date +%Y-%m-%d).gpx

    The gpx format is fine in case you want to later reuse log with digikam's gpssync plugin (available from kipi-plugins).

    Now in case you want to convert it to kml to show on Google Maps:

    $ gpsbabel -i gpx -f $(date +%Y-%m-%d).gpx -o kml -F $(date +%Y-%m-%d).kml

    Finally release the rfcomm interface in case you don't need it anymore:

    # rfcomm release 0

    Update: there is also a gui which can be used to enable logging of altitude info, etc - just trivial patching is needed and it works with BT-338X as well.

  • Thursday, 26 August 2010
    Upgrading to Haven

    I just upgraded my box at work to Haven, here is a short post to mention two links:

    • ATM you need to manually upgrade nvidia-173xx if you have it installed (after -Syu) due to lack of xorg-server-1.8 support.
    • I needed this xorg config tweak to get my up arrow working again.

    Other than that, I removed my xorg.conf and instead I put this to the xorg.conf.d dir. I also added "nouveau.modeset=0" to /boot/grub/menu.lst.

    What else.. ah yes, I needed to change the keyboard model to evdev in the KDE System Settings.

    Other than that, it went fine. :)

    Update: the nvidia-173xx part is now fixed in both current and stable.

  • Monday, 23 August 2010
    The Lovely Bones

    Leginkabb ehhez tudnam hasonlitani, a "mi lesz velunk a halal utan" temat jarja korul, eleg szerencsetlen modon.

    Ami miatt talan megis erdemes lehet megnezni, az egyreszt a szerencses szereposztas: Mark Wahlberg (olasz melo), Susan Sarandon (alfie), Saoirse Ronan (atonement); valamint a jol megirt forgatokonyv: a rendezo vegig fenntartja a figyelmet azzal, hogy nem arulja el, lesz-e megegy gyilkossag a film vegeig.

    (imdb, trailer)

  • Saturday, 21 August 2010

    Az utvonal ilyesmi volt: Tokaj - Bodrogkeresztur - Erdobenye - Abaujalpar - Boldogkoujfalu - Boldogkovaralja - Boldogko vara - Abaujszanto - Mad - Tarcal - Tokaj

    Tokajba kocsival mentunk, meg a vegen Bp-en belul volt egy kisebb bringas szakasz.

    Ido: 5h03m18s, tav 103.8 km, atlag 20.5km/h (tehat nem siettunk), max 63.5 km/h.

    Resztvevok: LGee, Ventura, en.


  • Thursday, 19 August 2010
    Hackerspace Budapest

    A cimben emlegetett helyrol mar tobbszor hallottam dnettol, de idaig nem allt modomban szemelyesen megtekinteni a helyet. Ma tartott viszont Erlang temaban workshopot, igy mar megvolt a szukseges motivacio, hogy elkarikazzak odaig.

    A hely zsenialis, professzionalis bringatarolo fogadott, majd onnan felfele egy igencsak lepusztult, de a gyerekkori kuckokat felnottes stilusban megvalosito latvany fogadott, idealis terep arra ha valaki otthonrol elvonulva nyugodtan akar valamit butykolni.

    Az eloadason kivul legjobban a viragontozo tetszett:

    22:36 <@dnet> a rossz szkennert ingyen kaptuk egy cegtol, a csovek loot
                        UTP kabel boritasok, a virag ajandek, a vodor meg a
                        space kifestesekor kerult be

  • Thursday, 19 August 2010

    A multheten par napot toltottunk Pragaban, az ut soran felgyulemlett online tartalmakat igyekszem most egy csokorba gyujteni:

    Mielott vegeztunk volna a valogatassal/feliratozassal, masok megtettek gyorsabban, de vegul ma vegre sikerult idot szakitani a sajat kepeink publikalasara is.

    Elso korben ennyi, reszletesebb beszamolora most nem vallalkoznek, a kepekbol lathato, hogy az ido nagy reszet varosnezessel toltottuk. :)

    Frissites: meg par info amit mar nem akarok a TODO-mban tartani, ugyhogy ide irok:

    • A Budapestrol befuto vonat a "Hlavni Nadrazi" nevu palyaudvarra erkezik.
    • A szallasunk (a bences rendhaz) mellett levo hotelt Szent Adalbert hotelnak hivjak, postacime Markétská 28/1 Praha.

  • Thursday, 12 August 2010
    Minimalisata beszamolo ejjeli bringazasrol

    01:31 < LGee> mik a mai adatok?
    01:31 < vmiklos> mindjart megnezem
    01:31 < vmiklos> en most nem terveztem beszamolot irni
    01:32 < vmiklos> 2h27m21s, 36.94km, 15os atlag, max 59.6

    Bovebben itt. Ja es ez volt az elso alkalom SPD-vel terepen, de errol majd egy masik postban.


  • Sunday, 08 August 2010
    Szent Laszlo kilato-kapolna

    Szoval itt (bovebb info) jartunk, de kicsit elobbrol kezdtem.

    Az alapotlet az volt, hogy csinaljuk meg a k30-as turat. Szokas szerint Godollore is mar bringaval mentem ki, ott talalkoztam batyammal, aztan vele indultunk tovabb. Mogyorod es Fot kozott figyeltunk fel a cimben szereplo epitmenyre. Sajnos a tegnapi eso miatt eleg saros volt a kornyek + az ut teteje mar tul meredek volt a biciklizeshez, de szerencsere igy is max 50m-t kellett tolni a gepeket. Teljesen veletlenul osszetalalkoztunk ott egy parral akik elmeseltek, hogy az epitmeny by default zarva van, a Mogyorodi onkormanyzaton lehet elkerni a kulcsat, amit ok meg is tettek, igy felmehettunk. ;)

    Aztan Foton a minimalis magammal hozott kajat megettuk, vizvetel kozben egy helyi bacsi elmagyarazta, hogy azert a viz a legerosebb folyadek, mert az meg a hajokat is elbirja. (!)

    Vegul Godollon a Friczy altal nepszerusitett vendeglatoipari egysegbe tertunk be, ahonnan mar csak a szokasos hazagurulas volt hatra.

    Netto ido 4h59m01s, brutto ido 7 ora, tav 110.64km, atlag 22.1km/h (kifele siettem, mert nem akartam sokat kesni, igy meglepo modon Bptol Godolloig sikerult 24.9es atlagot produkalni), max 61.2km/h (Gellerthegyrol lefele vasarnap reggel kifejezetten tagak a lehetosegek).

  • Saturday, 07 August 2010
    Piszkos Fred, a kapitany

    Ez az a bizonyos Rejto-regeny amit annyiszor szoktak idezni:

    - Uram! A késemért jöttem! - Hol hagyta? - Valami matrózban. - Milyen kés volt? - Acél. Keskeny penge, kissé hajlott. Nem látta? - Várjunk... Csak lassan, kérem... Milyen volt a nyele? - Kagyló. - Hány részb?l? - Egy darabból készült. - Akkor nincs baj. Megvan a kés! - Hol? - A hátamban. - Köszönöm...

    Ugyhogy kivancsi voltam, milyen a konyv maradek resze es persze nem csalodtam. ;)


  • Thursday, 05 August 2010
    openoffice.org 3.3 early snapshots

    In case you got bored and you want to try something blending edge, have a look at my ooo33 repo.

    It contains an early snapshot of OpenOffice.org 3.3 (+ ooo-build patches, of course), including this work.

  • Monday, 02 August 2010
    googlecl and geeqie

    I recently tested two new Frugalware packages.

    googlecl is a commandline utility, I wanted to try it out as it has browser-based authentication, which is supposed to be compatible with Google Apps, while the API-based method used by picu is not. To make it short, in case you are in a directory containing photos for an album and you just want to upload all of them to an album named after the directory name, you need:

    google picasa create --title $(basename $(pwd)) *.jpg

    The other package I recently tested is geeqie, it's a replacement (see history here) for gqview I usually use to watch a lot of photos in a directory. And yes, they seem not to break any of the nice feature of the old gqview project, good work! ;)

    Update: there is a patch to add sync support, it's usage:

    google picasa post --title $(basename $(pwd)) --sync *.jpg

  • Sunday, 01 August 2010

    Tegnap ide is eljutottunk. :) A tura celja az volt, hogy kizarolag bringaval egy nap alatt megjarjuk Budapestrol a Kekest majd vissza, ami persze sikerult is.

    Terjengos beszamolo helyett par esetleg erdekes adat:

    Kmora: netto ido: 12h43m47s (ugy tunik a kijelzo nem bir ket szamjegyu orat kiirni igy aztan ebbol 2h lett, ami amugy 120 feletti atlagot eremmenyezne ;) ), brutto ido ~19h, tav 252.97km, atlag 19.8, max 61.5 km/h.

    Pontos szamitasok mellozese nelkul megjegyzendo, hogy kb 1500m szint volt a teljes tavon, igy nem meglepo a gyatra atlag. (Sot, hazafele az Ors vezer terenel meg 20 felett volt, aztan a vegen mar nem siettem, igy tovabb romlott. ;) )

    A masik erdekes dolog a sok piheno; itt kb 3 ora a legelejen (sarvedo-szereles) meg a csucs elott (eso) ment el.

    Energiabevitel celjabol a kovetkezok fogytak el: kb 5 liter viz, 4 sos kifli, 2 peksutemeny (dios kifli, kakaos csiga), 4 muzli szelet, 3 banan, 1 croissant, 1 csomag szolocukor.

    A tura a hosszu ido miatt elegge lefarasztott, ellenben termeszetesen izomlazat nem okozott. :)

    Par kep itt.


  • Tuesday, 27 July 2010
    chkdep improvements

    Yesterday I finally had a look at how chkdep removes duplicated dependencies. The whole idea behind the removal is that in case ldd says a package depends on libfoo and libbar + we know from pacman that libfoo already depends on libbar, then there is no point adding libbar to depends in most cases.

    The old code did the followings: it searched the depends of the packages found by ldd and in case a depend was found in the depend list of an other depend then it removed the depend from the list. The problem with this is that in case foo depends on bar depends baz and ldd finds foo and baz only, then baz won't be removed.

    The new code does the same but depends are detected recursively to avoid the problem mentioned above.

    As a result, makepkg -a output should be less noisy. ;)

  • Tuesday, 13 July 2010

    Kep sajnos nincs, nem vittem fenykepezogepet. Szoval mult szombaton mentem le bringaval a cimben emlegetett telepulesre. Az igazi ujdonsag a Velencei-to es Siofok kozotti szakasz volt, az ut tobbi reszen mar iden vagy tavaly jartam.

    Az este folyaman amugy fellepett a Hungarian Queen Tribute Band, kifejezetten elvezetes koncertet adtak.

    Ido: 6h32m03s Tav: 155.04km Atlag: 23,7 (ez erdekesen alakult, Siofokig vegig 25 felett lehetett jonni, csak Martonvasaron meg Velencenel volt nagyobb dugo, viszont Siofoktol lementem a bicikliutra, ahol a sok strandolo nep miatt sokszor lepesben kellett haladni) Max: 46.6km/h

  • Monday, 05 July 2010
    Az 501. utcai pekseg

    Egesz pontosan tegnap felkerestuk azt a pekseget, ahol majdnem ket eve jartam utoljara. Szerencsere meg mindig ott van. :)

    Ido: 2h14m01s, tav 47.33km, max 41.4km/h

    Szoval nincs megkozelithetetlen tavolsagra, egyszer erdemes felkeresni oket.

  • Monday, 21 June 2010
    CSS Validator HTTPS support

    Did you ever notice the CSS Validator does not support HTTPS? I sent two patches (ant dependencies fix, SSL Host verifier fix) to its devel list a while ago and they are now in CVS, hopefully they will soon upgrade their service as well. :)

  • Sunday, 20 June 2010
    Papszenteles Esztergomban

    Hogy mire is mentunk arrol bovebben itt. Az otlet az volt, hogy oda-vissza biciklivel megyunk, Dobogokon at.

    Reggel 7 korul talalkoztunk az Arpad-hidnal, onnan mentunk Pomazon at fel a Ket-bukkfa-nyeregbe, majd legurultunk Esztergomba. Ott atoltozes, es pont nem kestunk el. ;)

    Utana a kotelezo pizza es fagyi utan mar indultunk is hazafele, mivel estere a muzeumok ejszakaja volt a program, de errol majd egy kesobbi postban.

    Netto ido: 5h50m32s, tav 120.71km, max 61.2 km/h.

  • Sunday, 06 June 2010
    Balaton maraton 2010

    A tegnapi napunk nagyjabol a fenti esemennyel telt, par kep itt.

    A kmora ezeket merte: ido: 8h41m17s (brutto ido: ~9h35m), 209km, atlag 24 kmph, max 52.7 kmph.

    Mivel az esemeny Siofokon volt, elotte-utana meg volt kocsikazos program is, ugy tagabb ertelemben ertelmezve a brutto idot ugy 6h-22h-ig tartott. :)

    Update: eredmenyek itt. Szoval 525. es 526. lettunk (osszesen 778 ferfi indulo volt, ebbol 558 teljesitette szintidon belul).


  • Sunday, 30 May 2010
    Balaton maraton elomelegites

    Voltunk errefele ma, leginkabb azert, mert az utobbi idoben nemnagyon volt nagyobb lelegzetu tura, es nehogy az legyen, hogy a Balaton maraton majd tul sok lesz.

    Ido: 5h45m53s (brutto: ~8h-15h) Tav: 133.95km Atlag: 23.2 km/h Max: 42.5 km/h

    Eleg szegyenletes modon igy lett most meg az idei 1000. km-em. ;) (A februar-majus idotartamban sajnos 2x is le kellett mondani nagyobb turat + a szokasos napi bringazasok is sokszor elmaradtak a korulmenyek miatt.)

    Az utvonaltervezesert es tarsasagert szokasos modon koszonet LGee-nek.

  • Monday, 24 May 2010
    A tizennegy karatos auto

    Valami nem-scifire fajt a fogam, hat e mellett dontottem. Nem volt semmi kulonosebb oka, hogy pont ezt, csak valami Rejtot kerestem, leven ez nagyon tetszett annak idejen.

    Termeszetesen nem csalodtam, alljon a szokasos modon itt par kedvenc resz:

    - Gorcsev Iván vagyok, foglalkozásomra nézve huszonegy éves, a Naszja Gorjodin-beli báró Gorcsev cári kamarás testvéröccsének a fia. Atyám kapitány volt a gárdában, és nagybátyám a Jusztveszti Versztkov kormányzóság katonai parancsnokaként védte Ogyesszát a fellázadt hadiflotta ellen.

    Mindebb?l egy szó sem volt igaz. De egészen fiatal lánykák és öreg tudósok hiszékenysége állítólag korlátlan. A tanár feltette csíptet?jét.

    Még borotválkozni is akart. Az ember ne álljon be akárhogy a légióba. Törülköz?t kötött a nyakába és kinyitotta a mindennel felszerelt, hatalmas gardróbszekrényt.

    Ám ekkor legnagyobb csodálkozására az alsó polcról Vanek úr esett ki a padlóra.

    - Uram! Miért nem kopog az ajtón, ha benyit valahová!

    - Ezt a lakosztályt én bérlem!

    - De a szekrény az én magánlakom! My house is my castle!

    - Vanek úr! Én a mennyekb?l hullottam alá.

    - Mégis én ütöttem meg magamat!


  • Sunday, 23 May 2010
    Ejszakai tura (sokadik)

    Kezdjuk ott, hogy a kepet teljesen veletlenul most talaltam meg, ez meg a marciusi szokasos emlekturan keszult, ahol ugy alakult, hogy egesz sokat tekertunk hoban.

    Szoval visszaterve a mai turara: start 23h korul, Margit hid - Janos korhaz - fel az erdoben a Normafara - onnan le a Martonhegyi uton, majd eszakrol megkerultuk a Farkasreti temetot, vegul le a BAH csomoponthoz.

    Az izgalmas resz nyilvan a Normafa fele felvezeto resz volt, nem lehetett elore tudni, hogy a delutani esozesek miatt mennyire lesz sar, de cserebe itt garantaltan nem volt autosforgalom. ;)

    A kmora ezeket merte: ido: 1h34m39s, 26.19km, atlag 16.5 kmph, max 59.8 kmph.

    Tenyleges hazaerkezes kicsivel 2h elott, LGee-nek valoszinuleg picit kesobb. :)

  • Wednesday, 12 May 2010
    Fege koncert

    Ki szoktam javitani az embereket, altalaban mi nem koncerteket hanem ahitatokat csinalunk hamar nem misen gitarozunk, de ez most tenyleg az lesz.

    Reszeltek itt, a 13. oldalon. (Sajnos pdfeknel nem lehet oldalszamra deeplinkelni mint youtube videoknal min:sec-re.)

  • Sunday, 09 May 2010
    A mezitelen nap

    Annyi elonye megvan az egy hetvege laz miatt agyban toltesenek, hogy a mar regota elkezdett konyvem vegre volt idom befejezni.

    Izelitoul ket reszlet:

    – Add ide a kezed, Daneel! – Daneel a saját kezére meredt. – Már megbocsásson, Elijah partner. Baley elátkozta magában a robot szó szerinti gondolkodását. – Segíts ki a fotelb?l – helyesbített. Daneel er?s karja könnyedén kiemelte a székb?l.

    Az élet legf?bb értelme vész el, ha nincs meg az emberek közötti együtthatás; elvész a legtöbb intellektuális érték; elvész a legtöbb dolog, amiért élni érdemes. A távnézés nem helyettesítheti a látást. Maguk a solariaiak azt hiszik, hogy a távnézés az érzékszervek meghosszabbítása. És ha az elkülönülés nem elég a stagnáláshoz, akkor ott van a hosszú életük. A Földön szakadatlan áradatként színre lépnek a fiatalok, akik készek a változtatásra, minthogy még nem volt idejük megcsontosodni. Szerintem itt lennie kell valamilyen optimumnak. Eléggé hosszú élet ahhoz, hogy learathassa a sikereit, és eléggé rövid ahhoz, hogy átadja a helyét a fiatalságnak, méghozzá nem túl lassú ütemben. Solarián ez az ütem túlságosan lassú. Minnim még mindig figurákat rajzolt az ujjával.


  • Tuesday, 27 April 2010
    GSoC 2010

    On Mon, Apr 26, 2010 at 06:46:38PM +0000, socghop.noreply@gmail.com wrote: > Dear Miklos, > > > Congratulations! Your proposal "Improve RTF Export" as submitted to "Go > OpenOffice" has been accepted for Google Summer of Code 2010. Over the next > few days, we will add you to the private Google Summer of Code Student > Discussion List. Over the next few weeks, we will send instructions to this > list regarding turn in proof of enrollment, tax forms, etc. > > Now that you've been accepted, please take the opportunity to speak with > your mentors about plans for the Community Bonding Period: what > documentation should you be reading, what version control system will you > need to set up, etc., before start of coding begins on May 24th. > > Welcome to Google Summer of Code 2010! We look forward to having you with > us. > > > With best regards, > The Google Summer of Code Program Administration Team

  • Friday, 23 April 2010

    Time to say bye-bye to adsl!

    The optical fiber is now only 260 meters away and that means it's possible to order vDSL here.

    That means that means that the average download speed is now about 14MBit/s while it was about 5MBit/s with adsl. :)

    Completely unrelated: if you use ps2pdf and the margins a screwed up, don't forget to give -sPAPERSIZE=a4 a try.

  • Tuesday, 13 April 2010
    Solving kernel bugs without bisecting

    So after I upgraded to Linux-2.6.33 my wifi card stopped working after resume. I way lazy and I had no time to bisect it, so I just ignored the problem for a while, then today I looked up the lkml thread and bingo, an easy workaround is there. ;)


  • Friday, 09 April 2010
    MKK ejszakai bringazas

    Szoval ez volt tegnap. Kis statisztika:

    Netto ido: 3h20m13s Atlag: 16.9 kmph Tav: 56.49km Max: 72.4kmph

    Elvileg kicsit kesobb lesznek kepek is. Ami meg nem fog latszani a kepeken az a jokis Csillaghegy elotti lejto, ahol (mint fenn is olvashato) egesz jol be lehetett gyorsulni. :)

  • Thursday, 01 April 2010
    Recent hacks, upgrade

    • ooo-build: two fixes for the configure script (perl, rsync)
    • the irssi script that renames facebook "u$bigint" nicks to real names based on whois info stripped chars with accents. a oneliner patch makes it possible not to drop chars with accents, just convert them to ascii.
    • The dazuko m8r merged my Linux-2.6.33 patch. \o/

    The rest of this entry is not about programming in fact - I upgraded a machine at work from Frugalware-1.1 to 1.2 and I though it may worth noting a few interesting facts:

    • The attitude of this bug is like the famous glibc one. In short: kde3 supported having the same wallpaper on two screens by automatically splitting it up - now looks like kde4 does not. I ended up splitting the wall up using GIMP as well. :P
    • kookaa is not really ported yet to kde4 so I needed to switch to kolourpaint.
    • While upgrading cups, I hit this bug as well. (Notice how Ubuntu calls bugs "answers". ;) )

  • Sunday, 28 March 2010
    Running the right command at the right time

    $ while :; do date -R; sleep 1; done Sun, 28 Mar 2010 01:59:59 +0100 Sun, 28 Mar 2010 03:00:00 +0200 ^C

  • Friday, 19 March 2010
    Marcius 15-i bringatura 2010

    Mint az mar lassan szokasos, iden is voltunk a marcius 15 kornyeken megrendezett bringas teljesitmenyturan. Eloszor elkeseredetten hallottuk, hogy nem indul a hosszabb 96 km-es tav, csak a 48-as, de aztan kiderult, hogy ez nem is olyan nagy baj, mivel az ut kb. harmada az erdoben ment ahol ~5 centi ho fedett mindent, igy ott lassabban is tudtunk haladni, egy ilyen tavu turara meg nem ugy indul az ember, hogy akkor ez egesz napos program. ;)

    Sajnos azota mar reseteltem a km-orat, de ami talan erdekes lehet: haztol hazig vegul 106 km lett mivel nyilvan bringaval mentem itthonrol ki csillaghegyre + pomazrol haza - kisebb kerulovel. Masik erdekesseg, hogy az utolso 10-15kmes szakasz az vegig lejtett, rendesen takaritott utakkal, igy a gyalazatos atlagot egeszen jol fel lehetett huzni, hiszen azon a reszen tobb helyen is lehetett 50 felett menni huzamosabb ideig.

    Osszessegeben kivalo program volt, ezuton is koszonet a szervezoknek!

  • Sunday, 07 March 2010
    Edited skype messages in BitlBee

    A user reported on #bitlbee that in case someone edits an already sent message using the Skype GUI client, BitlBee does not report the change. This used to work for about 2,5 years ago, but now I checked and true, it was broken. When I fixed it I realised that it would be nice to prefix the updated message with something to be aware that it's an edited message, not a new one. The result is pushed out to the git repo and a screenshot is available as well. ;)

  • Saturday, 06 March 2010
    samba, gentoo

    Sorry, I'm continuing the story of uninteresting challenges I had in the last two days. Or if they look like interesting ones, please continue. ;)

    Two days ago we (at work) had to repair a samba installation after a 3.0.x -> 3.2.x upgrade. There were 3 problems:

    • the firewall config had to be updated, to allow incoming tcp connections on port 445
    • somehow smbd was listening on ipv6 only, just listing all network interfaces in the config was enough to make it listen on ipv4 as well
    • for another strange reason it no longer accepted hostnames on its whitelist, using ip addresses directly did the trick

    The other story from yesterday was fix up the firewall configuration at a small office. The problem was that till now they had a PPPoE connection and the firewall used NAT to share the internet access to the desktop machines, but now they switched to a radio-based access, they got a new modem which did not support PPPoE. Of course in short I just got the usual "the internet does not work!" bugreport. ;)

    I must note that I'm not a sysadmin at this office, I just stepped in as the local sysadmin was a SPoF in the system and he (temporally?) disappeared and they asked me beause of "the hours is burning" effect. :)

    So all I had to do is to alter the server configuration, which was running Gentoo. I never touched such a machine before, and it's configuration is (of course, since I'm used to our netconfig) weird, but at least the off-line documentation was enough. So after RTFM, I just had to turn off pppoe, set the dns and the default gateway to the address of the new router and all was fine. One notable interesting fact was that there was no damn vi on the server. Given that emerge takes a lot of time, I had to suck with mcedit. :P

    Conclusion: yet another example why offline documentation is important, even in case nowadays "there is internet everywhere". ;)

  • Thursday, 04 March 2010
    gcalsync #3, vmware, xrandr

    First, I wasted a few more hours with my never-ending "sync events form my Nokia S40 phone to Google Calendar" project. The result: it's not a daemon, it checks if the last sync was more than a day ago, if it can ping google.com, and if both, but it can't reach the phone via bluetooth, then it raises a kde4 notification, and it also notifies me when (and how) the sync was done, so that I switch bluetooth off on the phone after the sync. As usual, available here.

    Second, I managed to fix two annoying bugs when installing Frugalware under VMware: dhcpcd did not update /etc/resolv.conf in the installer properly, now that I changed from dhcpcd to busybox's udhcpc, it seems to be fine. (And udhcpc still works fine in qemu as well.). The other vmware-related improvement is that the newport xorg driver somehow locked up the whole virtual machine, now it's moved to extra, so xconfig does not freeze the VM on a default install.

    Third, today finally I managed to figure out how to enable the external output on my netbook, using the openchrome driver. It's just about a single line in xorg.conf:

    Option     "ActiveDevice"               "LCD,CRT"

    This won't do more than just cloning the output, but it's far enough for me, who just uses the external output for presentation only.

    (There is a binary driver which locks up the whole machine about 5-8 times a day, which has a bit better external video support, but stability is far more important for me, and the openchrome driver _is_ stable.)

    Partly related, when I connected the external output to a projector, I had to set the screen resolution to 1024x768, and later back to 1280x800. 5 years earlier you had to edit xorg.conf and restart X to do this, now you can do this with xrandr:

    $ xrandr --output default --mode 1024x768

    and then to switch back:

    $ xrandr --output default --mode 1280x800

    OK, enough entries for today. :)

  • Saturday, 27 February 2010
    BSc diplomaoszto

    Ilyet kaptam ma. Persze sok ujdonsag nincs benne, ahogy a datumbol is latszik, megis jo erzes felrakni a polcra. Szep borkotes, rajta arany betukkel, hogy "diploma". ;)

  • Friday, 26 February 2010
    Memory upgrade to 3G

    So my netbook had 1G of ram so far and I was happy with it. Then I started to play with virtual machines and it turned out that the bottleneck of it is the small memory I have. So I just bought a 2G ram module, and at this point things started to be weird. Given that the system booted up and almost everything worked properly, I did not really had an idea. I thought it's a SW problem, so I did a clean Frugalware install on a separate partition as well, and there bash segfaulted in konsole as well sometimes. This ringed a bell, memtest!

    After about 15 mins, memtest found numerous errors, then I rode back to the shop where I bought it and I asked for an other module. The interesting points were:

    • Actually the good ram was cheaper than the bad one they gave me the first time.
    • When I inserted the 2G module, the original 1G ram wasn't anymore used as the 0-1G range, but it shown up as 2G-3G.

    Now I hope next time I have to increase my ram amount, x86_64 will be mainstream so that I won't have to suck again with a 'custom' architecture. ;)

  • Sunday, 14 February 2010
    Sparse checkout example in git 1.7.0

    Sparse checkout is now part of git-1.7.0. See here on what it is in general. Basically something what svn already knew for years and git did not. And of course git now does it better, since this way it's possible to checkout multiple sub-directories, not just a single one, what svn allows.

    Here is a short example:

    $ git clone ~/git/git
    $ cd git
    $ ls|wc -l
    $ git config core.sparsecheckout true
    $ echo ppc/ > .git/info/sparse-checkout
    $ echo perl/ >> .git/info/sparse-checkout
    $ git read-tree -m -u HEAD
    $ ls
    perl/  ppc/

    Enjoy! :)

    Update: see the comments, as it has been pointed out the "And of course git now does it better, since this way it's possible to checkout multiple sub-directories, not just a single one, what svn allows." sentence is incorrect; but of course having a similar feature in a distributed VCS is still an improvement. ;)

  • Tuesday, 09 February 2010
    pptp client howto on linux on console

    So I saw a few howtos on how to set up ms pptp client on linux, but they're mostly about how to click on networkmanager or other guis, so basically they hide the real detail, IOW what config files are actually used.

    First install the necessary packages:

    # pacman-g2 -S ppp pptp

    Here is what I have under /etc/ppp:

    # cat chap-secrets # Secrets for authentication using CHAP # client server secret IP addresses $user PPTP $secret *

    # cat options lock

    # cat options.pptp lock noauth nobsdcomp nodeflate

    # cat peers/$network pty "/usr/sbin/pptp $server --nolaunchpppd" name "$user" file /etc/ppp/options.pptp remotename PPTP require-mppe-128 refuse-eap ipparam $network

    And to bring up ppp0:

    # pon $network debug dump logfd 2 nodetach

    If it works fine, you can just use:

    # pon $network

    (Obviously replace $user, $secret, $server and $network with real values.)

    One thing I did not figure out is how to configure it to set the default gateway as well. Right now I use the debug mode, then in the output I see the remote address, finally:

    # route add default gw $remoteaddr

    Other than that, it works fine - without any damn gui! :)

  • Friday, 05 February 2010
    google adwords kupon

    Szoval jott par napja postan egy ilyen vacak, hogy 12e HUF ertekben lehet ingyen hirdetni Google AdWordson marcius 31-ig. A problema csak az, hogy engem az ilyen lehetoseg allatira nem erdekel. Ha valakit igen, az keressen meg privatban - szivesen odaadom.

  • Friday, 05 February 2010

    ma voltunk megnezni. igen, az imax 3ds verziot. abszolut bejott, es meg azzal sem ertek feltetlenul egyet, hogy csak az imax miatt.

    (imdb, trailer)

  • Monday, 25 January 2010
    darcs import on repo.or.cz

    I've contributed a patch to repo.or.cz to allow darcs imports, but and I recently got a reply for it from the maintainer. So we worked together a bit more and now the patches are in, repo.or.cz just imported the source of darcsweb.

    I also created a test project and tested that incremental imports work properly as well. \o/

    NB: It uses my darcs-fast-export tool, that's why I started to work on this. ;)

  • Sunday, 17 January 2010
    Lenovo Ideapad S12

    I bought this netbook about a week ago (the one with the Via card).

    Actually it costed 106 kHUF (~$550) instead of the advertised $400, but that probably due shipment costs, etc.

    Here are what requirements I had:

    • I wanted a simple video card, it's much more important for me that I don't have to use external kernel modules than the actualy 3D performance. So NVidia is clearly an overkill for me. I wanted Intel or similar.
    • 12"-sized LCD - my iBook had it and I loved it. I agree that it's too small when we're watching films with 5 other friends or playing games, but I don't do either regularly.
    • Touchpad. I don't like trackpoint.

    Here is what I got:

    • The Via card is so far OK, the openchrome driver has a nice community and at least 2D acceleration works fine, and they are working on the 3D one as well. (Other card types have 3D support, too - This type is just too new ATM.)
    • The LCD size is what I want - looks like you can't easily buy a 12" notebook, but a 12" netbook counts as a high-end one.
    • Of course it has touchpad.

    Let's see what extra does it have:

    • VGA output (iBook had some custom output and I never got a VGA converter cable.)
    • Bluetooth
    • SD-Card reader
    • Webcam
    • KVM support
    • HW mpeg2/4 and dm-crypt support

    What's wrong with it:

    • The cover is shiny, the mark of the fingers are left there when you grab it.
    • No optical driver, but hey, it's a netbook!

    Let's see Linux support: First, the machine is shipped with Windows XP. The bios updater is windows-only, so I updated the bios before I rm -rfed the whole preinstalled contents.

    What works:

    • Via Nano CPU: works fine.
    • Via card: after installing the opencrome driver a simple 'xconfig' from frugalwareutils did its job, no other tricks were necessary.
    • SATA controller works fine.
    • Wired ethernet works fine.
    • Wireless: the in-tree b43 works for WPA APs but not with unsecure ones. The binary bcmwl driver works in the later case as well.
    • SD-Card reader works out of the box.
    • Sound is fine.
    • The webcam works with mplayer using the "mplayer -tv driver=v4l2:device=/dev/video0 tv://" command.
    • Bluetooth is fine.
    • KVM support (vmx flag) is there in the CPU.
    • dm-crypt has HW support, so copying to a truecrypt volue isn't slower (~40mb/s) than copying to an unencrypted one.

    What does not work with Linux:

    • There is no ideapad-acpi module to turn on or off wifi/bluetooth in the Embedded Controller (EC) of the ideapad. In my case I enabled wifi only when I updated the settings of the EC back in Windows, so Bluetooth is disabled. Feel free to post in commends if you have ideas how to set the EC from Linux. ;)
    • The 3d and mpeg2/4 decoding HW support of the graphics card doesn't work.
    • Hibernation is broken due to the weakness of the openchrome driver.

    I think that's all. As always, it's possible that these limitations can be avoided in the future, who knows. ;)

    Ah and the battery works for 5 hours with wifi enabled, I think that's nice. (And probably it's due to the LED-powered LCD.)

    In case of questions, please post them in the comments and I'll try to reply.

    PS: It doesn't really belong here, but if I was at it, I also switched (compared to iBook):

    • to x86_64 from ppc
    • to ext4 from ext3
    • to kde4 from kde3

    Update: I did a backup about the config files, reinstalled Windows XP, enabled the bluetooth in EC, and installed i686 for now. So the changes are:

    • Bluetooth is now working perfectly
    • 2D acceleration is stable (ie. if you start mplayer -vo xv the second time, it won't freeze)
    • Suspend to disk works fine, as it was expected.


  • Friday, 15 January 2010
    MSc: FP >= ATKP -> F = true

    Gyengebbek kedveert: "Felvételi döntés: Felvételi pontszáma elérte az államilag támogatott képzés ponthatárát"

  • Monday, 11 January 2010

    Say you have two servers, the first is just a mail proxy, the second is a real mail server. So the MX record points to the first box and you usually just read your mail on the second one.

    We use this system at frugalware.org as well to make the service a bit more robust: if genesis (the "second" box) goes down, the proxy machine(s) can just queue up the input and in case one of the proxy machines go down, then the sender will just try an other proxy.

    The problem occurs when the "second" box goes down and you need to read your mail ASAP. Let's say you have access to the first box. You see in the output of 'mailq' that there are messages in the queue but how to read those mails?

    'mailq' gives the ID of each message, and then the following script (I call it 'mails' - s for show) can generate mbox format from it, which means you can read it with for example 'mutt -f foo.mbox'.

    The script itself is fairly easy:


    echo 'From news@gmane.org Tue Mar 04 03:33:20 2003' |sed '1,/^\*\*\* MESSAGE CONTENTS/d;/^\*\*\* HEADER EXTRACTED/,$ d'

    (And of course it's possible there is a better tool to do the job, but I use this for months now.)

  • Sunday, 10 January 2010

    2009-es film, elegge scifi jellegu ezzel a robotos temaval. Egy egyszeru alapotlet, es megis vegig fenntartja a figyelmet. Nekem tetszett.

    (imdb, trailer)

  • Saturday, 09 January 2010
    Uj prezentaciok es videok

    Kiraktam ket rovid prezentaciot, a BME-s onallo labor meg szakdoga vedesrol a szokasos helyre, termeszetesen a TeX forrassal egyutt.

    Hamar ez a prezentacio-dolog elojott, feltettem par korabbi videot is:

  • Friday, 08 January 2010
    Szokasos evvegi osszefoglalo

    Ahogy tavaly (meg a korabbi evekben), iden is adta magat, hogy csinaljak ilyen listat, hogy mi volt jo az elmult evben. A kulonbseg csak annyi (azon kivul, hogy csak addig gyujtottem amig jolesett, nem 10-ig), hogy most nem volt idom ezt szilveszterkor postolni, de jobb kesobb, mint soha.

    Idobeli es fontossagbeli sorrenddel nem torodve:

    1. Februarban eletemben eloszor voltam Franciaorszagban, sielni
    2. Aprilisban ismerkedtem meg Vele ;)
    3. Tobb, mint 4 ev utan raszantam magam, hogy fogorvoshoz jarjak, szerencsere az itteni "kiosztott" is tokjo, szoval egy vasamba se kerult
    4. Nyaron voltunk egy hetet Romaban
    5. BME: meg tavaly evvegen levizsgaztam az utolso BSc-s targyambol, igy most januar elejen mehettem zarovizsgazni
    6. Szeptemberben vettem egy Kona Caldera bringat, azota se bantam meg. :)
    7. Nemsokkal utana volt a Margita kupa utolso bringas teljesitmenyturaja, aminek az eves teljesitmenyet kupaval jutalmaztak. ;)
    8. Iden nyaron (a GSoC tamogatasaval) a swig-en dolgoztam, igazi kihivas volt, es kifejezetten erdekes 2heti idotoltes.

    Nem olyan nagy dolog mint a tobbi, de amugy novemberben volt az ominozus eset, hogy meguntam az ujabb b2evo verziokhoz portolgatni a custom patcheimet, rajottem, hogy annyira nem is fontosak, ugyhogy most "vanilla" b2evo fut.

  • Thursday, 07 January 2010
    district 9

    Huh, ijeszto visszanezni, hogy tavaly augusztusban irtam utoljara filmrol. :)

    Szoval ezt vmikor az osz folyaman lattam, scifi, de eleg otvar, az urlenyek kulonlegessege, hogy folyik beloluk a takony, feketet hugyoznak es ehhez hasonlok. :P

    Egyszernezos, de egyszer azert erdemes, a "tipikus hulye amerikai" sztereotipia tetszett, meg amugy maga a tema erdekes (egy embert megfertoznek a gepek es elkezd maga is atalakulni geppe).

    (imdb, trailer)

  • Tuesday, 05 January 2010
    New firefox profile

    I'm continously upgrading my Frugalware installation, IIRC I installed 0.2 on this Clevo machine and I never saw any reason to reinstall. Sadly the situation is not that easy with applications, for example firefox's profile tends to grow from 20M over 100M and the only way to really get rid of all the junk it has is to start over.

    Given that in the last month I did not really have time such minor problems, now I decided to solve this by doing an mv ~/.mozilla{m,.orig}.

    I must note that I'm not a typical firefox user, given that I store my passwords in cpm, bookmarks on delicious (as I use multiple machines and I trust those applications/services more than firefox), and finally all the extensions I use are installed via Frugalware firefox-$extname packages.

    Now I thought that this way the new profile usage will be easy enough, though there are still a few things to note:

    • The two delicious bookmarklets should be installed again.
    • The searchbar autosizer addon has bad defaults, I like to have the search bar with a fixed 203px size (355px on 1280x800)
    • Finally I forgot I have a custom userChrome.css:

      .tabs-newtab-button { display: none; } /* remove New Tab button */
    • Change browser.backspace_action to 0 to make backspace to a back (as on Windows).

    Other than that, no changes were necessary.

  • Sunday, 27 December 2009
    A Google sztori

    Errol a konyvrol lenne szo, most kaptam karacsonyra. Eloljaroban csak annyit, hogy mint azt sokan tudjak, egyreszt nagy Google fan vagyok (2x resztvettem a GSoC-ban, nyilvan keresesre enis hasznalom, stb) - masreszt viszont tudatosan nem hasznalok GMailt (pedig nyilvan emailezek), vagy GTalkot, annak ellenere, hogy a Jabbert napi szinten hasznalom.

    Tehat mi volt az elvarasom a konyvvel kapcsolatban? Az, hogy - ahogy a cim irja - egy tortenetet adjon elo olvasmanyos stilusban, lehetoleg nem ragva az olvaso szajaba, hogy akkor most a Google a hibatlan tokeletesseg, vagy maga a megtestesult ordog.

    Par idezet kedvcsinalonak:

    "A Google legtobb komputere ugyanis gepkozpontokban van elhelyezve, jellegtelen, temperalt raktarepuletekben, melyek tarolohelyet adnak berbe azoknak, akik online es biztonsagban kivanjak tartani gepeiket. A kilencvenes evek vegenek verseny-hangulata kozepette ezek az adatkozpontok meg negyzetmeter utan szedtek berleti dijat a tarsasagoktol, nem pedig a fogyasztott aram utan, s ez arra kesztette a Google-t, hogy annyi gepet halmozzon egymasra, amennyit csak lehetseges. Ezzel Reese es csapata megtakaritast ert el, de a villamosenergia arak hamarosan emelkedni kezdtek, egyes adatkozpontok csodbe mentek, ugyhogy a Google-nek olykor uj helyet kellett keresnie a gepei szamara. Miutan ezt ketszer-haromszor megcsinaltak, mar gondoskodtak rola, hogy a gepek allvanyzata kerekekkel legyen ellatva."

    A kovetkezo abszolut lenyegtelen a konyv szempontjabol, viszont mivel ujra es ujra visszatero kerdes, hogy pontosan mit ertunk mi (Frugalware fejlesztok) "frugal" alatt, hat itt egy ujabb megoldas:

    "Nervill-Manning alaposan tanulmanyozott nehany online kereskedot, ideertve az Amazon.com-ot is, azt figyelte, hogyan kezelik a kategoriara, arra, leirasra vonatkozo informaciokat. Hat honappal kesobb az elgondolasbol mar prototipus lett. Alkotasanak azt anevet adta, Froogle (szojatek a 'frugal' - takarekos szoval.)"

    Vegul a kovetkezo resz azert tetszett, mert egy (azt hiszem) sokunk altal ismert problemat jar korul:

    "Wes Boyd, a washingtoni MoveOn.org elnoke, azt mondja: - A Google a kiraly. A mert IQ-mat vagy 20 ponttal megemelte."

    Es persze ahogy fenn irtam, a konyv nem csak dicseretbol all, reszletesen elemzi, hogy milyen privacy problemak vannak a GMaillel, stb.

    Ha jol ertem akkor a konyv eredetileg 2005-ben jelent meg, de azota frissitettek, amit en olvastam az a 2009-es verzio kellett legyen, meg a Yahoo Microsoft altali nem-felvasarlasrol is szo esik benne, pedig az tavalyi sztori.

    Roviden osszefoglalva: nekem tetszett, ha az olvaso nem idegesiti fel magat azon a tenyen, hogy kb 20 oldalankent 3 mondat onmagat ismetli azzal, hogy "jaj de jo, jaj de gyors, mindent megtalal", kifejezetten kellemes kikapcsolodast kinal 2-3 napra.

  • Saturday, 26 December 2009
    source-highlight with Erlang support

    I wanted Erlang support in the syntax highlighter used by asciidoc. Currently the filter uses source-highlight as its backend, so I checked and unfortunately it had no Erlang support. A quick google found that there is a good shjs support which would ideally work out of the box with source-highlight. Of course it did not, but it wasn't hard to fix it up. Then I sent it to upstream. This was about a month ago.

    Then I just noticed it was accepted a few days ago, and now source-highlight-3.1.2 is out, so it's back in Frugalware-current \o/

  • Monday, 21 December 2009
    kredit-counter frissitve

    Nincs tanulas kategoria, ugyhogy lett ebbol is munka. Lenyeg a lenyeg, a mai dp vizsgaval megvolt az utolso BSc-s vizsgam, igy frissult a kredit-counter is, bar most igy nem tul intuitiv, az also sav idaig egy progressbar volt, ami most ert a 100%-hoz. A jovo ev indul az MSc felvetelivel aztan ha az sikerul akkor lesz alatta megegy progressbar, egyelore 0%-ra pozicionalva. ;)

  • Tuesday, 15 December 2009
    donau vege

    Habar az egeszben en csak minimalisan vettem reszt, ram is vonatkozott (es vonatkozik is) az a titoktartasi megallapodas, aminek eredmenyekeppen ezen a rovid szovegen kivul egyeb infot nem lehetett kiadni arrol, hogy pontosan mi a SZTAKI-ban jelenleg a legnagyobb projectunk. Noha ez a helyzet tulsagosan tovabbra se valtozik, a project lezarasakent volt egy sajtotajekoztato, igy aztan hirtelen lett par cikk a dologrol:

    Ja es meg par kep az ajandekrol, amit a japok adtak a projekt vegen. ;)

  • Sunday, 13 December 2009
    KDE3 apps I use

    Given that a lot of KDE3 apps are not just ported to KDE4 but replacement projects have been created, the upgrade is not trivial. I always declare myself as somebody who is a minimal KDE user saying I mostly just use konsole, but that's not really correct. From time to time I use the following apps as well:

    • kmix (systray icon)
    • klaptop (systray icon)
    • kxkb (systray icon)
    • krdc
    • kaudiocreator
    • k3b
    • ksnapshot
    • kpdf
    • konqueror (for GUI mounting of USB sticks, when I don't use pmount)

    And that really doesn't belong to here, but I still use gtk-based apps for browsing and picture viewing (firefox and gqview).

    I hope this post will be able to serve as a good personal checklist when we merge kde4 to current. ;)

  • Wednesday, 09 December 2009
    2.6.32 kms vs intel 8xx cards

    This story is a couple of days old, but in case you don't use Frugalware, and have such an Intel card, it may be interesting...

    Here is the bugreport, it took me about 1,5 days to bisect it, but at the end at least I have a workaround for the issue.

    Given that now Gordon Jin from Intel set its priority to high, I'm curious how long will it take for them to provide a solution.

    The sad part of it is that mplayer -vo xv still does not work, but the gl output is not so terrible, after all.

  • Thursday, 19 November 2009
    mplayer vs kms

    mplayer -vo xv is broken for intel 8xx cards in Frugalware-current since we enabled KMS. They are working on it, but till 2.6.32 is stable, I needed an interim solution. The problem is that now the default is -vo x11 which does not scale the movie at all when I enable fullscreen. So -vo gl works fine, and making this default is easy: just add 'vo=gl' to ~/.mplayer/config.

  • Tuesday, 17 November 2009
    Erlang sudo solver

    First, sorry I'm not yet publishing any code. It's about there is a race at the uni where the fastest implementation wins, so I don't want to share anything before that ends. It'll end in a month, actually. ;)

    Other than that, it's a generic sudoku solver, it can solve NxN sodukus, not only 9x9 and it handles extra rules. A detailed description is here (gt).

    But of course the purpose of this post is to bookmark a few useful page I found while working on my implementation:

    The important part of the later links is three lines:

    1> fprof:apply(foo, create_file_slow, [junk, 1024]).
    2> fprof:profile().
    3> fprof:analyse().

    That makes profiling Erlang programs really easy, once you get used to the output, which is a bit weird for the first time. :)

  • Wednesday, 11 November 2009

    Hetfon voltunk itt, immar masodik alkalommal. Roviden: "olyan mint a paintball, csak nem fogsz tole igy kinezni". ;)

    Nomeg olcsobb is, mi 3 menetet jatszottunk es az egesz 1800 huf/fore jott igy ki.

  • Monday, 09 November 2009
    Margita kupa 2009

    Mult kedden volt az atadasa az idei Margita kupanak, amire meg tavasszal en is neveztem.

    Az egesz cucc ilyen 20centi magas kb, es ha nem lenne kimontirozva akkor olvashato lenne rajta a versenyzo neve, a "Margita kupa" string meg az evszam.

    Ezuton is koszonet mindazoknak akik a turakon/kupaatadasra elkisertek: Annanak, Friczynek, LGeenek, zaivaldinak. (Remelem senkit nem hagytam ki. ;) )

    Ja, legjobb anyam volt, mikor megjelentem, kozolte, hogy "na ilyen se volt meg a csaladban". Bar teny, en se sportoltam semmit olyan szinten, hogy ilyesmit nyerjek, meg szuk csaladbol mas se. :)

  • Sunday, 08 November 2009
    Made in Hungaria

    Errol is akartam mar egy ideje irni, bo ket hete lattuk a cimben szereplo darabot, szombat esti programnak tokeletesen megfelelt. Tul komoly cselekmenyt nem kell varni tole, de volt ami ellensulyozta a dolgot.

    Leszamitva persze Fenyo Miki hatartalan ontomjenezeset... :P

  • Friday, 06 November 2009
    Fege adventi ahitat 2009

    Iden is lesz gitaros ahitatunk, reszletek a plakaton.

  • Wednesday, 28 October 2009
    Word Press Foto 2009

    Huh, lassan 2 hete, hogy ott jartunk, de most nem is feltetlenul a kiallitasrol akartam irni, hanem hogy a kiallitas utan volt a gallerian egy Indexes magyar valogatas is, es azok kozul volt tobb is ami nagyon tetszett. Izelitoul:

  • Tuesday, 27 October 2009
    HTTP head support in darcs-fast-export

    Ian merged my work today, so bzr-fastimport (which contains darcs-fast-export) from bzr now has it out of the box.

    This feature is about the following use-case: if you wanted to import a darcs repo to (for example) git, then you had to 'darcs get' the darcs repo first, then import it to git. Now darcs-fast-export can do this without a 'darcs get' if the repo is available via http, reading much less files, resulting less data transfer. :)

    (The trick behind it is that darcs-fast-export reads only the patches, while darcs get reads boths snapshots of the repo and the patches, so a darcs get takes much more time than a darcs-fast-export.)

  • Sunday, 25 October 2009
    Pairing with kbluetooth

    Here is the use case I saw: I try to run 'gammu identify' from commandline, it finds my phone, the phone asks if I want to pair with my notebook, I say yes, it asks for a pin code, and whatever I answer, the pairing fails.

    Looks like the way it works is the other direction: start kbluetooth, choose settings, devices, then set the mode to discoverable (for 3 mins, that should be enough). Then go to paired devices on the phone, choose delete pairing, then add the notebook again, it will ask for a pin and pairing will succeed.

    A bit weird, but it works at least.

  • Sunday, 18 October 2009

    Here it is.

    A simple script to first convert your phone's calendar entries to the ICS format, then to synchronize it with Google Calendar.

    The first part is pretty trivial, the second isn't. The main problem is that there is no standard API for doing so. At the end I ended up using the web UI from curl, which is pretty hackish, but at least works. :)

    Update: there is a new version here. I moved all cookie/form stuff to the curl config, so probably it'll be usable after 2 days as well... :P

  • Friday, 16 October 2009
    NKA polo

    dnet-tel arra gondoltunk, hogy egy csomo felesleges energiat meg lehetne sporolni azzal, ha nyilvanvalo lenne, hogy nem keresunk allast, es igy nem kene vegigvarni, mig a joszandeku ismerosok elmagyarazzak, hogy milyen jo melot talaltak nekunk. Erre keszult is egy polo-terv:

    Ha osszejonne 10 ember akinek kell ilyen akkor nagysagrendileg 1500 HUF / fo aron elo lehetne allitani.

    Kellene neked is egy ilyen polo? Akkor pls emailben jelezd, es ird meg a polomeretet is.


  • Wednesday, 14 October 2009
    Best "first patch", ever

    If someone is a major contributor in a project, it's always funny to search back the VCS logs to see what was the first contribution. Usually a typo fix or a oneliner patch.

    Partly related, cleanups are usually done by major contributors, so a cleanup is typically not e "first patch". Unless we are talking about me and gitmagic.

    The funny story is that my first patch is really just about removing two parts of the book. Both were listed as "known git bugs", one was solved a long time ago, and I just fixed the other one a few days ago.

  • Sunday, 04 October 2009
    Under the Radar Over the Top

    Ket napja jelent meg a Scooter legujabb albuma, a tracklista:

    1. Stealth
    2. J'adore Hardcore
    3. Ti Sento
    4. State Of Mind
    5. Where The Beats...
    6. Bit A Bad Boy
    7. The Sound Above My Hair
    8. See Your Smile
    9. Clic Clac
    10. Second Skin
    11. Stuck On Replay
    12. Metropolis

    A fekete-feher borito a Sheffield albumukra emlekeztet, bar stilusaban egesz mas. A "lopott" szamok:

    • A J'adore Hardcore erosen hajaz a Chase the Sunra.
    • A Ti Sento eredetije meg megegyertelmubb, leven a szam cimet se valtoztattak meg, valamint az eredeti vokal is egy az egyben megmaradt.
    • A Stuck On Replay a Stuck On You tovabbgondolasa.

    Na persze nem mintha a feldolgozasok nem lennenek jok, csak az azert mas kategoria. A tobbi nekem nem volt ismeros mashonnan.

  • Friday, 02 October 2009
    Free beer for a git patch

    I just received today a free beer, just because I contributed a patch to git. See here.

    Hacking is fun! :)

  • Tuesday, 29 September 2009
    iwiw.net vs firefox

    So iwiw.net has some flash + js interface to upload photos, but it seems firefox just segfaults here when I want to upload ones. Good idea, I should not bother with doing so.

    I've wrote a small script to merge all the lilypond PDFs I have to a single one. Far from perfect, but it's a start.

    I've just found album. It's an HTML index + thumbnail generator, it's a bit bloated, but it's not hard to tell it you don't want any extra features. Just downloading the script to $HOME/bin is enough and it can live without downloading any bloated themes.

    Ah and the thread on fw-dev about the intel driver vs kms just sucks. I don't have time to build 2.6.32rc1 right now...

  • Thursday, 24 September 2009
    launchpad brute-force maintenance

    Funny, when there is a maintenance on launchpad, they just filter the ssh port on the server, so you get:

    ssh: connect to host bazaar.launchpad.net port 22: Connection timed out

    Snip. I spent my time earlier today to make package moves in FST easier. Finally I modified the checkout plugin of our git hook framework so that if a FrugalBuild is moved from one dir to another, then the other files from the old dir are moved to the new dir as well.

  • Tuesday, 22 September 2009
    Interactive revert in git

    It's a long time since 'dg rev' could be replaced by 'git checkout -p', but that feature was missing from git.git. In the near past it got implemented and you can even avoid hitting enter after every y/n by saying:

    git config interactive.singlekey true

    One less feature which is unique to dg! (In the long run it would be nice if I could stop recommending its usage to users.)

  • Sunday, 20 September 2009
    hortus hungaricus

    ma hacktivity helyett erre jartunk.

    stat: time 3h10m45s, dist 51.88km/h, av 16.3km/h, max 44.5km/h

  • Thursday, 17 September 2009
    a2beamer and scalable graphics

    I spent some time with figuring out how to include piecharts and graphs in presentations.

    The nice fact is that both metapost and graphviz output eps, so the result is totally scalable. ;)

  • Wednesday, 16 September 2009
    Scooter @ BME Fesztival

    Az intro ilyesmi volt, aztan a kovetkezo szamokat hallottuk:

    1. Call Me Mañana
    2. Jumping All Over The World
    3. The Question Is What Is The Question
    4. I'm Raving
    5. J'adore Hardcore
    6. Weekend
    7. How Much Is The Fish?
    8. Nessaja
    9. And No Matches
    10. Jump That Rock (Whatever You Want)
    11. No Fate
    12. Jigga Jigga
    13. Maria (I Like It Loud) - ez utan volt egy kis szunet
    14. Ramp! (The Logical Song)
    15. One (Always Hardcore)
    16. Hyper Hyper - ebbol a Shake That maxijan levo re-editet jatszottak

  • Monday, 14 September 2009
    godollo 120

    az idei utolso aszfaltos teljesitmenytura tavja 50km volt, + 70km a startig/celtol haztol/hazig.

    ido: 5h15m14s, tav: 119.49km, atlag 22.7km/h, max 53.2km/h

  • Saturday, 12 September 2009
    kona caldera 2009

    szoval ilyen bringat vettem vegul. par kep itt.

    a vasarlasban valo segitsegert meg sok-sok koszonet LGee-nek. ;)

    ja es tekertunk is vele egy kicsit: ido 1h23m21s, tav 25.05km, atlag 18.0km/h, max 63.2km/h.

  • Saturday, 12 September 2009

    I just wrote a little script to allow generating beamer slides from asciidoc source.

    Snip. Vim tip of the day: you can do a word count on the current selected range if you press 'g' then ^G. (source)

  • Friday, 11 September 2009

    I gave kernel-mode setting a try today with xorg-server 1.6.1, xf86-video-intel 2.8.1 and kernel 2.6.31.

    From the NEWS file:

    The driver certainly will work best with an i915 module from a recent kernel (2.6.31) and with kernel-modesetting (KMS, specified by loading i915 with the option "modeset=1").

    Here is the result I got.

    Given that the Fedora people enabled KMS in 2.6.28, and now the kernel guys say that it's really fine in 2.6.31, I should probably give it a try next time around 2.6.34. ;)

  • Wednesday, 09 September 2009
    d2x, darcs-fast-import and the asciidoc repo

    I proposed a new merge for bzr-fastimport with the following hilights:

    • darcs-fast-import can now import the asciidoc hg repo
    • d2x -f hg (which converts a darcs repo to a hg one) now works with hg 1.3, and without my hg fastimport fork. The later is something I'm really happy about, because I hated recommending my hg fastimport patches, not being a hg people. :)

  • Tuesday, 08 September 2009
    darcs-fast-import bug with the trytond repo

    I got this bugreport today, luckily the fix was simple enough that I could provide it within 24 hours, yay. :)

  • Tuesday, 08 September 2009
    arc 2009

    Ma voltunk megnezni, keszult iden is par kacagtato mu. A tema a restart volt, avagy hogyan kene reagalni a valsagra. Nekem ez es ez tetszett a legjobban. A vizet nepszerusito kategoriaban pedig ez a plakat jott be leginkabb.

    Az osszes idei plakat amugy megtekintheto itt.

  • Monday, 07 September 2009
    b2evo 3

    I had an "upgrade to latest b2evo 2.x stable" on my TODO for a long time and then I realized that I would have to upgrade to 3.x. That's a nightmare, when I switched from 1.x to 2.x it took a few days till I ported my patchset to the new major version. Now that these days I don't care about details so much, I just decided to drop my hacks and return to the vanilla b2evo. This way the upgrade took only about 5 mins and as a side effect my 'hacking' posts are included on the main page as well.

  • Sunday, 06 September 2009
    eger 150

    gyorsan irok errol, mert ha minden jol megy a heten meg masik ket bringas temarol is lesz mit irni, es nem akarok nagyon elcsuszni a dolgokkal. ;)

    sajnos nincsenek pontos adataim, mert mar regen volt, de mindenesetre mult heten szerdan lementem bringaval egerbe meglatogatni Annat. a szokasos elokeszuletek (google maps utvonaltervezes, utana bikemap.net magassagterkep) utan tul sok meglepetes mar nem ert, a szokasos modon egy tizessel tobb lett a tav a gyakorlatban. a brutto ido az ilyen 9 ora korul lehetett, bar ebbol az utolso ora azzal telt, hogy egerben kerestem, hogy a panelek kozul pontosan hova kene menjek.

    kepeket nem csinaltam, de masok igen. :)

  • Sunday, 06 September 2009
    algr on ppc in gtk apps

    I just had to notice that recently the altgr key (right apple button) on my iBook does not work in GTK apps. But it does in QT ones. Of course. ;-)

    Though this time it was not a GTK bug but an xorg one.

    Now that these days we have git bisect, it was trivial to find the bad commit, though to make bug-hunting still fun, there were numerous xorg modules to poke before I finally figured out this will be an xkeyboard-config bug.

  • Friday, 04 September 2009
    git-clone doc bug

    So there is a one-liner fix I sent yesterday in the git-clone manpage. It was funny, because I tried to parse that sentence about 3 times, then realised that a coma is missing, then it made sense to me. ;-)

  • Sunday, 30 August 2009

    So a friend of mine showed that he has an offline map on his non-smart phone. A googled for mgmaps and figured out how to use it as well, but it wasn't really trivial, so I'm collecting some links here.

    First, you need the mgmaps midlet itself. I read that the KML support (ie importing favorites) has been improved in the development version, so I tried that one.

    Given that you must have a signed jar (or otherwise you'll get a question each time you scroll the map), I just went to this page and downloaded the signed devel midlet from there.

    The second one was to download the maps I'm interested in, without using the expensive GPRS connection.

    First I generated the .map file, using this page. It's really just about generating a descriptor file which contains the coordinates, wished zoom level and map type.

    The second step is to actually download the maps based on the descriptor file. I haven't played too much with this, the .net gmapmaker app did the job fine. Yes, a cmdline, opensource app would be better, but I don't really care.

    Now if I have a GPS coordinate, I can search for it off-line on my map, as long as it's in Hungary. :) (And the whole map is about 300MB, as I have the map for Budapest with an extra zoom level.)

    The third part is about transfering the google maps directions feature to the phone: ie getting the directions on google maps, saving it to a kml file, and using it off-line (for free) on the phone.

    This is partly implemented. See this thread on how to save the KML file. There is no nice blue line ATM for the directions (but they are working on it), but apart from that, you have everything.

    And yes, this is completely free (if you count the .net app, then only as in beer). :)

  • Monday, 24 August 2009
    ozd 160

    szoval csutortokon kitalaltam, hogy lemegyek bringaval ozdra. eredetileg ugy volt, hogy vasarnap vissza is bringaval jovok, de aztan inkabb haza akartam erni idore, igy csak egerig mentem, aztan onnan vonattal. a kihivas amugy az egeszben nem feltetlenul a tav volt, a margitai teljesitmenyturak alkalmaval mentem mar ennel tobbet is, viszont itt most 4napi cuccal kellett menni.

    par foto itt, ezuton is koszonet hugomnak a kolcsonadott gepert.

    magassagterkep itt.

    odafele: brutto ido 9,5h, netto ido 7h55m50s, 168.09km, atlag 21.1km/h, max 43.9km/h

    vissza: netto ido 3:09:10 (a brutto is kb ennyi volt, mert kb 2x5 percre alltam csak meg), 64.95km, atlag 20.5km/h, max 47.1km/h.

  • Monday, 17 August 2009
    the silence of the lambs

    imdb top250bol jott az otlet, meg valahonnan remlett mar, hogy valaki ajanlotta, hogy ez jo film. tenyleg az, bar azert nem disznek van az a pszichothriller megnevezes, nem egy romantikus vigjatek.

    ettol fuggetlenul tetszett, szerintem erdemes.

    (imdb, trailer)

  • Monday, 17 August 2009
    romai vakacio

    regi, fekete-feher film - egyszeru, konnyed. mivel nemreg voltunk Romaban, igy tokre jo volt ujra latni az osszes nevezetesseget meg ilyesmi, meg amugy is szeretem a regi filmeket. :)

    (imdb, trailer)

  • Sunday, 16 August 2009
    Making things harder over time

    So it's interesting that firefox 3.5 now requires one more click if you want to accept a self-signed cert. I think it's now at 4. And this means that a non-addict user basically won't be able to access those sites, it's already way more complex than what is acceptable for an avarage user.

    An other interesting aspects is version control. With SVN, you did only 'svn diff, svn up' and if both were a no-op, then you knew that you can start to work. With darcs, one more command was necessary due to local commits: 'dr what, dr pull, dr push'. And now with git (if you use local branches): 'git diff, git branch, git push, git pull'. (I admit that this second example can be simplified with a shell script, but still. ;) )

  • Sunday, 16 August 2009
    velence ujra

    az uj world domination plan az az, hogy aug 15 es 30 kozott tobb, mint 900 km-t tervezek bringazni. ha ezt (teljesen esszerutlenul) extrapolalnank eves szintre, az tobb, mint evi 21e km lenne. ;)

    ennek kereteben elso korben szombaton lenn voltunk a velencei tonal. az utvonal kb. u.az volt mint a multkori, pont azert, mert ez ilyen bemelegito jellegu volt a jovo heti ozdi turara.

    netto ido: 4h57m38s, tav: 109.44km, atlag 22.0km/h (ez egesz jo, igy rovid pihenoket tartva akar tartani is lehetne hosszu tavon a 20-as atlagot), max: 51.1km/h

  • Friday, 14 August 2009

    I recently made a mistake and instead of just erasing the bootloader from the MBR of a notebook, I erased the full MBR. Of course I made a backup before writing to MBR - but I made it to the second partiton of the disk...

    So I tried the parted and the gpart heuristics, but actually none of them gave usable results. Then I just dd'ed with netcat the whole hdd to my machine, used GetDataBack with wine, that found the relevant file, copied the mbr to a pendrive, plugged in to the notebook and dd'ed it back to the hdd.

    After a reboot, everything was back. Sadly I didn't really had time in the last one and a half day to do this, except last night. So I had frustrating 36 hours, as I wasn't entirely sure if this was possible to do or not.

    Life is good. :)

  • Friday, 07 August 2009
    dr. strangelove

    teljen cimen: "dr. strangelove or: how i learned to stop worrying and love the bomb".

    '64-es, fekete-feher film, imdb top250-ben bennevan. szigoruan vege a mufaja scifi, bar valojaban nincsenek benne urhajok meg ilyesmi, az akkori kozeljovoben jatszodik. nehol kicsit gagyi a technika, de sok jelenet filmes szempontbol nagyon igenyesen ki van dolgozva, es vannak benne kacagtato percek is.

    ja es attol meg, hogy a cimben ketszer is szerepel a "love" szo, ez tul sokat nem szamit, a szatira egyetlen noi szereploje gyakorlatilag jelentektelen szerepet jatszik a cselekmeny szempontjabol. ;)

    (imdb, trailer)

  • Friday, 07 August 2009
    the matrix

    (imdb, trailer)

    (imdb, trailer)

    (imdb, trailer)

    ha jol szamolom, most neztem meg harmadszor a trilogiat, ezuttal eredetiben. azt hiszem ez a masodik es a harmadik resznel jelentett leginkabb valtozast, a franciat eleg gagyi modon sikerult leszinkronizalni. vagy nem is, Lambert Wilson akcentusat tenyleg nehez lenne visszaadni magyarul. :)

  • Friday, 07 August 2009

    ha vegre valami hasznalhato. kicsit keresztapa erzes, de nem annyira kidolgozott. erdekesseg a noi foszereplo. szombat estere tokeletes. kar, hogy magyarorszagon nem hoztak a mozikban, szerintem lett volna ra kozonseg.

    (imdb, trailer)

  • Friday, 07 August 2009

    a film ugy kerult a latokorombe, hogy Ewan McGregor, meg hogy vmi pszichos temaja van es akkor biztos jo. hat nem. a film vege elott 5 perccel is azon gondolkodik az ember, hogy vajon mirol fog szolni, aztan a vegen lehet alkotni az elmeleteket. bar egy elonye van: kiprovokalja, hogy utana legalabb 2 mondatot beszelgessenek az emberek a filmrol.

    (imdb, trailer)

  • Friday, 07 August 2009

    ez kinn neztuk Munchenben, ilyen csaladi film. van benne Robin Williams. amugy meg semmi extra, de legalabb nem erthetetlen, mint Stay (mindjart jon arrol is egy bejegyzes).

    (imdb, trailer)

  • Friday, 07 August 2009

    hogy mondjak az ilyet? nincs a vegen happy end, tehat akkor romantikus filmdrama. telenyomva celebekkel, Jude Law (alfie), Natalie Portman (star wars, v for vendetta), Julia Roberts (pretty woman, oceans twelve), Clive Owen (children of men), szoval mind a negy filmszereplo ismeros volt, de a cselekmeny lapos. ha vmi miatt, akkor inkabb a szineszi jatek, mint a rendezes miatt erdemes. ha.

    (imdb, trailer)

  • Friday, 07 August 2009
    benjamin button kulonos elete

    lassan 2 honapja nem irtam filmrol, pedig volt azota 9, csak lusta voltam blogolni. most jonnek, mivel Tomee ma szobahozta.

    jo lenne ez, csak bazi hosszu. 2x majdnem belealudtam, pedig a kozepen tartottunk egy kis kaveszunetet is.

    (imdb, trailer)

  • Monday, 03 August 2009
    sysadminday sorozes 2k9

    ez volt elvileg a 10., de csak 10-15en voltunk.

  • Sunday, 26 July 2009
    bash bug

    Looks like I manged to hit a bug in bash itself. It was triggered by repoman, let's see how upstream will handle it.

  • Sunday, 26 July 2009

    I just wrote a short script (named after cvsuck that can download a whole CVS repo with anon access only) that can download a whole picasa album without installing any firefox extension, binary software from Google, etc.

    It's available here.

  • Thursday, 23 July 2009

    egyik kedvenc reszletem:

    "A naplót O'Brien számára - O'Briennek írja; olyasmi volt ez, mint valami véget nem ér? levél, amelyet soha senki sem fog elolvasni, mégis egy bizonyos személyhez íródik, s ez a tény adja sajátos színezetét.

    A Párt azt kívánja, hogy tagadjuk meg a szemünk és fülünk révén szerzett tapasztalást. Ez végs?, leglényegesebb parancsa. Winston elbátortalanodott, ha a vele szemben álló irtózatos er?re gondolt; arra a könnyedségre, amellyel bármelyik pártértelmiségi legy?zhetné ?t, ha vitára kerülne a sor; a ravasz érvekre, amelyeket ? nem lenne képes megérteni, s még kevésbé tudna felelni rájuk. És mégis neki van igaza! Azoknak nincs igazuk, és neki igaza van. A nyilvánvaló, egyszer? és igaz dolgokat kell megvédenie. A maguktól értet?d? dolgok igazak, ehhez kell ragaszkodnia!"

  • Thursday, 16 July 2009

    huh, majdnem egy honapja nem irtam. kedden jottunk meg Romabol, Annaval kozosen csinaltunk par kepet amikbol raktunk ki picasara.

    a szallashelyemm amugy itt volt. (postacim ertheto okokbol leszedve.)

  • Monday, 22 June 2009
    muzeumok ejszakaja 2009

    ahol jartunk:

    • vasarely muzeum: a pecsihez kepest nem annyira jo, amugy viszont igen, erdemes.
    • mai mano haz: fotokiallitas, erdemes
    • petofi irodalmi muzeum: itt valami szofacsaro nevu kabare lett volna, de kicsi volt a terem, szoval ez ugrott. cserebe volt radnoti/petofi/kazinczy-kiallitas, vegulis nem bantuk meg, mert (eleg erthetetlen modon) ki volt rakva a sandanimation.com-os video is, azt meg meg nem latta mindenki es akkor mar poen volt.
    • sziklakorhaz: itt hosszu sor volt, de eleg jol haladt, maga a kiallitas pedig erdekes volt, megerte varni

  • Saturday, 20 June 2009
    Merging in subversion

    I'm just talking about 1.5+, since before that version it's like there would be not git merge, just git cherry-pick. (You had to explicitly specify each revision. That's not merging.)

    A quick howto is here.

    A command which may be useful but left out is like 'git log master..branch', to see what revisions will be merged:

    $ time svn mergeinfo https://swig.svn.sourceforge.net/svnroot/swig/trunk/ \
    --show-revs eligible
    real    0m14.902s
    user    0m0.155s
    sys     0m0.013s

    Well, it's getting better, but as the blog post says it's still not git-like.

    Actually it's horribly slow, I'm still waiting for 'svn merge https://swig.svn.sourceforge.net/svnroot/swig/trunk/' to finish. ;-)

  • Sunday, 14 June 2009
    a hajnal bolygo robotjai

    egyik kedvenc reszletem:

    "Végül valami meleg köntösfélébe bújtatták. Ez aztán a luxus! Baley csecsem?kora óta nem részesült ilyen bánásmódban, és egyszerre sajnálni kezdte a kisbabákat, amiért nincsenek tudatában annak, milyen jó dolguk van. Vagy talán mégis? Talán a csecsem?kori jólét emléke befolyásolja a feln?ttkori viselkedést, és ? is csak azért olyan boldog most, mert újra csecsem?nek érezheti magát? És egy n?i hangot hallott az el?bb. Az anyja hangját? Nem, az lehetetlen. Mama? Baley egy széken ült. Ennyit fel tudott már fogni, és azt is érezte, hogy az újra átélt rövid és boldog csecsem?kor hamarosan véget ér, neki pedig vissza kell térnie a tudat és az önellátás szomorú világába. De mégiscsak hallotta egy n? hangját? Ki lehetett az? Kinyitotta a szemét."

  • Saturday, 13 June 2009
    velence 100

    hivatalosan asszem 98 lett volna, aztan meg tobb lett mint 100. a futas hianyzott a triatlonbol, viszont uszas es bringazas volt boven. tarsasagert koszonet MSD-nek.

    pontos tav: 110.25km, atlag: 20.9kmph, max 52.3kmph, netto ido 5:15:17, brutto ido ~10h.

    par telefonos kep itt, egy video itt.

    (az milyen mar, h picasara webes uirol nem lehet videot feltolteni? mondjanak le.)

    update: msd magassagterkepe itt.

    update 2: msd interaktiv, fenykepes beszamoloja itt.

  • Friday, 12 June 2009
    Navigation in big if-then-else code chunks

    So when trying to understand others' code, and they use large while/for/if blocks, it's hard to see where one if ends, unless it's on the same page so vim highlights it. I remembered already once that there is a char to jump to the start { of such a block from its end } and vica-versa, but I forgot it, so now I had to look it up again. It's '%'. :-)

  • Thursday, 11 June 2009
    spider-man 1-2-3

    (imdb, trailer)

    (imdb, trailer)

    (imdb, trailer)

    nekem tetszett az egesz trilogia, egyszer erdemes volt. allitolag az elsohoz kepest a masodik ketto gagyi, de ezzel a velemennyel nem feltetlenul tudok azonosulni.

  • Sunday, 07 June 2009
    margita 30ej

    igazabol ez nem is bringas volt, de mivel a masik 3 bringas turahoz kapcsolodoan csinaltuk, maradt az a kategoria. reszletes infok itt. kisse elkavartunk de vegul a celban lepecseteltek, hogy teljesitettuk, igy aggodalomra semmi ok, amugy meg szep es jo volt, nem bantuk meg.

  • Tuesday, 02 June 2009
    read-only s/mime support in mutt

    So my problem was that I already set up PGP, and I use it for sending / receiving signed (and sometimes crypted) messages. Today I received an S/MIME signed message and I had to verify it.

    First mutt just bailed out with "Can't verify S/MIME signature", but that was because S/MIME was not configured. Here is what I did:

    cd ~/.mutt
    cp /usr/share/doc/mutt-ng/samples/smime.rc .
    # edit muttrc to source it

    I thought that will be enough, but that was too aggressive.

    First, it disabled my PGP support. I had to put 'unset smime_is_default' to the top of smime.rc.

    Second, it tried to verify the whole damn cert chain, which is simply something I can't really care, as the cert is a self-signed cert anyway. To do this, I had to uncomment the last two lines in smime.rc (set smime_verify_command/smime_verify_opaque_command).

    So far it works just like I wanted it! :)

  • Sunday, 31 May 2009
    freenx server fontpath

    I wasted some hours debugging till I found out how to set the fontpath of a freenx-server if not using XFS.

    Basically just need to fine-tune /etc/nxserver/node.conf:

    DEFAULT_FONT_PATH=$(echo $(grep -v '^ *#' /etc/X11/xorg.conf | grep FontPath | awk \
    '{print $2}' | sed -r "s/^[\"']|[\"']$//g") | sed 's/ /,/g')

    Based on this post.

  • Thursday, 28 May 2009
    valami amerika 2

    meglepo modon az elozo folytatasa. leginkabb azert kulonleges, mert magyar filmek kozott barmi ami nem "tipikus gagyi magyar film" az szerintem kulonleges. ;) (es orulnek neki ha nem kene lefikazni a magyar filmek nagyreszet, dehat ez van.)

    (imdb, trailer)

  • Monday, 25 May 2009
    scooter rss

    I just noticed that scootertechno.com has no RSS, so I wrote one. Available here, or in "binary form", here.

  • Thursday, 21 May 2009
    once upon a time in america

    3h39m hosszu, az altalam korabban latott sergio leone filmekhez (volt egyszer egy vadnyugat, a jo a rossz es a csuf) kepest is mocskosul hosszu. ugylatszik nala ez presztizskerdes volt, hogy 2h+ legyen mindegyik. ;) persze ez nem jelenti azt, hogy unalmas, hajnali 4kor 2 ora utan alig birtam abbahagyni. :)

    a zeneje is jo, bar ezt ennio morricone neve szinten garantalta.

    erdemes. mondjuk faradtan nem, mert 3 idosik kozott valtogat a film es elegge oda kell figyelni h ne veszitse el az ember a fonalat.

    (imdb, trailer)

  • Tuesday, 19 May 2009
    Project-specific vim settings

    So swig uses two spaces instead of tabs, horrible. But I'll get used to it - just I don't want to fuck up my vimrc just because of their idiotic settings.

    Here is the trick:

    au BufRead */swig*/* set tabstop=8 | set shiftwidth=2 | set softtabstop=2 | set expandtab " SWIG
    au BufRead */swig*/Source/* set tabstop=8 | set shiftwidth=2 | set softtabstop=2 | set noexpandtab " SWIG Source
    au BufNewFile,BufRead *.i set filetype=swig
    au BufNewFile,BufRead *.swg set filetype=swig

    The swig syntax file is here.

  • Tuesday, 19 May 2009
    the usual suspects

    ritkan fordul elo, hogy egymas utan ket kivalo filmet latok, de most ez a szitu. annyira persze nem veletlen, mind2 imdbtop250es, az meg kulon poen, hogy mi magyarok ertjuk a krimiben eredetileg csak megnagyobb zavart kelto magyar szovegeket. ;) (persze a cselekmenye szempontjabol tul sok jelentosege nincs.)

    esetleg meg annyit, hogyha az eleje teljes kaosz nem kell megijedni, ugy fel-haromnegyed ora utan kezd rajonni az ember, hogy mirol szol a film, bar termeszetesen a poen csak a legvegen derul ki. :)


    (imdb, trailer)

  • Monday, 18 May 2009
    star trek

    szigoruan moziban nezendo. es mint kiderult nem csak scifi fanek szamara elvezheto. :)

    (imdb, trailer)

  • Monday, 18 May 2009
    libblkid meets hal 0.5.11

    So upstream recently released hal 0.5.12 and it's maintained by crazy who seem to be a bit busy currently, and I don't really wanted to bump his pkg (actually I tried and I failed), but I bumped our udev pkg yesterday so we no longer has libvolume_id. So I backported the relevant patch from git and it seems to work. ;)

    (Actually the header is informative, but fake as I created the patch from scratch, based on the one which was in git.)

  • Sunday, 17 May 2009
    sorgyari capriccio

    zsenialis. :) cseh film, es eselytelen nevetes nelkul vegignezni. egyetlen szivas az volt, hogy nem volt a kozelben sor, es kozben folyamatosan toltak magukba az italt, a vegere jo szomjas lettem. ;)

    (imdb, trailer)

  • Saturday, 16 May 2009
    valami amerika

    hogy en mit hagytam idaig ki. :) teljes pozitiv csalodas, altalaban hallani se akarok a magyar "vigjatek"okrol, pedig ez teljesen korrekt.

    (imdb, trailer)

  • Friday, 15 May 2009
    definitely maybe

    csopogos ize, egyedul nem erdemes. es ugy tunik, hogy manapsag szimpatikus kisgyereket csak Abigail Breslin tud jatszani. de tenyleg, ott volt a no reservationsben, a raising helenben, es meg lehetne sorolni.

    (imdb, trailer)

  • Thursday, 14 May 2009
    mamma mia

    a cselekmeny szanalmas, a zene nyilvan jo, enis emiatt neztem meg, bar utolag valszeg jobb lett volna inkabb meghallgatni a relevans abba albumokat. allitolag a magyar felirat (?, lehet h szinkron is keszult, dunno) eleg igenyesen lett forditva, de ezt nem tudom megerositeni.

    (imdb, trailer)

  • Thursday, 14 May 2009
    Writing ppt presentations from asciidoc

    Okay, this is a crazy idea, but I love asciidoc. So the pipeline is the following: asciidoc -> docbook -> latex -> pdf -> odp -> ppt.

    The fun part is that docbook is XML and then later I convert the stuff back to XML again (odp), but that's necessary as latex adds the nice themes and layout to the text.

    Also the method is semi-automated as I generate latex from asciidoc, then copy&paste it to a latex-beamer document with some manual fixup, then I can convert the rest in a more or less automated way. Time to package odfpy and other affected, but not yet packaged components. ;-)

  • Sunday, 10 May 2009
    godollo 170


    bp - godollo – szada – veresegyhaz - orbottyan – vacratot – vacduka – rad – penc – csovar – acsa – erdokurt – kallo – verseg – kartal – aszod - iklad – galgamacsa – vacegres - erdokertes – veresegyhaz – szada - godollo - bp

    ebbol a godollo-godollo volt hivatalos 100km-es tura, ehhez jott meg a haztol hazig mert tav miatt egy nagyobb adag.

    indulas 5:45 korul, hazaerkezes 16:50 korul.

    netto ido 8:18:57, pontos tav 175.31km, atlag 21.2 km/h, max 49.8 km/h, szint 1200m.

    koszonet Friczynek meg LGeenek a tarsasagert.

  • Saturday, 02 May 2009
    gone with the wind

    '39es film, de mar szines. technicolor. 4 oras. tul sok ez igy ahhoz, hogy ne nezzem meg. :) ja es az elso par percben szorakoztato mig rajottem a szokasos roviditesekre mint pl mister-mist' madam-ma'am, stb.

    (imdb, trailer)

  • Monday, 27 April 2009
    szentendre 100

    szoval a dolog ugy volt, hogy kimentem szombat este pomazra, de ugy, hogy be szentendrere, aztan ott el egybol balra budakalasz fele es onnan. haztol hazig 28km, ha jol emlekszem. aztan onnan a rokonok vegul vasarnap reggel behoztak kisbusszal az arpad hidig, es onnan mentunk ki mkksokkal ujra szentendrere, majd haza. mikor az arpad hidnal el akartam indulni akkor vettem eszre, hogy erdekes modon villog a kmora, mintha be akarnam allitani, hogy kilometer v merfold a mertekegyseg, aztan kesobb leesett, hogy resetelodott az egesz. fogalmam sincs, hogy miert, de jo volt, mert pont elozo este neztem, hogy 320X (X 0 es 9 kozott) az allas. :)

    aztan a vasarnapi tekerges meg 69km lett.

    tanulsag: tessek a kmorat is backupolni! ;)

  • Monday, 27 April 2009
    bitlbee segfault fix

    Here. I have no idea if this one will be ignored as well - since two of my reports (here and there) are already ignored.. :/

  • Saturday, 25 April 2009
    nokia free space trick

    I hit this issue a few times, but now I took the time to Google it out. So when I download lots of music to my Nokia 3110c phone, I keeps restarting because the Nokia version of OOM killer terminates the music indexer process. Given that it's a vital process (I don't know the proper term for this), the phone is restarted. It does this sequence about 5 times, then it just switches off.

    The trick is to delay indexing, if it does so a bit later after the phone boot is already done, it can succeed properly. The hack is to limit the internal memory free space, that will trigger this delay:

    Now Keep ur free Phone memory space [Not the memory card's free space] between 470kb - 499kb

    The style is horrible, but the info is useful, after setting free space like this, it can really handled large amount of music fine. ;)

  • Monday, 20 April 2009
    being accepted to gsoc 2k9

    They say so. :)

    Time to unsubscribe from the git list and append #git to activity_hide_targets. ;/

    A list of (AFAIK) all Hungarian students:

    Istvan Szakats Kornél Lugosi Balazs Dianiska Geza Kovacs Gabor Kovesdan gabor janos pali Tamás Sallai Gergely Patai Kornél Pál Miklos Erdelyi Peter Somlo Miklos Vajna Viktor Gal.

    So now we are 13, it's interesting because AFAIK we were only 6 last year, when more students were accepted in general. ;)


    I missed two of them:

    tom ilsinszki gergo erdosi

  • Sunday, 19 April 2009
    Rotating pdf pages

    So I wanted to rotate each page in a pdf file clockwise using pdf2ps, pstops and ps2pdf. Actually I haven't figured out how to do so, even if I already used pstops (which is cryptic for the first time) multiple times so far.

    Sure, I know ideally how to do it, but then I just got blank pages.

    But pdftk seem to do it properly:

    pdftk in.pdf cat 1-endE output out.pdf

  • Sunday, 19 April 2009
    mkk tavaszi bal 2009

    ilyen. jo volt, mert onmagaban is meg az ottlevo emberek miatt is, meg mert belefolytam a szervezesbe meg ilyesmi.

  • Thursday, 16 April 2009
    lilypond list makes me a celeb

    Here and there.

    Other than that I got a pretty usable answer for my question here.

    Wow, I really like the lilypond community. :)

  • Wednesday, 15 April 2009

    9 eves film, bennevan az imdb top250ben is, egy ideje tervezem is h megnezem, aztan par hete sort is keritettem ra. tetszett. stilusos, nincs happy end a vegen, "this is spartaaaa" nelkul is sikerult alkotniuk valami maradandot. ;)

    (imdb, trailer)

  • Wednesday, 15 April 2009
    Asciidoc source hilight for html and pdf output

    Long time no blog, mainly because I'm pretty busy with real life.

    So yesterday I got an answer on the asciidoc list about how to do C++ source hilighting that works with html and pdf output as well. The problem is that source-highlight (used for html) and docbook have a different name for this crappy language.

    The solution was to do

    :cpp: cpp

    Which says "if docbook, then c++ otherwise cpp", and then I can just use



  • Tuesday, 14 April 2009
    death at a funeral

    LGee ajanlasara, szorakoztato jellegu, egyszer nezos.

    (imdb, trailer)

  • Wednesday, 08 April 2009
    bitlbee-skype in Debian

    It isn't exactly there yet, but it's in their queue. :)

    The m8r guy asked me to link it in the doc, but I'll wait till it's at least part of experimental (or maybe better till it's part of contrib).

  • Tuesday, 07 April 2009
    asciidoc newtable bug solved

    We hit this bug after I upgraded asciidoc on the server where we build the Frugalware documentation, luckily I just had to backport the given patch from hg and it now works fine.

    I like how responsible the upstream (Stuart) is. Asciidoc is not bug-free, but as long as one provides simple reproducers, he quickly fixes bugs, yay! :)

  • Monday, 06 April 2009
    iSCSI fun

    So I was playing with iSCSI, and the tricky part was that I shared out a block device to a Windows one and the silly OS created a partition table on it, but the block device was an LVM LV. So it was like /dev/mapper/foo-lvol0, and of udev did not create /dev/mapper/foo-lvol0p1, so it was hard the mount.

    Next example about hacking Frugalware is useful, we had this problem while generating the USB installer image as well, the trick was to mount /dev/mapper/foo-lvol0 with -o offset=32256, and this works generally as long as the partition table is an old PC one (so it's not an MS dynamic disk or anything).

  • Sunday, 05 April 2009
    Godollo 30

    az utvonal ilyesmi volt, hogy: godollo - szada - mogyorod - fot - csomad - veresegyhaz - szada - godollo. kicsit bovebb info itt.

    haztol hazig: netto ido 4:29:24, brutto ido ~6.5 ora, tav 104.88km, atlag 23.3, max 54.0

    lassan kozeledik a szumma 3000, 2986nal jarok. :)

    egyeb resztvevok: zai, Friczy, meg osszefutottunk Varanus-szal is.

  • Sunday, 05 April 2009
    Emulating an old jdk with openjdk on ppc

    Okay, so this was a bit tricky, I was about to give it up, but then after 2 hours of RTFMing I got the solution. ;)

    The goal was to emulate jdk1.3 with openjdk.

    The first trick is to enable the binfmt_misc handler of qemu, as you'll need jre1.3, and the self-extractor of it is an i386 code. pacman -S qemu, service qemu start should do it.

    The rest is just a Makefile, something like this.

    It was tricky to figure out the right options for the postprocessor (as I was using an odbms) options as well, but that's not a so interesting problem anyway.

  • Saturday, 04 April 2009

    I just got an audio CD and they wanted me to grab it (copy+compress to mp3). I think last time I did so about 8 years ago? :) Those days I used xfce and I used first grip then I wrote a perl script that used lame, cdparanoia, mp3info and cdlabelgen (it lacked cddb support).

    Of course I did not maintain my script so it stopped working with the updated upstream tools, so I was searching something simple, like grip but preferably a qt/kde one.

    When I inserted the audio CD, it offered to compress it, it started KAudioCreator. And yes, the usual kde quality, it just worked. :)

  • Friday, 03 April 2009
    Final gsoc 2oo9 proposal

    So today was the deadline, I posted this. (IIRC I linked it once already in this blog but it was updated since then.) This year proposals can't be updated after the deadline, so it doesn't matter if it will be accepted or not, this is the final version. ;)

  • Thursday, 02 April 2009
    freedesktop git account

    I just got my freedesktop.org git account, since ooo-build is moving there from svn.gnome.org. The interesting part is account maintainance - basically I had to submit my gpg key and as long as I gpg-sign my messages, I even can change ssh keys via email, automatically. That's nice, but the reply to my messages are weird - they are gpg-encrypted, but not in a way mutt can automatically decrypt.

    They note in the wiki that they borrowed the account admin system from Debian - problem located. :P

    Snip. When I created the tmp libwpd-java homepage, I used hilight in asciidoc documents to color Java code. The syntax used to be:


    Now I needed this feature again and it seems that the recommended (required?) syntax is something new (tested with c++ only, as I needed that one):


  • Wednesday, 01 April 2009
    Playing with openjdk on ppc

    So we just got a Java task at the uni and I wanted to see what can I do on Frugalware-ppc about it, in case I build openjdk from hg.

    The result is quite surprising, it works very well.

    My only big problem is that it has a totally different build number, currently they are at 1.6.0b14, while the binary version is at '6 update 13', and till the source versioning schema does not match the binary one, I would not use it in a production environment.

    It also seems that packaging this would take a hell of time (and even after it's done, maintaining it would be time-consuming as well), so in case they would publish prebuilt binaries, I could live with that. I just found some bin tarballs on the archlinuxppc ftp site - mailed them about them (if they just mirror it or where is the build script), but no response so far.

  • Tuesday, 31 March 2009
    Pointers to member functions in C++

    Okay, I learned something new, you can have a special pointer type in C++ which is not really a pointer at all.

    So let's say you have a Foo class with a lot of void foo(int param); methods. Then you can have a "pointer" type 'int (Foo::*)(int)' which is in fact a pointer to Foo and it has an offset about what function does it point to.

    And given that it contains an address and an offset as well, you can't cast it to void*, like you can do so with real pointers.

    I had to look up the Bjarne book since I didn't really know about this at all... ;-)

  • Monday, 30 March 2009
    first swig patch!

    Here. :-)

    I have an other one as well, but that's not yet commited (and it may be even wrong).

  • Sunday, 29 March 2009
    tegnapi fege zeneles

    ilyen volt tegnap. jo volt, csak kicsit faraszto 4 es fel oran keresztul gitarozni. :) (proba+maga az ahitat.)

    update: egy diktafonos felvetel itt. (bar sztem ez nem az a kategoria amit otthon erdemes felvetelrol hallgatni.)

  • Sunday, 29 March 2009
    google translate fun

    I never imagined that google translate could be useful for any situation when English is not the source language (I use it when English is the target language when I find some Chinese or Japanese blog posts), but now I see where it can be useful.

    Yesterday I just wanted to link a timeline to someone who does not speak English at all, and google translate did its jobs - at least when the user knew what does she search for, she was able to find the date in the timeline. :)

  • Saturday, 28 March 2009
    rss2email breakage

    I just noticed that I don't have any new mails in my rss notification folder - it turns out that it's because my rss2email fork is broken. Yeah, I remember, I just created a small patch, sent it upstream, then stopped updating rss2email till I get a response from the maintainer. No response so far but now I rebased it, as it seems the latest upstream release works fine with python-2.6.

  • Friday, 27 March 2009

    It has been proposed on the list that we switch from medawiki to dokuwiki.

    Pros: an active developer would maintain it, dokuwiki is maybe a bit less bloated

    Cons: obscure syntax, for example the title '=' syntax (= is big, == is smaller) is the opposite of what we use in asciidoc.

    So far dokuwiki is packaged in current, so we'll see...

  • Thursday, 26 March 2009
    Frugalware homepage activity stats

    That's interesting. My feeling was that recently the popularity of Frugalware was not increasing but staging, but then I had a look at the apache logs and checked the number of hits one days after the release of 0.9 and 1.0:

    $ grep -c '10/Sep/2008' www.frugalware.org-access_log
    $ grep -c '23/Mar/2009' www.frugalware.org-access_log

    So it seems we recently get way much more hits than previously. Interesting.

  • Wednesday, 25 March 2009
    Git error/warning cleanup is in

    See here. All 9 patches, yay. :)

  • Tuesday, 24 March 2009
    GSoC 2oo9 proposal

    I just finished writing up this. It seems it's long - it took a lot of time to write it as well. And probably this is not the final version, either...

    And I resend my earlier cosmetics series to the git list.

    Sleeping time.

  • Monday, 23 March 2009
    kqemu update

    Though Paul already stated on qemu-devel that kqemu is completely unmainainted, our kqemu pkg stopped working after we updated to qemu-0.10. And funny enough, there is a new version on nongnu.org which works with the new version. So it's now updated, even if I did not really expect a new release of it ever... ;-)

  • Sunday, 22 March 2009
    kormoran koncert

    nemi info itt. amugy jovolt, boven jobb mint amire szamitottam, pedig nem gondoltam eredetileg se h rossz lesz. ;) kicsit eltoltak politikai/vallasi iranyba, de csak annyira ami siman belefert.

  • Sunday, 22 March 2009
    parseopt-ls-files is in

    Finally my parseopt patch in git-ls-files got merged. It becomes clear how I have less and less time for git, it took about a month. ;-)

    An other interesting project (sadly in Perl) to try out (twitter via irc) is here.

  • Saturday, 21 March 2009
    Virtualbox port redirect

    It's actually qemu that calls these port redirects, but I don't know the proper generic name. So what I was needed is that a service runs inside virtualbox and I want to have it on the host machine as well. For now I just wanted the same port, but for ssh obviously I want an other one, since ssh is probably already running on the host machine. ;-)

    A good howto is available here. And here is an other one, in case later one of them would be 404. :-P

  • Friday, 20 March 2009
    Git website howto

    There was a howto about how to host website with git - the basic problem is that the working dir is not updated automatically on push. This howto gives a step-by-step solution for this problem. Of course I know the solution (and it's problems) for a long time, but it's always nice when someone with a good writing taste puts it out as a documentation.

    To make the long story short, I noticed a correctness with the howto and mailed the author, then completely forgot about it. Now someone linked it on #git, and I was wondering if this is the same webpage howto I read or something different. This ended up with noticing my name on the page, giving me a thank for noticing. ;-)

  • Thursday, 19 March 2009
    GSoC 2oo9

    They just announced the list of accepted orgs for gsoc 2k9, I'm happy to see that SWIG is accepted as well - they have an interesting PHP project.

    The mentor who is interested in the project lives in GMT+13, so I have to try contacting him later today...

  • Wednesday, 18 March 2009
    Frugalware 1.0 tagged, last FSAs for 0.9

    Yesterday I tagged Frugalware 1.0, which means that no new bugfixes or features will hit the tree till release. And the next task is to install 0.9 and write an upgrade howto... (What a boring task, but users really like it.)

    OTOH, I just released the last FSAs for 0.9, probably we'll announce its EOL a few days after 1.0 is out.

    And my git test_cmp patches are in. :) (After sending no patches for 2 months.)

    BTW, I did a simple check to see what are the results for my real name (ie Hungarian order, accents) on the first page @ Google.

    From the 10 results there are 6 Frugalware related ones, 3 for work, and one is unrelated (though the page lists papers of one of my relatives).

  • Tuesday, 17 March 2009
    yes man

    igenember cimen fut magyarul asszem. es a szokasos Jim Carrey film - amit idaig lattam tole az mind aranylag szinvonalas es szorakoztato volt.

    egyszer erdemes.

    (imdb, trailer)

  • Tuesday, 17 March 2009
    Updated test_cmp patches

    In fact nothing special, I wasted time with viewing this Google Talk. I was not aware that there are other interesting talks outside the Tech Talk ones. ;-)

    And BTW I almost forgot about the recent test_cmp patches, I posted now an update, hopefully that will do it.

  • Monday, 16 March 2009
    Nokia fbus from Python

    So yesterday I found this article and I wanted to try it out from Python.

    Here is a few lines of code to send that "get hw and firmware version" message to the phone and at least read an ACK:

    import serial, time

    ser = serial.Serial("/dev/ttyUSB0", 115200) ser.setRTS(False) ser.write("\x1E\x00\x0C\xD1\x00\x07\x00\x01\x00\x03\x00\x01\x40\x00\x52\xD5") print repr(ser.read(1)) print repr(ser.read(10))

    Of course this is just a PoC, the first read could be avoided and we could just read one char till we hit the 0x1e one. But that .setRTS() took a few hours to figure out. ;-)

  • Sunday, 15 March 2009
    WIP support in syncd

    We have these WIP repos (stands for Work In Progress), but uploading packages there was always a manual task. This is quite unhandy when the WIP repo is being worked on for multiple months.

    We already had some minimal support for WIP repos in the sync client, but it was not enough, the pacman/repoman configs were no propagated from the server to the build nodes.

    I recently got some time to work on this and now it's there - once all the build nodes will be upgraded to 1.0, we will be able to use this feature without any limits. :)

  • Saturday, 14 March 2009
    cserkesz48 2k8

    az idiota cim arra utal, hogy cserkesz szervezesben minden marciusban van egy emlek-teljesitmenytura, mely tobbek kozott szerepeltet egy 1848 -> 48 -> 2 * 48 = 96km-es bicikliturat is.

    ez kerult ma megrendezesre. az ido szep volt, sutott a nap, nem volt tul hideg se, eso nem esett, szel is alig volt.

    az utvonal kb: le a margit-hidhoz - csillaghegy - pilisszentlaszo - lepencefurdo - esztergom - pilisszentkereszt - pilisszanto - pilisvorosvar - pomaz - haza.

    haztol hazig 139.26 km volt, max 57.1 kmph.

    az mkk-bol hatan voltunk, elvileg tobben csinaltak kepeket, ha majd felrakjak valahova akkor linkelem oket. ;)

    update: par kep itt.

  • Saturday, 14 March 2009
    RMS talk

    RMS was here in Hungary and he held a session about copyright. The interesting thing was that he talked about copyright of music, books, etc. - not just software.

    There are two videos here.

  • Friday, 13 March 2009
    Being an active git contributor

    I just found this here:

    "The Eclipse plugin and builtin-merge projects were integrated into the mainline source code. The latter student remains a very active contributor to our project."

    Heh, that'd be me. ;-)

  • Thursday, 12 March 2009
    LESSCHARSET vs special chars

    So we got this bugreport yesterday, and I wasn't able to reproduce it on my x86 box, but I saw it on my iBook. It turns out that LESSCHARSET, which I set just for git, handles this case for me as well. At least after setting it, the manpage is correct on my iBook as well.

    The weird thing is that it's still wrong for crazy@ - though I don't know if this will solve the problem of the reporter or not.

    I started working on a new song in lilypond, I still like it, though no idea so far how to display a simple "A^4", it seems "a:4" does something much more complicated. ;)

  • Wednesday, 11 March 2009
    Patch for picu

    I recently started using picu, which is a nice tool (I just mirror pictures at Picasa as I like the comment/notify/label features of it.), but it had two annoying bugs (no proper header and too gmail-centric), so I sent this patch upstream today.

    Heh, and this is the 100th hacking post. So far it seems it was not a bad idea, I can search back "what did I hack on 22th", and sometimes I can link posts from here as a HOWTO, so writing it in English was a good decision.

  • Tuesday, 10 March 2009
    galaxis utikalauz stopposoknak

    az errol keszult filmrol irtam mar korabban, de mivel eleg sok olyan kommentet olvastam, hogy a filmbol mennyi poen kimaradt, a konyvet is elolvastam. es tenyleg. a konyvhoz kepest a film tenyleg nem egy nagy szam. a cselekmenyt vegulis nem irtak at, de egy csomo resz erthetetlen onmagaban, a konyvben meg rendesen le van irva. szoval tetszett. ;)

  • Tuesday, 10 March 2009
    Perfect localized fonts in the setup again

    We had this problem recently that on the console the fonts were not entirely correct, for example lat2-16.psfu.gz was replaced by lat2a-16.psfu.gz. I finally found why it was still broken in the setup: I forgot to update the Makefile to include the new font in the initrd. ;-)

    Now the fonts are perfect again.

  • Monday, 09 March 2009
    Serial driver for erlang

    I just started searching for an alternate serial driver for Erlang as the semi-official one has zero documentation, and found what?

    There is a gen_serial module by spearce, we know each other since last year's GSoC. ;)

    Sadly the driver seem to be Windows-only so it's not that interesting, but the world is small.

  • Sunday, 08 March 2009
    Fighting with forums

    We recently had to move forums.fw.o to a new machine and first boobaa offered a hosting. I had only ftp access, but that isn't a big problem - the bigger one is that we have this mailing list - forums two-way gateway and we failed to configure it. They have virtual domains / mailboxes on the machine (using SQL) and the machine kept rejecting mails sent to the forums by the mailing list. After debugging for about a day, we decied to just move it an other box where there are no virtual announts, and I just had to add some trivial aliases to /etc/postfix/aliases.


    OTOH, Frugalware 1.0rc2 is out, and now we can continue bugfixing. :-)

  • Saturday, 07 March 2009

    ma dnettel meg zaivaldival voltunk bringazni. az ugymond szervezesi feladatokat en lattam el, de igazabol ez kimerult abban, hogy az utvonalat kitalaltam, hoztam terkepet, es korlatlan mennyisegu szolocukor-ellatast biztositottam nekik. :)

    utvonal kb a kovetkezo volt: budapest - budakalasz - szentendre - leanyfalu - tahitotfalu - dunabogdany - visegrad - nagymaros - kismaros - vac - god - dunakeszi - budapest.

    en haztol hazig 121 km-t mertem.

    az ido jo volt, az elorejelzessel ellentetben nem esett, a homerseklet is jo volt, neha sutott meg a nap is. neha gaz volt a szel, de igazabol csak itt bp-en volt eros.

    zaivaldi csinalt par kepet, amit kicsit megkommentalva mirroroztam.

  • Saturday, 07 March 2009
    Escaping within sphinx and mysql

    We all know the usual problem with sql escaping, there is even a comic about it.

    There is an other SQL-related project, sphinx, which is a quite efficient search indexer (especially for whole word search), but it also needs escaping. Given that in sphinx "foo-bar" means "all records containing foo, but not bar", if you really want a single-word "foo-bar", then you need to use "foo\-bar".

    And that's the fun part, as the escaping order matters a lot. Basically if you escape mysql first and then just insert the sphinx query, then you just created an injection yourself. ;)

    So the final query will look like "foo\\-bar" if you did the escaping in the right order.

    It's also notable that the official sphinx php API seems not escaping the ";" char, which is also a bug, as this way you can modify the search query in the way you want.

  • Friday, 06 March 2009
    lelkes testcsere

    ez ilyen nyalas ize. de legalabb vannak benne jo poenok, eredeti otletek. leszamitva persze azt a szerencsetlen amcsi erettsegi balt amitol mar egnek all a haja mindenkinek.

    (imdb, trailer)

  • Friday, 06 March 2009

    I earlier wrote about I was experimenting with PowerShell, so I had to install Windows in a virtual machine. It's not a big problem, we at the uni get a license to use it for free till the end of our studies (or something like that), so I started to search for what emulator should I use.

    Of course my favorite is qemu, but till I don't have kvm-enabled hw and kvm support isn't fully merged from kvm, it's slow.

    Given that I had to use some other emulator, I thought I gave vmware a try, they offer a 30-day trial and I wanted to see what's new in their recent versions - I think I last tried it about 2 years ago. It seems the automagic gui screwed up something and there is no more vmware-config.pl, so I gave it up.

    Last, I tried Virtualbox. Man, it's fast! Of course it's bloated as well (external kernel module, guest addons, etc) - but if I forget about these issues, it really gaves me the same experience vmware gave me when I last tried it. Impressive.

    As a side note, git-1.6.2 is out, sadly I haven't got much time for it - only 5 patches of mine are in the changelog. But at least now the pdf version of the user manual is supported out of the box.

  • Thursday, 05 March 2009
    Ejabber virtual hosts

    Now that I know a little bit more about Erlang I checked how to configure vhosts with ejabberd. It turns out it's quite trivial once you understand the syntax of the config file, which is just eval'd, so it has this horrible (for an outsider) syntax. ;)

    Actually configuring vhosts are just about adding the new host to the DNS and adding it to /etc/ejabberd/ejabberd.cfg, like:

    {hosts, ["mydomain.org", "another.com"]}.

    And that's all you need. Simple, isn't it? :)

  • Wednesday, 04 March 2009

    I just experimented a bit with powershell, it's funny that if you know bash and perl, you'll know a lot in powershell as well. ;)

    Also, they made a lot of unix aliases, so there is man, ls, mv, etc. in it. That as bad as I expected...

  • Tuesday, 03 March 2009
    children of men

    meg januarban volt egy indexes cikk, az a vicc (?), hogy ez a film kb errol szol. marmint scifi, es az alapsztori az annyi, hogy a foldon mar ~15 eve nem szuletett ember, es akkor most mi lesz.

    ami nem tetszett benne az az, hogy az egesz film olyan semmilyen. nem szorakoztato, de nincs is mondanivaloja. van valamifele lezarasa, meg remeny is van benne, de az egesz olyan borongos.

    filmes szempontbol persze egyreszt el tudom kepzelni, hogy mekkora melo lehetett egy csomo hosszu es bonyolult akciojelenetet single-shotban felvenni (tehat hogy nincs vagas), de azert ez nem ellensulyoz mindent.

    amugy meg a ferfi foszerepet Clive Owen (sin city) viszi, meg feltunt meg par ismeros arc, mint Chiwetel Ejiofor (kinky boots) es Julianne Moore (psycho remake), de semmi annyira kulonoset nem alkottak, hogy erdemes lenne megjegyezni. felejtos.

    (imdb, trailer)

  • Tuesday, 03 March 2009
    Setup bugfixing for existing home dir

    So we had this bug for a while, and the solution was just using an other dir, so the user later can merge the contents of the two dirs.

    Sigh, testing the setup still takes a lot of time. For example to test the above bug, you need to do a base install, which still takes a lot of time. Hopefully sooner or later we can switch to kvm (as the old kvm-incompatible hw gets unused) and then this can be faster.

  • Monday, 02 March 2009
    KDE 4.2 still does not replaces KDE 3.x

    I just found a nice sentence in a commit-digest, released after KDE 4.2 was out:

    Work on porting KControl and Konversation to KDE 4.

    Wow. Let's say I just use kdebase from KDE 3. Now, kcontrol is part of kdebase. So it's nice we already have kmail and other fancy stuff, but we still doesn't have kcontrol? Brr...

    (Yes, there is a system settings, and that won't let you configure your printer, for example.)

  • Sunday, 01 March 2009
    etckeeper with mktemp support

    etckeeper recently started to depend on tempname which is like mktemp, but we don't have it in Frugalware.

    I recently sent this patch to Joey (the etckeeper maintainer) to add support for mktemp.

  • Saturday, 28 February 2009
    budai hegyseg erdo nelkul

    igazabol az ugy volt, hogy az elso alkalommal mikor megprobaltunk leterni az utrol akkor rajottunk, hogy tiszta ho meg sar meg latyak minden, igy maradtunk az aszfalton. ott persze lehetett haladni. meg azert az ut is hegyen-volgyon at vezet.

    pontos utvonalat nem merek irni, mert a memoriam a tajekozodasi kepessegemmel es a szemmertekemmel vetekszik (tekintsuk oket elhanyagolhatonak), de valami ilyesmi volt, hogy: huvosvolgy - budakeszi - zsambek - tok - tinnye - piliscsaba - pilisvorosvar - aztan vissza a 10es uton.

    tav: 91km, max 50.9km/h.

    az otletert pedig koszonet LGeenek. :)

  • Saturday, 28 February 2009
    Installing Oracle Client on Frugalware

    The full name is Oracle Enterprise Manager Console. You can download the 10g version from here. You can find a user/pass on bugmenot. After unzipping, just running '/path/toclient/runInstaller -ignoreSysPrereqs' (I only tried with an absolute path) should be enough. It can be installed a user, later it'll prepare some scripts to run as root.

    I always replaced $HOME/orafoo with $HOME/.orafoo, when the installer asked. If you get 'no such file or directory' errors, you can just edit the relevant script and fix the path - I needed to fix /bin/rpm, /bin/awk and /bin/sed. (All of them are under /usr/bin.) A hack for the lazy ones: just symlink these to /bin, then no modification of the scripts is needed.

    To your ~/.bash_login:

    export ORACLE_HOME=~/.oracle/product/10.2.0/client_1/

  • Friday, 27 February 2009
    Being international

    There was a recent interview with the developers of UHU-Linux, which was the de-facto "Hungarian Linux" a few years ago here at Hungary.

    The guys had a pretty closed approach and finally it seems they make money from products based on their distro - releasing something useful for the users for free is definitely not the number one task on their todo.

    There were a couple of comments to the article, a few of them was about Frugalware, given that we are still the only distro where the origin is Hunagary and it's actively used outside Hungary as well.

    In fact I just did a quick search, listing the last commit dates of each devel. Two of the Hungarian ones are pretty inactive. Both of them do other administrative tasks. (Buildserver / bugtracker hosting, etc.) But the rest is quite active, which was a surprise. I had the impression that lately we got some new French devels and once they got their git accounts, they got a bit less-motivated but this is simply not true. All of them (and this is true for the other non-Hungarian devels as well) was more or less active in the last month.

    I think this is pretty straight-forward, even if the ohloh stat says the commit number (compared to last year) is sightly decreasing. This is a typical example: the commit number is not everything. I think this time last year we might be a bit more active overally, but that was because several devels (including me) spent a horrible amount of their free times on Frugalware, which is not something you can do for several years. Today we have a much stable devel base, increasing package maintainer community and yes, I'm happy with our current status. :)

  • Thursday, 26 February 2009
    Pootle vs frugalwareutils

    I already wrote once about Pootle forcing us to use UTF-8 and not respecting the po headers (where charset can be set), but there is a new chapter in this story. So in case the charset is wrong, the generated mo file is still fine, as long as you have utf8 support in your system. Of course in the setup, where we have an "as much as possible" stripped down system, this is not true.

    A contributor reported this recently, and the symptom was that "sometimes" netconfig is localized, sometimes not. It turned out a bit later that it's localized when it's running in the target system's chroot (when the install of the packages is finished and the config tools are invoked), but not before the installation. Of course the previous solution worked here pretty fine as well: I just had to convert the remaining translations to utf8 manually, and then add code to convert from utf8 to the native encoding in the pre-package stage (currently named 'make prepare') of frugalwareutils.

    Hand converting is boring. And sometimes it's completely messed up, for example you need an 'iconv -f utf8 -t latin1' twice to get the correct accents. ;-)

  • Wednesday, 25 February 2009
    Ping on windows and relative host names in DNS

    So I got the followings today at the uni on a Windows box:

        ping alaplab.

    Pinging alaplab.mit.bme.hu [] with 32 bytes of data:

    Reply from bytes=32 time<1ms TTL=127 Reply from bytes=32 time<1ms TTL=127 Reply from bytes=32 time<1ms TTL=127 Reply from bytes=32 time<1ms TTL=127

    Ping statistics for Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms

    Now I wonder if they just ignore the dot at the end of the hostname or WTF.

  • Tuesday, 24 February 2009
    Old bc bug

    We had this old #3331 bug, and it turns out that Fedora had an s390 patch that fixed it. Of course the patch name is misleading since it fixed something on x86 as well, so it was the last thing I thought to try... :-)

    I got a reply reply to my libbtctl patch I sent back in last year:

    On Sat, 2008-12-27 at 18:32 +0100, Miklos Vajna wrote: > Hi, > > I recently tried to build libbtctl with mono-2.0 and the build fails > because the .pub signatures are no longer supported. > > A similar commit in evolution-sharp's svn: > > http://svn.gnome.org/viewvc/evolution-sharp?view=revision&revision=191 > > Here is a patch to do the same for libbtctl: > > http://ftp.frugalware.org/pub/frugalware/frugalware-current/source/gnome-extra/libbtctl/mono2.patch > > Of course you can generate your own new key with 'sn -k 1024 > libbtctl.snk' if you don't want to take the one I use right now.

    Because the patch wasn't in bugzilla, I missed it for the last ever release of libbtctl.

    Use bugzilla in the future.


    Needless to say, there is no libbtctl component in the GNOME bugzilla.

    Yay for bureaucracy!

  • Tuesday, 24 February 2009
    vissza a jovobe 1 2 3

    ezeket meg vizsgaidoszak vegen lattam. a producer spielberg, igy varhato volt, hogy nem lesz unalmas a film, es vicces, hogy nehany tipikusan ra jellemzo jelenet van is a filmekben, tipikusan ilyen uldozeses reszeknel - gyakorlatilag u.az a taktika mint a parbajban. :)

    (imdb, trailer)

    (imdb, trailer)

    (imdb, trailer)

  • Monday, 23 February 2009
    Google earth bug

    So we got a bugreport - it seems the solution is just about getting rid of the bundled libcrypto, as it's incopatible with the not-bundled libssl.

    Ported erlang and postfix to ppc, the later because I wanted to use git-send-email, and I like to config postfix once, then point all the apps at postfix and then I have to change my pass only at once place when I do so.

    I got an i586 machine yesterday with the "please install Linux on it for me" slogan. Sadly we at Frugalware do not support i586. First I wanted to install Slackware, but it turned out that the machine does not read DVDs and I did not wanted to download all the CDs of Slack and it turns out that Slack has no netinstall I ended up installing Fedora. Well, I tried to. The HDD is only 1.2G, and they wanted X on it, so disabled almost everything, except X and blackbox. ;)

    But honestly it just does not worth the time, people should just bin such a machine and get a life. :P

  • Sunday, 22 February 2009

    erdekes dolog ez. tipikusan olyan ami penzben nem merheto, es az ezzel kapcsolatos barmilyen elismeres / koszonetnyilvanitas sem magatol ertetodo, talan ezert esik az embernek annyira jol.

    februar elejere szerveztem az mkk-soknak egy sielest ausztiraba, es mar reg tulvoltunk a dolgon mikor most csutortokon megjelentek a resztvevok, hogy koszonik meg itt egy tabla csoki.

    ma meg megerkeztem a szokasos vasarnapi gitarprobankra es igy az egyik srac ilyet szol, hogy ugy vartak mint a messiast, merthogy valamit megbeszeltunk elozo proban es le is lett irva, de nem talaljak sehol enmeg biztos emlekszem meg ra. hat eppenseggel igy volt. :)

  • Sunday, 22 February 2009

    So there is such a project, and my relevant ~/.mailcap entry is:

    $ grep docx ~/.mailcap
    application/vnd.openxmlformats-officedocument.wordprocessingml.document; docx2txt.pl %s -|iconv -c -f utf8 -t latin2; copiousoutput;
    application/vnd.openxmlformats-officedocument.wordprocessingml.documen; docx2txt.pl %s - |iconv -c -f utf8 -t latin2; copiousoutput;

    I don't exactly know why the later is needed. I haven't checked the RFC. The fact is that sqmail sends the content-type header using format=flowed (no indication about using this format, it just uses it), and mutt doesn't like it. So it's an sqmail or mutt bug. But the workaround is the second entry above.

    BTW I started to learn Erlang yesterday, there is a good "Programming Erlang" book, it's more than 500 pages, I managed to read the first ~50 pages.

    OTOH Fruglware 1.0rc1 is out. Laying in the bed and releasing from my iBook is fun. :)

  • Saturday, 21 February 2009
    Double negations

    Referring to this post, if "diff.denyNonIndexExclude = false" then is IndexInclude true or false?

    This is like the recent Mozilla action, I never really figured out if they now like or hate Apple. (OK, other users already told me that the later is the true version.)

    It seems I'm too bad in Boolean algebra. ;-)

  • Friday, 20 February 2009
    b2evo 2.4.6

    This was on my TODO for a long time, so I upgraded from 2.4.2 to 2.4.6. Should be non-visible, since this is a minor upgrade.

    Oh and I posted a few cosmetic git patches to this thread.

  • Thursday, 19 February 2009
    Preparing Frugalware 1.0rc1

    Usually there are 1-2 nasty bugs in each release - after all that's the only eason I push for having at least a pre-release every 2 months.

    So today's one was a nasty double free bug in xconfig, so after the install there were no xorg.conf. The fix is now in git, so it should be over, but I was a bit disappointed, as so far Priyank's file descriptor / memory leak fixes were all carefully tested, however this one was obviously bogus, so probably it was not tested at all. OK, hopefully such stuff won't really happen again.

    Snip. In VIM, I wanted to do a "Pj" 1000 times. 1000Pj will do "1000P and [one] j", so that's not the right way. qaPjq1000@a will do it: qafooq records foo to the "a" macro, then 1000@a calls it 1000 times. Good to know. ;-)

  • Wednesday, 18 February 2009
    bitlbee-skype testsuite

    An old dream is now a reality, bitlbee-skype got a testsuite! :)

    If I were at it, I also added a new skyped option to be able to log traffic when the deamon forks into background.

  • Tuesday, 17 February 2009

    Finally python 3.0 (or python3k) arrived to -current. Of course the external modules are still for 2.6, but that's not something we want to change before 1.0

    OTOH, they screwed up something at the uni, the dhcp servers were not functional on the wireless network, so I had time to read my current book, and did not read email till 22h. :-)

  • Tuesday, 17 February 2009
    en, a robot

    mikor vegigolvastam az alapitvany 7 regenyet akkor mindenki azt kerdezte, hogy "es a robot novellakat is olvastad?". amire persze nemleges valaszt adtam. es ez igy is volt mostanaig, az alapitvanyon kivul ez az elso asimov mu amihez hozzafogtam par napja. nem is tartott sokaig, amihez persze az is hozzasegitett, hogy azert ez egy vekonyabb darab, kicsit tobb csak mint 200 oldal.

    amugy meg persze, hogy tetszett, talan a legjobban az a resz ami mar a pirx pilotanal, lemnel is elojott, mikor azon lehet izgulni, hogy az adott user most robot vagy ember-e. ;-)

  • Monday, 16 February 2009
    Udev doc update

    While I was away, I totally forgot about a patch they recently applied.

    I also reworked my git ls-files parseopt patch today, based on Dscho's comments.

  • Sunday, 15 February 2009

    mint a kepen is lathato, az elkoveto Lem bacsi. a konyvet eleg sok ideig olvastam, pedig nem kulonosebben hosszu (~400 oldal), viszont nem is hagyomanyos ertelemben vett scifi. sokkal inkabb mese az egesz. az eleje kevesbe osszefuggo mesekbol all, a masodik resze pedig trurl és klapanciusz, a ket "mernok" kalandjaibol all. hogy kevesbe legyen kovetheto a tortenet, nehanyszor elkoveti a mar-mar mester es maragitat lekorozo "tortenet a tortenetben" effekt egymasra halmozasat. ilyesmi, hogy "trurl meseli, hogy itt es itt jart, ahol bemutatott ennek es ennek a kiralynak egy gepet", majd a gep elkezd meselni, aztan abban jon egy alom, stb. :)

    szoval kicsit nehezen kovetheto ha villamoson olvassa az ember vagy hasonlo. ami meg a forditast illeti, valami zsenialis, tele van szoviccel az egesz sztori, es gondolom nem volt tul egyszeru a magyarban visszaadni ezeket a lengyel szovicceket, megis sikerult.

    boobaa kerdesere reagalva azert a "normal" tortenetei (mint pl a visszateres) nekem jobban bejottek, de persze ez se rossz.

  • Sunday, 15 February 2009

    So today I wanted to try out how to do a mass-upload of pictures to Picasa.

    This message links the script itself, and after installing the gdata.py package, it works almost fine. It assumes that your google account ends with @gmail.com, which is really false in my case, but the code itself is quite simple, so you can work around this bug.

    It would be nice if it would be possible to upload the picture subtitles as well this way (from a notes.txt or so), but for now I just hand-added them, it's not that difficult.

  • Saturday, 14 February 2009
    The weird unix milestone

    $ date +%s 1234567890

    and ideally it would be even a 13 and Friday combo, but here in Hungary in GMT+2 it was actually Saturday. ;-)

    OTOH, I just discovered that the W3C HTML validator has a nice soap interface, so it won't be necessary to parse it's HTML output, yay! (The CSS validator has a console version, parsing that is not a problem.)

  • Saturday, 14 February 2009
    hands on scooter

    szoval lassan tobb mint egy honapja, januar nyolcadikan jelent meg a scooter szamainak feldolgozasabol kiadott gyujtemeny, a hands on scooter. ertelemszeruen a mufaj a legtobb esetben jelentosen elter, de mivel az eredeti szamokert rajongok, igy a feldolgozasok nagyresze is tetszett.

    a korongon 12 feldolgozas talalhato, termeszetesen csupa olyan trackbol amik eredetileg nem feldolgozaskent keszultek, hiszen eleg vicces lenne a feldolgozas feldolgozasat kiadni. ;)

    1) jump that rock. ez modositas nelkul kerult a gyujtemeny elejere, leven a status quoval eredetileg is egyutt keszult a dal.

    2) egy weekend feldolgozas, eleg drogosra sikeredett. igy aztan ha elkepzelunk par erosen betepett alakot az utcan fel-le jarkalni zombikent akkor az eredmeny nemnagyon ter el attol amit a bloodhound gang kihozott ebbol az alkotasbol. ;)

    3) hogyan keszitsunk a how much is the fishbol nemet rapet? hat igy. ez a nemet rap tema igy onmagaban is iszonyatosan beteg. :]

    4) egy move your ass feldolgozas, de hp mc szovegeit teljes mertekben lecsereltek. eleg mokas az eredmeny, bar nem mondanam, hogy sokkal jobb az eredetinel.

    5) mivel a cimet valtozatlanul hagytak, egyszeru volt rajonni, hogy egy hyper hyper feldolgozas kovetkezik. a szoveg a zene felett vegig generalt, bar legalabb nem microsoft sammel. ;)

    6) egy i'm raving feldolgozas, az elso. mert lesz meg egy masik is, kesobb.

    7) ugy indul, mintha a wicked up (igen, a "nyalas") lenne, de aztan kiderul, hogy az aiii shot the dj adja a szam alapjat. fokepp a kiserohangszereket manipulaltak, meg belevittek par uj dallamot, a szoveg teljesen az eredeti.

    8) ez valami felelmetesen stilusos. friends, de ilyen kankanos stilusban, tangoharmonikaval, meg nemetul. kesz. :D

    9) faster harder scooter, ahogy azt egy musicalban eloadnak. otletes. :)

    10) mig a hatos szam alatti i'm raving eleg rockos lett, itt meghagytak a mufajt, es tovabbra is elektronikus hangszerek hangzanak fel, bar jelentosen megkavartak az egeszet. nekem a masik feldolgozas jobban bejon. "hamar hozzanyulunk, nyuljunk hozza nagyon." ;)

    11) nessaja. az egesz ugy indul, mintha karaoke lenne, de nem a szoveg hianyzik hanem a szovegen kivul minden mas, es az is csak nanazva. ;) aztan folytatas eleg elvont..

    12) itt szinten kell egy ideig figyelni mig rajon az ember, hogy mit is dolgoztak fel, gyakorlatilag a one es a maria dallamait mixeltek ossze, az eredmeny pedig termeszetesen kivalo. :)

    osszegzes? a 12 remixbol 8 volt olyan amiben valami megfogott, igy osszessegeben egesz jol sikerult szerintem a valogatas.

  • Friday, 13 February 2009
    Overwriting the From header in rss2email

    So here is the patch that allows you to do it.

    Basically it is useful when the blog has no comment functionality, as in this case you can just specify an address in config.py, like:

                    'http://landley.net/rss.xml': '''"Rob Landley's blog thing." <rob@landley.net>'''

    Without the patch you can just overwrite the name, not the address as well.

  • Thursday, 12 February 2009
    Ext4 support in the installer

    So first I had to patch our grub, then adding ext4 support to the installer was more or less trivial.

    The default is still ext3, though.

  • Wednesday, 11 February 2009
    Java plugin for x86_64

    Tthe i686 java plugin is at /usr/lib/java/jre/plugin/i386/ns7/libjavaplugin_oji.so. Guess where is the x86_64 one.. /usr/lib/java/jre/lib/amd64/libnpjp2.so.

    Logical - dear Sun -, eh?

  • Tuesday, 10 February 2009
    isola 2000

    a cim kabe ugy hangzik, mint valamelyik kereskedelmi szoftver 9 eves verzioja, de amugy konkretan ez azt a kis falut jelenti, ami a francia isolatol nemmessze kicsit feljebb a hegyen talalhato, es ahol az elmult par napot toltottem. (palyaszallas, a faluban kb 500 serpa lakik, aki kiszolgalja az ott sielo ~8000 usert.) ez a beszamolo most kepek nelkuli, majd lesznek azok is, meg videok is, de az tobb ido lenne, es nem akartam feleslegesen kesleltetni ezt az irast.

    szoval 30-an penteken este indultunk. teljesen a vizsgaidoszak vegen, meg aztap reggel kireklamaltam th-bol a kettest, aztan este 7-re kimentunk a felvonulasi terre es irany franciaorszag.

    odafele nem volt semmi kulonos, a buszut olyan 22h korul lehetett, elso sorban ultunk, amiben az volt a rossz, hogy minden megallasnal hideg lett, viszont mikor mentunk akkor volt rendes futes (a busz hatso feleben allitolag allandoan hideg volt), es volt hely (majdnem) kinyujtani a labunk.

    31en este meg is erkeztunk, becuccoltunk, csinaltunk meleg kajat. minden kajat ugymond nekunk kellett csinalni, ehhez kaptunk konyhat. eleg vicces volt, hogy a konyhafelszereleshez adtak egy angol listat az eszkozokrol, de szerintem valami geppel fordithattak, mert ugy lottoztunk, hogy pl a "cover with salade" (vagy valami hasonlo) az mit is jelenthet, vegen valami salataszurot talaltunk, amit masnak nem lehetett nezni...

    vasarnap aztan megkezdodhetett a sieles. rengeteg palya volt, elveztuk, hogy u.azon a palyan alig jottunk le 2-3x, es maris kereshettuk a kovetkezot. este felkerestuk a sipalya szelen levo kapolnat, ahol igertek katolikus miset. vegul kiderult, hogy a pap valami miatt nem jott fel a falubol, vegulis ilyen kozos imadsagba fordult a dolog (persze franciaul), aztan mikor kiderult, hogy a tarsasag legalabb harmada magyar, akkor volt magyar resz is, meg latin enekek meg ilyesmi. teljesen pozitiv tapaszalat volt.

    hetfore aztan eleg sok ho esett. alapbol az egesz teruleten volt egy olyan ~2m-es ho, erre esett ra olyan 40 centi talan, de ezt keptelenek voltak reggelre a teljes teruleten leratrakolni, igy eleg ovatosan kellett mozogni. erdekes modon volt olyan fekete palya ahol viszont igy konnyebb volt lejonni, elozo nap eleg jeges volt, meg farasztoak voltak a kemeny buckak, ezzel a sok porhoval viszont egesz szorakoztato volt.

    kedd reggelre elallt a hoeses, rendesen redolgoztak a palyakat, es tovabb folytathattuk az uj palyak felkutatasat. este meg a tarsasag 3 nevnaposat (3 balazs, 1 rahel) unnepeltuk.

    szerdan aztan eloszor kisutott a nap. igaz, max 5 percre, dehat ennyi ido utan ez is nagy szam volt. nem volt amugy a palyan tul hideg, aznap be se ultunk, ugyis mindig fujtak rank, hogy miert csak piat veszunk, es miert zabaljuk a szendvicseket a futott helyen. ;)

    aztan csutortokon sieltem utoljara, bar ezt akkor meg nem tudtam. a nap kicsit korabban vegzodott sieles szempontjabol: az utolso felvonok ilyen fel5 kornyeken mentek fel, viszont aznap 4korul abbahagytuk, mert annyira szakadt a ho. ezt ugy kell elkepzelni, hogy fullra letisztitott szemuveggel, leccel, stb kimesz a palyara, es kb 10p mulva semmit nem latsz, a szakallad ugy nez ki mint a mikulase, es igazabol nem akarsz beszelni, mert ahhoz mozgatni kene a szad. :) vegulis a szitu vicces volt, de eleg balesetveszelyes, igy mikor ennyire bedurvult a dolog, 2 kor utan abbahagytuk. este aztan ereztem, hogy nem vagyok jol es ki is derult, hogy 39fokos lazam van.

    penteken tovabbra is szakadt a ho az elozo napi modon, igy szo sem lehetett sielesrol, keszult is rola kep, hogy gyakorlatilag egyik felvono se jart. ilyen szempontbol amugy eleg korrektek a franciak, ha egy felvono nem jar akkor az oda vezeto palyakat szepen lezarjak. hogy forditva is konzisztens-e a dolog azt nem tudom, de nem fordult olyan elo, hogy felmentunk egy felvonoval es le volt zarva az osszes palya. :) ha nyitva volt egy palya, akkor azt altalaban le is ratrakoltak, bar ez mar nem volt ennyire kovetkezetes, piros es fekete palyaknal siman kinyitottak ugy is, hogy tobb napnyi ho ottvolt ratrak nelkul.

    szombat reggel lett volna indulas, de azt mar lehetett tudni, hogy reggel 8kor tuti nem indulunk. mint kesobb megtudtuk csutortok este ota lavina miatt el voltunk zarva a falutol. az uton tobb helyen is atment a lavina, amiben aztan a rendorseg homarokkal vagott utat. eleg jol nezett ki mikor jottunk lefele, jobbra-balra ~5m hofal, es ugy lehetett egy iranyban kozlekedni. gondolom ehhez kellett a rendorseg, mert ok iranyitottak, hogy mikor megy a falubol le meg fel a forgalom.

    vasarnap reggel erkeztunk volna, de szombat este is meg csak azt mondtak, hogy nem tudjak, hogy mikor tudunk indulni. kaptunk +1 nap berleltet ajandekba, es egesz nap sutott a nap. en meg nem voltam jol, a tobbiek kimentek sielni "es minden nagyon szep es jo volt". vagy valami ilyesmit mondtak, ami szerencsere nem volt annyira meggyozo, hogy komolyan elgondolkodjak rajta - mert egesz nap aludni azert megiscsak nagyon jo dolog. ;)

    aztan vasarnap este 8kor kiraktak a szobankbol, es a helyi bevasarlokozpontszeru valami folyosoira cuccoltuk be magunkat csovezni. vegulis volt vegig padloszonyeg, nem volt veszesen hideg, volt ingyen wifi, es szereztunk szeket is. a wifi igazabol nekem csak azert volt fontos, mert igy tudtam az orarendemet, meg tudtam telefonra tolteni ebookot, igy vegig volt olvasnivalom. fel12 korul aztan felerkeztek a buszok a falubol es be lehetett cuccolni. a soforok masok voltak mint idefele - de nekem egyik iranyban sem volt kulonosebb problemam veluk. rita allitotta, h mennyire butak, mert allitolag majdnem otthagytak a lecet. lehet. elindult a menet lefele, a falu fele vezeto 16km-t kb 2 ora alatt tehettuk meg, vegig lepesben. a kanyarok eleg neccesek voltak, volt olyan, hogy az egyik busz korul akkor kellett meg boviteni az "alagutat" (nem volt az alagut, felulrol vegulis nyitott volt), hogy be tudjon fordulni. aztan meg volt par kisebb malor: valami utlezaras miatt egyszer vissza kellett fordulni (az ilyen hegyi szerpentineken ugye annyira nem trivialis busszal megfordulni), meg egyszer a vonohorga (vagy hogy hivjak) az egyik busznak leszakadt, de semmi latvanyos nem volt, egyszeruen megallt, lecsatoltak mindenfele kabeleket, a busz elment, masik busz odaallt, felcsatoltak, aztan mar mentunk tovabb.

    szo volt rola, hogy visszafele megallunk monacoban, ezt vegul kihagytuk, igy is fel12 korul ertunk haza bp-re, hetfon. tehat egy kis joszandekkal mondjuk masfel nappal kesobb, mint terveztuk. majd kiderul, hogy bme szempontjabol mit vesztettem, elvileg 2 eloadast, amibol egyik se tul kulonleges (kinnlesznek majd ugyis a slide-ok, szal tokmind1). frugalware szempontjabol, meg boobaa commitolt, igy nem volt semmi gaz. amugy meg most 10 v 12 nap nyugi, nem tokmind1? :)

    ja es a franciak mondjanak le, nem hasznalnak zsebkendot, en meg pont elfelejtettem magammal vinni, es ugye utana faztam meg / betegedtem le. :P (allitolag a konyhaban hasznalatos ilyen tepheto papir keztorlo az amit ok kepesek orrfujasra hasznalni, hat egeszsegukre.)

    osszefoglalva persze oriasi elmeny volt, senkinek nem esett semmi baja, es remelhetoleg jovore is megyunk sielni. ;)

    update: par video itt.

    update2: par foto itt.

  • Tuesday, 10 February 2009
    Suspend to RAM for more than a week

    So I went offline for skiing for about 11 days (Jan 30 06:24:13-Feb 10 00:48:09 to be exact), and I forgot that suspend to RAM works only for a few days. My normal notebook of course switched off. But interesting enough, the iBook still did not switch off, it said the battery even had 5%! :)

    Yeah, I still love this HW.

  • Friday, 30 January 2009
    ps i love you

    hugom teljesen beleszeretett ebbe a filmbe, mar konyvben olvassa eredetiben (legalabb fejlodik az angolja) meg minden. persze megvan neki az eredeti dvd is - ami tenyleg tokjo, csak eppen sikerult mar annyira osszekarcolni, hogy angol hanggal a film vege elott 10pcel elakadt. aztan megint. harmadszorra meg nem. hat ennyit az eredeti dvdkrol.

    annyiban jobb egyebkent az atlagos romantikus izektol, hogy egyreszt kizart a teljes happy end, a film elejen meghalt user csak nem tamad fel a vegen; masreszt pedig a nagy macsot Gerard Butler jatsza akinek azert van ilyesmiben gyakorlata, eleg ha csak a Beowulfra, vagy a 300ra gondolunk.

    (a trailer vegen jo a poen. ;) )

    (imdb, trailer)

  • Friday, 30 January 2009
    the day after tomorrow

    az alap sztori egyszeru, meg akar teljesen lapos scifi is lehetne. most epp nem attol felunk, hogy ki fog hulni a fold, hanem csak siman jegkorszak lesz.

    lathatolag volt boven penz a forgatason, igy sok latvanyos effektet sikerult beletolniuk, ezen kivul meg az is bejott, hogy vegre egy film amiben nem ugyanazok az ismeros arcok mutatkoznak, igy kb konkretan senki nem volt ismeros. :)

    kellemes szombat esti mozi, 1x erdemes.

    (imdb, trailer)

  • Friday, 30 January 2009
    the man from earth

    magyarul azthiszem oslako neven fut. nem egy akciofilm. vegulis scifi, de ugy, hogy az egesz cselekmeny egy szobaban, meg - esetleg vegyuk meg hozza azt - a haz elotti kis kertben jatszodik. a jellemek egyenkent aprolekosan kidolgozva, a melyen vallasos, a folyamatosan kotekedo, a cinikus, a fenyegetozo, stb. :)

    aki szereti a muveszfilmeket annak be fog jonni.

    a foszereplo David Lee Smith a fight club-bol mar ismeros, a tobbiekre meg jellemzo, hogy nagyreszuknek meg a vezetekneve sincs kidolgozva. mert minek. a lenyeg, hogy egy igaz-hamis kerdest hogyan itelnek meg, es ohatatlanul mi is a tortenet reszeveve valunk azzal, hogy hol csak nevetunk, hol meg pislogva hallgatjuk az erveleseket.

    talan leginkabb a 12 duhos emberhez tudnam hasonlitani, bar ez nem annyira regi.

    ja es pls valaki mondja mar meg, hogy ennek a trailerehez miert a "best sex ever" cimu video az elso related? :P

    (imdb, trailer)

  • Friday, 30 January 2009
    the prestige

    azt hiszem tokeletes trukk, vagy valami egyeb szenzaciohajhaszo magyar cim alatt fut. de meg akkor is megerdemli. nekem nagyon tetszett a film, annak ellenere, hogy sokat is vartam tole, leven Christopher Nolan a ket mostani batman film rendezoje, es ugy emlegettek, hogy ez a filmje se rossz. ;)

    hat igy is van. eloszor is csupa jo szinesz, Hugh Jackman (deception), Christian Bale ("o a batman" :P), es Michael Caine (batman begins). igy mar mindjart konnyebb elindulni.

    a cselekmeny reszleteibe nem vesznek most el, de annyit megemlitenek, hogy a kozismert fordulat miszerint 2 iker elonyt kovacsol hasonlosagukbol meg felnottkorukban is itt is elojon, es olyan igenyesen kidolgozva, amit azthiszem utoljara jules vernenel olvastam.

    boven tobbszor nezos.

    (imdb, trailer)

  • Friday, 30 January 2009
    the others

    mufajat tekintve horror. Nicole Kidmannel, aki most semmi olyat nem tesz amit a Moulin Rouge!-ban lattunk nala, nem ariazik, nem szerelmes, nem nem. cserebe megtanul felni. felni a masvilagtol - es a temat ugy veti fel a film, hogy mosolyogva kerestem ra, hogy az egyhaz ez ellen a film ellen kivonult-e, de ugytunik nem. meg1x valszeg nem neznem meg, ellenben mar tenyleg meg kene tanulni (a se7en eseteben mar 1x elofordult), hogy bithunterrel nem egyezik a filmbeli izlesunk. ;)

    (imdb, trailer)

  • Friday, 30 January 2009
    my super ex-girlfriend

    nos szoval, ugy dontottem, hogy most jon meg par bejegyzes olyan filmekrol amiket az utobbi fel evben lattam, de mindig inkabb valami masrol irtam. nincs kedvem ugy lelepni 10 napra, hogy ezek meg mindig foglaljak a helyet a todomban. ;)

    szoval, hogy raterjek a filmre ez olyan amit tilos egyedul vagy kizarolag ferfiak tarsasagaban nezni. nezzuk a pozitivumokat. jatszik benne Uma Thurman, akit szeretunk a paycheck es a ponyvaregeny miatt. es akkor itt vege is.

    a tortenet egyfajta ertelmezese szerint a supermanbol csinaltak romantikus vigjatekot, dehat nemtom..

    (imdb, trailer)

  • Friday, 30 January 2009
    bombajo bokszolo

    bud spencer film, kivetelesen nem valami megjegyezhetetlen olasz cimmel. de azert szinkronosan neztem :)

    (imdb, trailer)

  • Friday, 30 January 2009
    Recording the audio output of flash videos

    This is useful if you really want to record the audio of a clip, which is not on youtube (you can use youtube-dl there).

    The howto explains pretty much everything.

    Here are the amixer parameters I needed:

    amixer cset numid=24,iface=MIXER,name='Capture Source' 5


    pcm.copy { type plug slave { pcm hw } route_policy copy }

    record commandline:

    arecord -f cd -t wav -D copy foo.wav

  • Thursday, 29 January 2009

    Not that I'm a web2.0 maniac, but I registered on twitter.

    I think the only purpose I will use it - for now - is to microblog when I'm offline for multiple days, since blogging in that case is expenseve. We'll see.

  • Wednesday, 28 January 2009
    OpenOffice.org 3.0.1 vs Boost 1.37

    So it seems OOo 3.0.1 triggers a bug in boost 1.37, hopefully this commit will fix the issue. At least the OOo build did not stop so far..

    But my "law" is still true: every openoffice upgrade shows at least one problem in some other package. ;)

  • Tuesday, 27 January 2009
    Successful qemu-ppc install with frugalware-current

    Tonight I synced the 2.6.28 kernel on PPC, enabled the Realtek driver needed by Qemu and tried again: the whole installation procedure goes fine.

    Of course (it couldn’t be true ;) ) the boot after the install fails, which is interesting - if boot from CD works fine, I don’t see why can’t it work from a HDD, but oh well.

    I just saw a recent commit in Qemu SVN about fixing qemu-system-ppc -kernel, so I’ll give it a try later.

    Ah, and the speed is really promising. I did the installation on my laptop, not on a fast machine, and a base install really completed not so slow. ;)

    Update: After upgrading to svn6463, it boots with:

    qemu-system-ppc -kernel boot/vmlinux-2.6.28-fw1-ppc -append "ro root=/dev/hda3" -hda ~/documents/qemu/hda.img


    Update 2: Up to date install/run ppc scripts here.

  • Monday, 26 January 2009
    libarchive vs lzma

    So I wanted to see how is the lzma support in libarchive, since there is now a stable release having my lzma patch, but pacman-g2's make check fails with the new version, sigh.. It looks like some file descriptor leak, it does not like when we try to install 1000 packages with pacman at once.

  • Sunday, 25 January 2009
    miro vs py26

    So we had this bugreport, just building miro against python 2.6 did not work out very well. Then I pushed a python-2.5 package, before I would realise all the miro deps would have to built against py25 as well, if I want to achieve this approach. OK, that's a no-go. Then I found the right few-liner solution in the #python@freenode logs. :)

    I sent it to upstream, we'll see how will they handle it.

    Oh, and I got a new patch to darcs-fast-export. A second contributor, yay! :)

  • Saturday, 24 January 2009

    I got a reply to patches I sent one and a half year ago. ;)

    My patches to anames.pl and sockter-interface.pl are now applied in f0rked's irssiscripts repo.

  • Friday, 23 January 2009
    pretty woman

    ha magyar filmhez kene hasonlitani akkor egyertelmuen a majdnem szuz jut rola eszembe, nyilvan a 18evvel kesobbi magyar film az eros koppintas.

    az egeszet ajanlasra neztem meg ugyebar, es nem is bantam meg, nem volt rossz. jo, tobbszor valszeg nem neznem meg, de egyreszt kivancsi voltam, hogy az idaig csak a Nights in Rodanthe-ban latott Richard Gere egy masik filmben milyen (ugyanolyan, keresni kene egy filmet amiben nem becsajozos uzletembert jatszik), masreszt Julia Roberts (Ocean's trilogia) is megiscsak mashogy nez ki huszonevesen.

    (imdb, trailer)

  • Friday, 23 January 2009
    "clock runs way faster than necessary" bug solved

    Heh, it took my whole day. So the solution was that I needed to disable two CONFIG setting Crazy enabled (+ I enabled KVM again, not sure if that is related or not).

    And of course bisecting was totally damn unnecessary, since the bug is triggered by a given config line, not by a bad commit.

    Life is good.

  • Thursday, 22 January 2009
    Linux bisecting

    So I reported this "timer runs too fast" bug to LKML and they asked me to bisect it. I know bisect already, but I only bisected userspace software which is easy. Basically you write a script that reproduces the issue, then git bisect will find the first bad commit automatically.

    With the kernel, this is much slower, because you must manually test each step.

    Of course I wanted to speed things up, so I wrote a small testcase and run it right after init=/bin/sh. This is bad. I haven't noticed until almost the end of the bisect that the bug occurs only after udev is loaded. Now that I'm sure the corrected test script really reports GOOD for 2.6.27 and BAD for 2.6.28, I can do the real bisect...

    As a side note, doing this with 1 machine would be really annoying. Luckily I can do whatever I want on my iBook, the build is done one of our fast Frugalware servers (dream) and I just download and test the bzImage on my notebook. I guess network booting would make it a bit faster (because currently I boot the test kernel, boot back the working one, download the next test one, goto 1), but I won't set up a whole tftp server on my iBook just for this. ;)

    So hopefully tomorrow we'll know what is the real first bad commit.

  • Wednesday, 21 January 2009
    Done and need-to-be-done kernel updates

    I finished the update to 2.6.28 (I mean fixing external modules) in a WIP repo, will merge it tonight, if everything goes fine.

    OTOH it turns out that the net in qemu-ppc is disabled because the driver is disabled in the ppc config. So I'll have to enable those drivers when I sync.

    Oh and a trick. mplayer -vo null -vc null will stop playing audio if video finishes earlier. mplayer -novideo won't. So that'll be the solution for my "sample music gets truncated in an flv-wav-mp3 conversion" problem. ;)

    Finally the W3C css validator guys are nice, see this thread, basically it works fine now! :)

  • Tuesday, 20 January 2009
    Fast clock

    After upgrading kernel to 2.6.28 my clock measures about 70 mins in an hour, sigh. We are debugging the issue with crazy, but probably it's not a user error, so we'll need to mail the lkml.

    I just tried qemu svn, and it's amazing.

    qemu-system-ppc -prom-env 'boot-device=cd:,\boot\yaboot\yaboot' -prom-env 'boot-args=conf=cd:,\boot\yaboot\yaboot.conf' -cdrom frugalware-1.0pre2-ppc-net.iso -hda ~/documents/qemu/hda.img

    can boot the 1.0pre2 ppc netinstall iso! :)

    The current problem is that the network card the machine emulates is not supported by the installer, but that'll be tomorrow's problem.

  • Monday, 19 January 2009
    PPC entry

    I recently ported our Qemu package to PPC, and just tested that it really works. We have a Linux binary (compiled for i386) for some 'plan making' exercise (inside the AI course at the uni), and of course I wanted to run it on my iBook. And yes, just wrapping the command with qemu-i386 made it work! :)

    The other problem I noticed is that building external modules on PPC does not work. It seem to be a known bug. PLD has a patch that changes the error message - to a permission problem. Given that on x86 building a kernel module is possible as a user - the goal would be the same on PPC as well. Not yet resolved...

  • Sunday, 18 January 2009
    BitlBee vs plugins vs OS X

    I just sent two ptaches to wilmer:

    • the first fixes install-dev with latest bzr
    • the second disables stripping on OS X as it seems that completely breaks plugins, while the plugin support is enabled by default.

  • Saturday, 17 January 2009
    sudo segfault

    Quoting a mail I just sent to Miller:

    ,,It seems I hit a bug in sudo-1.7.0 (at least I can't reproduce it with 1.6.9p17):

    $ sudo chown vmiklos /etc/sudoers $ sudo false sudo: /etc/sudoers is owned by uid 1003, should be 0 Segmentation fault

    According to gdb, it seem to be a nullpointer-dereference bug, and given that it is reproducible only in case the permission and/or owner is wrong, I don't think it has a security impact. But who knows. ;)''

    We'll see how does he handle the problem.

  • Friday, 16 January 2009

    regi, fekete-feher film. fennvan az imdb top250-ben, nem ok nelkul. annyira nem olvastam utana, de van ra egy tippem, hogy keves eredetileg magyar szuletesu rendezo csinalt ilyen szintu filmeket amerikaban '42-ben.

    wikipedian erdemes kicsit utanaolvasni, vicces, h mindezt ugy csinalta, hogy meg angolul se tanult meg rendesen.

    ja es nem utolsosorban mostmar tudom, hogy mire utal a macskajaj vegen levo "i think this is the beginning of a beautiful friendship". ;)

    (imdb, trailer)

  • Friday, 16 January 2009
    less(1) tweaks

    First, to allow latin{1,2,whatever} accents in the pager to be non-escaped:

    export LESSCHARSET="iso8859"

    Second, I use:

    # F: quit if input is less then one page
    # M: no more-like short prompt
    # R: accept colors
    # X: don't throw away the output after quit under x
    export LESS="FMRX"

    Finally to send utf8 and other exotic chars in latin2 to stdout in git (OK, this is not strictly related):

    git config i18n.logOutputEncoding latin2



    Author: Andr??s V??r??sk?<91>i <voroskoi@frugalware.org>


    Author: András Vörösk?i <voroskoi@frugalware.org>

    You can choose... ;-)

  • Thursday, 15 January 2009
    lady in the water

    ez nem jott be. szegeny k-t el kell szomoritsam, ugytunik nem egyezik minden szempontbol a film-izlesunk.

    igazabol ha van egy kis eszem, es elobb utanananezek, hogy Shyamalan redezte, akkor nem meglepo. :) eloszor lattam tole a falut, az meg jo volt. aztan jott a (persze idoben korabbi) hatodik erzek, az nem tetszett - bar igaz, annyibol erdemes volt megnezni, hogy Bruce Willis mekkora jo arc mar, hogy tud nemcsak lovoldozoset jatszani.

    itt is ez az utobbi a szitu, csak eppen Bruce Willis nelkul. noi foszerepben a falubol az egyik szinesz, aki kb u.ugy jatszik, de ott vakot jatszott, itt meg nem. a ferfi foszereplo elvileg a paycheckbol ismeros kene legyen, de nem az. a film kozponti temajat kepezo szorny kb olyan, mintha en csinaltam volna: annyira lenyugozott, hogy azon gondolkodtam, hogy biztos inverz kinematikaval mozgatjak a vegtagokat. :)

    ja es van hozza meg valami kinai mese is - utalom a japan/kinai meseket.

    (imdb, trailer)

  • Thursday, 15 January 2009
    Ideal Git CFLAGS for development

    This is always an interesting area. The avarage user needs a whole day to test a oneliner patch, just because she never built the software in question, etc. The other end of the line is a regular developer, she modifies the source and she is able to test in seconds.

    Regarding git, the testing part is not that hard: I usually work on builtins, so I edit the source code, then type 'make git-foo', and run ./tnumber-desc.sh from the testsuite.

    The other part is that you need special compiler flags, since you are interested in extra warnings, debug symbols and such.

    The default CFLAGS is defined in the Makefile, which is a tracked file, so modifying that is a no-go. You need 'make configure', then ./configure, and then you can edit config.mak.autogen.

    Junio a few days ago mentioned the CFLAGS he uses.

    Here comes the interesting part:

    CC = ccache cc
    CFLAGS = -g -O2 -Wall -Werror -fno-inline -Wold-style-definition -Wdeclaration-after-statement

    -Werror so that I'm forced not to ignore warnings, -fno-inline to be able to debug inline functions, and I just stole the two others from Junio.

  • Wednesday, 14 January 2009
    More lilypond adventures

    To expand my little lilypond knowledge, I just took an old song and tried to re-create in lilypond. Mostly finished, available here.

    Now time to find a working printer to see how does it look like on a real paper. :)

  • Tuesday, 13 January 2009
    W3C's css validator

    I wasted almost 8 hours with trying to get it working from CVS, no luck so far.

    OK, I'm not a Java wizard, but.. most buildtime and runtime errors can be solved by scanning the list archives, but finally the Apache template engine it uses really can't initialize itself.

    I started to debug it, but working with CVS is really a pain, so I want to set up a git mirror first, then hopefully I can send my results till now to the w3c css list, and ask for help.

    Sigh. Java is still a pain.

  • Monday, 12 January 2009
    Lilypond and guitar chord arpeggios

    Of course I have no idea if this is the right name of this stuff, to make long story short, I finally found a workaround to display this beast in lilypond. Yay!

    This project is really addictive, you can spend a whole day reading its documentation and you still just say "wow, this and even that is possible with this stufff". ;-)

  • Sunday, 11 January 2009

    I did not have to work with a profiling tool for C so far, so here is my first experience.

    The kernel has to have oprofile support (the kernel in Frugalware-current does not have it, I'll add it after 1.0pre2). You'll need a kernel vmlinux file if you want to benchmark the syscalls as well (I did not need this one).

    Then there are 3 levels of starting: opcontrol --init/--deinit, --start-daemon/--shutdown and --start/--stop. The first one prepares /dev/profile, the second one starts the deamon, finally the third one start profiling. Obviously the second part does the opposite.

    Once you did a --stop, you can get the results. Example output:

    $ opreport -l /home/vmiklos/git/git/git /usr/lib/libz.so.1|head
    CPU: CPU with timer interrupt, speed 0 MHz (estimated)
    Profiling through timer interrupt
    samples  %        app name                 symbol name
    22823    56.4898  libz.so.1.2.3            inflate_fast
    6019     14.8978  libz.so.1.2.3            adler32
    5975     14.7889  libz.so.1.2.3            inflate
    4233     10.4772  libz.so.1.2.3            inflate_table
    456       1.1287  libz.so.1.2.3            crc32
    252       0.6237  git                      patch_delta
    55        0.1361  git                      use_pack

    which is pretty much what I expected - I did a 'git verify-pack' between --start/--stop, so the time spent with reading the compressed git object database.

    TBH I miss a strace/sudo-like simple wrapper as well...

  • Saturday, 10 January 2009
    piaf piaf

    zene, de igazabol talan valahol a musical meg a tanceloadas kozott. a cimben levo linken el lehet hozza olvasni a hivatalos dumat, szemely szerint inkabb azt mondanam, hogy a darab ugy viszonyul a kozismerten abszurdnak es modernnek titulalt godot-ra varva-hoz, mint egy scooter koncert egy operaeloadashoz. huh? igen. :) bemegy a user es azt hinne, hogy akkor most egy, Piaf eletet feldolgozo eloadast fog latni. hat egy turot.

    csak, hogy nehany elrettento peldat emeljek ki:

    • a darab ugy kezdodik, hogy a szineszek kulonosebb jelmez nelkul be-be jonnek a szinpadra, az egesz olyesmi mint a szupersztar elejen mikor poloban meg farmerben megjonnek a szineszek, es ott kezdenek el feloltozni a forgatashoz.
    • mikor ez mar vagy 20 perce megy, akkor megnyugtatjak a kozonseget, hogy "mit varnak, a tortenetet? ja, az nincs". ok, tehat akkor nezzuk mi johet meg ;)
    • az egyik szamot mikor eneklik akkor bevonul vagy 7 ferfi szinesz, gatyara vetkozik, ezutan felvesznek noi ruhakat es az egyik ilyen kiherelt hangon elkezdi enekelni az egyertelmuen noi hangmagassagra irt dalt

    persze az optimizmus vegtelen, es tenyleg volt benne par mokas dolog.

    • egyreszt volt benne egy csomo piaf szam, amit - legalabbis zeneileg - ugytunik modositas nelkul adtak elo.
    • az egeszet a zenekar eloben kovette, nem cdrol toltak be a lewarezolt karaoke verziot ;)
    • balettnek szerencsere nem nevezheto, de ilyen akrobatikus akarmiket eleg sokmindent csinaltak, pl az egyik no ugy tolta a szolojat, hogy felfekudt valami asztalra, fejjellefele bedontottek 45fokban, aztan azzal rohangaltak fel-le, a csaj meg szemrebbenes nelkul enekelt :)

    hat szoval nemtom. talan meguti az "annyira baromsag, hogy mar jo" kategoriat, de igazabol sztem nem eri meg azt a kidobott 3 orat / 2.2khufot, ami elment miatta. de legalabbis ovatosan mielott valaki gondolkodas nelkul jegyet vesz ra :P

    ja es a fenti kepen lathato Telkes Peter kisertetiesen emlekeztet Ethan Hawke-ra, but maybe it's just me.

  • Saturday, 10 January 2009
    Preparing Frugalware 1.0pre2

    From today it's "freeze" till 13th. Pootle is funny again, it forces converting the po files to UTF-8, while _not_ converting the headers, so they still say latin2 in case of Hungarian translations, grr.

    A guy mailed me for help with my libwpd bindings, but it turned out he wants to use the C# part, so Fridrich just solved his problem in CVS.

  • Friday, 09 January 2009
    Working on merge_trees_simple()

    I just pushed out these four commits. Basically they let a libgit user use the functionality which was hardwired to git-merge-tree till now. The idea is from Dscho, so I hope the patches will be welcomed. ;-)

    (I did not sent out any patches for now, since my ls-files parseopt patch isn't in yet, either.)

    Ah and we talked about (in case I'll be home during the summer) if I should re-apply for git in GSoC. Basically I don't want to do it, but I'm very happy that my ex-mentor even recommends me not doing so. Here are his lines:

    > About reapplying for Git... I would _love_ to have you again, since I know > you will get stuff done, and in a very nice way. > > There is always a but. > > But. Realistically, I think that you learnt so many things in the GSoC > project last year, that you do not really have all that much left which > you could learn in the Git community. You really just would be a work > horse. > > There are other projects out there who do fantastic and exciting things, > and have completely different personal (and political!) environments. > > So while the Git community member says "keep him!", the mentor in me says > "let him go!" albeit with half a sad eye. > > Therefore I am strong and point you to http://code.google.com/soc/2008; I > even met some of the guys at the mentor summit, and they are all pretty > cool.

    These lines made me happy, really. :-)

  • Thursday, 08 January 2009
    Playing with lilypond

    So lilypond is a really geek-friendly project to produce music notation from text-based files. It has its own cryptic language. I spent a half day playing with it, so I'm not an expert at all, but I achieved something. ;-)

    The example song I wanted to describe is the cantina band from starwars.

    To make the long story short, here is the asciidoc source, the Makefile, and the result.

  • Thursday, 08 January 2009
    12huros gitar

    hat ez valami felelmetesen nagyszeru talalmany :)

    a mai gitarprobankon az egyuttesbol az egyik lany egy ilyennel allitott be (ois kolcsonbe kapta, de azert lehozta erdekessegkeppen). persze ki akartam probalni, de az volt a feltetel h hangoljam be. hat nem tudtam mire vallalkozok, leven a hurok kettessevel baromi kozel vannak egymashoz, szal nemigazan arra van kitalalva, hogy egyesevel meg lehessen oket penditeni, igy aztan vagy negyed ora alatt sikerult a project. de utana.. szal kb olyan elmeny mint hurcsere utan, es ezt ketszer. iszonyu jo hangja van - bar arpeggioban kicsit szokni kell, leven kevesebb hely van a hurok kozott. balkez szempontjabol meg persze erosebben kell fogni a duplaannyi hurt es jobban szetszedi az ember kezet (nylonhuros gitar eseten a hurok feszitoereje ilyen 40kg korul van, femnel duplaennyi, es egy ilyennek megtobb, 100kg korul).

    ja es hangero szempontjabol se semmi, siman lekoroz egy kisebb erositot. ;)

  • Wednesday, 07 January 2009
    bitlbee-skype 0.7.0

    It's out, the only recent change is that I added a new setting to be able to see what is the raw stream BitlBee received. The other interesting part is that after the release I finally decided to split up that huge read callback and now each part is handled by a separate function, and I have a nice array of function pointers. BTW, this also made checkpatch happy about skype.c without doing hacks like:

    printf("%s %s",

    Which would really just make the code ugly.

    Yay! :)

  • Tuesday, 06 January 2009
    Migrating git-ls-files to use parseopt

    People say that using bitfields in structs is slow. Of course it reduces memory usage, but the aritmetic is slower than just using pointers.

    But my real problem is that if a struct uses bitfields, I can't just pass foo->bar as a pointer. And I hate that. When migrating ls-files to parseopt, I needed to write 3 extra callback functions just because of this.


  • Monday, 05 January 2009
    Non-optional kbd

    Still preparing for my 'Computer Networks' exam, so I did not do much coding.

    LGee just uploaded a few new pictures about his servers, and there are two interesting ones. ;-)

    First is this one. And then yes, I must agree that some mainboards are really can't be used a server.

    This other one is just interesting - first we though that's a bug in the Frugalware ppc installer, then later it turned out to be a generic Linux-ppc issue.

  • Sunday, 04 January 2009
    szall a kakukk feszkere

    '75os film, meg gimiben lattuk eredetileg Bakossal (szerencsetlen hiaba hozott be barmi ertelmes filmet, ugyis az volt a program, h hogyan lehet felcukkolni :p).

    foszerepben a The Departed-bol ismeros Jack Nicholson, csupan itt 30 evvel fiatalabb. ;)

    meg van meg par emberke aki kesobb itt-ott felbukkan, Brad Dourif (gyuruk ura) vagy Vincent Schiavelli (startrek).

    a filmrol magarol meg.. szokasomhoz hiven nem kivanok wikipediat helyettesito plot summaryt irni. siman tobbszornezos, kicsit elgondolkodtato. jo. vagy legalabbis nekem tetszett.

    (imdb, trailer)

  • Sunday, 04 January 2009
    gmane export

    OK, this was silly.

    Yesterday I wanted to reply to a post on the swig mailing list. I found the post on nabble.com, which is way worse than gmane.org, but - I guess - due to SEO black magic Google prefers the previous. So I searched for the mail on gmane.org, appended the usual /raw to the mail, but I still did not get a mbox, to feed it to mutt. Given that I had no idea what do to, I just simply wrote an mbox header, then mutt was able to open it.

    And finally it turns out that gmane has a nice export feature. Duh! ;-)

  • Saturday, 03 January 2009
    pacman-g2 -Qt bug

    BMH still feeds me with info, he just found a -Qt bug - fortunately the fix was rather trivial.

    The nontrivial stuff is that he wants callbacks in the Python bindings and it seems that won't be easy. The reason is that - it seems, I don't have a working implementation yet - we'll need the traditional 'void *data' extra parameters in each callback to support that, since we need to store the Python context pointer somewhere.

    Of course first I want to have the whole thing working, before breaking the API with no good reason.

    The whole idea is based on this post. The provided examples work fine, at least.

    Snip. Dscho mailed me today with a project list about what could I do in Git - the two items are a major merge-recursive rework, the other is about packv4. I could learn a lot with both, my interest is in this order. But that's not yet in coding status, we're just discussing the details ATM.

  • Friday, 02 January 2009
    pacman -Sy: rsync-like optimization

    This came up on the mailing list, and finally resulted in a commit in pacman-g2.git.

    The idea is to speed up the pacman -Sy operation just like rsync speeds up not re-transferring already sent data.

    Also BMH started to poke me about the bindings privately, so I pushed a few fixes and probably I will continue doing so.

  • Friday, 02 January 2009

    arra biztosan emlekszem, hogy ketszer lattam, lehet tobbszor is (legutoljara nyaron a nosleep vegefele). nem mintha remlene barmi fontos mondanivalo vagy ilyesmi, de megis zsenialis. :)

    ja, idezetek. ezt szinkronosan lattam, szal itt tessek. azthiszem az ilyen "filmtortenelem legtobbet idezett mondatai" kategoriaban siman kapna par dijat.

    a szereplok meg magukert beszelnek. Samuel L. Jackson (starwars3), Bruce Willis meg Rosanna Arquette (6 evvel kesobb szinten egyutt jatszanak a bergyilkos a szomszedomban), Uma Thurman (felejtes bere, prime), es meg lehetne sorolni. megerdemli a helyet az imdb top10ben.

    ja es erosen 18+os, meg amit ra lehet aggatni az minden (a szohasznalat, a drog, a minden miatt ;))

    (imdb, trailer)

  • Thursday, 01 January 2009
    git-apply now uses parseopt

    At least if you track git.git's "next" branch. Happy new year! :)

    (patch, merge)

  • Wednesday, 31 December 2008
    A goal list for 2oo7

    I did it in 2oo7 and 2oo6, so I did it this year as well.

    Writing such a list takes a lot of time, but I think it worth the effort.

  • Wednesday, 31 December 2008
    szokasos evvegi tizes osszefoglalo

    evvegen egy csomo portal meg blog szokott ilyen 10es listakat kesziteni mindenfelerol, ami sokszor erdekes meg vicces meg ilyesmi. hogy ne maradjak ki a partybol, kovetkezzen a sajatom.

    leginkabb magamnak szedtem ossze par dolgot, szal ez most kivetelesen ilyen szemelyes jellegu post lesz, akit zavar az kerem gyorsan zarja be a tabot, most meg lehet.

    nem, nem a legfrissebb csajozos sztorikrol lesz szo. :)

    1. majus kornyeken valahogy felvetodott, hogy paran a #frugalware.hu csatirol menjunk el biciklizni. kulonosebb bajom nem volt a temaval, bar legalabb 3 eve porosodott a pinceben a gepem. aztan ebbol lett nyaron balatonmegkerules, most meg - pontosan nem neztem meg - 1800valahany kilometer tekeres lett evvegere, es nagyon megszerettem ezt a dolgot (mozgasigeny kielegites, kismerteku feltunesi viszketegseg, bkvutalat, ismerkedes uj emberekkel meg ilyesmi.)
    2. zaivaldi hivott nyaron az #antisleepers csatira, ahol a nyari nosleep versenyt megnyertem, valamit azota is tartom az idaigi 6 verseny rekordjat, kb 3 napnyi orankent ellenorzott ebrenlettel. jomoka volt - a kovetkezo (most a "teli szunetben" - mar akinek van olyan volt a kovetkezo, ennek) lebonyolitasaban segedkeztem, bar resztvenni nem volt idom.
    3. osztol felkertek az mkk egyik csoportjanak vezetesere (masodmagammal), annak minden idoigenyevel es oromevel egyutt.
    4. az elozo folyamanya, hogy kb 3 ev szunet utan ujra elkezdtem tancolni
    5. pont az idei ev elejen voltam kenytelen becsoppenni az msn vilagaba, szerencsere tovabbra is minimalis hasznalattal.
    6. nyaron a gsoc kereten belul dolgozhattam a git verziokezelon, kivetelesen jelentos merteku anyagi tamogatas mellett.
    7. hogy vegre valamit a bme-rol is irjak, a tavaszi felevben vegre sikerrel teljesitettem a szakiranykovetelmenyeket valamit a valaszthato targyak kovetkezteben sikerult valami ertelmes atlagot osszehozni, igy 4 felev szunet utan ujra kaptam osztondijat. az oszi felevet majd meglatjuk, idaig egesz pozitiv a dolog (egy targyat buktam csak el fixen, valamint az egyik (grafika) kifejezetten neheznek titulaltat 5osre megcsinaltam mindenfele csalas nelkul*)
    8. sztaki teruleten semmi valtozas, tovabbra is ugyanott, nagyjabol ugyanugy (ami persze nem termeszetes, tehat orulok neki)
    9. a gitarozas (fege) tekinteteben sincs tul sok minden ujdonsag - felmerult, hogy abbahagyom szemelyi problemak miatt, de vegulis az otlet elvetesre kerult, es azt gondolom, most ev vegen kevesebb feszultseg van az egyuttes tagjai kozott mint ev elejen volt
    10. direkt hagytam a vegere a frugalware-t, ahol rengeteg valtozast hozott ez az ev is, de ennek reszleteibe nem akarok most belemenni. esetleg annyit, hogy 3 ev kizarolagos pc hasznalat utan vettem egy ibookot - egyreszt maximalisan egyetertek (mostmar sajat tapasztalat alapjan) azokkal, akik azt mondtak, hogy egy nagyon kenyelmes, jol megtervezett es megbizhato hardware, masreszt pedig egyszeruen megnyugtato, hogy kikuszobolesre kerult egy spof :)

    hat hirtelennyeben ennyi.

    * nem mintha gyakran volna nalunk olyan targy ahol nagyon lehet csalni, de speciel ez pont olyan volt ahol ha megcsinaltal minden hazit akkor mar nem is kellett vizsgazni, es a hazikat meg meg lehetett iratni massal is.

  • Tuesday, 30 December 2008

    I just noticed that I can ask mkpasswd to not include extra signs (so only [A-Za-z0-9]) in the passwd, and also I can ask it to make it longer, for example:

    $ mkpasswd -l 18 -s 0

    Sadly it's quite useful on broken websites where they bail out with an error when my pass contains a ' or a "...

  • Monday, 29 December 2008
    Scripts used in the Python-2.6 mass rebuild

    So here they go.

    First, I needed a list of packages for rebuild:

    wget -O test.html 'http://frugalware.org/packages/?op=file&srch=usr%2Flib%2Fpython2.5&arch=i686&ver=current'
    lynx -dump ./test.html|grep ' [0-9]\+\. \['|sed 's/.*\]\(.*\) .*/\1/' > test.list

    Then I used the following cycle:

    git checkout -f; for i in $(cat ~/test.list); do echo $i; cd ~/git/python26/source/*/$i || continue; sudo makepkg -t python2
    6,current -C; git clean -x -d -f; sed -i 's|python>=2.5|python>=2.6|g' FrugalBuild; bumppkg -t python26,current --rebuild "-
     rebuilt with python-2.6" || break; repoman -t python26 -k push; done

    When a build failed, I fixed it up manually and used the following aliases:

    alias pybuild="sudo makepkg -t python26,current -cu"
    alias pypush="repoman -t python26 -k push"
    alias pyrec='repoman rec "- rebuilt with python-2.6"'

    then removed the already built pkgs from the top of test.list and started the for cycle again.

    Once this was done, I did a

    git grep 'python>=2.5'

    to ensure everything has &gt=2.6 now (except a few cases where a rebuild was not necessary).

    Syncing on x86_64 was like this:

    I generated the package order with:

    git log --reverse --no-merges --pretty=oneline master ^origin/master|sed 's/.* \(.*\)-[^-]\+-[^-]\+-i686/\1/' > build.list

    Then I started a for cycle as well, but now just ignoring the failed builds:

    git checkout -f; for i in $(cat ~/build.list); do echo $i; cd ~/git/python26/source/*/$i || continue; sudo makepkg -t python26,current -C; git clean -x -d -f; makepkg -dgu; rm -rf src; if sudo makepkg -t python26,current -cu; then repoman -t python26 -k push; else echo $i >> ~/broken.list; fi; done

    fortunately less then 5% of all pkgs failed.

    OK, that's all.

  • Monday, 29 December 2008
    fotra minuszban

    irhatnek arrol is, hogy a lany a vizben milyen volt, de azt nem most.. :)

    szoval par napja vetettem fel, hogy kene tekerni valamerre, aztan ugy alakult, hogy kimentunk mogyorodra es utana fotra, majd vissza bpre. szokasos oltozkodesen kivul semmi kulonos nem volt, pedig igy utolag tenyleg hideg volt (lgee becslese szerint -15C korul lehetett foton, de az teny, hogy zaivaldi teaja megfagyott) szal nem artott volna duplazokni meg valami combosabb kesztyu. de azert tul lehetett elni. foton van valami paszka pekseg, finom az arujuk.

    netto ido 3h41m26s, brutto ido 4,5h korul, 66.91km, atlag 18.1 kmh (cserebe nem izzadtam meg - vagy legalabbis itthon nem volt csuromvizes a polom mint ahogy szokott), max 42.8.

    hazafele meg 2 kulfoldit sikerult a pecsaba is elkalauzolni, hogyh a tarsadalom szamara is hasznos volt az akcio.

  • Sunday, 28 December 2008

    film amelyben Morgan Freeman (evan a minden6o, se7en, stb. - itt Sloan), nem jatszik Istent, sot megcsak igazsagharcos detektiv sem, hanem egy szemet allat. a fohos meg James McAvoy (atonement), aki valamilyen felreertes folytan hiaba luzer, megis felkaroljak. a luzerseget ugy kell erteni, hogy meg az ellen se kepes tenni, hogy a baratnoje ne csalja meg, vagy hogy ne nyomuljon ra Angelina Jolie (beowulf, gone in 60 seconds). szepen kibontakozik egy kis elmelet, hogy a Sloan vezette csapat miert gyilkolaszhat legalisan, aztan kiderul, hogy baromsag az egesz.

    egyszer nezos. esetleg akinek Angelina Jolie bejon annak tobbszor. :P

    (imdb, trailer)

  • Sunday, 28 December 2008
    Signature handling in Mono 2.0

    While rebuilding for Python-2.6, libbtctl FTBFS, and it turns out the problem was that old-style ".pub" signature. We'll see how upstream will welcome the patch, but at least that solved the problem for us at Frugalware.

    In fact that .pub sign must be ancient, I did the csharp bindings for Pacman-G2 a long time ago and then I already did not use the old form, either.

  • Saturday, 27 December 2008
    Python 2.6

    Started to work on a python26 WIP repo. About 400 packages will need a rebuild, so it'll be fun. I'll publish all the needed scripts here when I'm done - though most of them is in a "use once, then trow away" style.

    While waiting for the above scripts, I also started to work on converting git's builtin-apply to parseopt. Ideally it would be trivial, but it really have a lot of options, so probably I won't finish that today, either.

  • Friday, 26 December 2008
    darcs-fast-export 0.8

    Whoa, lots of stuff happened.

    darcs-fast-export 0.8 is out and it passes the big-zoo test. (In short AFAIK darcs2git goes to an infinite loop for big repos, the others just produce corrupted results, and d-f-e is the first that can pass that test.)

    I just noticed a bit expensive (since you'll be billed an international fee), but useful sms2irc method, by using sms4skype + bitlbee-skype. :)

    Oh and a trick. We at Frugalware use a hook to update the working dir after every push, so that the new (in git 1.6.1) warning when pushing to a non-bare repo is bogus. The way to disable it is in git-config, manpage, but here it is:

    git config receive.denycurrentbranch ignore

  • Thursday, 25 December 2008
    Frugalware Xmas logo

    phayz just pushed out a special Frugalware logo for Xmas, I like it. :)

    BTW it's interesting, my sister got an English bible and it claims that "to make it easier to read it more fluently and accurately, it's 'anglicised'." Not sure if that's really true, especially that young people like me typically learn a lot of words and expressions from movies and series...

  • Wednesday, 24 December 2008
    Jeff Dunham's Very Special Christmas Special

    igaz, hogy ezt meg november kozepen lattam, de most aktualis. idokozben az akkor bookmarkolt videot leszedtek, de nembaj, van masik.

    a show amugy tenyleg durvan poendus, sztem a poenok fele olyan amit a nem-amerikaban elok nem ertenek, es megis a vegen nem tudtam azt mondani, hogy ne erte volna meg megnezni. sot, valszeg meg fogom maskor is.

    az angolja eleg huzos, eloszor keresni akartam hozza feliratot aztan kiderult, hogy amit nem ertek az a feliratban sincs benne, leven ott csak annyit raknak bele, hogy kinnlehessen annyi ideig, hogy el lehessen olvasni. :)

    (imdb, trailer)

  • Wednesday, 24 December 2008
    Frugalware darcs repo in the darcs "big-zoo"

    "big-zoo" is a collection of darcs repos, the darcs developers do benchmarks using this collection from release to release.

    Recently our old Frugalware repo has been added, which is good, for multiple reasons.

    First, now I can say that the reference for a good darcs exporter is the big-zoo, our old repo contains weird patches which were not yet part of "big-zoo" so far. Not that I'm evil, but I want to show that currently darcs-fast-export is the only exporter that can correctly convert all the repos in "big-zoo".

    Second, it is a huge repo, so developers can how see the corner cases where darcs is really slow for a huge repo - though the GHC one was already included which is almost as big as our one and the most annoying cases are already optimized recently. (No, of course I can't compare it to git, I compare it to darcs-1.x.)

  • Tuesday, 23 December 2008
    big fish

    mese a fiurol akinek sajat velemenye van apjarol, es ami a vegere megvaltozik. eleg szaraz, nem? :) hat persze, igy aztan a film azzal kezdodik, hogy mi is elhisszuk, hogy a papa csak hablatyol, hogy aztan a vegen rajojjunk, hogy annyira nem is. ;)

    foszerepben Ewan McGregor (deception, star wars, moulin rouge, stb), Billy Crudup (aki egyebkent sztem tokre hasonlit Ashton Kutcher-re), Albert Finney (ocean's twelve). meg rajtuk kivul is meg nehany irmeros arc: Helena Bonham Carter (fight club), Alison Lohman (beowulf), Steve Buscemi (pulp fiction) es meg lehetne sorolni.

    talan pont a szineszi jateknak koszonheto a felnottmese jellege. vagy nemtom. 1x erdemes.

    (imdb, trailer)

  • Tuesday, 23 December 2008
    Next step in the "tailor creates corrupted repos" story

    I've just added a new comment to the previously mentioned ticked. In short, it seems that darcs what -s --xml is horribly broken, and tailor heavily relies on this, so darcs-fast-export did.

    I just removed this for now - maybe later I'll write my own patch parser, but that does not have a high priority in my TODO.

    I want to cut a release in case all the test conversions in the "darcs-benchmark" repo passes fine, but that will take 2-3 days, I guess.

  • Monday, 22 December 2008
    star wars 4 5 6

    az apropot egyreszt ez elozo post adta, masreszt az, hogy megkaptam az eredeti valtozatokat, azok minden erdekessegevel egyut.. :)

    mivel volt idom szorakozni ilyesmivel, a shotok sajatok es a trailer pedig mindenutt egy korabeli - eleg mokasan neznek ki. ;)

    nehany dolog ami ujdonsag volt:

    • tenyleg Han lo eloszor
    • a Cantina Band-re idaig nem figyeltem fel, pedig allati jo. nehanyszor eleg meghallgatni ahhoz h az ember fulebe masszon egesz napra ;)
    • az milyen mar h a jawak jarganyan ott a wall·e? (shot)

    (imdb, trailer)

    ebbol csak a ket kedvenc idezetem:

    "Size matters not. Look at me. Judge me by my size, do you? Hmm? Hmm. And well you should not."

    "No. Try not. Do... or do not. There is no try."

    mind2 yodatol. :)

    (imdb, trailer)

    (imdb, trailer)

  • Monday, 22 December 2008
    Persistent channel names in BitlBee

    See this ticket. The idea is not to use "chat_randomnumber" as channel name, so that irssi can remember the layout.

    We'll see how wilmer will welcome the idea. ;-)

    OTOH, I still hate bzr:

    $ bzr pull
    Using saved location: http://code.bitlbee.org/bitlbee/
    Format <RepositoryFormatKnit1> for http://code.bitlbee.org/.bzr/ is deprecated - please use 'bzr upgrade' to get better performance
    No revisions to pull.
    $ bzr upgrade
    bzr: ERROR: The branch format Bazaar-NG meta directory, format 1 is already at the most recent format.

    I guess it refers to the server repo, but PLEASE, why should I care about it? It's not my repo!

    And again something else. I just started using tuxguitar. I like it, but having sound in it was not trivial. It turns out that the working setup is to run

    timidity -iA -Os
    and then disable the oss output plugin, enable alsa, and choose the timidity midi output in the sounds settings in tuxguitar.

  • Sunday, 21 December 2008
    bookmarks in bitlbee-skype

    Yesterday macmaN on #bitlbee poked me about how would it be possible to rejoin existing groupchats after connect automatically. It turned out that Skype has support for Jabber-like bookmarks, and it wasn't too hard at all to implement it.

    I want this to settle down then I'll be ready to release 0.7 next year, I hope.

  • Saturday, 20 December 2008
    graph2k8.git repo

    OK, this is probably not that interesting, but who knows... I just put out some code I did during this semester for this OpenGL course. It's available here.

  • Friday, 19 December 2008
    star wars 1 2 3

    bekoszontott a vizsgaidoszak, igy ideje volt valami nagyobb adagnak nekiulni nezni, nehogy tul sok ido maradjon a tanulasra.. :P

    a cimben szereplo 3 filmet nyilvan meg annak idejen moziban neztem, csakh meg az utobbi is akkor jott ki amikor igencsak gyakorlatlan voltam ahhoz, hogy eredetiben nezzem. pedig erdemes. peldaul yoda szokatlan szorendjet keptelenseg leforditani, hiszem tukorforditassal a magyar szorend egyaltalan nem lesz szokatlan..

    (imdb, trailer)

    (imdb, trailer)

    (imdb, trailer)

  • Friday, 19 December 2008
    Tags without a tagger in git

    So this came up on IRC: ancient tag objects in git have no "tagger" line, and thus converting such a repo with git fast-export is not possible. And the usual way - I just reported it on the mailing list and Dscho quickly provided the necessary patch.

    I hope the ubuntu guy (who is in CC) will at least give Dscho a "thanks", but who knows if it'll ever happen..

  • Thursday, 18 December 2008
    TIlde in asciidoc manpages

  • Wednesday, 17 December 2008
    Remove items from a python list

    One item in Python's magic word is that you don't have to really care about memory management. I already know if i want to "strdup" a list, then i need foo[:], but I did not notice that in case I iterate over a list _and_ modify it, then I need such a trick as well.


    l = ['a', 'b']
    for i in l:
    print l

    So we remove each item from the list (an expensive version of "l = []").

    However, the result will be "['b']". Now if you use "for i in l[:]:", everything will be fine, because you can iterate over the original list.

    It's a shame that I do python for more than 2 years, and I did not know such a basic stuff. :(

    (original post)

  • Tuesday, 16 December 2008
    a few note about rpm

    I spent some time today to prepare some rpm packages for an RHEL4 box, it was an interesting experience. To preface to this story is that first I had to do the followings on Frugalware:

    • Patch mysql 5.0.37 to add support for the sphinx search engine
    • Make sure about sphinx itself works fine with this (though sadly I haven't had time yet to package sphinx as well).

    We have a newer (but compatible, since we still ship 5.0.x) mysql, but a simple git checkout gave me the old buildscript and then the patch applied perfectly.

    Then the plan changed, I needed to do this on an RHEL4 box as well.


    • Fix broken up2date config, it seems nobody installed any security update on the box for a long time.
    • Notice that RHEL4 has mysql 4.x, so I had to upgrade it to 5.0.x which was not trivial.
    • After adding the patch to the spec file, I saw that there are a bunch of manual autoconf/automake/autoheader/autowhatever calls, so I did not add a call to mysql's own autogen script. It turned out later that this was a fault, the default autofoo calls did not regenerate all the necessary files, basically they just took a lot of time, but did not really do anything useful. Sigh.
    • Once build was done, I had to rebuild perl's mysql driver and the whole php package because of the major mysql upgrade. Did I say I hate to touch php?
    • And finally the worst was to package sphinx. I used some opensuse spec file, but it turned out to be badly broken on RHEL4. Fixing it was not so problematic, but took a lot of time, because debugging a specfile under RH is a PITA.
    • Let me show a few examples. The equivalent of Fdestdir (the directory which will be tared up after the build is done) is not rm -rf'd before the build starts. So if you have some crap there, your final package will have it.
    • OTOH, Fsrcdir (the directory where the build takes place) is deleted, which means you can't do an incremental build.
    • If you break your pre-uninstall script, you can't easily uninstall a package, even with rpm -e --force --nodeps (you need some magic --no-preun switch, which is not implied by --force).
    • If you say rpm -Uvh foo-2.0.rpm, then sometimes it bails out with an error about it has a file conflict because /bar/baz.so is provided by foo-1.0. What? Doesn't -U stand for upgrade?

    Okay, this was enough. I finally finished the task, but I again just can make a "this is so much more efficient with Frugalware" note. ;-)

    And no, I don't like to write about why foo sucks, but both this packaging system (or at least the default settings) a docbook sometimes really sucks.

  • Monday, 15 December 2008
    date of docbook manpages

    It seems the method we used to have a custom date format (ie.: not the default mmddyy, but the yymmdd one) is no longer supported. I spent about an hour trying to figure out what's wrong with it, but it seems the solution is not so trivial and it just does not worth the effort. So it's dropped for now, sigh.

    And if I'm at blaming docbook, then here it is: The git manpages still have a ".ft C" / ".ft" string pair around code blocks (or whatever they are called, think of the html <pre> tag), probably due to some broken custom asciidoc.conf.

    I like docbook (since generating man/html/pdf is easy from it), but I really hate the fact that they break something with each release. ;-/

  • Sunday, 14 December 2008
    Playing with metapost

    The name of the command is mpost(1), and it's part of the tetex package. I read about it in udrepper's blog. The situation for me is true as well: I'm better in programming than doing anything by hand, so it's something for me. Some very initial results here.

  • Saturday, 13 December 2008
    GHC upgrade

    I just got some time to upgrade GHC to 6.10.whatever in Frugalware-current, and it seems they managed to create some screwed up bootstrap binaries, linked to lineedit. This is some BSD version of GNU readline, we did not even had it packaged and the docu says it's outdated in most distros. :-P

    However, we still want to bootstrap using upstream binaries, so now we use it. At least I was able to get rid of the ugly LD_LIBRARY_PATH hack, caused by the old readline library they linked the binaries in the previous series.

  • Saturday, 13 December 2008
    in bruges

    "in fucking bruges?" - ha valaki latta a filmet, tuti ez az elso ami eszebe fog jutni. ;)

    amugy meg televan szep bruges-i kepekkel, persze nem annyival h elmenjen kulturfilm-iranyba a dolog. jatszik benne Colin Farrell (minority report), Brendan Gleeson (beowulf), Ralph Fiennes (schindler listaja). ja meg Clémence Poésy, akit most lattam eloszor es tokjol vitte a szerepet.

    a sztori is jo, van mondanivaloja, szal teljesen elegedett voltam. :)

    (imdb, trailer)

  • Friday, 12 December 2008
    Hacker Purity Test

    I just found this test, it's an old one, almost 20 years old. It's funny to see what questions became outdated and which didn't.

    Some of my favorite questions:

    • Do you complain when a "feature" you use gets fixed?
    • Ever mask an NMI?
    • Do you own more than 16 floppy disks?

    Of course the last one is because I still do have more than that - though I no longer have such a reader at home - would have to go to work to read them. ;-)

  • Thursday, 11 December 2008
    Git Janitor cleanup

    Mailed Christian Couder to cleanup up the Janitor page on the wiki a bit, since for example all the git_config_string refactoring is already done.

    It's nice I did not really have to explain I do not want to destroy his work, it's just no longer necessary - he understood it just fine.

  • Thursday, 11 December 2008
    batman begins

    huh, hat ez szinten tobbszornezos. a masodik resz onmagaban is nyilvan ertheto meg minden, de azert igy kerek a sztori. es talan a masodik reszben kicsit jobban fel van porgetve a technika, itt is legalabb olyan jo a szineszi jatek, szal ezis ilyen abszolut 10/10pontos alkotas.

    Rachelt itt meg Katie Holmes (phone booth) jatsza aztan feltunik Liam Neeson (narnia kronikaiban aslan hangja), de amugy nagyjabol minden szereplo ismeros a masodik reszbol.

    (imdb, trailer)

  • Wednesday, 10 December 2008
    Git User Manual in PDF

    I just sent out a patch to add support for generating the pdf version of the git user manual. I (and some of the guys at the uni - just discussed recently) prefer reading long docs in pdf, rather than in the memory leaker firefox.

    We'll see how it'll be accepted.

  • Tuesday, 09 December 2008
    Enjoying search autosizer

    This was getting more and more annoying. So my problem was that whenever I searched for something in Firefox, I typed it to the search bar and the query was left visible there. This is just totally idiotic for (at least) two reasons.

    First, those search queries show what you are thinking about. It's normal that you don't always speak about what you are thinking about, so why would it be logical to always show what are you searching for. This is just uncomfortable for other people, they come to your box (somebody from the family, etc), want to search for something and they see what you were searching for, and they will think about "why did he search for this" - not that they care about it, they just don't want to see this info.

    Second, I regularly work in a library and such places where the contents of a query may be just sensitive info and/or NSFW.

    OK, so as the result of the previous problems, I saw myself just hitting enter in the search box to get the normal search form and search there so the original search box remained empty. This was abnormal.

    Today I spent some time searching for a proper solution for this and sort-of found it: the Searchbar Autosizer extension. Actually it's stupid as it re-sizes your search box (so make sure you remember the size of it before you install this extension), but you can make it a fixed value again and in the second dialog of the preference wizard you have the option to clear the search box right after you hit enter. Excellent, that's what I was looking for. :)

  • Monday, 08 December 2008
    Fast distributed development

    So when I first sent a kernel patch to the x86 subtree, I had to wait a lot. The patch (commit 273c112 in linux-2.6.git) was created in May and the first release (v2.6.27) was out in October. Then I discovered that critical bugfixes and security fixes are a different matter, getting such a patch in a release takes 1-2 weeks, depending on the priority of the patch.

    Today I noticed that the newest git release (v1.6.0.5) comes with my patch which I just created 1.5 days ago. Yes. that's how does goes if people know you. :) OK, this is not a rule, a release may take more time, but it is really committed in ~2 days in most cases - if the patch itself is correct and you earned some credit already from the maintainer.

  • Sunday, 07 December 2008
    Export to C from Gimp

    I like this feature. It's pretty useful now when I have a homework at the uni where the whole solution should be a single C file. So I just do a texture in Gimp, export it to C, copy&paste it to "the" file, and stop wasting my time trying to create some texture by hand. Yay! :)

  • Sunday, 07 December 2008
    gitar mikulaskor

    ilyen. szeretem csodalni azok jatekat akik jobbak nalam. :)

  • Saturday, 06 December 2008
    Having fun with boost 1.37.0

    So we decided to upgrade from 1.35.0 to 1.37.0 in Frugalware-current. As usual, there is a WIP repo since this won't be finished in one day. Most of the trivial rebuilds are done, but still need to fix up miro, pdfedit and bmpx. Ah and I needed to upgrade libtorrent as well which resulted some problem in btg and qtorrent, though both have some support for the new 0.14.x libtorrent in SVN so most of the work was just to backport those patches.

    A user on #frugalware asks when will we have python-2.6. Not before boost-1.37, I'm sure.

    Side note: It seems I managed not to waste the whole day just because I met and old friend (and drinking beer). It turns out that if I drink 2 beers and sleep 2 hours then I can code without the usual "go to bed early, sleep a lot, then you can work" procedure.

  • Friday, 05 December 2008
    kernel.org gitweb fork

    It has not been updated for a long time, but today a fix appeared. It seem to be kernel.org-specific though, so don't worry.

  • Thursday, 04 December 2008
    gitte on tailor

    Today evening gitte collected a summary of his tailor problems, which I would call a nice collection.

    He says:

    01:31 < gitte> vmiklos: tailor was limited in many ways.
    01:31 < gitte> vmiklos: one, basically branch per branch.
    01:32 < gitte> vmiklos: two, it was written in Python
    01:33 < gitte> vmiklos: three, it did not define a language, but a
                         class interface
    01:33 < gitte> vmiklos: four, it made assumptions about the internal
                         organization of SCMs
    01:33 < gitte> vmiklos: five, it is maintained in a darcs repository,
                         which tailor cannot even convert to Git.
    01:35 < gitte> vmiklos: oh, and it did not help that the configuration
                         is awkward and badly documented, not to mention
                         inconsistent with regard to the types of input/output

  • Wednesday, 03 December 2008
    Asciidoc QA

    OK, given that I want to build the Git User Manual 1.6.1-rc1 with Asciidoc 8.3.0, I continue the story started yesterday. The new bug seem to have something with attribute handling, whitespaces in references and quotes, pick your favorite one.

  • Wednesday, 03 December 2008
    konyv7 2oo8

    ilyesmi. ma voltam az E-ben egy orat, meglepoen sok ismeros konyv volt (szal amit mar olvastam es sorakozik a polcomon) meg olyan amibe beleolvasva ertelmesnek tunt. meg pentekig lesz, erdemes egy kicsit elidozni, tokjo ajandeknak valo cuccokat lehet osszegyujteni.

  • Monday, 01 December 2008
    asciidoc and tex math expressions

    So today I had a test at the uni with a lot of formula and given that it was boring to learn, I created a cheat sheet using asciidoc. The fun part is that the just released asciidoc 8.3 not only supports inline tex expressions but (using -a latexmath) supports rendering most of them to html as well.

    I bookmarked a few related useful howtos on delicios, and my 14-page-length doc is available here (source, pdf, html).

    I also like the new table format. The only buggy thing seems that I always have to scale images down, 100% results in a size about 200% somehow. Ah and the url escaping stuff I just reported, but that's not a problem here.

    I hit it while building Git v1.6.1-rc1, released today. The toplist of that is interesting:

    $ git shortlog -s -n v1.6.0..v1.6.1-rc1|head
       351  Junio C Hamano
        61  Alexander Gavrilov
        54  Shawn O. Pearce
        48  Miklos Vajna
        43  Jeff King
        38  Brandon Casey
        29  Nanako Shiraishi
        28  Nicolas Pitre
        25  Alex Riesen
        24  Petr Baudis

    Heh, heh.

  • Sunday, 30 November 2008
    darcs-fast-export benchmark postponed

    OK, I gave up converting darcs' darcs with tailor, opened a ticket for it. Once that is resolve, I hope I can do a comparision.

    Snip. I like the new asciidoc-8.3.0, now math expressions can be defined using the latexmath :: [] macro inline. ;-)

    Snip. I like how people can say the usual "if you need it, send a patch" sentence. Today's version:

    "It's not very high on my list of priorities, but I assume fixing the problem is probably not hard if you decide to get your editor dirty." :-)

    (full message)

  • Saturday, 29 November 2008
    salomon elios xx black

    hervisben volt ilyen learazos moka es mar tervben volt, hogy kene egy uj bakancs, ilyen lett. legkesobb februarban kiderul, hogy hogy szolgal.

    remelhetoleg csak azert volt olcso mert kifuto szeria, legalabbis a salomon sajat honlapjan mar nincs rola info, egyeb meg LMG.

  • Saturday, 29 November 2008
    Undocumented modprobe switches

    I just sent this patch, because I hated I had to look up the source about what -b does.

    BTW, I did the d-f-e benchmark for the ghc repo as well, the results are here. I hope I can get tailor to somehow convert the darcs and ghc darcs repo as well, then I can draw some nice chart about how fast d-f-e is. ;-)

    Currently it can't convert darcs.darcs because I specified latin2 as input/output charset and it considered that as invalid. Given that d-f-e detected ISO-8859-2, I wonder WTF is this, I unspecified the output charset and changed latin2 to ISO-8859-2 on the input side, we'll see if that helps or not.

  • Friday, 28 November 2008
    darcs-fast-export.git: dramatic speedup

    I got to implement the direct patch technique for darcs2 repos in darcs-fast-export, and it seems to be a dramatic speedup.

    The benchmark was done using darcs' darcs.


    real    786m16.035s


    real       29m39.458s

    I plan to do a similar benchmark with ghc's darcs repo as well (it contains about 19k patches).

  • Thursday, 27 November 2008
    Sad story about darcs show

    So today I did what I have in my TODO for some time: make darcs-fast-export produce the fast-import stream on the fly, without a tmp working dir (that's how tailor and darcs2git works, and I think that's just ugly).

    And the result? I thought this will be the trick that makes it a lot faster, compared to tailor and at the end it turns out that it slows it down about 3 times. :-(

    Not counting speed issues, it's a huge cleanup:

     12 files changed, 34 insertions(+), 106 deletions(-)

    Dunno what to do with it now. I'll try to poke the darcs devs, maybe they can optimize it a bit.

    The sad fact is the comparision to git:

    $ time darcs show contents --match "hash 20040523231834-97f81-2bca6242bec169bd01079378524a33e0310e0b65.gz" tailor.py >/dev/null

    real 0m2.780s $ time git show 451ae1176d56a579d3d7bd236fe7d7dd9df59326:tailor.py >/dev/null

    real 0m0.004s

  • Wednesday, 26 November 2008
    Benchmarking darcs-fast-export

    OK, so I got this idea in the darcs-user mailing list that it would be nice to do some benchmarks on how fast and correct darcs-fast-export is. Actually I already have a TODO item about an idea that would make it faster, but doing a benchmark before doing the speedup is required in that case as well, so that I can show "hey, this is cool, it results in foo% speedup!11". ;-)

    And if I'm already there, I plan to do it with tailor as well, I'm just curious about how fast it is. Ideally fast-import is much faster, but I guess the current darcs exporter does not make use of it, so I expect something like 1:1 for now.

    The test repo is darcs' darcs, current status with darcs-fast-export is like:

    progress [2008-11-25 16:02:28] getting list of patches
    progress [2008-11-26 00:53:25] 4000/6548 patches

    Yeah, darcs apply is slow.

  • Tuesday, 25 November 2008
    nights in rodanthe

    tekintsunk el attol, hogy a cimbol alkotott mozaikszo eppen egy nor kapu ;)

    amolyan atlagos romantikus drama, elolvastam elotte egy ajanlot, nem tobb es nem kevesebb annal amit vartam. tekintve, hogy nem talaltam angol feliratot, ra voltam kenyszeritve, hogy gyakoroljam vegre egy kicsit a felirat nelkuli angol filmnezest. (valszeg nem jogos, de ettol fuggetlenul azert mindig sikerelmeny, mikor a film vegen feltunik, hogy "je, ez nem volt szinkronos" ;) ).

    visszaterve a mozikban mar egy honapja jatszott filmre, a ket foszereplo Diane Lane (untraceable) es Richard Gere (na ovele meg nem talalkoztam). a tobbi szereplo gyakorlatilag elhanyagolhato, bar a harrypotter-arcu Charlie Tahan (i am legend) itt nemigazan artatlan kisgyerket jatszik, inkabb az igazi 12eves geek megtesitoje. :)

    (imdb, trailer)

  • Tuesday, 25 November 2008
    Sample A* implementation in Java

    I got this exercise at the uni, and I thought it's easier if I split the problem: first the logical one (implement the pseudocode from Wikipedia in Python) then the RTFM one (figure out the right Java API).

    Of course I wasted the whole evening by not starting working on it, so it was 0:30 when I started. It took about 2 hours to do the Python implementation, and then again two hours to transform it to Java. And of course the code is two times longer. Guess what? One of the guy I talked today was surprised about how short my Java code is. :-P

    BTW, the day before I finally got to write git-darcs. An old vision that is now reality. :-)

  • Sunday, 23 November 2008
    Initial bidirectional gateway between darcs and git

    There is now a testcase that checks if the feature mentioned in the post title works.

    Basically I hope I can write - based on this - a git-darcs wrapper that will make it easy to convert a darcs repo to a git one, work in git, then push the result back to the darcs repo, something I wish a long time ago. ;-)

  • Saturday, 22 November 2008
    Mutt upgrade

    I use Frugalware's mutt-ng package for e-mail, which is mutt-devel + a more-or-less small patchset, maintained by voroskoi. Given that he was quite inactive recently, I poked him regularly to update the package (+ the patches, of course) to 1.5.18. I just noticed today that he did so about a month ago. :-)

    Two changes I noticed so far are: 1) when you open a large folder, not only the current/total value is printed for processed mails, but the percentage as well, and 2) the sidebar shows again the number of flagged mails, which feature disappeared IIRC after we switched from "mutt-ng as a fork" to "mutt-ng is mutt-devel + patches".

    Snip. I bumped our kernel to and it seems now I have to update the kernel config even for a new -stable release, which is quite annoying. :-/

    Snip. This evening I got some time to work on this darcs-git stuff again and I tagged darcs-fast-export 0.5 + pushed an initial darcs-fast-import.

    Of course it does not support incremental import, it does not import tags yet and such, but it works! ;-)

  • Friday, 21 November 2008

    The project was linked on a news site today, but voroskoi already poked me about "hey, you should try it out with Frugalware", so I was aware of the project already. The reason I point it out is that now they create a sample for Git as well, and I seem to appear in it at 4m25s, heh.

  • Thursday, 20 November 2008
    Life without IPv6 for a day

    The IPv6 tunnel I use changed its IPv4 address. This caused some great silence in my IRC client, basically none of the freenode people was able to poke me with random problems. ;-) But the party is over, since the tunnel guy was kind enough to mail the new IP.

  • Wednesday, 19 November 2008

    a cim ismerosen cseng mar miota a fulemben, de idaig ez meg nem volt meg. es vicces, hogy a magyar cimet irom, leven mostanaban hamar leulok filmet nezni akkor igyekszem angol hanggal (+ opcionalis angol felirattal) tenni - elvegre minden film alatt tanul par uj szot az ember, meg szintfentartasnak se rossz.

    a mufaj scifi, az iro Philip K. Dick pedig ismeros volt mar a felejtes bere-bol. sot igazabol az egesz mu sokban hasonlit ra, nem veletlenul.

    foszerepben a szamomra a rain manbol ismeros Tom Cruise, aztan meg par ismeros arc mint pl Colin Farrell (phone booth) vagy Kathryn Morris (szinten felejtes bere).

    ez is nyugodtan nezheto tobbszor. :)

    (imdb, trailer)

  • Tuesday, 11 November 2008

    a trailer eleg sokat elmond az egeszrol. sokszalon futo tortenet amirol hiaba tudjuk elore, akkoris hitetetlen, hogy a vegen megis osszeernek.

    a szineszi jatek fenyet pedig olyanok emelik mint Julie Delpy (before sunset), Brendan Fraser (crash), Andy Garcia (oceans') es Forest Whitaker (phone booth).

    tobbszor nezos. :)

    (imdb, trailer)

  • Tuesday, 04 November 2008
    the edge of love

    huh, regen lattam filmet premier elott, de ez erdekesnek igerkezett, es nem is bantam meg. erdemes angol felirattal nezni, mert a Dylan versek megis masok eredetiben. sokban hasonlit a "vagy es vezeklesre" (amiben szinten keira knightley jatszik) a korulmenyeket tekintve, viszont az egesz cserekmeny itt tok jol meg volt csinalva. valamilyen szintu happy end is megvolt a vegen, de persze nem tulzasbaveve, elvegre megiscsak egy dramarol van szo.

    a masik noi foszereplo sienna miller, vele is lehetett talalkozni az alfie-ban, a casanovaban, es erdekessegkeppen a "kis vuk" angol hangjat o adta. ferfi foszerepben cillian nurphy (dark knight) es matthew rhys (sorted). szoval csupa ismeros arc.. csak ajanlani tudom. holnaputantol a mozikban! :)

    (imdb, trailer)

  • Monday, 03 November 2008

    itt. hugom azt igeri, h ebben a felevben tobbet nem kell csinaltatnia, es azzal gyanusit h a blogot tobb himnemu, olvassa, es egyelore abbol van fokepp hiany. ;)

  • Sunday, 26 October 2008
    tura es nightride

    bar nem tekereshez tartozik, de tegnap volt, es hamar irok, irjak errol is. ugy alakult, hogy 6 mkk-s tarsammal egyutt voltunk kirandulni a borzsonyben. tul pontos utvonalat nem tudnek irni mert pont azt elveztem, hogy ezt a turat nem en szerveztem, es en csak user voltam, de valami olyasmi, hogy keles fel7kor, ki a nyugatiba, onnan szobra vonattal, aztan busz aztan kisvasut, onnantol vegre gyalog. a kisvasut amugy mokas volt mert valami olyasmit magyaraztak, hogy a nap folyaman elsore akkor ment fel a palyan a szerelveny, igy aztan ketszer is csuszott, ilyenkor elkezdtek homokozni (mint elmagyaraztak van kulon a mozdonyban ilyen "homokozo" ami kozvetlenul a kerek elott szorja a sinre a homokot) aztan elobb-utobb sikerult tuljutni a kritikus szakaszon.

    a gyaloglos szakaszban erdekes volt, hogy a tarsasag egyetlen noi tagja vezette altalaban a menetet, pedig pont arrol beszeltunk elozo nap, hogyha nem lesz lany akkor majd milyen gyorsan fogunk haladni. :)

    mindig meglepodok - es ez a mai nightride-ra is igaz volt - hogy egy-egy ilyen alkalommal miminden erdekeset meg lehet tudni emberekrol, csupan azert mert egy sokoras egyuttlet alatt meg a zarkozottabb emberek is el-el hintenek magukrol nemi infot, vagy eppenseggel meg be is lelkesednek es reszletesen meselnek/magyaraznak valami temarol ami izgatja oket. :)

    lenyeg a lenyeg szep lassan besotetedett es diosjenorol mar vaci atszallassal jottunk is volna haza a nyugatiba, de kaposztasmegyer kornyeken volt valami gazolos dolog, ugyhogy nemi varakozas utan inkabb mihamarabbi bkvzas mellett dontottunk, vegul olyan este 10 korul haza is erkeztem. reg voltam ilyen igazi egesznapos dolgon, jo neha az ilyen.

    a mai nightride-ot meg azert vartam mert 4hete voltam utoljara, jo volt latni ujra a cmes arcokat. nomeg zaivaldival megregebben futottam ossze. persze o puhany volt, teazas utan lelepett, pedig vettunk tokfinom pogacsat + turos/makos retest utana a peknel.

    jameg most jott dnet is, valojaban teljesen a veletlen folytan, leven indulas elott 15pcel kerdeztem meg, hogy erdekli-e ;)

    ja es a nap poenja, hogy 2:50kor indultunk a deakrol haza de 2:37re ertem a lakasba. :) (oraatallitas miatt, ugye.)

    az ora ilyesmit mert, hogy: netto ido 2h38m18s, brutto ido ~8h, tav 57,3km, atlag 21.7, max 56.3.

  • Tuesday, 21 October 2008
    the hottest state

    michelle williams (deception) az egyetlen akit ki lehetne ebbol emelni mint pozitivum. amugy az egesz kb nem szol semmirol, egy abszolut nemkulonleges pasi meg csaj, szokasos sztori h osszejonnek aztan a film kozepen szetmennek a es film vegeig nem tortenik semmi.

    ja meg ethan hawke (mielott felkel a nap), aki tokeletesen jatssza a katasztrofalis amerikai apukat. ;)

    (imdb, trailer)

  • Thursday, 16 October 2008
    comics by dnet

    tekintve, hogy dnet elkezdett alkotni es a masodik palyamuvet kulon a keresemre keszitette, kap egy pirospontot es linkelem.

    tessek commentelni ha tetszik mert 1) ott nem lehet 2) jolenne ha folytatna, ahogy o mondana, "zsenialis" ;)

  • Monday, 13 October 2008

    minden evben ketszer szokott lenni ilyen cserkeszek altal szervezett teljesitmenytura, aminek a bringas reszlege ugy nez ki, hogy marc15 kornyeken 48/96kmes tav van, okt23 kornyeken meg 56/112. ertelemszeruen most mi ez utobbira mentunk.

    keles 6korul, arpadhidnal talalkoztunk 7kor, majd ki budakalaszra, ott start. lett volna valami reszveteli dij, de azt elfelejtettek elkerni. turautvonalat adtak, terkepet nem. es mi se vittunk. pedig kellett volna, dehat utolag mar konnyu okosnak lenni.

    reggel ilyen kotszitalos dolog volt, eleg fos mert alig lehetett kilatni a szemuvegbol meg a puloverem is tiszta viz lett de aztan elmult, felszallt a kod, kisutott a nap, life is good. ja es meg start elott tankolas peksegnel.

    maga az utvonal eleg para volt mert kb ilyen ~10km/hval kozlekedheto emelkedokbol (kitaposva lehetett volna gyorsabb is de az hosszutavon nem megy) es ennek mondjuk negyszeresevel lefele-lejtokbol allt. tehat kb teljesen ellentete egy balatoni karikazasnak, de talan nem is baj, igy volt benne ujdonsag.

    a pecsetelopontokat eleg jol megtalaltuk, kiveve az utolsot. vegul (mint utobb kiderult) az urak asztalanal - ami a gyakorlatban egy elhagyatott katonai objektum - visszafordultunk szentendre fele, ott meg betoltunk egy pizzat aztan haza.

    illetve nem haza, mert meg hivatalos voltam lagziba, szoval effektive ilyen fel2 korul ertem haza, de anelkul azert ilyen este 8-9 lett volna csak.

    eredetileg az motivalt h na akkor most letekerunk 100+kmt, es ez vegulis megvalosult, szal attol fuggetlenul, hogy nem csinaltuk vegig sztem tokjo program volt, legkozelebb erdemes lenne terkeppel megnezni ;)

    vmikor a lagziban a zsebemben 0zodott a kmora, szoval pontos adataim nincsenek, de kb: tav 148km, netto tekeres 8h, brutto 13h, max 55km/h, atlag 18km/h korul.

    ja es az urak asztala elott/utan megalltunk szedrezni, ott keszitette LGee a post teteljen levo kepet, meg a tobbit is (marmint a turan).

  • Thursday, 09 October 2008
    giro skyline 08 blue/white

    ideje volt mar beszerezni ilyesmit. egyelore tetszik.

  • Friday, 03 October 2008

    meg a juliusi balatonmegkerulos moka elott vettem egy bicikliorat, mert az jo. ma atfordult az 1000. km-en. saccra ez a bizonyos tura tette ki a tav kb 30%-at, ujabb kb 40% a cm-es nightride-ok, 20% korul van az egyetemre/munkaba jaras, 10% egyeb.

    jo dolog ez. egyreszt tokeletesen ki tudom vele elegiteni a mozgasigenyemet, masreszt valamifele kondiciot is ad, es ahogy a turazasban szeretem, hogy onerobol el lehet jutni sokfele, ugy ezt ittis megkapom, csak epp sokkal messzebb el lehet jutni. es egy nagyobb tekeres utan garantalt a jo alvas. ;)

  • Thursday, 02 October 2008
    pirx pilota kalandjai

    a "lem teljes univerzuma" ketkotetes gyujtemenybol ez az elso konyv a masodik kotetbol. igazabol nem osszefuggo konyv, tiz darab egymastol nagyjabol fuggetlen novella alkotja. hirtelen nehez lenne kiragadni barmit is, hogy mi tetszett belole, alljon itt a "hivatalos" ajanlo:

    'Egy elromlott robot áramköreiben régen halott ?rhajósok személyiségeinek töredékei élnek tovább, s az éjszakánként felhangzott titokzatos morzejelekben újra meg újra végigélik a tragédiájukat... Tökéletesen emberi külsej? robot?rhajósok szövögetik számítógép pontosságú, hideg terveiket próbaútjukon, ahol senki sem tudhatja a másikról, robot-e vagy ember... Egy robot a névtelen bolygón hegymászásra adja a fejét - elromlott-e, vagy a sportszellem ébredt fül benne? És mi okozta két kutató rejtélyes halálát a Hold túlsó felén? Az izgalmas, fantasztikus kalandok f?szerepl?je, Pirx, nem szuperh?s, hanem kedvesen emberi, talpraesett, bár kicsit félszeg, "a jámborságig becsületes", nagyon rokonszenves pilóta. Kadét korától, tapasztalt parancsnok koráig kísérhetjük végig hol hátborzongató, hol humoros kalandjait.

    Stanislaw Lem, a világhír? tudományos-fantasztikus író, szokásához híven, ezekben az elbeszélésekben is izgalmas gondolatokat vet fel az ember és gép viszonyáról, a mesterséges érzékszervekr?l ésszemélyiségekr?l, a robotok "lélektanáról" és a technológiai korszak sok más id?szer? és jöv?be világító kérdésér?l.'

  • Saturday, 27 September 2008
    indiana jones es az utolso kereszteslovag

    az indiana jones-os filmekbol a masodik, lassan 10 eves. az elsohoz kepest nemnagyon esett a szinvonal, es nekem bejon ez a stilus. :)

    (imdb, trailer)

  • Wednesday, 24 September 2008
    cm 2008 osz

    csak hogy stilusos legyek, irhatnek valami masrol is, de maradjunk a bringasoknal.

    sot igazabol ilyen linkgyujtest akartam, de azt is megcsinaltak, nalam jobban.

    ami nekem szemelyesen tetszett, az a kretazas volt a moszkva teren, meg az, hogy rengeteg ismeros arcot lehetett latni, bmesek, munkatarsak, ircesek, bloggerek, es meg lehetne sorolni. szoval tenyleg ottvolt majd' mindeki aki szamit ;)

    najo, megis par foto ahol meg lehet talalni: 1, 2.

  • Sunday, 21 September 2008

    csutortokon mikor akartam hazajonni bmerol sikerult olyat produkalni, hogy egyhelyeben tekeres. szoval a hatso racsnim (illetve egesz pontosan a rajta levo fogaskerekek) szepen csusztak anelkul h elorehaladtam volna. vegul rajottem, hogy nagyon lassan (~14kmph korul) tudok haladni ha feljebb valtok, es igy vegul haza tudtam jonni. aztan szerencsere elertem LGeet, es igy masnap mar volt kb elkepzelesem, hogy mit kene cserelni meg hogy es vegul penteken 2-kor mar fennvolt az uj racsni (nekem meg a regi tipusu van amikor a csapaggyal egybe vannak epitve a fogaskerekek - es nem az aggyal -, szal az egeszet cserelni kellett). ugytunik, hogy az uj eleg jol birja mert voltam kinn megint hetvegen tahiban, oda-vissza ilyen 70km korul es idaig semmi problema vele.

    ja amugy a konkret baj azvolt, hogy a legalso fogaskereken letort egy fog, igy megrekpedt a fogaskerek es fellazult az osszes tobbi, igy el tudtak fordulni anelkul, hogy az agy mozgott volna.

    jo, hogy a bicikliket meg nem ugy gyartjak, hogy egybeontott muanyag. :)

  • Friday, 19 September 2008

    mint ahogy az a honlapjukon meg szerepel, csutortokon adtak koncertet a misztralek az mszt-ben.

    nagyjabol volt egy elkepzelesem, h mi varhato toluk, de sose hallgattam semmilyen misztral cdt korabban, szoval erdekelt, hogy milyen lesz, ha mar eloben lehet oket hallani.

    nagyreszt megzeneseitett verseket adtak elo, adytol, juhasz gyulatol, janus pannoniustol (lehet volt meg mas is, ezezkre emlekszem most hirtelen).

    "meghallgatom" kategoria, nem rossz. az egyuttesben zenelo emberekek meg kifejezetten szimpatikusak.

  • Tuesday, 16 September 2008
    kislany, nagylany

    hat ez valami hihetetlen fos. gyakorlatilag felreertesbol neztem meg, boobaa kerdezett ra, en meg azthittem h ajanlja, es egeszen a film vegeig vartam, h vegre tortenjen valami. az ajanlo szerint raadasul van benne vmi 18+os jelenet - ha legalabb az lett volna...

    kb az egyetlen szinfoltja az egesznek Keisha Castle-Hughes, de onmagaban attol meg, hogy jol nez ki nem lesz jo a film. :/

    (imdb, trailer)

  • Sunday, 14 September 2008
    earthdance - honouring the earth

    noszoval a goa.hu-n volt meghirdetve ez a tegnapi moka, aztan LGee invitalt ra, es ott a helyszinen osszefutottunk pontaggyal is, akinek meg volt ott jopar ismerose.

    a linken megtalalhato a fellepok listaja, akik kozul ugyan nem sokat ismertem, de ennek ellenere azert voltak ismeros zenek.

    az emberek pedig jofejek voltak, volt olyan akit nem is ismertem csak egymas mellett tancoltunk, es mikor mentek el, koszontek, meg ilyesmi :)

    a flyer amugy megteveszto mert a varhato eso miatt atrakta a durer kertbe a bulit, szoval nem voltunk mi semmilyen hegyen.

  • Saturday, 13 September 2008
    first public bitlbee server with the skype plugin installed

    i just recently got a mail about that 'bitlbee1.asnetinc.net' is a public server with my skype plugin installed. in other words, you no longer are forced to run your own bitlbee server if you want to use skype from bitlbee, yay! :)

    note: actually if you are behind nat, then this is not something useful for you as the public server will want to connect to your skype instance, actually. :/

  • Friday, 12 September 2008
    frugalware 0.9 on an eee pc 904

    so, one of my friends called me a few days ago, saying 'hi, i got this eee pc, it's shipped with win xp, could you please install frugalware on it, making it dual-bootable?'.

    today i got the gadget, i had about 3 hours to play with it, so i did not have much time.

    first, there was an installer bug, but fortunately it was trivial to fix it up. second, the internal wifi card is not supported by 2.6.26, so i made a kernel package from 2.6.27-rc6 and made a custom usb installer using that kernel.

    once that was ok, the installation went fairly easy. minor problems were that the netinstall by default wants to use ftp but we were behind a proxy, so we needed http. and other problem was that there were two ntfs partitions, the second was empty, i just formatted it as ext3, using it as /, but i did not set the partition type from ntfs to linux and grub refused to install because of my laziness.

    i did not want to do a full install but i needed network, so i installed base+network. once that was fine, i installed some other packages/groups: acpi, mc, x11 and kdebase.

    so far what i saw working:

    • wireless, that was working in the netinstall as well after the kernel update
    • touchpad
    • xorg, using that 1024x600 custom resolution.
    • acpi reported the correct battery status

    unfortunately i had no more time to play with it, so i did not check how suspend, 3d acceleration, ethernet card and webcam works.

    in short, i think it's nice it has no major problems, but probably it's hard for non-developers to install it as long as we don't have kernel-2.6.27 in current.

  • Thursday, 11 September 2008

    szoval indult nemreg ez a kampany. eredetileg hetfon, majd eso miatt vegul inkabb szerdan ennek reszekent volt ingyenreggeli a batthyanyn. volt igyen kakaoscsiga/alma/asvanyviz/kakao, szolt a zene es voltak ismeros arcok. nekem tetszett :)

  • Monday, 08 September 2008

    iden is rendezett a fonokom palacsintapartit (ami naluk szokott lenni), igy kitekertem delutan a title-ben hivakozott helyre. a hoseg ellenere nem volt veszes a bringazas, foleg visszafele volt jo, lehetett gyorsulni rendesen. ;)

    aztan meg bementem 9korul az sch-ba is pakolgatni, meg jo h 11 korul eljottem, mert Borsi azt allitotta h fel2 korul fejeztek be (es ok 4korul kezdtek :) ).

    a cateye aztmondja, hogy:

    netto ido: 2:02:23, brutto: 8h, tav: 43.68, atlag 21.4, max 56.1

    lassan ideje lenne bukosisakot venni. ;)

  • Sunday, 07 September 2008
    nightride szept 6

    ma is volt nightride. az eleje balul sult el mert oversize load esett egy nagyot (bicikli vs villamossin), de annyira, hogy a mentok vittek el. aztan tobbek kozott ennek kovetkezteben a 21:00s talalkahoz kepest 22:39kor indultunk csak el, LGeenek meg 22:30kor fogyott el a turelme ;)

    utana celbavettuk a multheti fagyizot+pekseget (hunmaat elfelejtett penztarcat hozni, de szerencsere volt egy csomo aprom), kozben sikerult beazonositani pontagy kollegat. aztan - mivel a peksegben csak a kemence tetejerol tudtak volna adni melegvizet - mentunk tescozni asvagyvizert. itt alkalmam nyilt beszelgetni 2 trialossal, ami igencsak erdekes volt.

    aztan visszamentunk a godorhoz, ott meg beszelgettunk egy kicsit, grin meselt arrol, hogy irl mivel foglalkozik meg ilyesmi, vegul haza.

    maga a program kicsit rosszul/nehezkesen indult, de osszessegeben nem volt rossz.

    brutto ido: 8h, netto ido 2:32:11, tav: 51.21, atlag 20.1 (ez leginkabb a 2 dh-s sracnak koszonheto, leven a kedvukert nagymamatempoban mentunk mig le nem leptek ;) ), max 50.1. LGeet leszamitva ha jol szamoltam 16-an voltunk.

    ja es erdekes, most hasznaltam eloszor az uj elsolampamat, ami elvileg pont azert jo mert 4 aa akkuval is megy (ami amugy mar alapbol rendelkezesre allt csak miota telefonrol hallgatok zenet es nem discmanrol azota hasznalaton kivul van), de frissen toltott akkukkal 8h alatt fullosan lemerult az egesz koceraj. most vagy az akkuk a regiek es cserelni kene oket vagy ledes lampahoz nem jo az akku. remelem inkabb az elobbi, elemmel lampazni hosszutavon toknagy kornyezetszennyezes, a dinamo meg so '80s. :)

  • Friday, 05 September 2008
    acpi emulation on ppc

    Probably most mobile users know the 'acpi' command, a simple command-line utility that shows the state of the battery on a PC.

    The problem is that iBooks have PMU, not ACPI support, so that problem can hardly output anything useful. I searched for an equivalent for a while, but actually couldn't find such a utility, and quite frankly, it's not a big deal to write such a one, so I stopped wasting with searching alternatives, I just wrote one.

    Sample outputs:

    $ acpi
         Battery 1: discharging, 92%, 04:34:17 remaining
    $ acpi
         Battery 1: charging, 99%, 00:10:53 until charged
    $ acpi
         Battery 1: charged, 100%

    The short script (54 lines) is available here.

  • Wednesday, 03 September 2008
    evan, a minden6o

    nem keverendeo ossze az "a minde6o"val, ami 3 evvel korabban keszult, de amugy nem lattam (talan majd egyszer).

    szoval a szokasos modon ha Morgan Freeman (The Dark Knight, Se7en), akkor valami josagos bacsi, jelen esetben Istent jatszik, aztan ismeros meg Steve Carell (The 40 Year Old Virgin), aki szinten magahoz illo szerepet kapott, most ugyan csalados, de attolmeg tiszta szerencsetlen. es a sztori nagyjabol a bibliai noe barkaja tortenet napjainka valo adaptaciojarol szol vicces stilusban. annyira nem kulonleges, de legalabb artalmatlan, csaladi mozinak megteszi.

    (imdb, trailer)

  • Sunday, 31 August 2008
    cm-es tekeresek

    tegnap voltunk cm-esekkel utolsopentek tekerni. sose csinaltam ilyet, de zaivaldi invitalt, so i gave it a try.

    igazabol semmi kulonos, sok uj arc, idaig szimpatikusak, persze mivel uj voltam inkabb csendben voltam. sokan beszoltak, h olajozzam meg a lancom, kb ennyi volt osszesen. mielott meg kinullaztam a km-orat: brutto ido (haztol hazig) kb 4.5 ora, netto (tenyleges tekeres) 2:28:48, tavolsag 43.26, atlag 17.4, max 42.6.

    aztan voltunk mais, egyreszt mert zai ujfent invitalt, masreszt meg lepke azt allitotta, h ottlesz es irl talalkozni online "ismerosokkel" mindig jo dolog.

    a nap beszolasa egyertelmuen az volt, mikor a vaci utcaban megalltunk fagyizni, de zai meg oversize-load (huh, gyakorolnom kell a nickeket, 9 uj arc volt ezen a main; ergo szumma 11en voltunk: lepke + pasija, grin, lujka, oversize-load, cseya, mcysh, ypse, varanus, zai, vmiklos) felrevonultak h nekik olyan nemkell. majd feltuntek ilyen emosok a lathataron es az egyik ramutat zaira, h:

    "ott egy kocka, ubuntu poloban!"

    ezt megjegyeztem. szal ha egy emos allitasa hitelesnek szamit akkor az en "i'm feeling lucky" polom nem szamit kockapolonak, de az ove igen :P

    amugy meg meg voltak erdekes dolgok, hallgattunk reggae-t, vettunk peksegben olcsoert frissen sult sajtos croissant meg turos taskat, es grin megolajozta a lancomat (nehez leirni h milyen jo az ilyen, kb mint mikor hurt cserelek a gitaron, egesz mas erzes igy tekerni :P).

    ja igen, es voltunk arcot is nezni. nem mintha ez nem lett volna varhato (foleg mivel megint zsenialis volt a temavalasztas), de megint szellemes alkotasok szulettek. afaik a munkak - mint mindig, es meg mindig nemtom h miert - nem kerultek fel a netre, de nehany elerheto. amik nekem a legjobban tetszettek:

    • a kivalasztott
    • akik tudjak a valaszt, nem ertik a kerdest
    • megigertetek

    ja meg a pukkanthato plakat is jopofa volt, mar mar most (pedig meg csak 3 napja nyilt meg) is kevesebb mint a fele volt mar csak belole ep :P

    ja igen, kmh adatok: brutto ido 8,5h, netto 4:25:58, tav 85.12km, atlag 19.1, max 52.1.

  • Friday, 29 August 2008

    tegnap jott ki a mozikban, nekem tetszett. persze kb ez 90%-ban michelle williamsnek koszonheto ;)

    (imdb, trailer)

  • Sunday, 24 August 2008

    lehet ez lesz most az uj mania, hogy mindig megnezem, hogy imdb toplistaban hanyadik helyen szerepel (ez most epp a 26.), pedig ez most egyszeruen csak uj film, azert erdekel. meg mert pixar, es ok altalaban olyan animacios filmeket csinalnak amiket felnott fejjel is boven megeri megnezni. ez is ilyen.

    szerintem boven elismerest erdemel, mikor sikerul egy robotot ugy meganimalni, hogy erzeseket fejezzen ki, es hasonlok.

    es persze ki nem nevet azon, hogy mikor a filmnek vege van a moziban akkor korbenezve hasonlo korosztaly csak kiskoru tesok tarsasagaban kepviselteti magat ;)

    (imdb, trailer)

  • Friday, 22 August 2008

    imdb top250 #15. ilyen tipikus gengszterfilm, allitolag igaz tortenet alapjan, de persze kit erdekel, hogy igaz-e.

    ismerosokkel persze itt is talalkozunk, Robert De Niro (a csillagpor buzi kapitanya) vagy pl. Frank Sivero (keresztapa).

    amugy meg egyszernezos, de megis olyan ami valszeg 20ev mulva is megallja a helyet.

    (imdb, trailer)

  • Sunday, 17 August 2008

    ez is ilyen detektivsztori. sem nem jo se nem rossz, abban az ertelemben, hogy egyszerre szol a jofiurol aki csak a munkajat vegzi meg a szemet csavorol, aki amugy eleg jol tolja, szoval azert ot is szeretjuk. es ha talalkoznank akkor kinek drukkolunk? ;)

    a szereposztasban meg sok ismeros es szeretett alak: Leonardo DiCaprio (asszem a romeo+juliaban lattam eloszor), Matt Damon (bourne, ocean's filmek), Mark Wahlberg (olasz melo), es meg lehetne sorolni.

    (imdb, trailer)

  • Thursday, 14 August 2008
    playing with a ppc box

    many of you asked, so it's better if i describe it here.

    i recently started working on ppc packages, without any kind of big announcement. that was on purpose. i don't have too much time for this (so surely i won't maintain - at least not manually - a full ppc port with security fixes, etc), but i'm interested at least getting a working toolchain, so that anybody who has such a machine and time can easily help.

    so no, this will not be in 0.9, we didn't plan anything like that.

    maybe for 1.0, we'll see :)

    ah, as a side not, it was interesting today, i met (unintentionally) one of the Hungarian summer of code guys. i previously collected such a list, and i was surprised about i did not know about him. so i asked to type "blogs.frugalware.org", and search for "summer of code" to see if he is really missing from the list. actually he was not missing. but the funny fact was that - as usually - i was prepared to be forced to spell "frugalware", but this was not the case this time, he typed the word properly without asking. heh, we're getting known! :]

  • Thursday, 14 August 2008

    (wow, mikozben irtam ezt firefox elkreselt es nem veszett el a post idaig irt resze. valaki valamit tud ;) )

    szoval ez sem az a 2+ oras film ami unalmas. egyreszt Heath Ledger miatt (10 dolog amit utalok benned, sotet lovag), masreszt Shannyn Sossamon (40 nap 40 ejszaka), meg olyanok mint Paul Bettany (a da vinci kod). meg ugy egyebkent is. es a vegen (stablista utan) szar a poen, megis mindenki nevet rajta ;)

    (imdb, trailer)

  • Wednesday, 13 August 2008
    the dark knight

    nem volt teljesen jogtalan, hogy ez a film hetekig vezette az imdb toplistajat (pedig mas film asszem 2004 ota be se kerult a top250-be).

    moziban nezos. szerencsere feliratos. :)

    (imdb, trailer)

  • Tuesday, 12 August 2008
    az elveszett frigylada fosztogatoi

    indiana jones. ez a nev idaig is ismeros volt, de most raszantam magam, hogy nekikezdjek a trilogia megnezesenek. legalabbis az elso resznek.

    amugy erdemes megnezni, ha masert nem akkor az olyan nevek miatt mint a rendezo Steven Spielberg, a forgatokonyvhoz reszben otletet ado George Lucas es a zenejet szerzo John Williams es persze Harrison Ford miatt. ;)

    (imdb, trailer)

  • Saturday, 09 August 2008

    tegnap voltunk maat-tal arrafele, es mielott meg kinullazom a km-orat: brutto ido (haztol hazig) kb 6 ora, netto (tenyleges tekeres) 3:30:45, tavolsag 69.62, atlag 19.8, max 45.9,

    az atlaghoz annyi hozzatartozik, h kifele az elejen nagyon kerestuk az utat (a bicikliut egyre hasznalhatatlanabb, 2menkent van vmi uthiba), szal jo lassan mentunk, visszafele meg kb ennek az ellenkezoje, tahitol egeszen az arpad hidig jottunk egyben, es az ugy kb csak 1 ora volt :]

    az elalvassal aztan mar nem volt gond, nyilvan. ;)

  • Thursday, 07 August 2008
    ibook g4

    kedd ota egy ilyen boldog tulajdonsosa vagyok (egesz pontosan az enyem az mar az 1,2GHzes modell; es a kep se timmel mert leopard van rajta, ld. lenn). miert vettem?

    • mert 3 eve 1db notebookot hasznalok es ha ennek valami baja van akkor nincs gepem. ami egy geek eleteben amugy is problematikus, de elso korben csak gondoljunk arra, hogy vizsgaidoszakban nincs min olvasni a pdfeket tanulas celjabol.. (persze lehetne a csaladot terhelni ilyenkor az ilyesmikkel, de kimeljuk oket ha lehet.)
    • multkor kellett vmit tesztelni egy imac-en es rajottem, hogy semmilyen szinten nem ertek ehhez a rendszerhez, ami azert egy infos eseten kicsit ciki. mert az egy dolog, hogy jelenleg csak linux van a gepemen, de attolmeg nyilvan vmilyen szinten ertek windowshoz is.
    • mert talaltam egesz olcson. egy macbook (az inteles) kb 3x annyiba kerul mint amennyiert ezt hasznaltan vettem. persze ez mar 4 eves, de pl 768mb ram van benne, mig a normal notebookomban 512..

    es akkor innentol indulhatna hogy egy "erintetlen" user (aki meg sose hasznalt macet) mit es hogy lat ebbol az egeszbol.

    kezdjuk nehany pozitivummal.

    • az egesz ugye unix alapu. ha barmit nem talalok a grafikus feluleten mindig lehet nyitni egy terminalt es ott a legtobb konzolos cucc megvan (ez mar onmagaban jo tanulas szempontjabol: nyilvan ami linux-specifikus az nem lesz meg)
    • az elso dolgom termeszetesen egy ujratelepites volt. es az installerben is van shell. telepites utan pedig egybol hangosan szol, hogy nyomd meg ezt es ezt a gombot, hogyha vak / gyengenlato vagy es elkezdi megtanitani, hogy melyik gomb hol van. na ez sztem pl tokjo otlet. ha meg nem akkor nyilvan ramesz h skip es bekenhagy.
    • nehany dolog poccre ment. nyilvan a hw-n jol fut (hang, 3d, wifi, stb). de pl a wpa-s wifit is konnyu volt beloni.
    • van ra "macports" (ha jol ertem ezt hivtak regebben finknek), ami egy apt-get szeru cucc es ~5000 csomagot lehet feltenni vele. persze neked kell forgatni.., pl most futott le a sudo port -v install mc, 71p ;) (bar ez valszeg azert ennyi mert elso korben sok fuggoseget kellett felrakjon, gettext, curses, glib, stb)
    • terminal szinten is vannak okos dolgok benne. pl root eseten default az ls -a meg ilyesmik. otletes.
    • az openfirmware okos. pl felmasoltam a slackware install cd boot konyvtarat egy hfs particiora es annyival be lehet bootolni, hogy 'boot hd:5,\boot\yaboot' (ezt inkabb csak azert irom ide mert mar most is irclogbol kellett visszakeresni)

    nyilvan meg van egy csomo pozitiv dolog, most hirtelen ezek jutottak eszembe.

    de van negativum is boven ;)

    • en qwertz billentyuzet-kiosztast hasznalok, es emellol nem is akartam elallni. ezt meg tudja is az osx, de alt-gr nincs, az alt-tal ill. fn-nel elerheto cuccok meg teljesen mashol vannak. random peldak: a | az az alt-í, \ az az alt-q, ~ az az alt-ú es igy tovabb. persze majd utananezek, biztos van vmi keyboard mapper tool, dehat ez igy alapbol akkoris gay.
    • mivel akartam tenni linuxot, at kellett meretezni a particiot. na ezt mar csak ugy lehetett, hogy 1) osx alatt cmdline-bol trukkozni (disable journaling, ujabb osxekben guibol mar nem lehet kikapcsolni), 2) bootolni slackware cdt es ott parteddel atmeretezni
    • 10.5 (leopard) volt a gepen alapbol telepites utan, a security update-eket engedtem felrakni, igy lett 10.5.4 de most nem megy a dhcp. egyelore hasznalok statikus ipt de ez igy vicces.
    • a telepites jo sok helyet zabal. a default install 11.4 GB. ebbol 3.4GB printer driver, 1.9GB language support (magyarul nem beszel),a 'base' (szal ami kotelezo) az meg 5.9GB. ehhez a masfel oras telepitesi ido meg rendben van, viszont ez rohadt sok hely. ennyi helyet elhasznalva linuxon mar reg van openoffice-od (default install utan probaltam xlst megnyitni de nincs ra meg read-only tool se), meg mindenfele feljelsztoeszkozod. optional installkent utolag fel lehet rakni ez utobbit a dvdrol, de az ujabb sok hely (asszem ilyen 3-5GB korul volt).
    • a jelenleg szerzett masinaban nincs aksi, szoval a suspend2ram fejeltos, a rendes hibernalashoz valo supportot meg - amennyire utanaolvastam - az utobbi idoben kiszedtek. van vmi hack ra de nem akartam ganyolni amig egy kicsit jobban nem ertek hozza.
    • default tuzfal siman beenged barmit, ugh.

    konkluziot nem akarok irni. max annyit, hogy tenyleg faszan meg van csinalva, de azert boven vannak dolgok amik miatt a hajamat tepem. majd ha lesz egy kis idom a szabad helyre teszek linuxot (elso korben slackware, a frugalware ppc portja nemigazan mukodokepes jelenleg), meglatjuk az hogy muzsikal.

    update: volt egy kis idom jatszani a dologgal, linux alatt:

    • almagomb szepen altgrre varazsolhato, igaz csak x alatt. (osx ala is van key manipulator de altgr-szeru funkcionalitast nem lehet rakni egyik almagombra se pedig van belole 2 es 1 is eleg lenne.)
    • dhcp nyilvan megy jol. (bar erdekes, hogy linux telepites utan visszabootolva osxbe mar ott is jo volt, magic.)
    • jelenlegi install meret 1.4G, bar igaz, hogy ez idovel azert olyan 8G fole fel fog menni ha felrakok minden vackot. (de osx alatt a 11G ugy volt, hogy egy xslt nem tudtam megnyitni.)
    • szepen megy a suspend2disk (szokasos 'echo shutdown > /sys/power/disk; echo disk > /sys/power/state')
    • default tuzfal nyilvan nem enged belfele semmit

    amugy teljesen meglepo, a hw egeszen tamogatott, opensource driverrel megy szepen a 3d, lecsukasra megy rendesen a hibernalas, hang is van, wifi is, szal tenyleg kenyelmes. mar csak akku kene bele ;)

    update 2: ezek az idiotak toroltek a fenti urlrol a spect, wikipedian elerheto valami hasonlo.

    update 3: visszaraktak uj cimmel.

  • Wednesday, 06 August 2008

    szoval ahogy a linkben is olvashato, resztvettem a "SummerNosleep 2008" versenyen. roviden annyibol all a dolog, hogy minel tovabb ki kell birni alvas nelkul. annak bizonyitasara pedig hogy ebren vagy vezetned kell egy blogot amibe postolsz orankent. szal pont ugy ahogy a twitteren lehet csinalni.

    korabbi dolog amire emlekszem, hogy egyszer meg ovkban (cserkesz orsvezeto-kepzo tabor) volt ilyen, h egyszer 2 orat aludtunk aztan utana meg semmit. szal szeretem az ilyen temaju kihivasokat, kivancsi voltam meddig birom.

    az elso 48 ora aranylag siman ment, bar mind2 ejszaka volt kb egy 4oras intervallum amikor nagyon elalmosodtam, es tenyleg ugy ereztem utana, mintha valami csoda tortent, hogy nem aludtam el ;)

    igazabol a 48. oram korul kiesett a 22 emberbol a maradek 2 konkurencia is, de akkor meg ugy gondoltam birom tovabb, igy megkisereltem nemcsak megnyerni a mostani versenyt, de a korabbi versenyek idaigi rekordjat is megdonteni.

    az utolso nap mar nehezebb volt, eleg faradt voltam, nehezen tudtam barmi ertelmeset csinalni. vegul az utolso ora volt a legszornyubb. valami lehet ebben a 68 oraban, mert ha valaki azt keri h csinaljak 69-et, hat nem tudom hogy birom ki. igy aztan vegul csak par perccel dontottem meg a korabbi rekordot, dehat a lenyeg h megdontottem ;)

    ami meg erdekes volt, hogy szemelyesen csak 2 usert ismertem a versenyzok kozul, ennek ellenere a csatin nagyon jo hangulat volt. mikor pedig mar kiestek az emberek, mindenki egyutt szurkolt hogy meg tudjam nyerni a versenyt. ez nagyon meglepett ;) a userek nagyresze kb 2 napja latott eloszor, megis folyamatosan batoritott, hogy meg tartsak ki, stb. :)

    ugyhogy koszonet a szervezoknek a programert, es a tobbieknek a jo tarsasagert!

  • Sunday, 03 August 2008

    stilusaban hasonlit az ocean's-re, olasz melora es hasonlokra csak eppen itt kocsikat lopnak. a szineszek pedig jok, Nicolas Cage-t szeretem, Angelina Jolie jo no, stb.

    (imdb, trailer)

  • Saturday, 02 August 2008
    a fulke

    van benne csizio, vagy hogy is kene mondani. roviden egy tanmese a "a hazug embert elobb utolerik,mint a santa kutyat" temaban. de stilusosan. kicsit hatasvadasz, de belefer. erdemes.

    (imdb, trailer)

  • Saturday, 02 August 2008
    istvan a kiraly

    noszoval, bmerol hivtak erre a dologra. kicsit gagyin indult a dolog, mert kiderult, hogy nem arrol van szo h xynak van ingyenjegye csak 1xuen mivel szabadteri a koncert ezert nyilvan a keritesen kivul is tokjol hallhato :P

    de ettol fuggetlenul nem volt rossz. kicsit megteveszto a cim, mert itt nem egy komplett eloadasrol van szo (vegulis az annyira nem is erdekelt volna, lattam mar van 6 eve), hanem egyreszt az elso "felvonasban" a rockopera szereploi adtak elo mindenfele regebbi dalt, koncz zsuzsatol kezdve nagy fero 8 ora munkajaig mindene okossagot, a masodik reszben pedig magabol a rockoperabol voltak reszletek.

    a masodik resz a rockopera elejenel kezdodott, de aztan hagytak ki reszeket. vegul nem vartuk meg a veget, mert a tarsasag egy resze parazott, hogy meg a blahan el akarja erni az utolso metrot, de amennyit hallottunk a dologbol az nem volt rossz. penzt (a hamburgerre kiadott penzt leszamitva) mondjuk nem biztos h adtam volna erte ;)

  • Thursday, 31 July 2008
    high school