Category Archives: General

Flurry of Features

I know I declared a Glom beta, so the features should be frozen, but I just couldn’t help it. I’m working on a Film Production management system, to put Glom through its paces, and hopefully to sell. I needed these new features:

  • Multiple levels of sorting on reports.
  • Vertical report groups: Rows of field values inside record rows, to show more information on a row.
  • Notebook tabs, to put more information on the details layout. This was a much requested feature in FileMaker for the last ten years, requiring awful unmaintainable hacks to simulate it, which they even used in their example files. I notice that they are making a big deal about finally adding it in their marketing for the new FileMaker version.
  • Doubly-related fields. For instance, to put Actor(via Characters::actor_id)::Agent(via Actors::agent_id)::name on a Character’s details. In FileMaker you have to create a calculated field in the Actor table, which evaluates to Agent::name, and then show that calculated field on the Character details. This way is a lot simpler, so you don’t need to understand what I just explained.

Spanish For Insomnia

I’ve always had trouble sleeping. For my whole life, I’ve often had those insomniac nights when I can’t get to sleep, but feel sleepy enough to keep trying. Often my mind refuses to stop thinking about stuff, so I end up giving up at 5am and doing some programming or emailing. That’s at least been productive but tends to get me out of sync with my side of the planet.

But I think I’ve found a solution. Now whenever I can’t sleep I listen to a Pimsleurs Spanish course that I’ve ripped to ogg files. Because I find foreign languages very difficult, it actually distracts me and tires my mind out enough to sleep. When I stop hearing the words after an hour or so, I turn off my audio player and go to sleep. When I try that with a book, I just keep reading until the sun comes up.

As a pleasant side-effect, the Pimsleurs courses are also just easy enough that I actually learn from them. They move along very slowly, repeating lots of stuff, and saying every phrase possible by combining the vocabulary being covered at the time, and stressing how to say individual syllables. But, at least for me, it needs to be that slow, though I can imagine that language-talented people might find it patronising. Without needing to rewind (well, very rarely), I am actually learning Spanish. So it’s not much more than restaurant-level stuff at the moment (at lesson 26 of 30 half-hours, of the first part), but that’s enough to impress me.

I’m really surprised that I can learn so much without seeing it written down, though it probably helps that I’ve seen some written spanish already, so I have an idea of how words would look. I strongly believed that I couldn’t do it without the text, but I guess brains insist on working in old-fashioned ways.

Glom Beta 1

I’ve been squashing lots of bugs, as ever, and I think Glom is nearly 1.0 material, so I’m calling 0.9.8 “Beta 1” and hoping that it gets some more testing. Realistically, only people using Ubuntu Dapper will be able to test it easily, thanks to Daniel Holbach.

There’s lots of post-1.0 features that need to be done, and it’s easy to start convincing myself that they are essential, but it’s also important to get some set of functionality into a stable usable form. And the reality is that the Glom 1.0 features are actually quite substantial. There’s nothing even remotely like this in free/open-source software or Linux at the moment, and it’s a deal-breaker for a significant group of users.

Glom screenshot

For now, It still lacks some features that (closed-source, non-Linux) FileMaker Pro has, but it also make several things easier and has that Postgres magic to win over hardcore sysadmins. So, if FileMaker ever get around to doing a Linux port, Glom would probably still be a winner.

Just to get this far has been an immense amount of work for me. I’ve taken months off paying-work about 3 times now to push it along, risking financial collapse each time. I actually started it five years ago, but development accelerated when I decided not to waste time making it impossibly generic and über-adaptable. To get an idea of how important this has been to me: This is the reason that I started working on gtkmm, libsigc++, bakery, libxml++, libgnome*mm, and libgdamm (taking over maintainership in some cases, starting them in others), because I just couldn’t imagine producing a full-featured app without (real) C++, because that’s what I do. Yes, gtkmm is, in a way, just a side-effect of Glom for me. You’ve got to get obsessed and stay obsessed.

Heavy Snow

We had record amounts of snow in Munich at the weekend.

Baumstrasse under snow

Path by the Isar, with snow

IMG_0725

IMG_0724

It makes everything beautiful and hands the town over to pedestrians, hiding all the ugly cars under gentle curves.

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.