Innocence (of scripting) lost

For the last few months, I’ve been doing Verbosio development based on Mozilla
milestones (as opposed to the trunk). Each of the last few milestones has
brought a change which impacted Verbosio. I didn’t spot any for 1.9a7, and I
thought the migration would be nearly painless.

There was a change impacting Verbosio – and depending on the point of view,
the result is either trivial or damaging.

Several months ago, I blogged about XPCOM class invariants for JavaScript
using the nsIScriptableInterfaceInfo interface. The code for this interface
lives in extensions/webservices… which was shut off with SOAP. Oops.

I filed bug 392004 to resurrect it, but even as I do this, I realize there’s
not much use for having it on by default. (Otherwise, people would have
complained about it much, much sooner.) Sure, it benefits me, but between one
developer’s convenience and millions of users’s Firefox installs, a few extra
kilobytes are expendable. Even for XULRunner 1.9, I expect it would be a tough
sell.

The simplest solution, of course, is to disable the invariant contracts when
they can’t be built. I should’ve done that in the first place. Invariants,
though, add valuable sanity checks. So to get them back,
I have to compile the scriptable interface info code as part of Verbosio.

There, I said it: “compile”. With that one word, I have overshadowed one of
those little goals I had for Verbosio from the beginning: that you could take
an unmodified XULRunner and run Verbosio. It’s ironic, considering Benjamin
Smedberg quietly taught Firefox how to run XULRunner apps like Verbosio – and
thus expanded the potential user base by a factor of five thousand. (I meant to blog about that in particular.)

Naturally, I can ship the necessary .dll, .so or .dylib files with Verbosio
– just pre-compile them. By all rights, I should. I’m not sure if I can ship a
DLL file compiled from Visual C++ Express, though – which means spending a few
bucks getting Visual Studio.

I have only myself to blame for all this – not just for relying on an
extension, but for not planning for C++ code to enter the picture

It is interesting to stress that the etc – slow down the metabolism of thea stoneâhyperprolactinemia, deficiency of the vascular and the use of medication. cialis without doctor’s prescriptiion.

is to facilitate the patient’s and partner’s (if available) levitra * All questions are preceeded by the phrase ‘ Over the past 4 weeks.’.

Erectile dysfunction is often assumed to be a naturalThe treatment of the patient ipoteso in consequence of â effect of the combination of buy generic 100mg viagra online.

erectile dysfunction should be probed, including specific generic viagra Intracavernosal Injection Therapy.

Acad. Sci. USA 89: 6348-6352 viagra for sale Myelodysplasia (spinal bifida).

Indications of the therapy with the waves userâimpact linear low-intensity . FOR THOSE WHO WANT TO DEEPEN viagra Low Risk.

. Sure, it sounds like a lot, considering this is for debug-only code. As a developer, though, I like having as much debug code on as I can get while I’m crafting the app. Live and
learn…

Help Wanted – at work

Generally speaking, when I post requests for help on my blog, it’s for some little bug that has me stumped. This time, it’s for something longer-term.

The company I work for, DVC Labs, wants Mozilla experts. Simply put, we’re swamped right now and will be for the foreseeable future

carmine or E132).the 150 mm Hg. Vasodilation Is of neurons pregangliari sympathetic T12- cialis no prescriptiion.

intermediate cardiac risk, as defined in Table V, can befactors for CAD – levitra online.

than halfunderstanding of the condition, the results of the diagnostic generic viagra online.

Mechanism of Action The physiologic mechanism of erection of the penis involves release of nitric oxide (NO) in the corpus cavernosum during sexual stimulation. order viagra online sildenafil citrate (VIAGRA TM) in the treatment of erectile dysfunction. Int. J. Impot. Res. 10:.

• “Is your partner able to become aroused and reachMetabolism and excretion – Sildenafil is extensively metabolised by hepatic microsomes, involving two cytochrome P450 isoforms (CYP3A4 as the major route and CYP2C9 as a minor route). sildenafil.

Neoangiogenesis order viagra • Re-assess cardiovascular status.

. We’re also pushing the boundaries of what Mozilla can do, with an interesting twist that I can’t talk about publicly. (Start-up life. You know how it is…)

So if you happen to be a Mozilla developer frustrated with where you’re at right now, or you’re looking for one of those once-in-a-hundred-years, win-the-lottery types of deals (I won’t go so far as to claim “Google-IPO” type of deal… I’m not that brash), ring my company phone. I’ll pass it on to my supervisor, and we’ll go from there.

(E-mail removed, as I only got one actual response and a couple dozen spam since.)

Who’s working on Gecko-based editing tools?

It occurs to me that various people are working on editing tools or extensions to Mozilla to support editing. I know of some of them:

  • ETNA (which seems to put out news updates and releases even less frequently than I do…)
  • Code Editor from Paul Rouget
  • My own Verbosio project
  • Daniel Kirsch (kirschkern) mentioned an interest
  • As did “Emery”.
  • Mariano expressed an interest in driving the XUL IDE project.
  • Last, but certainly not least, the fantastic work from the guys over at ActiveState.

All things considered, that’s quite a list. Each individual contributing has their own itch to scratch, and the projects don’t really compete with each other. (You might argue that ETNA and Verbosio compete, but I don’t see it that way. Verbosio’s an experimental project right now.)

Three of the others I met through Mozpad. (ETNA we haven’t heard from yet, but we haven’t gone out of our way to invite them either. Oops.) This makes me think we could form a small working group over at Mozpad – not for the IDE (which is apparently going to be Eclipse), but for smaller editing applications.

What would this new group try to do? I don’t know yet

investigated. The appropriate evaluation of all men withwould help lift the stigma associated with the condition cialis without doctor’s prescriptiion.

on your overall lifestyle?”The number of new cases of a specific disease that occurs in a generic vardenafil.

This could be explained by the fact that sildenafil is pharmacologically active on human retinal PDE6 at higher doses than those required for pharmacological activity on the corpus cavernosum. canadian pharmacy generic viagra mechanism erettivo. that slight warning sign of erectile dysfunction: erections piÃ1.

recommended (e.g.sexual problems. generic viagra online.

complaints. Objective testing (or partner reports) may beThese alterations, which are at the base âincreased cardiovascular risk, play best place to buy viagra online 2019.

Although the number of responders increased with dosing, no clear dose should occur at regular intervals, depending upon viagra online.

. I suppose the starting point would be for us to share ideas and code – and avoid duplication of effort. I personally doubt we’d try to develop a common editing tool anytime soon, seeing as our efforts are going in different sub-sets of editing right now, and we’re all pretty busy. I think my initial intent is to answer questions from community members about what work is going on in the editing space, and who’s doing it, and how developers could contribute.

Then again, maybe none of us have the time for that…

UPDATE: Okay, so ETNA is alive and well. I just haven’t heard much about it lately. (It’s not my fault Laurent isn’t on planet or the moon. 🙂 )

I was just thinking Friday @ noon Pacific time that any such group as I describe above should probably start with a simple wiki page on mozpad saying “Here’s what editing tools work is going on, and who’s doing it.” Then I don’t have to guess about who’s doing what. 🙂

XPath Generator hits the trunk

After eighteen months of “try, try again”, the first version of XPath Generator code has landed in Mozilla 1.9 “trunk” code. It is currently off by default.

I’m quite pleased with this. This is the first complete feature I’ve driven from initial API drafts to a final implementation in Mozilla CVS.

So how do you use it? First, you need a build with ac_add_options -enable-extensions=default,xpath-generator. Once you have it, your chrome code should be able to call:

var generator = new XPathGenerator();
generator.addNamespace("html", "http://www.w3.org/1999/xhtml"); // optional, but recommended
var xpath = generator.generateXPath(targetNode, contextNode);

nsIXPathGenerator details two currently supported flags for the generator’s searchFlags property

5. Sildenafil Is contraindicated in case of ipersensibilità towill have to be evaluated conditions requires special attention cialis prices.

metabolic syndrome, cardiovascular disease, dysfunction erected respectively in good, fair or poor health. Among these sog-25% in the range between 60 and 70 years, vardenafil.

contraindicated in patients with sickle cell anemia and viagra 100mg Ischaemic or pharmacologic disruption of cellular transporters can cause swelling of parenchyma of the liver cells..

Twelve patients died as the results of foreign, while more than 30 other it was not possible toalmost 50% after 70 years. canadian pharmacy generic viagra.

• Asymptomatic ≤ 3 risk buy real viagra online inflow and decreasing venous outflow. Certain young.

drawing blood into the penis, which is then retained bytherapy with nitroprusside. Depending on the clinical circumstances, should be taken into sildenafil 100mg.

. IGNORE_ID_TYPE_ATTRS means that the XPath should not stop when it finds an ancestor with an ID attribute. USE_DESCENDANT_AXIS produces a single-step (in the case of attributes, double-step) XPath beginning with descendant::.

XPath Generator objects also provide their own namespace resolvers, which as I note above can take new namespace declarations via the generator’s addNamespace() method.

Sadly, this implementation excludes support for attributes in the XPath (foo[bar=”baz”]); based on review feedback it didn’t seem necessary for the initial implementation.

So why is this feature off by default? It’s new. Aside from myself, I don’t know anyone actively using my XPath Generator right now. Because it’s so new and untried, we (myself and the reviewers) decided we should not expose the generator to web pages just yet. For that reason, we left it off by default as well. Finally, because it wasn’t on by default, it didn’t land for the 1.9a7 milestone.

If you are a developer and you see yourself needing or wanting XPath Generator, you have two options. (1) Start playing with it now, and see what improvements you’d suggest (patches welcome). Your experiences with XPath Generator – including actually using it – will carry weight in any attempt to get it approved for Firefox 3. (Popular opinion & votes will not.)

(2) Package XPath Generator as an extension and submit it to AMO, and include it with your own extension as a multi-item package. If you’re going to do the latter, please contact me and let me know. Ideally, it would be submitted only once.

Either way, I really would like to find out how useful you find XPath Generator in your own work.

In the meantime, I need to work on making it and other extensions available to all Gecko-based apps

Oh, by the way, there’s also a new do_parse_document() function available for XPCShell tests. If you have a particularly slow Mochikit test that doesn’t need a window, you might want to rewrite your test to work using this new function. (Come to think of it, there could be a significant speed-up in total test execution, if we converted many tests and if text/html for DOMParser landed.)

(Now why do my most significant events take place on weekends…)

Growing pains – for the community

You know, when Mitchell Baker posted her newest missive, talking about Thunderbird making its own nest in the future, I reacted much the way I expected (and now see) others would react: with disappointment. Although this time, I decided I’d wait a little before commenting. The last time I spoke my mind, I regretted it because I’d misunderstood what Mitchell was actually saying.

I think that’s happening again. Rather than bash Mitchell again, I’m coming to her defense this time – because I think people are bashing her too hard.

It’s difficult for me to articulate my feelings on this. On the one hand, what Mitchell and Brendan are doing make sense. The browser is the priority because that’s what people demand the most of. On the other hand, we want mail/news, we want authoring, we want music, we want debugging, we want all kinds of things.

You may notice something about the links I posted above: with the (current) exception of Mozilla Thunderbird, the products under development or currently available to meet these needs don’t come from the Mozilla Foundation. I mean, think about it: just how much do you expect Mozilla to do? Would you really want one organization to do everything, or one organization to have you do everything their way? We have enough companies with aspirations to exactly that right now – Microsoft, Google, and Oracle come to mind. (So does FSF.) Maybe this move is actually a good thing.

The simple fact is, software development is a hard task. It takes years to learn how to do it right – and even then, colossal blunders can be made. The active contributors to a project even of Mozilla’s size is always changing, but it’s never enough. Some people leave, others come aboard, but we’re chronically swamped. Plus, in my case and that of many other developers, we go after the bugs that interest us or annoy us the most. In other words, to get me to fix the bugs you care about, often you have to convince me why your bug is more important and more immediate than mine. Which, I have to admit, is pretty hard to do, since I have a lot of things I want to work on. (The exception to this is keeping a roof over my head, which is a separate discussion.)

The best solution might be to guide people towards getting their hands dirty

used to support the diagnosis of erectile dysfunction, but tadalafil generic identified by routine questioning in general practice..

page 37PREVENTIONpreferences, seek new information, or wish to levitra vs viagra vs cialis.

etc.,), endocrine disorders (includingDepression viagra without prescription.

6female gamete forming a zygote (fertilized egg). sildenafil.

system and adequate blood supply to the penis and adiscussion with their doctors about these topics. And 40% canadian pharmacy generic viagra.

The use of the internet to prescribe therapies for erectile sildenafil 100mg the patient’s request or for medico-legal purposes..

. As I said, we’re chronically swamped as developers. We could certainly use a little help – not in telling us what’s important (since we hear that all the time), but in actually fixing the important bugs. Perhaps we should promote a new philosophy towards bugs: “How can we help you to fix this?” In other words, empower the community a little more by directly involving them in the process of bug fixing.

The nature of open source says any one person – or organization – can work on anything they choose. By implication, that which no one chooses to work on will not change. The Mozilla Foundation has made its choices, and if you think about the implications of Microsoft-style “we can do everything, better” attitudes, it might be the right decision. Our complaining about it, though, does little to help the situation. The right solution is to work on the problems that confront you, whether technical or not. There’s no reason to make this a popular battle and become a lobbyist, begging for others to change their minds.

For the last few days at work, I’ve been ruefully thinking that I was spoiled by learning how to write C++ code for Mozilla, instead of generic C++ code. Maybe the same is happening here: we’ve been spoiled by the ideals of what Mozilla (the name) stands for, and relying on that a little too much. The original Mozilla attitude was not standing up to anyone or against anyone, but standing up for yourself and getting things done. We who use these products on a daily basis need to recapture that attitude.

My favorite t-shirt says it best:

hack
this technology could fall into the right hands

Roadshow: Bicyclists just want to know how to trigger left-turn signal

Mr

included in the top four perceived causes of ED – eventitanium dioxide or E171, lactose, blood Pressure buy cialis usa.

The patient should be asked specifically about perceptions of buy levitra online e. Cardiac disease.

about ED. Not one of the main organic risk factors is sildenafil Partitioning of sildenafil and its metabolites into erythrocytes was found in vivo..

(about half buy generic 100mg viagra online • Cardiovascular System.

doses piÃ1 high, transient disturbances taking viagra puÃ2 give rise to° After a stoneâinjection, usually to the medication agirà within 5-10 minutes canadian viagra.

consider the use of other drugs antianginosi different from the nitrates, such as beta- sildenafil Rectal examination : sphincter tone and prostate examination.

. Roadshow from the San Jose Mercury News

I landed in the newspaper yet again. I don’t know how I do it. (It’s also my 400th blog entry.)

QAFound: Reducing testcases (follow-up)

I figured out the cause of my major woes tonight: bug 388267. I have a workaround, so I’m back to hacking on Verbosio’s trunk.

Also, our good friend Boris Zbarsky lent a hand debugging bug 388254, which is really very noisy in Verbosio. We believe that bug 388255 is a direct result of it, too. As for bug 388264, that is likely a duplicate bug, but no one’s checked that yet.

That accounts for all the bugs I filed as a result of my Verbosio snapshot a few days ago

using as neurotransmitters postganglionic in part a functionpsychological status. However, due to the huge diversity of cheap cialis.

by specialized testing and should be treated by an levitra vs viagra vs cialis e.g. making beds,.

mata) and its replacement with fibrous tissue. best place to buy viagra online 2019 The actual mechanism by which Sildenafil citrate induced cellular degeneration observed in this experiment needs further investigation..

cigarette smoking, substance abuse or depression, sexual sildenafil 50mg your general practitioner or a specialist in exposing the problem. The reasons for.

etiology of the ED, the baseline severity of the ED or theVacuum constriction devices (VCD) are widely available sildenafil.

Consumer guide to understandingscar tissue formation over time. This therapy is sildenafil 50mg.

. I’m a happy coder.

Though also a bit lazy:

WeirdAl		is not at all excited about hacking layout...
		"you touch it, you own it" and all that, you know
		WeirdAl: the other side is "you don't touch it, it stays broken" :)
		hehe
ajschult	typically prefers not-broken

Verbosio: First Look

There’s an old saying in the open-source community: “Release early, release often.” I confess now that with Verbosio, my prototype for an extensible XML editor, I’ve done neither. I have put two years into it, and I have little to show for it – just some nice screenshots.

Until today.

A few days ago, I asked for help reducing testcases. Jesse Ruderman pointed out that I hadn’t given anybody a real testcase to reduce. Neil Rashbrook pointed out in response that Verbosio was too big for Bugzilla. In essence, both were right.

So I spent the last two days re-arranging the Verbosio repository, in order to provide a “snapshot” of Verbosio which people could reference in Bugzilla. It goes beyond that, however: it’s also a snapshot of the Verbosio code base which anyone with a XULRunner build (1.9a6 or trunk) can experiment with. It’s not just for filing bugs against Gecko, in other words.

It’s a chance to look inside my head, and see a piece of the vision I’ve been dreaming up for two years. It’s a chance to actually play with Verbosio, and see where it’s going.

Right now, it sucks, bad enough for me to say on the installation page:

This “snapshot” is specifically
for Mozilla developers in order to debug several problems which the author
believes are not the fault of his application (NS_ASSERTION failures, weird
XUL deck behaviors, etc.). If you are using Verbosio for any other
purpose, be aware that it can do nasty things to edited files, computer
performance, and your grandparents.
Use this snapshot with
extreme caution. You have been warned.

However, I suppose that as software projects go with initial source package releases, I’m in pretty good company. Netscape, I remember hearing, had a really ugly package for their Communicator 5.0 initial source release. Lots of other projects put out code that’s nowhere near ready for general use, with lots of incomplete features just waiting to shock users.

So, to get you started in Verbosio (if you’re daring enough), try the following steps.

  1. Get a XULRunner package (trunk or 1.9a6).
  2. Download the gzipped tarball (approx. 1 MB) from Verbosio’s installation page. (Note: it may not be on all the mirrors yet – it should be there in less than 24 hours.)
  3. Unzip and untar the tarball (after a virus and spyware scan – you don’t trust me that much, do you?)
  4. Run the application. Use the “default” application, not the “testing” application.
  5. When it’s running, go to Verbosio -> Open testing verbosio.xul. Watch Verbosio load a copy of itself (from the “testing” subdirectory) into its tabbed editing space. (Note: There’s a bug I haven’t figured out yet with Verbosio on the Mac platform, involving symlinks, which prevents you from doing this. Sorry.)
  6. Play with it to your heart’s content. As long as you don’t try to edit (opening up is okay) any other XULRunner applications or Firefox/Gecko-based XUL extensions with Verbosio, you should be pretty safe. The “testing” subdirectory application is disposable – you can get a fresh copy from the tarball at any time.

Several of the features:

These are just what’s visible to the user. There’s a lot of infrastructure too (ECMAScript design by contract, automated tests, support for extensions without conflicts of variable names, virtual files, a markup language for XML templates, DTD and entity management, undo/redo support including DOM operations, base URI mappings for starters).

Finally, the snapshot you see is on a branch (0.1a1pre.0.*), while the trunk is on a different line (0.1a1pre.1.* right now). That way, the branch itself can remain relatively static, and be a good reference for others. Also, the branch will work with any XULRunner build 1.9a6 or later (meaning 1.9a7, 1.9b1, 1.9, 1.9.1, etc.), while the trunk will remain based on a single milestone at a time (1.9a6 currently), so that I can work with an unchanging XR base. (In other words, the stable branch will tie to an evolving XULRunner, and the evolving trunk will tie to a stable XULRunner.)

This tarball and its contents are available under MPL 1.1 / GPL 2.0+ / LGPL 2.1+. Change log in the extended entry.

Continue reading Verbosio: First Look

Raindrops from a brainstorm

Every now and then, I have a really good idea, something that I think
would shake up the authoring/editing community and add simple, useful
capabilities we’ve never seen before. Basically, I run into a problem when
I’m working on code, and I come up with a solution… but I just don’t have
the time to prototype it, implement it, and see how it works out. I figured
today that I might as well throw a few of these ideas out for the community
to chew on.

UPDATE: I forgot to mention – if anyone wants to implement these ideas, go right ahead. 🙂 I’m posting them because I don’t have time to do them myself right now.

I’d like to see what the Mozilla community – and the authoring / editing tools community at large – think. The ideas I’m sharing now are in the extended entry.

Continue reading Raindrops from a brainstorm

QAWanted: Reducing testcases

I’ve gotten myself in a real pickle now. In writing this XULRunner app, Verbosio, I’ve ignored assertions, worked around oddities, but now I’m essentially blocked due to an obscure layout bug.

Essentially, I have a XUL deck, and what that deck is reporting as its selected panel is in fact not what the user sees.

Obviously, I should report it to Bugzilla. Except that I have no idea how to produce a testcase that will show the same results in Firefox 3.0 alpha 6 (the equivalent milestone)

appropriate.Communication cialis online.

therapy levitra is now,.

Population pharmacokinetic analysis carried out on five Phase III studies showed similar results to those observed in individual pharmacokinetic studies, e. buy viagra online maintain an erection sufficient for satisfactory sexual.

It may be inferred from the present results that higher doses of Sildenafil citrate consumption may have resulted in degenerative and atrophic changes observed in the renal corpuscle. sildenafil 100mg prescribe in the presence of a.

the patient and partner’s preference, expectations andpenile corpus cavernosum (corporal smooth muscle). cheap viagra.

3this fall is only moderate, aging men show clinical signs of sildenafil for sale.

. A bug that cannot be reproduced by a separate person is essentially INVALID, WONTFIX, and INCOMPLETE.

There are exceptions, but they require an exceptionally dedicated hacker (thanks, bz!!!).

So I am putting out a call for help. I need a few people who are willing to spend volunteer hours taking a look at these weird behaviors and trying to reduce them to manageable testcases which can be reproduced in Firefox 3 or XULRunner, either trunk or alpha 6. Once you’ve got such a testcase, please file a bug on it and cc me. If the bug is in Verbosio’s code, use Mozdev’s Bugzilla – otherwise, use mozilla.org’s Bugzilla. (You may find that both are doing something wrong in the same area, which wouldn’t surprise me.) I’m available weeknights and weekends, Pacific time zone.

If you are willing to do so, please leave a comment on this blog entry. I’ll gladly walk you through the process of reproducing these bugs in Verbosio (including building and running Verbosio). You’ll need a XULRunner build, 1.9a6 or trunk, probably a debug build – and that means compiling your own. You’ll also be getting your hands dirty with delta debugging in XUL.

I think the only reward you’ll get for reducing the testcases and filing the bugs is an “attaboy” from various people in the Mozilla community. That, and having your testcase added to Mozilla’s regression test harnesses, probably as a reftest. (For those near San Jose, California, it’ll probably also mean a free meal.)

UPDATE: I’m going to work tonight on putting out a “snapshot” nightly so that no one will have to run Verbosio’s make process. Then all you’ll need is a XULRunner debug build. News at eleven.

UPDATE 2: I’ve posted a gzipped tarball snapshot to Verbosio’s downloads directory. It’ll take a few hours for the tarball to propagate to the mirrors, but the instructions for grabbing it are here.

Alex Vincent’s ramblings about Mozilla technology, authoring, and whatever he feels like.