Sep 192017
 

Due to the size and arrangement of the rooms in our new house, we realized we need a way to communicate room-to-room that didn’t involve shouting at each other. Since we don’t all have a phone on us all the time, we decided an intercom is just the ticket.

After experimenting a while with using WebRTC to make intercom software for tablets we could wall-mount, we decided to get a limited number of Nucleus intercom and see if we like them. So we now have then on place, and while they’re pretty nifty, I have several frustrations and disappointments. I’ll share a few here.

  • There’s an app that lets you call intercoms from mobile devices, but they can’t call each other.
  • While there’s a “broadcast all” button to make an announcement through all intercom units, you can’t include mobile devices in the broadcast. These two items preclude using spare tablets as extra intercoms.
  • More frustratingly, there’s no way to broadcast to a single intercom. I want to be able to announce to my daughter when her door is closed and she’s not yet fully awake that she’s running late for school.
  • It’s nifty that you can have remote intercom stations located on other networks (at Grandma’s house, for example), but if you don’t have any, the “Remote” tab in the main UI shouldn’t exist. It’s too easy to accidentally swipe your main station list away, and this could confuse younger (or older) household members. Same goes if there are no local stations, for that matter.
  • You can’t customize the ringtone.
  • You should be able to control the volume level of calls, engines, and Alex’s voice individually.
  • Each station is represented by a name and a small photo. It needs a way to set station photos to pictures taken on other devices; using the built-in camera for this is an exercise in frustration resulting in hideous icons.
  • Each station on the menu of intercoms has a big box but you have to tap a much smaller area to start a call. Instead, the whole thing should start a video call, with a smaller button to do audio instead.
  • In addition to the above, a preference for whether audio or video calls are the default would be nice to have.
  • There’s no way in the UI to answer a video call request with “I’ll talk but audio only.”
  • I’d love to have more ability to customize the display. Show family calendars and chore lists. Stuff like that. Basically, it’d be awesome to run apps or even little applets on it! This alone could turn this into a much better device.
  • I wish I could leave messages for viewing or listening to at a later time.
  • It uses WebRTC and other standards but has enough opaque, proprietary stuff to prevent me from experimenting with it or connecting from non-Nucleus code.
  • It supports streaming music, but has speakers woefully inadequate for the task, with no jack for adding external speakers or support for using Bluetooth to connect to speakers or headphones. The sound is bad enough that when Sarah hears it she makes me she it off because the run, weak audio makes her cringe.

There’s more, but we get into more nitpicky stuff at this point. Suffice it to say, the Nucleus intercom is avoid idea and shows prone, but needs to evolve quickly.

I haven’t decided yet if we’ll keep them. We have a couple more months to decide if we can accept the limitations before we run out of free return time.

 Posted by at 6:40 AM
May 182017
 

My health continues to be an adventure. My neuropathy continues to worsen steadily; I no longer have any significant sensation in many of my toes, and my feet are always in a state of “pins and needles” style numbness. My legs are almost always tingling so hard they burn, or feel like they’re being squeezed in a giant fist, or both. The result is that I have some issues with my feet not always doing exactly what I expect them to be doing, and I don’t usually know exactly where they are.

For example, I have voluntarily stopped driving for the most part, because much of the time, sensation in my feet is so bad that I can’t always tell whether my feet are in the right places. A few times, I’ve found myself pressing the gas and brake pedals together because I didn’t realize my foot was too far to the left.

I also trip on things a lot more than I used to, since my feet wander a bit without my realizing it. On January 2, I tripped over a chair in my office while carrying an old CRT monitor to store it in my supply cabinet. I went down hard on my left knee and landed on the monitor I was carrying, taking it squarely to my chest. My chest was okay, just a little sore, but my knee was badly injured. The swelling was pretty brutal, and it is still trying to finish healing up more than four months later.

Given the increased problems with my leg pain, my neurologist recently had an MRI performed on my lumbar (lower) spine. An instance of severe nerve root compression was found which is possibly contributing to my pain and numbness in my legs. We are working to schedule for them to attempt to inject medication at that location to try to reduce the swelling that’s causing the compression. If successful, that could help temporarily relieve some of my symptoms.

But the neuropathic pain in my neck and shoulders continues as well. There is some discussion of possibly once again looking at using a neurostimulator implant to try to neutralize the pain signals that are being falsely generated. Apparently I’m once again eligible for this after a brief period where my symptoms shifted outside the range of those which are considered appropriate for that type of therapy.

In addition to the neurological issues, I am in the process of scheduling a procedure to repair some vascular leaks in my left leg, which may be responsible for some swelling there that could be in part responsible for some of my leg trouble (although that is increasingly unlikely given other information that’s come to light since we started scheduling that work).

Then you can top all that off with the side effects of all the meds I’m taking. I take at least six medications which have the side effect of “drowsiness” or “fatigue” or “sleepiness.” As a result, I live in a fog most of the time. Mornings and early afternoons are especially difficult. Just keeping awake is a challenge. Being attentive and getting things written is a battle. I make progress, but slowly. Most of my work happens in the afternoons and evenings, squeezed into the time between my meds easing up enough for me to think more clearly and alertly, and time for my family to get together for dinner and other evening activities together.

Balancing work, play, and personal obligations when you have this many medical issues at play is a big job. It’s also exhausting in and of itself. Add the exhaustion and fatigue that come from the pain and the meds, and being me is an adventure indeed.

I appreciate the patience and the help of my coworkers and colleagues more than I can begin to say. Each and every one of you is awesome. I know that my unpredictable work schedule (between having to take breaks because of my pain and the vast number of appointments I have to go to) causes headaches for everyone. But the team has generally adapted to cope with my situation, and that above all else is something I’m incredibly grateful for. It makes my daily agony more bearable. Thank you. Thank you. Thank you.

Thank you.

 Posted by at 11:15 AM
Apr 032017
 

As of today—April 3, 2017—I’ve been working as a Mozilla staffer for 11 years. Eleven years of documenting the open Web, as well as, at times, certain aspects of the guts of Firefox itself. Eleven years. Wow. I wrote in some detail last year about my history at Mozilla, so I won’t repeat the story here.

I think 2017 is going to be a phenomenal year for the MDN team. We continue to drive forward on making open web documentation that can reach every web developer regardless of skill level. I’m still so excited to be a part of it all!

A little fox that Sophie got me

Last night, my eleven-year-old daughter (born about 10 months before I joined Mozilla) brought home this fox beanie plush for me. I don’t know what prompted her to get it—I don’t think she’s aware of the timing—but I love it! It may or may not actually be a red panda, but it has a very Firefox look to it, and that’s good enough for me.

 Posted by at 7:12 AM
Dec 182016
 

Time to put out there my personal opinion of the order of excellence of the Star Wars films, including Rogue One.

My ordering of these films changes over time. Repeat viewings, new understanding, and information added by later additions to the franchise all affect my opinions of the series. For instance, seeing Rogue One definitely changed how I think of A New Hope.

8. Episode I: The Phantom Menace

7. Episode II: Attack of the Clones

6. Episode VI: Return of the Jedi

5. Episode III: Revenge of the Sith

4. Episode V: The Empire Strikes Back

3. Rogue One

2. Episode VII: The Force Awakens

1. Episode IV: A New Hope

I know my ranking deviates wildly from most fans’, but I’m okay with that.

 Posted by at 10:00 AM
Oct 192016
 

One of the most underappreciated features of Firefox’s URL bar and its bookmark system is its support for custom keyword searches. These let you create special bookmarks that type a keyword followed by other text, and have that text inserted into a URL identified uniquely by the keyword, then that URL gets loaded. This lets you type, for example, “quote aapl” to get a stock quote on Apple Inc.

You can check out the article I linked to previously (and here, as well, for good measure) for details on how to actually create and use keyword searches. I’m not going to go into details on that here. What I am going to do is share a few keyword searches I’ve configured that I find incredibly useful as a programmer and as a writer on MDN.

For web development

Here are the search keywords I use the most as a web developer.

Keyword Description URL
if Opens an API reference page on MDN given an interface name. https://developer.mozilla.org/en-US/docs/Web/API/%s
elem Opens an HTML element’s reference page on MDN. https://developer.mozilla.org/en-US/docs/Web/HTML/Element/%s
css Opens a CSS reference page on MDN. https://developer.mozilla.org/en-US/docs/Web/CSS/%s
fx Opens the release notes for a given version of Firefox, given its version number. https://developer.mozilla.org/en-US/Firefox/Releases/%s
mdn Searches MDN for the given term(s) using the default filters, which generally limit the search to include only pages most useful to Web developers. https://developer.mozilla.org/en-US/search?q=%s
mdnall Searches MDN for the given term(s) with no filters in place. https://developer.mozilla.org/en-US/search?q=%s&none=none

For documentation work

When I’m writing docs, I actually use the above keywords a lot, too. But I have a few more that I get a lot of use out of, too.

Keyword Description URL
bug Opens the specified bug in Mozilla’s Bugzilla instance, given a bug number. https://bugzilla.mozilla.org/show_bug.cgi?id=%s
bs Searches Bugzilla for the specified term(s). https://bugzilla.mozilla.org/buglist.cgi?quicksearch=%s
dxr Searches the Mozilla source code on DXR for the given term(s). https://dxr.mozilla.org/mozilla-central/search?q=%s
file Looks for files whose name contains the specified text in the Mozilla source tree on DXR. https://dxr.mozilla.org/mozilla-central/search?q=path%3A%s
ident Looks for definitions of the specified identifier (such as a method or class name) in the Mozilla code on DXR. https://dxr.mozilla.org/mozilla-central/search?q=id%3A%s
func Searches for the definition of function(s)/method(s) with the specified name, using DXR. https://dxr.mozilla.org/mozilla-central/search?q=function%3A%s
t Opens the specified MDN KumaScript macro page, given the template/macro name. https://developer.mozilla.org/en-US/docs/Template:%s
wikimo Searches wiki.mozilla.org for the specified term(s). https://wiki.mozilla.org/index.php?search=%s

Obviously, DXR is a font of fantastic information, and I suggest click the “Operators” button at the right end of the search bar there to see a list of the available filters; building search keywords for many of these filters can make your life vastly easier, depending on your specific needs and work habits!

 Posted by at 5:33 PM
Apr 192016
 

One great thing about watching the future of the Web being planned in the open is that you can see how smart people having open discussions, combined with the occasional sudden realization, epiphany, or unexpected spark of creative genius can make the Web a better place for everyone.

This is something I’m reminded of regularly when I read mailing list discussions about plans to implement new Web APIs or browser features. There are a number of different kinds of discussion that take place on these mailing lists, but the ones that have fascinated me the most lately have been the “Intent to…” threads.

There are three classes of “Intent to…” thread:

  • Intent to implement. This thread begins with an announcement that someone plans to begin work on implementing a new feature. This could be an entire API, or a single new function, or anything in between. It could be a change to how an existing technology behaves, for that matter.
  • Intent to ship. This thread starts with the announcement that a feature or technology which has been implemented, or is in the process of being implemented, will be shipped in a particular upcoming version of the browser.
  • Intent to unship. This thread starts by announcing that a previously shipped feature will be removed in a given release of the software. This usually means rolling back a change that had unexpected consequences.

In each of these cases, discussion and debate may arise. Sometimes the discussion is very short, with a few people agreeing that it’s a good (or bad) idea, and that’s that. Other times, the discussion becomes very lengthy and complicated, with proposals and counter-proposals and debates (and, yes, sometimes arguments) about whether it’s a good idea or how to go about doing it the best way possible.

You know… I just realized that this change could be why the following sites aren’t working on nightly builds… maybe we need to figure out a different way to do this.

This sounds great, but what if we add a parameter to this function so we can make it more useful to a wider variety of content by…

The conversation frequently starts innocuously enough, with general agreement or minor suggestions that might improve the implementation, and then, sometimes, out of nowhere someone points out a devastating and how-the-heck-did-we-miss-that flaw in the design that causes the conversation to shift into a debate about the best way to fix the design. Result: a better design that works for more people with fewer side effects.

These discussions are part of what makes the process of inventing the Web in the open great. Anyone who has an interest can offer a suggestion or insight that might totally change the shape of things to come. And by announcing upcoming changes in threads such as these, developers make it easier than ever to get involved in the design of the Web as a platform.

Mozilla is largely responsible for the design process of the Web being an open one. Before our global community became a force to be reckoned with, development crawled along inside the walls of one or two corporate offices. Now, dozens of companies and millions of people are active participants in the design of the Web and its APIs. It’s a legacy that every Mozillian—past, present, and future—can be very proud of.

 Posted by at 11:00 AM
Apr 032016
 

Today—April 3, 2016—marks the tenth anniversary of the day I started working at Mozilla as a writer on the Mozilla Developer Center project (now, of course, the Mozilla Developer Network or MDN). This was after being interviewed many (many) times by Mozilla luminaries including Asa Dotzler, Mike Shaver, Deb Richardson, and others, both on the phone and in person after being flown to Mountain View.

Ironically, when I started at Mozilla, I didn’t care a lick about open source. I didn’t even like Firefox. I actually said as much in my interviews in Mountain View. I still got the job.

I dove in in those early days, learning how to create extensions and how to build Firefox, and I had so, so very much fun doing it.

Ironically, for the first year and a half I worked at Mozilla, I had to do my writing work in Safari, because a bug in the Firefox editor prevented me from efficiently using it for in-browser writing like we do on MDN.

Once Deb moved over to another team, I was the lone writer for a time. We didn’t have nearly as many highly-active volunteer contributors as we do today (and I salute you all!), so I almost single-handedly documented Firefox 2.0. One of my proudest moments was when Mitchell called me out by name for my success at having complete (more or less) developer documentation for Firefox 2.0—the first Firefox release to get there before launch.

Over the past ten years, I’ve documented a little of everything. Actually, a lot of everything. I’ve written about extensions, XPCOM interfaces, HTML, a broad swath of APIs, Firefox OS, building Firefox and other Mozilla-based projects, JavaScript, how to embed SpiderMonkey into your own project (I even did so myself in a freeware project for Mac OS X), and many other topics.

As of the moment of this writing, I have submitted 42,711 edits to the MDN wiki in those ten years. I mostly feel good about my work over the last ten years, although the last couple of years have been complicated due to my health problems. I am striving to defeat these problems—or at least battle them to a more comfortable stalemate—and get back to a better level of productivity.

Earlier, I said that when I took the job at Mozilla, I didn’t care about the Web or about Firefox. That’s changed. Completely.

Today, I love my job, and I love the open Web. When I talk to people about my job at Mozilla, I always eventually reach a point at which I’m describing how Mozilla is changing the world for the better by creating and protecting the open Web. We are one of the drivers of the modernization of the world. We help people in disadvantaged regions learn and grow and gain the opportunity to build something using the tools and software we provide. Our standards work helps to ensure that a child in Ghana can write a Web game that she and her friends can play on their phones, yet also share it with people all over the world to play on whatever device they happen to have access to.

The Web can be the world’s greatest unifying power in history if we let it be. I’m proud to be part of one of the main organizations trying to make that happen. Here’s to many more years!

 Posted by at 2:59 PM
Jan 082016
 

This morning I had an epiphany. A vision. A prophecy, you might call it. It’s groundbreaking (in a story arc kind of way, not in a real-life kind of way). Since it’s spoilery, I’m going to tuck it into a little disclosure box. Here it is:

My ephiphany

What if Rey is the Chosen One?

Anakin failed to achieve the prophesied role; instead of bringing balance to the Force, he nearly destroyed humanity’s connection to it forever. Some have theorized that his destruction of the Jedi order, leaving, eventually, just him and Luke Skywalker as Force users, established balance.

Perhaps. But what if he wasn’t intended to be the Chosen One. What if Qui-Gon was mistaken? Anakin was, instead, a Force-talented but reckless kid who should never have been a Jedi at all.

Rey, on the other hand, is so powerful and in tune with the Force that she is learning to wield its power through that innate connection, instead of requiring training. Much like the earliest Force-users must have done. This puts her in a unique position—better, perhaps, than Luke Skywalker—to build a new Jedi order. One which is more inclusive, more in tune with everyday people, and so forth.

This also explains much about the vision Rey has when she first touches Luke’s lightsaber. In it, she sees the end of the Luke’s fledgling Jedi order at the hands of Ben Solo and the dawn of her new Jedi order, founded by her, perhaps with Finn by her side, as they do combat together against Kylo Ren.

Rey is the Chosen One.

[collapse]
 Posted by at 5:06 PM
Dec 242015
 

It’s been a few days now since I saw “Star Wars: The Force Awakens” for the second time, and I’ve got theories! Spoilers lie ahead, but I will start by just saying that this movie was amazing. Now, on to the theories!

First, some thoughts on Finn (John Boyega):

Spoilers ahead: Theories on Finn

First off, let’s talk about Finn’s lightsaber fight versus the vibroblade of the First Order stormtrooper. I’ve heard people say, “How can he be so good with that lightsaber already?

I think the answer is simple and literally right in front of Finn. Clearly First Order stormtroopers are trained to use melee weapons such as the vibroblade. Therefore, it stands to reason that Finn has at least enough skill with a vibroblade that he can wield the lightsaber in much the same way.

The big question, of course: who is he, and what role will he fill going forward? Is he strong in the Force? Or just a heck of a fighter and an incredibly decent human being? I look forward to finding out! Boyega plays this part very well, and the simple, pure human decency Finn expresses despite being trained to kill like a mindless drone implies a strength of character that could have serious import and repercussions going forward.

[collapse]

Now for the clear hero of the new trilogy, Rey. First off, this is a fantastic character who I already think may be among the two or three strongest and most interesting characters in all of Star Wars film lore. Secondly, she was played brilliantly by Daisy Ridley. Such remarkable acting. I’m a huge fan of this character and of her work in this film. Wow.

Anyway, my thoughts…

Spoilers ahead: The Mystery of Rey

Clearly, Rey is astonishingly powerful in the Force. Once she becomes aware of it and touches it for the first time, she gains enormous power very quickly. So obviously, she has parentage which is also strong in the Force.

This morning I read about a theory of where Rey comes from which I think has a lot of potential: after dropping off Luke with Owen and Beru, Obi-wan had a lot of time on his hands. He communed with Qui-Gon to learn how to pass into the Force at death while retaining a link to the world of the living. He ruminated on the fact that the Jedi order had been destroyed.

And he contemplated the new reality of the future course of the Jedi if the order were to be rebuilt: being disconnected from your feelings and from the people around you leads to a sense of superiority and a detachment that makes it harder, not easier, to resist the temptations of the Dark Side. After a decade or so of meditation and learning new ways from Qui-Gon and perhaps even Yoda, he traveled, and he found love. And, eventually, there was a child: Rey.

The article I linked to above postulated that Rey is a grandchild, but it’s only been 30 years, and I believe that Obi-Wan would have spent the first several years, possibly a decade, ruminating on the defeat of the Jedi and following through on the training Yoda gave him to do at the end of Episode III. Obi-Wan would then meet Rey’s mother a decade or so after the events of Episode III, leading to approximately the correct timing for Rey’s age to be as it is in Episode VII.

[collapse]

I’ll probably add to this post as my theories expand, so that should be fun…

 Posted by at 12:22 PM