Connection Lost

I’ve moved into the new apartment, but Deutsche Telekom lost our DSL order, and now need an extra 6 days to flick that switch. So I’ll be unusually non-responsive to emails for the next week or so. Sorry.

Glom on Fedora?

Now that Glom is in feature freeze, and the time approaches for a Beta release, I notice that it’s still not in Fedora Extras. Would someone like to take care of the packaging for that?

cairomm maintenance

The ever helpful Jonathan Jongsma is now officialy co-maintainer of cairomm, on which gtkmm 2.10 will depend. I wanted him to take over completely, but he’d like to keep it co- for now. I don’t expect any major changes, but we should expect that high Jongsma quality. I don’t think he has a blog yet, but the does have this nifty little Colorscheme application.

C++ Code Size

I’d really like some tool (ideally, g++ based) that shows me what parts of compiled/linked code are generated from what parts of C++ source code. For instance, to see whether a particular template is being instantiated for hundreds of different types (fixable via a template specialization) or whether code is being inlined excessively, or whether particular functions are larger than expected.

libgtkmm-2.4 is a bit bigger than I’d like, even stripped, as are the gtkmm examples.

Updates

I forgot to mention that using -g -Os (optimize for size, which disables function-align among other things) has no noticeable effect – it seem to actually make the .so slightly bigger.)

One obvious thing that bothers me: nm shows that stuff in anonymous namespaces are exported. But we put private code in anonymous namespaces to prevent exactly that. I’d prefer to automatically export everything and have a way to exclude some things, rather than automatically not export everything (-fvisibility=hidden)and then explicitly export each thing, hoping I’ve tagged everything.

However, I doubt that exporting/not-exporting would make much difference to the code size. It would still be in the .so because it’s needed for implementation.

More Updates

There’s obviously lots of exerimentation yet to do. The anonymous namespaces really are exported (nm shows them even when using -D. Thanks James). I can hide the standalone functions by using the static keyword, but I don’t think that classes can use the static keyword to specify that they aren’t exported.
The output from nm –demangle -D libgtkmm-2.4.so.1.0.25 (for gtkmm 2.8) is online for anyone interested.

There obviously are thousands of little functions (class methods) in gtkmm, but it doesn’t feel right that the size of the library is comparable to that of the library that it wraps.

Glom Precise Printouts

At some time I’ll have to implement a type of printout or report in Glom that uses fixed positioning. For instance, to enter text into the correct spaces on pre-printed forms, or just so that printouts always look the same. At the moment, printouts take up as much space as necessary, and flow appropriately (I “print out” to HTML in the browser at the moment).

So, suggestions are welcome for some code that I should reuse, or adapt. I guess it would need the following abilities.

  • Specify text areas precisely, such as specifying the position and size.
  • Optionally specify the position in terms of alignment, so that text areas slide left or right.
  • Flowing text into those areas, and simply truncating the text if it’s too big. (Or maybe making the font size smaller.)
  • Text justification inside the text areas.
  • Specifying page margins.
  • Coping with a changing page size (e.g. A4 versus Letter) by increasing/cutting-off margins.
  • Have a nice GTK+-based UI for doing this.

Something using cairo and pango would be nice.

Glom Buttons

Extending Glom via python is such a marketable feature that I spent a couple of days to add a button layout item so it’ll be in version 1.0. Glom already supports calculation of field values with python, but this allows arbitrary actions when the user clicks the buttons, equivalent to FileMaker’s “scripts”. The example has a slightly-modified pygtk helloworld program in the button.

Glom Buttons

The python script already has access to the record details. In future we could add API so that python code can, for instance, add records, navigate to tables and records, find, and print.

In the Viertel

We’ve managed it. We found a three room Altbau (pre-war building, but possibly code for “high ceilings”) in Munich’s Glockenbachviertel, with rent a little under our limit, and without an agent’s fee (usually 2 month’s rent), noch.

Baumstrasse 11IMG_0681It’s just across the road from our favourite cafe – Cafe Maria (too cool to have a website), and just a street away from the river.

Looking for Altbaus in the Glockenbachviertel and Haidhausen has started to give me some idea of what parts of Munich were still standing after the war, and made me notice how many of the buildings are post-war. I wish I could find some before/after pictures of the various neighbourhoods.

noapic is like a new laptop

Every now and then I search for new information on my Travelmate 4101WLMI laptop in case someone has had more luck getting all the components to work. I found a note on the German Ubuntu site suggesting that I boot with noapic (in /boot/grub/menu.1st) instead of pci=noacpi (which is itself better than acpi=off). I was so pleased to get working sound and built-in wired and wireless networking. It’s like a new laptop. This suggests that the boot hang is caused by APIC (clock advanced interrupts system) rather than ACPI (power management).
So, I still don’t have

  • the battery status in the GNOME panel. Apparently Acer Travelmate’s tend to have the wrong DSDT in the bios. I tried doing the recompile-the-DSDT thing without success. But it bothers me that the bios seems just fine for Windows. Apparently Windows uses the Smart Battery interface instead and the GNOME applet needs to support that. I clicked on the “upstream request” link in Ubuntu’s (awkward) Malone bug-tracker. I’m not sure if it did anything.
  • the widescreen display resolution.

But I can live with that more or less.

Glom across borders

Boring technical bit

It’s been a hard week. I’ve been doing some major (more repetitive than conceptual) refactoring of the Glom source code, to make it use smartpointers for lots of the information, instead of copying by values lots. Copying by value gave me stability when I wasn’t sure how things should work, but now I’m more sure about where things should be explicitly created, shared, or copied. The memory management feels a bit like Java, but at least I still have the const keyword, and at least I still have strong compile-time typing. I’d be lost without them.

Exciting new feature

The point of this was to support translations of everything in Glom that can have a human-visible title instead of just an identifying name, such as tables, fields, reports, layout parts, relationships, etc. Rather than have little translation buttons next to each title, I chose to pull it all into one list. And if you develop a system in French but then later have to deploy it in Germany, that should be OK too. You can even test it without changing your locale, though you’d have, for instance, German field titles with Spanish menus and buttons.

Glom Translations Window

It would be very easy for someone to implement Import and Export to/from regular gettext .po files. Maybe I can even check them into cvs so that the wonderful GNOME translation teams translate the example Glom system for me.

I had considered this a post-1.0 feature, in Glom’s list of planned features, but I realise that I need this for clients in Germany, so I can still use English as my first development language when creating Glom solutions. As usual, don’t forget that your company may fund me to implement the remaining features.

Unfortunately, it only uses the first part of locale names at the moment, such as “de” for “de_DE.UTF-8”, so, for instance, you must use the same German translation for Germany, Austria, and Switzerland. That’s because I can’t find any list of real locales (whose names should also be translated themselves). iso-files seems to have only language names instead of locales.