American Airlines – What do you believe in ?

Back story: The flight was delayed, approx 4 hours, on top of a 3 hour layover in Dallas. It’s Thursday night, and I was watching the Warriors / Cleveland Cavaliers game with Siqi another person in the group we were travelling with. (we just met at the game mind you)

“Over the loud speaker American Airlines announces that they are boarding group 2”

I walk to the front of the line as I’m in group 1. And my question to the gate agent was merely if I should come to the front or wait at the back of the line. (I think both Siqi + myself were all group 1 boarding )

Our first and only meeting:

Gate Agent: Philip

Philip: “Come around the other side of this line, you aren’t getting on this flight. ”

David: “What is the problem”

Philip: “You have been drinking”

David: (In my head i’m thinking, but we were watching the game ? Aren’t you supposed to ?  We had a delay of over 4 hours ?  I’m not flying the plane ? I’ve been waiting at the gate for 6 hours +  ) .  I tried to discuss with the gate agent that it is not acceptable to arbitrarily kick people off the plane.  “I am not loud, or inebriated and I have done nothing wrong”.

The uprising begins: 

Other passengers also realize the injustice of being singled out for no apparent reason to make way for someone else.

The first person to stand up was the Air Force refueling pilot who came from watching the same game.  The gate agent threatens, and then kicks him off the plane.

The second person to stand up was a couple from Canada.  Tyler (Post Doc research fellow ) / Wife said the same thing, it doesn’t seem right to kick someone of the flight who has done nothing wrong.

Their punishment was much swifter, and more irrational.  The gate agent then canceled their tickets completely, and then threatened / potentially executed a “lifetime” ban on his wife.

I would like to wholeheartedly thank the people who stood up to “Philip”, because it struck me as the right thing to do, and I was surprised that more people on the flight didn’t feel confident saying anything.

Lack of checks and balances

There were no checks / balances to regulate the gate agent, he seemed to believe he could do what he liked / when he liked, and was by far the loudest voice.  ? Should any 1 person be able to affect so many people so arbitrarily. \

No other agents working at american airlines booth needed sign off for this type of a response.

Philip was able to call the airport security forces without any justification as to what we had done, and why they were needed.

Philip used the security forces in an intimidation tactic to get us to tacitly sign off on getting rebooked to the next morning.



With American Airlines ticket for the next morning in hand, I decided the greatest mistake would be to get on that plane, and let the people who had stood up for me in the process try to find their own way to New Orleans.

Instead we went to Budget rent a car, and traversed from Dallas -> New Orleans overnight. The weather was atrocious we battled rain, and fog as thick as I’d ever seen to make it, but make it we did, together.


My disappointment was in the lack of process, and the lack of accountability at american airlines.

I didn’t even think I was being racially profiled, until Siqi had mentioned it on Twitter. And I realized that @AmericanAirlines has a real problem.

During the 15 minute process, I just kept assuming this was a mistake and would be ironed out.. I just couldn’t imagine why me ? But in truth the question is why not me ?

The Unknown

The other part of this experience was the lack of knowing why none of the other american airlines employees did anything.  They just stood there, and let it happen.

Is the expectation that people of color should accept being kicked off of planes, because they are the least defended, and least likely to complain.

How can American Airlines serve me first class on one flight, but then kick me off on the other flight.

How can they board me on a plane at 8pm, unboard me, and then at midnight tell me I cannot fly because I had some beer.  Isn’t that what we do in America ? Have beer and watch a basketball game ?


The fresh and furiously fast Firefox


One of the less covered parts of this week’s Firefox release is high attention that was placed on the performance of the redesign of the tab shape.

The new Firefox introduces a new tab shape that is consistent with Firefox for Android, FirefoxOS, Thunderbird, as well as the web properties of Mozilla.

Firefox for AndroidFirefox for Android
Firefox on desktop PCsFirefox

As the Firefox team was implementing this new design, performance was a key metric that was measured and focused on. We wanted to not only bring a beautiful design to users, but one that matched the new sleek shape with an equally speedy outcome.

Each time a change was made to our source control repository, a fresh build of the browser was created and run against a suite of automated tests that measure the performance of the build. These results are then compared against the results of prior builds, allowing the team to track…

View original post 297 more words

The Art Of Battling Giants / Mozilla Summit Reflection

On the way back from the Mozilla Summit 2013, I spent the time to read Malcolm Gladwells new book. David and Goliath, underdogs, misfits and the art of battling giants, and I was immediately struck by the similarity between Mozilla and the story of the underdog.

The history of the browser has been one of constant change and innovation.  Mozilla has been a company that has been the underdog, so much so that I don’t believe that anyone would have bet on the success of the Mozilla project at the very beginning (except it’s core actors). But 10+ years later the project is still going strong, albeit with new challenges, and new Goliaths to tackle in the industry.

The core issue that I feel we struggle with is in communicating our tremendous core value to our users, and similarly delivering a product that our community feel is a great world class / stable product for them to use.

Throughout the course of Mozilla Summit 2013  a question came up throughout the conference was as to why the state of the web so little resembles the web that we as users want.  The question came up several times throughout the conference..

What is the type of web that users need ?

Is there a message or thought that will be appreciated, digested, and acted upon to make the end user more cognizant of the lack of choice.  If users can understand that we are just in a more cleverly designed box than the Aol / Compuserve / Prodigy would they care ?

Each app ecosystem has it’s own gotchas, license agreements and restrictions which limit the inclusion and fraternity to which the web was designed.  I remember our first experiments building web pages in high school.  Changing font sizes, the blink tag, tables and the like.  We all got to put up and manage our home page.  A system that allowed for play, and learning for all, and was free.

If a student in school wants to make an iOS app you have to:

  1. Have a copy of Xcode (ergo a Mac OSX computer)
  2. Apply for a developer license ($99 / year)
  3. Have an iphone / ipad.

For students that don’t have access to such a technology stack this must be an insurmountable hurdle.  If the web is not relevant to students, and their only point of entry is via their phones / tablets. What does this mean for internet literacy in general.  Are we turning people away from the internet by not having a cheap / fun alternative, which allows people to experiment, build experiences and play.

Can Mozilla find itself in a nuanced position which will allow all users to play, and learn.  Or will we live in a world where users don’t get that fundamental education.  How will Mozilla do battle against it’s new Goliath?

Malcolm Gladwell notes that in a competition between a smaller adversary and a larger, if the smaller adversary takes a conventional approach to the confrontation the odds are the smaller adversary will loose, but in the situation where the smaller adversary takes an unconventional approach the probability will be that the smaller adversary will win.

By having the advantage of agility, a scrappy attitude and the will to change the internet, “users” could find themselves again in a winning position, where they are once again able to play and learn in an environment that is built for that very purpose…

Part III: Profiling Firefox OS.. An Entry point

Gathering profiling Data on Firefox OS can be done in several different ways.
#1) Simpler is better, sometimes a stop watch is a great medium with which to gather timing data for an application you don’t understand.

Picture of StopWatch
Stop Watch

2) In Application Profiling

A great way to accomplish this is to use timestamps in javascript to determine when specific things are happening, and if you are having a bottle neck insdie your application.


var d = new Date();

console.log(“The time since epoch = ” + d.getTime());

Once you insert a few of these statements in “strategically” placed points.

Just cd gaia; make install-gaia, this will install the new version of gaia to your phone, and you can see what code path gets triggered at which points.

3)Measuring app startup Times

Turn on show app load times  by loading your settings app.

Click Device Information –> More Information –> Developer –> Show Time to Load.

This is one mechanism for measuring app start times, but this only measure time until mozbrowserfirstpaint which measure the time until first pixels are available for an app.

More details can be found in Bug: 787378

Part I: A how to for performance testing on Firefox OS.

Performance testing ( for B2G is being done by many dogfooders / early users as we speak.  The beginnings of this effort are to begin a framework for gathering this data, as well as empower both power users and employees to really start to make sense of all this complex data !. 

Toolset: Mind, stop watch, performance profiler, about:memory tools 

Background: (an oldie but a goodie)

First Steps in performance measurements, were hashed out over the B2G work week most recently in San Francisco. The most immediate things we want to gather data on are the following.

  • B2g Startup Time:

Measure / Record the startup time for the overall system. We want to know how long it takes to get to the unlock screen. 

  1. Use case: As a user I do not want to wait for a long period of time before my phone will start. 

     — The phone is off
     — Start phone
    — wait for unlock screen, with animation.

  •  B2G Startup Time for each App:
  1.  Use case: As a user I want to be able to open apps one after another and have the operating system be able to quickly load each app, and switch to the homescreen.

Part II of this blog post will go over How To’s of memory gathering / dissecting. 


Tune into Part II: About Memory Gathering / Dissecting 

If you are Launching your startup HTML5 is the way to go ( imho )

As we progress through the webapps project there is an astounding see of change coming to HTML5 Apps near you.

If you are starting a new project, I would recommend that you think about some of the ideas I am laying out below.

Graphic Design:

Apps will have different characteristics than webapps.  You generally will not just want to layer css ontop of your page, and consider it mobile enabled and done.

You will have to design a completely different set of views for your mobile app than your desktop site, and possibly even your tablet as each platform will offer different capabilities that you’ll want to take advantage off.  Your layouts will accomodate different styles, and furthermore different functionality.

Redirects: Another thing to consider is that an App doesn’t allow navigation off of the page, so you should think about that and what it means for your app.  You wouldn’t want to redirect your users off of your domain.

Apps should be targeted / focused towards doing one thing well, and bubbling that information up to the user.

Popups: These are a web browser concept, that doesn’t translate into the App experience, so expect that popups won’t work.

So if you want a kick ass App experience,  plan on having completely different views for different device sizes.  The good news is everyone will be writing the same language, and basically using the same stylesheets !

There must be a ton of user UI tips, for writing kick ass mobile /tablet  apps, if you have any add it to the conversation


WebApps probably won’t make too many changes to the internal infrastructure of data centers.  But to the infrastructure / mechanisms you use for exposing your product to the world, those are / have changed.  The rest api revolution has been replaced by the Javascript Object revolution.  Exposing your services as part of a Javascript SDK is the new kid on the block, and it’s knocking down walls.

So far I haven’t seen too much change in this area, the cloud is pretty much a given at this point, at least for a startup.


The time for the Android / IoS developer is over, don’t do it, don’t fragment your infrastructure, your support, your ability to ship early and often.. It’s just not worth it.  If you are a startup and anyone is telling you to go native, i would seriously get second / third opinions.

Having said that using Phonegap or something of the like is a good idea to help bridge some of the functionality gaps.

If you want to take a look at how to  load client side / server site javascript in phonegap and all have it process you should take a look at


The advantage of being small is that you can move quickly.  Try doing that with an android release , iphone release, and website release.. All with differing capabilities / code bases, and then dealing with android fragmentation.  It will make you slow, and slow is bad….

Learn More.

Github Webapps MochiTest Repo

Github Webapps MochiTest Repo

Hey just wanted to show everyone the portability / coolness of javascript test frameworks, and how you can achieve cross device api compatibility.

The example that I am going to show is the soon to be performed work on mozilla central to port the webapps extension into the mozilla code base.

The exciting part about this we get to test against code that hasn’t been written just yet. Now since the codebase i want to test will eventually be on mozilla central , but is currently not.  I didn’t select the option of testing against a debug build.

Building Firefox:

MochiTest Basics:

 Assuming you have built mozilla central and you are able to run MochiTests, then what next.Well firstly you will want to choose a location for your tests.

Now If you are working on webapps this directory might be: dom/tests/mochitest, as it looks as a lot of tests that are dom related lie there.

You will then have to create a directory “foobar“, and edit and add your directory below

DIRS  += \
  dom-level0 \
  dom-level1-core \
  dom-level2-core \
  dom-level2-html \
  foobar \
  storageevent \

Next step would be to create a inside your directory foobar. Attached is a github commit which establishes our base repository.

First step is getting a working mozilla central source.