Planet maemo: category "feed:b60f2338d7a5b72897d3a13b738ecf26"
Thanks to reed, justdave, mrz, and seth (community giving), mxr.mozilla.org and other webtools have their own box (konigsberg.mozilla.org) 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.
Have you ever wondered how it would feel to be Wile E Coyote?
Picture this:
- You're Wile E Coyote.
- You're twenty feet away from a ledge (off the edge of a cliff).
- You look down.
- You see you aren't standing on solid ground.
What do you do?
Answer: You Fall.
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
I need to take some time to talk about the role of customers, or something like that.
Who are the players?
- X (alone)
- a dozen guys (on the other side)
Rules
What should someone do if X tosses an egg his way?
Catch it, of course!
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.
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?
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.
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.
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.
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: erc-discuss@gnu.org))
- 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 client.mk 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 (client.mk) 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
- In the beginning, there was Netscape, and there was the US Government
- And they ignored eachother.
- And all was well,
- because there was no commerce.
- 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
- But this was not quite good enough,
- so Netscape offered 56-bit and 128-bit encryption,
- and the US Government said "not for export"
- And there was some degree of panic
- But all was good for commerce in the USA.
- And then Microsoft stabbed Netscape,
- and this was not good
- So Netscape
promised
to open source Mozilla,
- and there was some celebration
- But the lawyers spoke up,
- and reminded everyone about the US Government
- So Mozilla was released without crypto
- and with it were flags for --enable-crypto and --disable-cypto
- and this would lead to confusion
- People inside Netscape could use the flag
- because they had the source
- and people outside could try to add binary blobs later
- With time, the sources for crypto were
released,
- but the US Government was unswayed
- it continued to insist that strong crypto not be exported
- And this was interpretted that crypto would not be on by default,
- so it wasn't
- With time, the government changed
- its rules,
- regulations,
- and regulators
- And some of the rules expired,
- and this was progress
- 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
- But alas,
- people from the micro-optimization-weenie camp
- who didn't care about compatibility
- or supporting the internet
- would toggle random build flags
- And this was still a build flag to this day
- So they came unto #developers
- and asked bsmedberg about a problem yesterday,
- and he lamented
- 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
- And as such, bsmedberg can not yet hide that flag from the optimization weenies
- And here we are the day after yesterday, retelling the story
- Fixing it will have to wait until the day after tomorrow?
This story was brought to you in part by CVS, mozilla.org, Perl, and Bonsai (sponsor of CVS Blame)
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.
- Load editgroups.cgi
- Find the Warrior Group and click its Edit link
- Find the Athinians Group (it's sorted alphabetically ignoring case)
- Click the [ ] Inherit checkbox to the left of Athinians
- Find the Spartans Group (it's sorted alphabetically ignoring case)
- Click the [ ] Inherit checkbox to the left of Spartans
- 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.
- Load editgroups.cgi
- Click Add Group
- Group: Outspoken Minority
- Description: People who haven't gotten the one true message
- 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 tim@q.bt 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.
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?
- Use group inheritance. (But that of course requires the group to already exist and have the people you want)
- Use a regular expression.
You can probably guess the next couple of questions.
What kind of regular expressions are these?
Perl
So how do I ...?
I'll answer that in the follow up.