A useful Bugzilla trick

At the beginning of February I changed teams within Mozilla and am now working as a release manager. It follows naturally from a lot of the work I’ve already been doing at Mozilla and I’m excited to join the team working with Lukas, Lawrence, and Sylvestre!

I just learned a cool trick for dealing with several bugzilla.mozilla.org bugs at once, on MacOS X.

1) Install Bugzilla Services.

2) Add a keyboard shortcut as Alex Keybl describes in the blog post above. (I am using Control-Command-B)

3) Install the Tree Style Tab addon.

Now, from any text, whether in email, a desktop text file, or anywhere in the browser, I can highlight a bunch of text and bug number will be parsed out of the text. For example, from an email this morning:

Bug 1137050 - Startup up Crash - patch should land soon, potentially risky
David Major seems to think it is risky for the release.

Besides that, we are going to take:
Bug 1137469 - Loop exception - patch waiting for review
Bug 1136855 - print preferences - patch approved
Bug 1137141 - Fx account + hello - patch waiting for review
Bug 1136300 - Hello + share buttons - Mike  De Boer will work on a patch today

And maybe a fix for the ANY query (bug 1093983) if we have one...

I highlighted the entire email and hit the “open in bugzilla” keystroke. This resulted in a Bugzilla list view for the 6 bugs mentioned in the email.

Bugzilla list view example

With BugzillaJS installed, I have an extra option at the bottom of the page, “Open All in Tabs”, so if I wanted to triage these bugs, I can open them all at once. The tabs show up in my sidebar, indented from their parent tab. This is handy if I want to collapse this group of tabs, or close the parent tab and all its children at once (The original list view of these 6 bugs, and each of its individual tabs.) Tree Style Tab is my new favorite thing!

Tree style tabs bugzilla

In this case, after I had read each bug from this morning and closed the tabs, my coworker Sylvestre asked me to make sure I cc-ed myself into all of them to keep an eye on them later today and over the weekend so that when fixes are checked in, I can approve them for release.

Here I did not want to open up every bug in its own tab but instead went for “Change Several Bugs at Once” which is also at the bottom of the page.

Bugzilla batch edit

This batch edit view of bugs is a bit scarily powerful since it will result in bugmail to many people for each bug’s changes. When you need it, it’s a great feature. I added myself to the cc: field all in one swoop instead of having to click each tab open, click around several times in each bug to add myself and save and close the tab again.

It was a busy day yesterday at work but I had a nice time working from the office rather than at home. Here is the view from the SF Mozilla office 7th floor deck where I was working and eating cake in the sun. Cannot complain about life, really.
Mozilla bridge view

Like a warm pool

My new stomping grounds are at a physical rehab swimming pool in San Francisco. It’s called Herbst Pool and it’s at the Pomeroy Recreation and Rehabilitation Center. I used to go to the Betty Wright pool in Palo Alto (that then became C.A.R. and then Abilities United). This seems quite similar. The Center was started in 1952 as a rec center for people with disabilities. It seems to have a lot of day programs, gardens, playgrounds, a gym and art classrooms, and this awesome pool where the water is kept over 90 degrees. This is the important part to me. Cold is painful on my joints and I get stiff quickly. But it also is directly painful on my “bad” leg. Regular room temperature air on my leg feels like burning ice which is why I’m a huge fan of long underwear or at least secret leg warmers (under my jeans). So, warm water RULES.

Pomeroy herbstpool

Like the Betty Wright pool, Herbst Pool or Pomeroy Pool (whatever you want to call it) has a very wide sloping ramp to enter the water, and a variety of PVC wheelchairs useful for going down the ramp. There are also very shallow and broad steps with handrails. It is easy entry into the water. They have all sorts of adaptive equipment for the water. I don’t need that stuff but I appreciate the easy entry and not having to use one of those slow, free-show lift chairs into the water. The pool is a beautiful and relaxing space as there is a skylight, and one wall is entirely windows looking out at the trees bordering Lake Merced. The walls are covered with cheerful murals of cartoon whales.

The locker room and especially the main pool room are kept pretty warm. There are many heat lamps in the pool area. Really fantastic if you can’t tolerate the cold. Of course I always wish it were warmer and had a heated floor… and a sauna…. but it’s the best I’ve ever come across.

Once I am in things are pretty good at the moment. I can walk around slowly in collarbone-deep water, and do squats and other excercises hanging onto a kickboard. When I am not in a flare up, or, in some mythical past before my ankles went awry, I am a strong and good swimmer with good endurance and a long history of loving the surf. I feel super happy in the water, light and gravity-free (as long as it is warm). I’m going every week for physical therapy in a small group that’s run through Potrero Physical Therapy (note: they are awesome.) And I am trying to fit in at least one other pool visit per week, hoping to get to 3 hours total a week.

It is hard for me to get to Pomeroy. When I was gearing up to do this I didn’t find directions on their site for how to get there by bus, and it was really unclear on Google Maps from their address (on Skyline) where the entrance was on a rather large and confusing block of land between three streets. This matters to me because it can be non-trivial for me to get from point A to point B even in my scooter (because of pain, or nasty weather) and if I do’t know exactly where entrances are and what a building or “campus” is like, I’m not going to take my manual wheelchair for sure as it can easily be too difficult for me to go it alone. So here are the details of how to get there for anyone else who is thinking of rehab at this pool.

And, while taking the hour+ long journey from my house to the pool and during the somewhat boring hour of walking back and forth I often think how I should write up a post about the pool. Here it finally is.

Getting to the pool

There is parking and drop off that is level with the pool entrance, which is on Herbst Road and up a little hill. There are at least 5 blue parking spaces and some extra. Other parking is along Herbst and you will meet that “hill” along with a possibly significant walk. From the drop off point in the closest parking lot (where paratransit will drop you) It is a pretty short walk in to the pool. I haven’t measured it or tried it yet. It is too much walk for me to do with out a chair.

There are 2 buses that go nearby, the 23 and the 18. The 18 stops on Herbst Road just outside the Rec Center campus. To get to the pool you will have to cross a non-busy street and then go up a steep slope (a full story, not something I want to do in a manual chair but might in a pinch). There is a ramp for this but again it is at least one full building story high. At the top there is a little garden with benches, and a small (not accessible) playground and grassy area for toddlers. I like eating lunch there. (I think on the other side of the campus there may be an accessible playground.)

Pomeroy courtyard

To take the 23 (the bus I ride to get there) you have to get off at Sloat and Skyline just north east of the zoo. This street crossing is a complete nightmare. It is a 6 or 8 way stop, with cars coming very fast. There are 3 medians you will need to stop on to cross another section of the road. At least it has medians! This is a crossing I would not recommend to anyone blind. Instead get off the 23 at the zoo entrance stop and cross there where there is a light and only 1 median and traffic isn’t coming from 6 unpredictable directions. This will add another 15 minutes to your journey. The Hellish Intersection scares the crap out of me every time. But I still use it because I need to get back home so I can work. The 23rd itself is a pleasant bus, not crowded, bus drivers nice and not super stressed; they are the old style buses with an unfolding ramp instead of a lift. It comes about every 20-30 minutes depending on the time and day. Note, the bus stop going inbound is not marked well and is on one of the medians in the center of the Hellish Intersection.

Hellish intersection sloat skyline

It is half a mile from the Sloat and Skyline bus stop to the entrance to the pool, which takes me about 10 minutes to traverse. One minor problem I have is that the sidewalk along Herbst is often littered with eucalyptus nuts and branches, so I opt for going in the street. Not a big problem as the street isn’t too busy and it’s wide enough to have room.

cost of the pool; who goes there
The pool membership costs $50 a year and you have to have a doctor fill out the application. Then, the swim sessions or exercise classes are something like $8-10 each. There is not really a “drop in” mentality but instead you are expected to sign up for a 10-pack card at the least.

This high cost, and the difficult access, may explain why I have never seen any other wheelchair users at the pool. It is weird to feel like a damn unicorn at a place specifically meant for disabled people. The physical therapy class are mostly people with injuries or recovering from surgery who have PT for a short time covered by their insurance or Medicare and the arthritis exercise class seem to be retired people trying to keep fit. The other main users of the facility seem to be disabled people who have personal care attendants, or who have developmental disabilities and are there as a sort of day camp experience doing garden work, art classes, and basketball. Lots of wheelchair users around the grounds and buildings but none at the pool at the times that I go there. I can see the community that they serve. And I am an outlier in that community and yet this place is also *exactly* what I need (integrated into my life all the time). I do wish that the pool had some sort of option for low(er) cost access, not for me, but for people in the community who are living on disability benefits who would never be able to afford this and yet who are not “in the system” enough to get bused from a group home on paratransit (as I think many of the people hanging out at the Center are).

The other swimmers I have seen are all infant and toddlers with parents bringing them for swim lessons (with no relation to anyone being disabled). It is just a nice warm pool where they have baby swim lessons, like at Petit Baleen. It is lovely and cheerful to see all the kids coming out of the pool. They always seem happy and calm and sort of stimulated. And they make me happy as I think of the nice memories of when Milo and Ada were small.

Probably the kids’ swim lessons are basically a way for middle class non disabled people to financially support the rest of the facility. (Which also takes donations.) And, I think it may also get funding from places like Target that look for a place from which to hire disabled people for low pay and some sort of tax break; whatever happens there, I hope people are paid fairly.

Extra note on Janet Pomeroy who the Center is named after. Thank you wheelchair sports camp lady!

The facilities of the pool
The building itself has automatic doors. There is a station where you can check in and pay for your session. Also two vending machines with drinks and snacks.

The women’s locker room has a big heavy door quite difficult to open. They need a push button for the doors. Inside, there is a (wet) floored room lined with benches. There are a few hooks to hang coats or bags but no lockers at all and no curtained areas for changing. It is just one big room to change in. Probably that is to fit a maximum number of people (and wheelchairs?) into the room. The outcome of this is that many people lock themselves into the three bathroom stalls so I make sure to use the bathroom outside the locker room by the gym. Aside from this minor annoyance I do feel critical of the situation as the upshot is old ladies who have had hip replacements changing into bathing suits in a slippery tiled floor bathroom stall seems like a recipe for badness. (Add in an incoming and outgoing class of non-disabled toddlers to imagine this completely.) I think they are dealing with this by building a new (unisex) changing area for wheelchair users or people with attendants, in the main area of the pool. (The Abilities United pool also has this.) One last bitch about the locker room, it has no tampon machine. Come on folks. It’s a pool bathroom. What more important place are you going to be where you will need emergency tampons?! But I digress.

There are nice showers in the locker room, one with a curtain but all the rest open. The water is hot. Yay. The locker room has a heavy difficult door to get into the pool area.

From there it is cake; there is another shower for rinsing off near the pool and there are some open cubbyholes to put your stuff in if you don’t want to leave it in the (non-lockered) locker room. I notice that getting into the pool many people have both flip flops and walking canes. Some thought to this common situation would be good and it coudl be solved with another set of cubbies and some sort of cane holder that would take twenty-eleven canes. There is always a pile of flip flops and canes right at the point where the handrail begins! Plus, my scooter unless I am confident about the walk from the shower area to the pool and back.

Herbstpool window

emotions and memories of physical therapy
I can’t imagine how many of the ladies in PT with me manage the trip there or even the walk from the parking lot. It is always hard to remember how that works until I get back into that territory of ablilty. Driving + hobbling. I was there for years.

I remember so many times of “rehabbing” in pools over the last 20 years. At Valley Medical Center in the 90s it was depressing and squalid and yet the warm water was so freeing. I could move freely and learned some good exercises. It was hard to talk with the other people there who were all older women while I was in my 20s with a mohawk and two septum rings. These days at least I am middle aged looking and not unacceptable as a possible conversation partner to ladies who have hip replacements.

It was always an ordeal to get to a hospital and navigate it and also inherently depressing. I have swum at YMCAs, JCCs, many city pools, and so on which I far prefer to going to hospital therapy pools. The public pools are way too cold for me to tolerate. I worked up from 15 minutes to 45 minutes in a “normal” temperature pool where athletic people swim laps, but it’s never a good experience. The SF JCC has the second warmest pool in town, plus a hot tub and a sauna, by the way, but it is extremely pricey as well as being ultra clean, pretty, and posh. The CPMC hospital has a warm pool, and you can get PT from it, so that is an option, but last I checked it was not only out of service but you couldn’t “drop in” extra at all; you have to get on a waiting list for a weekly arthritis class and if you miss two classes they boot you to the end of the waiting list. That will not work well for me. So I am very glad that places like the Pomeroy Pool and Abilities United exist.

I thought over my times at the Betty Wright Center which had really good cameraderie and where I got a lot stronger. I remember starting out at Betty Wright crying uncontrollably and feeling that I could not take it but grimly slogging through. That always happens both physically and emotionally. In fact at Pomeroy I know we all cry in there sometimes. Even if not from pain, it is because it is easy to go about our lives somewhat disconnected from our bodies. Being in the water and having nothing else to do but gently move around, it can be an emotional experience. I am thinking directly about what I can and can’t do, and comparing it with other times in the water, often ones where I was hitting rock bottom physically. I notice consistently my problem is not, “not trying hard enough” it is pushing myself way too hard and re-injuring myself or making everything worse. This is the new era of caution for me. Some of this holding back is possible because of working with a behavioral therapist who is very knowledgeable about pain, disability, and chronic illness. Thanks Dr. C.

(There is also the aspect that doing this 3.5 hour journey means I have to put on a lot of psychic armor to deal with strangers, bus drivers, buses with broken lifts, the Hellish Intersection, people cursing at me for being in the way, people staring, people (nicely or otherwise) inquiring about my scooter or wheelchair, people angry with me for not accepting their “help” properly, and all the other things that make leaving the house an Epic Journey. I armor up and am prepared for it all but it is not without emotional effort and cost. It is never simple. For me to get anywhere, I have gone through this process already and have likely had many challenges to basic equanimity.)

Last fall I could not go into the water without soft ankle braces. It hurt too much to have the tiny currents of the water, wiggling my ankles around unpredictably. Right now I can do a lot of squats and toe-raises and walk back and forth for the whole hour. It’s great. I am not swimming yet as my knees and ankles (and i think back) aren’t strengthened enough. I cannot do things I used to be able to do in pool rehab, like write the alphabet with my foot in cursive. Nope nope nope nope nope nope! But, I have improved my gait (again) to be more even and to weight shift instead of limping or shuffling.

My goal right now is to get my ankles strong enough that I can drive to the pool, park there, and use my manual chair. That would be less physically grueling for me than the 2 hours of bus ride and scootering. It usually takes 3 and a half hours out of my day to get there by bus. By driving, I could be gone from work 2 hours instead. That means I could swim more often. My real goal though is simply to maintain this level of water-walking and aerobic exercise for health, flexibility, and strength without injuring myself. This is already the longest stretch of time I have consistently made it to PT or exercise without messing myself up, and also doing daily PT at home. Huzzah!

A last note, huge props to Pomeroy staff for letting me use a conference room in their office one day last fall as I wanted to be at a crucial team meeting but didn’t want to skip my PT appointment. They let me walk in out of the blue and use their office and their wifi and close the door for privacy. Super nice of them. I was able to give one of their staff all the details about TravelScoots and other lightweight scooters in return. I still feel I owe them some free computer advice or help! But, I thanked them for supporting a person “in the community” (me) in their job and also for helping make Firefox better (ha!) by getting me to my meeting on time!

Automated test harnesses for Firefox, zooming out a bit

In December I was going through some of the steps to be able to change, fix, and interpret the results of a small subset of the gazillion automated tests that Mozilla runs on Firefox builds. My last post arrived at the point of being able to run mochitests locally on my laptop on the latest Firefox code. Over the holidays I dug further into the underlying situation and broaded my perspective. I wanted to make sure that I didn’t end up grubbing away at something that no one cared about or wasn’t missing the big picture.

My question was, how can I, or QA in general, understand where Firefox is with e10s (Electrolysis, the code name for the multiprocess Firefox project). Can I answer the question, are we ready to have e10s turned on by default in Firefox — for the Developer Edition (formerly known as Aurora), for Beta, and for a new release? What criteria are we judging by? Complicated. And given those things, how can we help move the project along and ensure good quality; Firefox that works as well as or, we hope, better than, Firefox with e10s not enabled? My coworker Juan and I boiled it down to basically, stability (lowering the crash rate) and automated test coverage. To answer my bigger questions about how to improve automated test coverage I had to kind of zoom out, and look from another angle. For Firefox developers a lot of what I am about to describe is basic knowledge. It seems worth explaining, since it took me significant time to figure out.

First of all let’s look at treeherder. Treeherder is kind of the new TBPL, which is the old new Tinderbox. It lets us monitor the current state of the code repositories and the tests that run against them. It is a window into Mozilla’s continuous integration setup. A battery of tests are poised to run against Firefox builds on many different platforms. Have a look!

Current view of mozilla-central on treeherder

Treeherder2

Edward Tufte would have a cow. Luckily, this is not for Tufte to enjoy. And I love it. You can just keep digging around in there, and it will keep telling you things. What a weird, complicated gold mine.

Digression! When I first started working for Mozilla I went to the Automation and Tools team work week where they all came up with Treeherder. We wanted to name it something about Ents, because it is about the Tree(s) of the code repos. I explained the whole thing to my son, I think from the work week, which awesomely was in London. He was 11 or 12 at the time and he suggested the name “Yggdrazilla” keeping the -zilla theme and in reference to Yggdrasil, the World-Tree from Norse mythology. My son is pretty awesome. We had to reject that name because we can’t have more -zilla names and also no one would be able to spell Yggdrasil. Alas! So, anyway, treeherder.

The left side of the screen describes the latest batch of commits that were merged into mozilla-central. (The “tree” of code that is used to build Nightly.) On the right, there are a lot of operating systems/platforms listed. Linux opt (optimized version of Firefox for release) is at the top, along with a string of letters and numbers which we hope are green. Those letter and numbers represent batches of tests. You can hover over them to see a description. The tests marked M (1 2 3 etc) are mochitests, bc1 is mochitest-browser-chrome, dt are developer tools tests, and so on. For linux-opt you can see that there are some batches of tests with e10s in the name. We need the mochitest-plain tests to run on Firefox if it has e10s not enabled, or enabled. So the tests are duplicated, possibly changed to work under e10s, and renamed. We have M(1 2 3 . . .) tests, and also M-e10s(1 2 3 . . . ). Tests that are green are all passing. Orange means they aren’t passing. I am not quite sure what red (busted) means (bustage in the tree! red alert!) but let’s just worry about orange. (If you want to read more about the war on orange and what all this means, read Let’s have more green trees from Vaibhav’s blog. )

I kept asking, in order to figure out what needed doing that I could usefully do within the scope of As Soon As Possible, “So, what controls what tests are in which buckets? How do I know how many there are and what they are? Where are they in the codebase? How can I turn them on and off in a way that doesn’t break everything, or breaks it productively?” Good questions. Therefore the answers are long.

There are many other branches of the code other than mozilla-central. Holly is a branch where the builds for all the platforms have e10s enabled. (Many of these repos or branches or twigs or whatever, are named after different kinds of tree.) The tests are the standard set of tests, not particularly tweaked to allow for e10s. We can see what is succeeded and failing on treeherder’s view of holly. A lot of tests are orange on holly! Have a look at holly by clicking through on the link above. Here is a picture of the current state of holly.

Treeherder holly1

If you click a batch of tests where there are some failures — an orange one — then a new panel will open up in treeherder! I will pick a juicy looking one. Right now, for MacOS 10.6 opt, M(2) is orange. Clicking it gives me a ton of info. Scrolling down a bit in the bottom left panel tells me this:

mochitest-plain-chunked 164546/12/14136

The first number is how many tests ran. Scary. Really? 164546 tests ran? Kind of. This is counting assertions, in other words, “is” statements from SimpleTest. The first number lists how many assertions passed. The second number is for assertion failures and the third is for “todo” statements.

The batches of tests running on holly are all running against an e10s build of Firefox. Anything that’s consistently green on holly, we can move over to mozilla-central by making some changes in mozharness. I asked a few people how to do this, and Jim Matthies helpfully pointed me at a past example in Bug 1061014. I figured I could make a stab at adding some of the newly passing tests in Bug 1122901.

As I looked at how to do this, I realized I needed commit access level 2 so I filed a bug to ask for that. And, I also tried merging mozilla-central to holly. That was ridiculously exciting though I hadn’t fixed anything yet. I was just bringing the branch up to date. On my first try doing this, I immediately got a ping on IRC from one of the sheriffs (who do merges and watch the state of the “tree” or code repository) asking me why I had done something irritating and wrong. It took us a bit to figure out what had happened. When I set up mercurial, the setup process and docs told me to install a bunch of Mozilla specific hg extensions. So, I had an extension set up to post to bugzilla every time I updated something. Since I was merging several weeks of one branch to another this touched hundreds of bugs, sending bugmail to untold numbers of people. Mercifully, Bugzilla cut this off after some limit was reached. It was so embarrassing I could feel myself turning beet red as I thought of how many people just saw my mistake and wondered what the heck I was doing. And yet just had to forge onwards, fix my config file, and try it again. Super nicely, Clint Talbert told me that the first time he tried pushing some change he broke all branches of every product and had no idea what had happened. Little did he know I would blog about his sad story to make myself feel less silly….. That was years ago and I think Mozilla was still using cvs at that point! I merged mozilla-central to holly again, did not break anything this time, and watched the tests run and gradually appear across the screen. Very cool.

I also ended up realizing that the changes to mozharness to turn these batches of tests on again were not super obvious and to figure it out I needed to read a 2000-line configuration file which has somewhat byzantine logic. I’m not judging it, it is clearly something that has grown organically over time and someone else probably in release engineering is an expert on it and can tweak it casually to do whatever is needed.

Back to our story. For a batch of tests on holly that have failures and thus are showing up on treeherder as orange, it should be possible to go through the logs for the failing tests, figure out how to turn them off with some skip-if statements, filing bugs for each skipped failing test. Then, keep doing that till a batch of tests is green and it is ready to be moved over.

That seems like a reasonable plan for improving the automated test landscape, which should help developers to know that their code works in Firefox whether e10s is enabled or not. In effect, having the tests should mean that many problems are prevented from ever becoming bugs. The effect of this test coverage is hard to measure. How do you prove something didn’t happen? Perhaps by looking at which e10s tests fail on pushes to the try server. Another issue here is that there are quite a lot of tests that have been around for many years. It is hard too know how many of them are useful, whether there are a lot of redundant tests, in short whether there is a lot of cruft and there probably is. With a bit more experience in the code and fixing and writing tests it would be easier to judge the usefulness of these tests.

I can also see that, despite this taking a while to figure out (and to even begin to explain) it is a good entry point to contributing to Firefox. It has more or less finite boundaries. If you can follow what I just described in this post and my last post, and you can read and follow a little python and javascript, then you can do this. And, if you were to go through many of the tests, over time you would end up understanding more about how the codebase is structured.

As usual when I dive into anything technical at Mozilla, I think it’s pretty cool that most of this work happens in the open. It is a great body of data for academics to study, it’s an example of how this work actually happens for anyone interested in the field, and it’s something that anyone can contribute to if they have the time and interest to put in some effort.

This post seems very plain with only some screenshots of Treeherder for illustration. Here, have a photo of me making friends with a chicken.

Liz with chicken

Running mochitests for Firefox

I’m experimenting with automated testing for Firefox and figured it may be useful to record what I learned. I had a look at the Mochitest page on MDN as well as the main page on Automated testing at Mozilla. It is hard to know how to even begin to explain this. Mochitests are a huge ball of tests for Firefox. They run every time a change is pushed to mozilla-central, which is the sort of tip of the current state of our code and is used every day to build the Nightly version of Firefox. They’re run automatically for changes on other code repositories too. And, you can run them locally on your own version of Firefox.

This is going to have ridiculous levels of detail and jargon. Warning!

The first thing to do is to download the current code from mozilla-central and build it on my laptop. Here are the Firefox build instructions!

As usual I need to do several other things before I can do those things. This means hours of twiddling around on the command line, installing things, trying different configurations, fixing directory permissions and so on. Here are a few of the sometimes non-trivial things I ended up doing:

* updated Xcode and command line tools
* ran brew doctor and brew update, fixed all errors with much help from Stack Overflow, ended up doing a hard reset of brew
* Also, if you need to install a specific version of a utility, for example, autoconf: brew tap homebrew/versions; brew install autoconf213
* re-installed mercurial and git since they were screwed up somehow from a move from one Mac to another
* tried two different sample .mozconfig files, read through other Mac build config files, several layers deep (very confusing)
* updating my Firefox mozilla-central directory (hg pull -u)
* filed a bug for a build error and fixed some minor points on MDN

The build takes around an hour the first time. After that, pulling the changes from mozilla-central and reticulating the splines takes much less time.

Firefox build

Now I’m to the point where I can have a little routine every morning:
* brew doctor
* brew upgrade
* cd mozilla-central, hg pull -u
* ./mach build

Then I’m set up to run tests. Running all the mochitest-plain tests takes a long time. Running a single test may fail because it has dependencies on other tests it expects to have run first. You can also run all the tests in a particular directory, which may work out better than single tests.

Here is an example of running a single test.

./mach mochitest-browser browser/base/content/test/general/browser_aboutHome.js

Your Nightly or Nightly-debug browser will open and run through some tests. There will be a ton of output. Nifty.

Here is that same test, run with e10s enabled.

./mach mochitest-browser —e10s browser/base/content/test/general/browser_aboutHome.js

BTW if you add “2>&1 | tee -a test.log” to those commands they will pipe the output into a log file.

Back to testing. I poked around to see if I could find a super easy to understand test. The first few, I read through the test code, the associated bugs, and some other stuff. A bit overwhelming. My coworker Juan and I then talked to Joel Maher who walked us through some of the details of how mochitests work and are organized. The tests are scattered throughout the “tree” of directories in the code repository. It is useful generally to use DXR to search but I also ended up just bouncing around and getting familiar with some of the structure of where things are. For example, scarily, I now know my way to testing/mochitest/tests/SimpleTest/. Just by trying different things and looking around you start to get familiar.

Meanwhile, my goal was still to find something easy enough to grasp in an afternoon and run through as much of the process to fix a simple bug as I could manage. I looked around for tests that are known not to work under e10s, and are marked in manifest files that they should be skipped if you’re testing with e10s on. I tried turning some of these tests on and off and reading through their bugs.

Also meanwhile I asked for commit access level 1 (for the try server) so when I start changing and fixing things I can at least throw them at a remote test server as well as my own local environment’s tests.

Then, hurray, Joel lobbed me a very easy test bug.

From reading his description and looking at the html file it links to, I got that I could try this test, but it might not fail. The failure was caused by god knows what other test. Here is how to try it on its own:

./mach mochitest-chrome browser/devtools/webide/test/test_zoom.html

I could see the test open up Nightly-debug and then try to zoom in and out. Joel had also described how the test opens a window, zooms, closes the window, then opens another window, zooms, but doesn’t close. I have not really looked at any JavaScript for several years and it was never my bag. But I can fake it. Hurray, this really is the simplest possible example. Not like the 600-line things I was ending up in at random. Danny looked at the test with me and walked through the JavaScript a bit. If you look at the test file, it is first loading up the SimpleTest harness and some other stuff. I did not really read through the other stuff. *handwave* Then in the main script, it says that when the window is loaded, first off wait till we really know SimpleTest is done because the script tells us so (Maybe in opposition to something like timing out.) Then a function opens the WebIDE interface, and (this is the main bit Danny explained) the viewer= winQuerInterface etc. bit is an object that shows you the state of the viewer. *more handwaving, I do not need to know* More handwaving about “yield” but I get the idea it is giving control over partly to the test window and partly keeping it. Then it zooms in a few times, then this bit is actually the meat of the test:

 is(roundZoom, 0.6, "Reach min zoom");

Which is calling the “is” function in SimpleTest.js, Which I had already been reading, and so going back to it to think about what “is” was doing was useful. Way back several paragraphs ago I mentioned looking in testing/mochitest/tests/SimpleTest/. That is where this function lives. I also felt I did not entirely need to know the details of what the min and max zoom should be. Then, we close the window. Then open a new one. Now we see the other point of this test. We are checking to see that when you open a WebIDE window, then zoom to some zoomy state, then close the window, then re-open it, it should stay zoomed in or out to the state you left it in.

OK, now at this point I need to generate a patch with my tiny one line change. I went back to MDN to check how to do this in whatever way is Mozilla style. Ended up at How to Submit a Patch, then at How can I generate a patch for somebody else to check in for me?, and then messing about with mq which is I guess like Quilt. (Quilt is a nice name, but, welcome to hell.) I ended up feeling somewhat unnerved by mq and unsure of what it was doing. mq, or qnew, did not offer me a way to put a commit message onto my patch. After a lot of googling… not sure where I even found the answer to this, but after popping and then re-pushing and flailing some more, and my boyfriend watching over my shoulder and screeching “You’re going to RUIN IT ALL” (and desperately quoting Kent Beck at me) as I threatened to hand-edit the patch file, here is how I added a commit message:

hg qrefresh -m "Bug 1116802: closes the WebIDE a second time"

Should I keep using mq? Why add another layer into mercurial? Worth it?

To make sure my patch didn’t cause something shocking to happen (It was just one line and very simple, but, famous last words….) I ran the chrome tests that were in the same directory as my buggy test. (Piping the output into a log file and then looked for anything that mentioned test_zoom. ) The test output is a study in itself but not my focus right now as long as nothing says FAIL.

./mach mochitest-chrome browser/devtools/webide/test/

Then I exported the patch still using mq commands which I cannot feel entirely sure of.

 hg export qtip > ~/bug-1116802-fix.patch

That looked fine and, yay, had my commit message. I attached it to the bug and asked Joel to have a look.

I still don’t have a way to make the test fail but it seems logical you would want to close the window.

That is a lot of setup to get to the point where I could make a useful one line change in a file! I feel very satisfied that I got to that point.

Only 30,000 more tests to go, many of which are probably out of date. As I contemplate the giant mass of tests I wonder how many of them are useful and what the maintenance cost is and how to ever keep up or straighten them out. It’s very interesting!

You can have a look at the complicated nature of the automated tests that run constantly to test Firefox at treeherder. For any batch of commits merged into mozilla-central, huge numbers of tests run on many different platforms. If you look at treeherder you can see a little (hopefully green) “dt” among the tests. I think that the zooming in WebIDE test that I just described is in the dt batch of tests (but I am not sure yet).

I hope describing the process of learning about this small part of Firefox’s test framework is useful to someone! I have always felt that I missed out by not having a college level background in CS or deep expertise in any particular language. And yet I have still been a developer on and off for the last 20 years and can jump back into the pool and figure stuff out. No genius badge necessary. I hope you can see that actually writing code is only one part of working in this kind of huge, collaborative environment. The main skill you need (like I keep saying) is the ability not to freak out about what you don’t know, and keep on playing around, while reading and learning and talking with people.

Happy Year Everyone!

Happy Earth’s orbit time unit demarcation point! Here is a sort of mass holiday letter, via blog, to ceremoniously open the year. Starting with a picture of me looking like a happy Time Lord, wrapped in a silk scarf with the Puppis Nebula on it and with a giant bow on my head, grinning like a fool.

Happytimelord

It’s been a good year. I met many new fabulous people mostly through Double Union and conferences, read a lot, worked on a new zine, published some articles including some in Model View Culture and a year-end review of books and culture at the Aqueduct Press blog worked super hard at Mozilla, had my ups and downs physically and with mobility, visited Portland a couple of times for Open Source Bridge, AdaCamp, and for work, went to Montreal for PyCon, went to WisCon, played a ton of Ingress, worked with Ada Initiative and a little on geekfeminism.org (as usual). Got to hang out really a lot with my friends. So many lovely, warm, interesting people!! I adore them. Had a fabulous, sweet, talented roommate for a month. Made a tiny zine, Heterodoxy to Marie. I got to see Sandra while I was in Montreal and found out at the end of the year that her and Sophie’s film, The Amina Profile, will be at the Sundance Film Festival (I am in this movie, somewhere, interviewed.)

Feminst hacker lounge (year 2) from PyCon:

Feministhackerloungepycon2014

Zine Workshop at Double Union:

Zineworkshop

Movie poster for The Amina Profile:

Amina profile poster

I have admired this is the movement and #ThisTweetCalledMyBack this year. Solid.

In the fall, I missed a trip I had planned with Danny, to Mexico City and Bogotá hackerspaces, but I felt good about the decision not to go especially once I saw the many flights of stairs I would have had to negotiate somehow. (!) Sad about it though. Spent a month and a half in CAM walking boots (the ankle moon boots) which was a nasty wake-up call. And which freaked me out and upset me greatly. Re-focused my life around physical therapy, kind of (in that it is my top priority to go to the Very Warm Pool (92°F) to exercise and strengthen my legs, any time I can make time).

I lost a friend to sudden unexpected death this year. I miss her every day. Another part of my feelings of refocusing on health and drawing inwards a little. What a privilege I have had to reach this age without very much of this kind of loss. Had a bracing-myself feeling like, “And so it begins”. Our lives just fly by. I dearly wish she were here to appreciate #ThisTweetCalledMyBack. Surely she knows or knew how deeply she would be missed by so many of us. Please hold your friends and compañeras close, everyone.

Here’s what I keep saying to myself. How will I try to model sustainable feminist activism for others and for myself? (Is it possible? Maybe not.) What if I get off that mustang? Can I? What would life be like if I “gave” 60%, not 110%? Will I ever feel that I do “enough” or experience “enough”? (No. Must CHILL.) (Thanks for these pointers, awesome new behavioral pain/disability/insomnia therapist.)

Life generally fabulous with Danny. Yesterday afternoon we were there just doing our thing, alternating between domestic things, editing and writing (sometimes together), half working and half not, and zoning out playing our current video games (Elite Dangerous and Clash of Clans). A few friends were about to come over. He went, “wait, this is what people THINK we do all the time” (writing together on the couch) Well, we do….. just not every moment obviously since the garbage needs to go out and we are often both ill and exhausted and just slumped around the house. But then we have this great synergy and can communicate and understand each other better than anything. *hearts*

Over all, I settled more and more into living in this little rented earthquake shack in San Francisco with Danny and our kids, who are beyond awesome.

Kids effparty

Many horrible, sad, annoying things happened this year as well and to all of that I call BULLSHIT. Enough said!

Bullshitbutton

Here is the most frivolous milestone for the year I can think of (demonstrated last night) After many years of patiently lap-training Danny’s cat, I can now turn her upside down. She purrs and stays upside down on my lap. TRIUMPH.

"Hey, hey sister it don't matter
Whether I do labor fast or slow,
There's always more labor after."

Thoughts on working at Mozilla and the Firefox release process

Some thoughts on my life at Mozilla as I head into our company-wide work week here in Portland! My first year at Mozilla I spent managing the huge volume of bugs, updating docs on how to triage incoming bugs and helping out with Bugzilla itself. For my second year I’ve been more closely tied into the Firefox release process, and I switched from being on the A-Team (Automation and Tools) to desktop Firefox QA, following Firefox 31 and then Firefox 34 through their beginning to release.

picard saying if it's not in bugzilla it doesn't exist

I also spent countless hours fooling around with Socorro, filing bugs on the highest volume crash signatures for Firefox, and then updating the bugs and verifying fixes, especially for startup crashes or crashes associated with “my” releases.

Over this process I’ve really enjoyed working with everyone I’ve met online and in person. The constant change of Mozilla environments and the somewhat anarchic processes are completely fascinating. Though sometimes unnerving. I have spent these two years becoming more of a generalist. I have to talk with end users, developers on every Mozilla engineering team, project or product managers if they exist, other QA teams, my own Firefox/Desktop QA team, the people maintaining all the tools that all of us use, release management, and release engineering. Much of the actual QA has been done by our Romanian team so I have coordinated a lot with them and hope to meet them all some day. When I need to dig into a bug or feature and figure out how it works, it means poking around in documentation or in the code or talking with people, then documenting whatever it is.

This is a job (and a workplace) suited for people who can cope with rapid change and shifting ground. Without a very specific focus, expertise is difficult. People complain a lot about this. But I kind of like it! And I’m constantly impressed by how well our processes work and what we produce. There are specific people who I think of as total rock stars of knowing things. Long time experts like bz or dbaron. Or dmajor who does amazing crash investigations. I am in their secret fan club. If there were bugzilla “likes” I would be liking up a storm on there! It’s really amazing how well the various engineering teams work together. As we scramble around to improve things and as we nitpick I want to keep that firmly in mind. And, as we are all a bit burned out from dealing with the issues from the 33 Firefox release and many point releases, then the 10th anniversary release, then last minute scrambling to incorporate surprise/secret changes to Firefox 34 because of our new deal with Yahoo.

I was in a position to see some of the hard work of the execs, product and design people, and engineers as well as going through some rounds of iterating very quickly with them these last 2 weeks (and seeing gavin and lmandel keep track of that rapid pace) Then seeing just part of what the release team needed to do, and knowing that from their perspective they also could see what IT and infrastructure teams had to do in response. So many ripples of teamwork and people thinking things through, discussing, building an ever-changing consensus reality.

I find that for every moment I feel low for not knowing something, or making a mistake (in public no less) there are more moments when I know something no one else knows in a particular context or am able to add something productive because I’m bringing a generalist perspective that includes my years of background as a developer.

As an author and editor I am reminded of what it takes to edit an anthology. My usual role is as a general editor with a vision: putting out a call, inviting people to contribute, working back and forth with authors, tracking all the things necessary (quite a lot to track, more than you’d imagine!) and shifting back and forth from the details of different versions of a story or author bios, to how the different pieces of the book fit together. And in that equation you also, if you’re lucky, have a brilliant and meticulous copy editor. At Aqueduct Press I worked twice with Kath Wilham. I would have gone 10 rounds of nitpick and Kath would still find things wrong. My personal feeling for my past year’s work is that my job as test plan lead on a release has been 75% “editor” and 25% copy editor.

If I had a choice I would always go with the editor and “glue” work rather than the final gatekeeper work. That last moment of signing off on any of the stages of a release freak me out. I’m not enough of a nitpicker and in fact, have zero background in QA — instead, 20 years as a lone wolf (or nearly so) developer, a noisy, somewhat half-assed one who has never *had* QA to work with much less *doing* QA. It’s been extremely interesting, and it has also been part of my goal for working in big teams. The other thing I note from this stressful last 6 weeks is that, consistent with other situations for me, in a temporary intense “crisis” mode my skills shine out. Like with the shifting-every-30-minutes disaster relief landscape, where I had great tactical and logistical skills and ended up as a good leader. My problem is that I can’t sustain that level of awareness, productivity, or activeness, both physically and mentally, for all that long. I go till I drop, crash & burn. The trick is knowing that’s going to happen, communicating it beforehand, and having other people to back you up. The real trick which I hope to improve at is knowing my limits and not crashing and burning at all. On the other hand, I like knowing that in a hard situation I have this ability to tap into. It just isn’t something I can expect to do all the time, and isn’t sustainable. One thing I miss about my “old” life is building actual tools. These last 2 years have been times of building human and institutional infrastructure for me much more than making something more obvious and concrete. I would like to write another book and to build a useful open source tool of some sort. Either for Mozilla, for an anti-harassment tool suite, or for Ingress…. 🙂 Alternatively I have a long term idea about open source hardware project for mobility scooters and powerchairs. That may never happen, so at the least, I’m resolving to write up my outline of what should happen, in case someone else has the energy and time to do it.

In 2013 and 2014 I mentored three interns for the GNOME-OPW project at Mozilla. Thanks so much to Tiziana Selitto, Maja Frydrychowicz, and Francesca Ciceri for being awesome to work with! As well as the entire GNOME-OPW team at Mozilla and beyond. I spoke about the OPW projects this summer at Open Source Bridge and look forward to more work as a mentor and guide in the future.

Meanwhile! I started a nonprofit in my “spare time”! It’s Double Union, a feminist, women-only hacker and maker space in San Francisco and it has around 150 members. I’m so proud of everything that DU has become. And I continue my work on the advisory boards of two other feminist organizations, Ada Initiative and GimpGirl as well as work in the backchannels of Geekfeminism.org. I wrote several articles for Model View Culture this year and advised WisCon on security issues and threat modeling. I read hundreds of books, mostly science fiction, fantasy, and history. I followed the awesome work my partner Danny does with EFF, as well. These things are not just an important part of my life, they also make my work at Mozilla more valuable because I am bringing perspectives from these communities to the table in all my work.

The other day I thought of another analogy for my last year’s work at Mozilla that made me laugh pretty hard. I feel personally like the messy “glue” Perl scripts it used to be my job to write to connect tools and data. Part of that coding landscape was because we didn’t have very good practices or design patterns but part of it I see as inevitable in our field. We need human judgement and routing and communication to make complicated systems work, as well as good processes.

I think for 2015 I will be working more closely with the e10s team as well as keeping on with crash analysis and keeping an eye on the release train.

Mad respect and appreciation to everyone at Mozilla!!

Firefox launch party liz larissa in fox ears

NIght at the Opera with teenagers

On dress rehearsal nights the San Francisco Opera lets school groups in free. Milo’s high school choir class came up to see La Cenerentola, armed beforehand with scripts and analysis and background about opera. I was super excited to get to go along because I can’t make it very often to Redwood City to his school events, which is sad….. I miss out on a lot. But I can’t drive — and it takes 5-6 hours of cab/bus/train to get there and back even though it would be 40 minutes one way by car. So, I can’t show up as a parent at his school very often. Bah.

It was a fabulous night out. A bit hard to try to keep up with everyone and manage wheelchair, crowds, elevator, stairs — winging it all the way, and it worked out well. Milo and Danny and I sat together with the kids and the choir teacher. I could tell Milo and I were both enjoying the music and you can see our excitement from the picture…. We were feeling inspired!

Milo and Liz at the opera

It’s been a while since I was at the opera house. We saw Nixon in China (which I loved a LOT). And some years ago a friend of mine took me to various operas because she had a box and season tickets. I can hardly remember which ones but do remember the fun of dressing up, the box itself being awesome, and thinking about all the books I’ve ever read where people go to the opera and have a box and a complicated social scene. Very fancy. I also have a lot of thoughts about how rare and splendid this kind of music must have been a couple of hundred years ago, and how amazing it is that there were beautifully designed music halls before there was electronic amplification. Imagining what the experience would have been like back then makes me feel like I’m traveling in time or am seeing eveything on more than one level at once.

Opera house curtains

The entire night was extra fun because of the energy of the whole audience, all the kids very excited to be there and commenting to each other on the theater, the show, their unusual formality (many kids were dressed up) and their commentary on the songs. I liked hearing from the cheers and appplause which characters and songs appealed to them. Basically anything that was comic. They were more fun to be in an audience with than the usual rather uptight overly quiet and suppressed/suppressive classical music audience!

Opera with class

My own favorite bits of the opera were the arias where there are 4 or 5 characters singing at once and the notes and lyrics interweave in a complicated way. This is one of my favorite things in any kind of music. I go into a trance trying to pick out separate parts and then add them all together, hearing them separately and together at the same time. I get very excited and want to bounce around in my seat. I may have done this and punched Danny and Milo in the arm a bit or squeaked with excitement.

A nice break to end my month and a half of arthritis flare-up, not going out except for doctor appointments or physical therapy. Could not tell if I was going out foolishly or if it was going to be ok. It was more or less ok!! With lots of painkiller though. It was physically gruelling but didn’t set me back any in my ankle rehab.

Just blogging a bit frivolously to break my trend of not writing anything because I feel like I have to say something super meaningful or well thought out. Screw that, right?

Make hackerspaces better – support Ada initiative

Hello! I love hackerspaces! And I’m asking hackerspaces around the world to donate to the Ada Initiative in support of making hackerspaces welcoming and safe places for women. My goal is to raise $4096 and if we do, I’ll match the first $1028 donated. **UPDATE** extending the deadline to next Friday, Oct. 3.

Adacamp liz and heidi in tiara

My home base is Double Union, a feminist hackerspace in San Francisco and it’s going strong. It has lively events every week and over 150 members.

A group of us at AdaCamp SF last year decided we could start a maker and hacker space for women. AdaCamp SF is an unconference run by the Ada Initiative for feminist women in open tech and culture. There were so many of us all together at once. So powerful feeling! With months of hard work, it happened — we opened Double Union.

We get to hack there without sexist bullshit or constantly fending off creepy dudes!

The thing is, I believe that any hackerspace can potentially be that way. You, too, could have a hackerspace where many women feel comfortable, welcome, valued, in their creative, coding, and entrepreneurial and activist endeavors, in a space full of allies and comrades of all genders. This can’t happen overnight. It will take work and education and above all, listening to women, not just the few women who have stuck around, but also the ones who left because they were uncomfortable.

I want to persuade hacker and maker spaces around the world that they are missing out on infinite potential. Hackerspaces.org has some good advice on adding anti-harassment policies to the design patterns for running a space. This is exactly the sort of work that Ada Initiative is good at; their Example anti-harassment policy has been used as a template by many events and organizations.

I’d like to challenge all hackerspace members to do two things in support of my campaign:

* Donate to Ada Initiative! I will match up to $1028 donated when we reach the $4096 goal!

* Add your anti-harassment policy to your organization’s page at hackerspace.org, and link to it from the list on the Geek Feminism wiki. (And if your space doesn’t have a code of conduct or policy, start the ball rolling to implement one!)

I love Double Union. We have set aside a permanent physical space, equipment, organization, and time that is focused on making and creating things together. We have the keys in our hands and the tools to do whatever we like in a safe, supportive environment free from harassment. We agreed to a basic code of conduct and some assumptions we share about behavior in the space, which helps establish trust for us to share knowledge, time, and tools. We try to follow Community anti-harassment standards. We have members who are also part of, or supporters of, Noisebridge, sudo room, LOLspace, Mothership Hackermoms, Ace Monster Toys, and other San Francsico Bay Area spaces.

Double union shopbot

We’re having writers’ groups, book groups, readings, zine workshops, open source software coding, cryptography meetups, circuit hacking, making stuff with our CNC routers, 3D printer, vinyl cutter, drawing and art supplies, and sewing machines — in short, doing whatever we like and learning a lot from each others’ expertise. We celebrate other women’s work and cultural diversity. Our hackerspace is against putting others down for what they do or don’t know. Once we don’t have to fight to prove we are ‘hacker enough’, great things happen.

Double Union’s founding group had the vision to make this space happen because of the pioneering work of the Ada Initiative. Ada Initiative’s demands for policy changes for events and companies, its fierce uncompromising voice, and especially its empowering and inspiring events, are having a good and useful effect to shift our culture.

More AdaCamps, like the ones this year in Berlin, Bangalore, and Portland, will help improve women’s participation in hackerspaces. With your donation, we could potentially host MORE of these fabulous unconferences for women in open tech and culture.

Please join me in donating to Ada Initiative so they can keep on being a positive force for change in the world!

Liz and Cristin smiling at DU


Yelp removes accessibility review

Today I got a notification from Yelp that they removed one of my reviews. In my review I reported that ironically, a therapist who advertised as serving a diverse group of people with a focus on coping with health challenges and “aging gracefully”, did not have a wheelchair accessible office.

The review was removed by Yelp as not being substantive.

I have to assume that this was done at the business owner’s request. That seems pretty sad to me. It would be better practice for her to ask former clients for reviews.

Yelp is often very useful for me. I don’t review businesses often and when I do, it is normally to say positive things and thank people for doing a fantastic job. I also try to mention businesses that consider access or are particularly thoughtful or accessible for wheelchair users. But I feel stubborn here.

Yelp should not remove reviews for reporting lack of wheelchair accessibility. Lack of accessibility in any business is incredibly useful information for many of us. My review potentially would save other people who have difficulty with stairs from wasting their and Dr. Schochet’s time.

When I wrote the review, I was feeling bitter and sad that I had gotten my hopes up at finding a fabulous sounding therapist who would understand what I needed to talk about so I wouldn’t have to explain all of disability politics and the feelings of loss and worry I was coping with.

Here’s my old review, admittedly sarcastic –

“Her ads say that she deals especially with “Adjusting to health changes” and aging gracefully, but her office is up a flight of stairs and the bathroom is up another flight of stairs. So if you are disabled, you will likely need to look elsewhere.”

Seriously, is that all that bad? That was it. That was all I said.

Here is Dr. Schochet’s description of her practice from Yelp:

Specialties

* Diverse San Francisco practice includes:
Visual and performing artists, creatives
Newcomers, immigrants, expats
LGBTQI, alternative lifestyles

* Guidance with navigating life transitions:
Adjusting to health changes
Improving the quality of your relationships
Adapting to work challenges
Management coaching
Grieving losses
Approaching retirement
Aging gracefully

Here is my newly submitted review:

In 2014 I called this doctor to try to get counseling as I coped with ill health, physical impairment and increasing loss of physical mobility and the challenges of having a full time job while being a wheelchair user in chronic pain. I understand that not everyone’s office can be accessible, especially if someone has a home office. However, as this therapist advertises her practice as focusing on topics like “aging gracefully” and “adjusting to heath changes” I thought this might be a great fit for what I was looking for. After some phone conversation Dr. Schochet, who seemed very nice, let me know that unfortunately her office had many stairs to get to it and the bathroom is another flight of stairs away.

I think it is useful to note, for other wheelchair users or people with mobility limitations, this practice is not wheelchair accessible. I believe that not being able to physically access a business due to its lack of wheelchair accessibility counts as a substantive consumer experience.

My 3 star rating is based on the fact that Dr. Schochet seemed perfectly nice and professional on the phone when i spoke with her about her practice and what I was looking for.

Let’s see if it stands. I think it is perfectly fair. This review explains more clearly that I had some personal engagement and experience with the business owner, and how this information is a useful addition to Yelp.

This blog post is for the meta issues. I don’t approve of the action of the psychologist who may have requested my review’s removal, if that’s what happened here. She may be a very nice person and a good psychologist. My impression of her was fine. But, if she petitioned Yelp to have my accessibility report removed, that does not speak well for her as a therapist for a “diverse” population. This is the opposite of what a person who believes in diversity, and being a good ally, should do.

I also think deleting an honest and fair review is just silly. As should be clear from this post, it will only have the opposite effect from what you may intend, because I can just post my experience somewhere else and describe it even more thoroughly, including the sad and embarrassing part where someone tried to silence a fairly reasonable and minor critique, unlikely to affect anyone’s decision who isn’t also a wheelchair user . . . . Truly a bit ridiculous.

I would like to call out Yelp for bad judgment in this small and more or less unimportant decision. My concern is that it may stem from a very bad policy.

Is it Yelp’s policy to not allow criticism of accessibility?

The review was removed “because it lacks a substantive consumer experience”.

I hope my new review makes it clear that I did have a substantive consumer experience. I had the experience of not being able to use the business at all.

If I can’t GET INTO a business to use it, then do my reviews not count? I believe they do count, and that they are useful information for others to make their decisions.

My own house has stairs and is not accessible. If I have a bad day and can’t manage the stairs or am in too much pain to handle the stairs and still function after I get down them, then I don’t leave the house.

Any time that I know in advance that a business or venue is not accessible, I feel deeply appreciative. I can choose not to go and make other plans, or I can decide how to navigate or negotiate its barriers, or I can make sure I have someone with me to help. Any sort of information about barriers to access is helpful!

That’s ultimately why I mention accessibility. It is because I am thinking about the experience of other people with disabilities and am acting in solidarity with them. It is a political act. It’s not to punish anyone for being in an inaccessible location. It’s to improve the world for everyone one step at a time. Bitter humor is often helpful but it is not necessary and you will note I tried to leave that tone out of my second attempt at a review.

Meanwhile, here is an amusing list of Wheelchair Inaccessible businesses in San Francisco, also from Yelp.

I would never have thought about this again ever, if Yelp had not removed my trivial two sentence comment about lack of wheelchair access, but now I’m a bit ticked off, enough to write a blog post for half an hour. Cheers and peace out.

Bad Inventions: The laptop girdle and the standing desk bra!

I have two new Bad Inventions for my collection of ideas that I will never implement and everyone is free to steal!

First, let me introduce the Laptop Girdle (or laptop belt)!

I often am working on my computer while lying on my back with knees and feet up on pillows to relieve strain in my low back and keep my painful ankles elevated. I’m sure many other people use their laptops in bed or on a couch lying down. One problem with this is the laptop needs to be specially propped up so it doesn’t slide upwards on your torso. Another problem is that your stomach or your belt can accidentally mess with the laptop track pad so that you suddenly click with your belly. I don’t even have that much belly and it happens all the time since my MacBook Air has very little space between the bottom edge of the laptop and the trackpad. Same with my belt. So, the Laptop Girdle will be a belt with a special groove meant to hold a laptop in place, immune from belly or belt-buckle clicks!

Also good for playing games on your ipad in bed!

The laptop belt is also useful for people who are sitting up with laptop ON THEIR ACTUAL LAP.

I think that boob clicks are also possible in this scenario so the laptop girdle must protect against boob clicks for those of us who are generously endowed.

Which thought leads us to . . . the Standing Desk Bra! Standing desks are amazingly popular with hipster programmers who aren’t me! There is one in my hotel room right now! Now, I am also not a person who needs a marvelously sturdy variety of bra which has the structural engineering of a suspension bridge. But for those of us who do wear amazingly constructed bras imagine if its support framework also had something that popped or folded out or attached on the underneath of the front of the bra, that would be a convenient shelf for your laptop, reading a book, or use as a handy drafting table! YES. The world needs Standing Desk Bras!

Please send me your drawings of these inventions as soon as possible so that we can make it happen. OR just make something like this and you are welcome to your ONE MILLION DOLLARS.