Planet maemo: category "feed:b60f2338d7a5b72897d3a13b738ecf26"


The path to MXR

2008-11-05 11:07 UTC  by  timeless
There are a couple of ways of doing development work. Hg and DVCS enable some of them, especially private local commits and working on multiple unfinished features. There's a general understanding that you should write code first and optimize later, but you usually try not to ship a version which has a performance regression.
Click to read 1242 more words


2008-08-19 12:19 UTC  by  timeless

Konigsberg bridges

Thanks to reed, justdave, mrz, and seth (community giving), and other webtools have their own box ( for testing.

landfill was getting too crowded:


For the time being, the major user of the box will be mxr, which focuses on linking items together.

There is a history to this inspirational mathemetics problem.

For people interested in using, testing, seeing, or helping with mxr-test, you will have to contact me with your ip address, as we had problems with resource loads at our previous location and for the time being, I'm simply whitelisting people.


An application crash during shutdown is still a bug,

Just like colliding with the front of your garage when you intended to stop anyway is still a bad thing.

car hit garage

Reprinted from a bug


Jumping into thin air like Wile E Coyote

2008-07-02 02:40 UTC  by  timeless

Have you ever wondered how it would feel to be Wile E Coyote?

Picture this:

  1. You're Wile E Coyote.
  2. You're twenty feet away from a ledge (off the edge of a cliff).
  3. You look down.
  4. You see you aren't standing on solid ground.
Looking Down

What do you do?

Answer: You Fall.

Gravity Lessons

What else can you do?

Not much.

You can only not fall before you run off the edge of the cliff, not after.

Why is this interesting?

Sometimes, we have users who ask us why we can't just "fix" a crash by changing the crashing function.

In the example from the bug, the crashing function, js_GetScriptLineExtent, has bad data and can't really do anything useful with it, other than simply crashing.

What can you do?

Report the crash (you know, what goes up, must come down... somewhere).

If you're lucky, the path to the crash will be obvious, such as when Wile E Coyote takes a wrong turn.

If you're unlucky, then the report won't have enough information, but at least someone will know to be on the lookout for something which could cause your crash.

Reprinted from a bug


With some power, comes slight responsibility

2008-06-12 05:24 UTC  by  timeless

I need to take some time to talk about the role of customers, or something like that.

Click to read 6348 more words
Click to read 1057 words

X11 is like an Egg Toss

2008-06-10 08:19 UTC  by  timeless

Egg Toss

Who are the players?

  • X (alone)
  • a dozen guys (on the other side)


What should someone do if X tosses an egg his way?

Catch it, of course!

incoming egg

Failing to catch it will result in splatter

What happens when the egg splatters?

That guy loses, and you should report his error to his management.

he's out

Hopefully that guy will learn to be more careful about how he catches his next egg.

In the interim, he's out, and you've lost a program.

What should X do when someone tosses an egg to X?

tossing an egg

Catch it, of course!

Failing to catch it results in every other egg thrown at X falling and you get upset. It's your job to report that X was bad at catching eggs to the people responsible for X.

What about those eggs?

All eggs are created equal, anyone can send the exact same series of eggs to X. It just happens that today it was Firefox which tossed the egg.

But tomorrow it might be someone else. And they might be malicious, or just careless.

Why do we like eggs?

The neat thing about these eggs is that when they're reproducible, people on all sides are happy, because reproducible eggs are catchable eggs. They can be made into poached eggs since you can toss them again and again until you catch them.

This is much better than simple scrambled eggs with no hints and lots of suspects. This can happen if the kernel reboots or X doesn't leave a log and you weren't there to watch (think about a Tsunami or an Earthquake, the world shifts, and there's wreckage when you return but no sign of the culprit).

What can you do?

Help make the world a better place, report that dropped egg and get it caught the next time.

egg toss in progress

Why not call it dodgeball?

Well, normally in dodgeball, people intentionally would bean X. Here X is more like the reluctant father who was coerced by his family into playing.


Goodbye cruel world

2008-06-06 06:24 UTC  by  timeless

Why do I visit mailing lists?

Often I'm invited.

Why am I leaving your mailing list?

Because it seems that there was a lack of respect for the official target group of the mailing list by some people who joined it.

What's the harm in this?

Eventually my stress level exceeds my tolerance and bad things happen.

What can I do about it?

I'm leaving. If you want to contact me, try irc.


What scares a build engineer?

2007-11-02 11:24 UTC  by  timeless

This is a silly question, really. Better to ask:

What doesn't scare a build engineer?

Sleep. Children.

Some scary statements:

  • I just grabbed the firefox source and I'm about to build it for the first time :-)
  • Then comes the meddling...

How do I specify which version of gcc on my system to use?

  • on osx you could use gcc_select
  • however typically you'd use a mozconfig and add CC=, CXX=, etc
  • please read about how to use a mozconfig

What OS was this villain using?

*** CTCP VERSION reply: Version 5.2 - an IRC client for emacs (ERC (mailing list:

  • emacs-os? - I'm not sure we support that
  • Gnu/Linux, sorry - Ubuntu 7.10, to be exact

What's scary about that?

  • note that many versions of gcc are more or less broken

What do you mean by "firefox source"?

  • did you grab the latest using checkout?
  • or did you foolishly use apt-get source
  • or did you download a firefox2 sourceball?

No, I used CVS. I wasn't aware of it ( until now

  • whatever you did sounds wrong :)

How to start?

Read Build_Documentation perhaps?

Actually, what's more interesting is when people ask other questions. Our villain asked a really scary question, because when I pointed him to gcc.mozconfig he noticed --enable-crypto.

Feel free to read my retelling of that story

  1. In the beginning, there was Netscape, and there was the US Government
  2. And they ignored eachother.
    • And all was well,
    • because there was no commerce.
  3. And then Netscape created SSL,
    • and this was progress,
    • but all was not good
    • Netscape offered 40-bit encryption,
    • and the US Government said, "that's ok",
    • so things were not bad
  4. But this was not quite good enough,
    • so Netscape offered 56-bit and 128-bit encryption,
    • and the US Government said "not for export"
  5. And there was some degree of panic
  6. But all was good for commerce in the USA.
  7. And then Microsoft stabbed Netscape,
    • and this was not good
  8. So Netscape promised to open source Mozilla,
    • and there was some celebration
  9. But the lawyers spoke up,
    • and reminded everyone about the US Government
  10. So Mozilla was released without crypto
    • and with it were flags for --enable-crypto and --disable-cypto
    • and this would lead to confusion
  11. People inside Netscape could use the flag
    • because they had the source
    • and people outside could try to add binary blobs later
  12. With time, the sources for crypto were released,
    • but the US Government was unswayed
    • it continued to insist that strong crypto not be exported
  13. And this was interpretted that crypto would not be on by default,
    • so it wasn't
  14. With time, the government changed
    • its rules,
    • regulations,
    • and regulators
  15. And some of the rules expired,
    • and this was progress
  16. Finally, it was decided that it was ok to switch the default to --enable-crypto,
    • and some said this was good,
    • or at least better
  17. But alas,
    • people from the micro-optimization-weenie camp
    • who didn't care about compatibility
    • or supporting the internet
    • would toggle random build flags
  18. And this was still a build flag to this day
  19. So they came unto #developers
    • and asked bsmedberg about a problem yesterday,
    • and he lamented
  20. For while some of the regulations have expired,
    • there are still lawyers
    • and they still worry that in some poor country it might be a violation of export law to not be able to build --disable-crypto
  21. And as such, bsmedberg can not yet hide that flag from the optimization weenies
  22. And here we are the day after yesterday, retelling the story
  23. Fixing it will have to wait until the day after tomorrow?

This story was brought to you in part by CVS,, Perl, and Bonsai (sponsor of CVS Blame)


Creating exclusive Groups in Bugzilla

2007-08-10 01:34 UTC  by  timeless

How do I make all my Spartans and Athinians members of Warriors?

Good question, obviously you need to edit groups, but you don't know if you should be editing Spartans + Athinians, or if you should edit Warriors.

You're going to want to edit Warriors and check the Inherit column next to the Spartans Group and the Athinians Group.

  1. Load editgroups.cgi
  2. Find the Warrior Group and click its Edit link
  3. Find the Athinians Group (it's sorted alphabetically ignoring case)
  4. Click the [ ] Inherit checkbox to the left of Athinians
  5. Find the Spartans Group (it's sorted alphabetically ignoring case)
  6. Click the [ ] Inherit checkbox to the left of Spartans
  7. Click [ Save Changes ]

This means that Warriors includes all people matching the Warrior regexp, all members of the Spartan Group, all members of the Athinian Group, and all users manually added to the Warrior Group using editusers.

How do I make a group of all people who aren't related to Microsoft?

You're really anti-microsoft. Oh well.

  1. Load editgroups.cgi
  2. Click Add Group
  3. Group: Outspoken Minority
  4. Description: People who haven't gotten the one true message
  5. User Regexp: ^(((?!microsoft).){9,}|.{1,8})$

Could you please explain that regular expression?

I'll try my best.

First, you want to allow anyone whose account name isn't long enough to contain microsoft: .{1,8}. If you don't do that, you'll find people like complaining.

Second, you want to look for individual characters: . that aren't the first letter in microsoft: (?!microsoft).

Third, you want at least nine of them. Well, perhaps you don't need that, but it makes the other logic easier. ((?!microsoft).){9,}

Fourth, you don't really care which case applies: (((?!microsoft).){9,}|.{1,8})

Lastly, you want those rules to start at the beginning of the string and run to the end, so ^...$.

And now you've excluded your enemy.


Building a more exclusive community

2007-08-10 01:28 UTC  by  timeless

If you're a growing Bugzilla installation, you sometimes need to create groups. Groups enable you to isolate products, people, and bugs from one another.

In modern versions of Bugzilla, you can even use them to share queries, and in current versions of Bugzilla, it's possible to configure a couple of very special groups: insider, timetracking.

This leads to a big question, that I've been asked regularly:

How do I create a group which automatically includes people?

  1. Use group inheritance. (But that of course requires the group to already exist and have the people you want)
  2. Use a regular expression.

You can probably guess the next couple of questions.

What kind of regular expressions are these?


So how do I ...?

I'll answer that in the follow up.

Building Groups