The Electoral College must reject Trump. Democrats should endorse GOP alternative

Since the election I have argued that people should fight Donald Trump’s policies and politics, not his election. I was wrong. Today Trump tweeted that he lost the popular vote because of “millions of illegal votes”. This is not a joke. There is absolutely no evidence of voter fraud at this scale and Trump speaking about it as a fact strongly suggests that he is mentally ill and unfit to serve as president. I’ll leave it to medical professionals to diagnose him, but he shows clear signs of delusions which are most often associated with schizophrenia.

It is the constitutional duty of the Electoral College to reject Donald Trump and vote for a different candidate. Democrats should do their share to prevent a mentally ill person from assuming the highest office. The Electoral College has a Republican majority and will under no circumstances endorse Hillary Clinton or any other Democratic alternative. Instead, Democrats should endorse a suitable Republican candidate. Mitt Romney comes to mind. I disagree with him on many issues but he seems like a sane, responsible politician with experience and preparation. If Republicans prefer Mike Pence, even him Democrats should endorse if that’s what it takes. This isn’t about politics any more. This is about stopping a man with clear mental health problems from becoming president. A moderate Republican alternative backed by democratic electors would require only relatively few faithless Republican electors to stop a national catastrophe.

AI silicon vs AI software

There is a lot of activity in the neural network hardware space. Intel just bought Nervana for $400m and Movidius for an undisclosed amount. Both make dedicated silicon to run and train neural networks. Most other chipset vendors I have talked to are similarly interested in adding direct support for neural networks to future chips. I think there is some risk in this approach. Here is why.

Most of the time executing a neural network is spent in massive matrix operations such as convolution and matrix multiplication. The state of the art is to use GPUs to do these operations because GPUs have a lot of ALUs and are well optimized for massively data parallel tasks. If you spent time optimizing neural networks for GPUs (we do!), you probably know that a well optimized engine achieves about 40-90% efficiency (ALU utilization). Dedicated neural network silicon aims to raise that to 100%, which is great, but in the end a 2x speedup only.

The problematic part is that chipset changes have a long lead time (2-3 years), and you have to commit today to the architectures of tomorrow. And thats where things get tricky. A paper published earlier this year showed that neural networks can be binarized, which reduces the precision of weights to 1 bit (-1, 1). Slow and energy inefficient floating point math turns into very efficient binary math (XNOR), which speeds up the network on existing commodity silicon by 400% with a very small loss in precision. Commodity GPUs support this because they are relatively general purpose computers. Dedicated neural network silicon is much more likely designed for a specific compute mode.

In the last 12 months or so alone we have seen dramatic advances in our understanding how to train and evaluate neural networks. Binarization is just one of them, and its fair to expect that over the next 2-3 years similarly impactful advances will be published. Committing to hardware designs based on today’s understanding of neural networks is ill advised in my opinion. My recommendation to chipset vendors is to beef up their GPUs and DSPs, and support a wide range of fixed point and floating point resolutions in a fairly generic manner. Its more likely that that will cover what we’ll want from silicon over the next 2-3 years.

Will anyone in the GOP oppose a white supremacist in the White House?

Update: After I posted this, 167 House Democrats signed a letter denouncing the appointment of Steve Bannon. But even more importantly, Lindsey Graham stated that he opposes any attempt to abandon Senate filibuster rules. This will allow Democrats to stop some Trump appointments if they can find another GOP senator who makes a similar pledge.

Yesterday our incoming president Donald Trump appointed white supremacist Steve Bannon to the White House. The Democratic party responded overwhelmingly … with silence, which highlights just how deeply broken and beaten the Democratic party is at the moment. While Nancy Pelosi posted a statement, the rest of the party is paralyzed and can’t get themselves to take a stance against a guy endorsed by the Ku Klux Klan and the American Nazi Party. I called Representative Speier and Senator Feinstein. Neither of them has a position on this matter. If the Democratic party has a hard time deciding whether to support or denounce the guy whose media outlet touts “Birth Control Makes Women Unattractive and Crazy” and “There’s No Hiring Bias Against Women in Tech, They Just Suck at Interviews”, I think we can abandon all hope that the Democratic Party will be any kind of checks and balances on Trump.

Our last and maybe only hope may be forces of reason within the GOP. I know thats a tall order. The vast majority of the Republican establishment is falling over themselves trying to appease Donald Trump, lead by Speaker Paul Ryan, who “has no concerns” about the appoint of Bannon. But as Ben Adida pointed out yesterday on twitter, there are a few GOP senators who have vocally criticized and denounced Trump before November 8 and maybe they’ll find the heart to be the patriots we need them to be at this hours.

Donald Trump is writing history by bringing the white nationalist agenda back into the White House. Anyone in the GOP who isn’t taking a stance against this is implicitly siding with the alt-right. Senator McCain, Senator Graham, is that how you want future generations to remember you?

Trump is dangerous but his supporters are not the enemy

On November 8th, my chosen home has elected a racist, sexist, nativist, know-nothing, don’t care to know anything, narcissistic buffoon for president. During his campaign, Trump has made many outrageous statements and promises that are completely idiotic. I won’t bore you with trying to enumerate them. I am horrified and appalled that this orange circus peanut is our next president. I want to do more than just be upset about it, and I decided I’ll start with talking about it.

First to my fellow liberal citizens: please stop vilifying people who voted for Trump. They are not the problem and they are predominantly not like him. The world is globalizing and changing quickly, causing uncertainty and fear for many. That doesn’t make them bad people. In fact, they are the only people who can save us from Trump whenever the next election comes around. We need to embrace them, engage them, and try to convince them that there is a better way than Trump’s way.

Second, I would like to address my fellow citizens who voted Trump: You want change. I get that. I want change too. I agree with much of your resentment of Washington. I even agree that Hillary was a really uninspiring candidate (though I do think she would have made an ok president). The problem is that the guy you voted for is not going to change things for the better for you. Don’t believe me. Just believe him. Trump has a lifetime history of exploiting the weak and poor to enrich himself. He has bragged in the past how he exploits his influence to bend the law for profit, and how he exploits his fame to assault and degrade women. Stop justifying his behavior and stop pretending he’ll be any better as president than he has been as non-president for 70 years. Best case he’ll be just as bad as he was so far in his life. Worst case, he’ll be worse, and we’ll all pay the price.

I believe in Democracy. Trump is our president-elect. He’ll assume the office of the president on January 20, and all indications so far point towards a pretty disastrous presidency. It won’t be the end of the world as we know it, but it’s clear he meant every vile word he said as a candidate. He just confirmed he wants to “deport 2-3 million illegal immigrants” immediately. Thats almost 1% of the US population. And while he claims we’ll only deport criminals, just pause for a moment and think about the scale of this. He’ll go ahead and deport 3,000,000 individuals. Yes, that’s 6 zeroes. If we pack 30 people into a bus, thats 100,000 bus trips. And if we want to uphold our constitution and due process, judges we’ll have to order 3 MILLION TIMES to deport someone. The scale of this operation is absurd, and even if we get it right 99% of the time, we’ll end up deporting tens of thousands of U.S. citizens who don’t speak English well, or didn’t hire the right lawyer to defend them, or didn’t have the right paperwork, just as Operation Wetback did in the dark past.

Of course if you ask Donald Trump, he’ll tell you none of this will be the case, because he knows how to do all of this and it’ll be terrific and great. And this is the biggest problem with Donald Trump. He just isn’t that bright apparently, and pretty much believes in magic. Narcissists often do. Trump believes he is infallible, he believes he knows everything better, and he habitually ignores reality and facts. Unfortunately thats not how the real world works, and if you let someone like that steer the country, the consequences will be very real and very painful for a lot of people.

There is a a very high chance that we’ll have to resist Donald Trump. And I don’t mean in a violent sense. We are Americans. We cherish our democracy. So let’s stop talking about revolution. Donald Trump will have to be opposed peacefully and forcefully and legally, by convincing the majority of this country that Donald Trump’s way is not the American way. And, quite frankly, it’ll likely come down to all of us individually. I have very little faith in the GOP being able to stand up to Donald Trump’s authoritarian impulses. The GOP is Trump’s party now. Many in the GOP who seem like reasonable human beings have embraced Trump because they simply don’t have the backbone to oppose someone like Donald Trump. Paul Ryan is the best example of this. He has folded to Trump’s language and agenda time and time again. So don’t get your hopes up if Ryan says there won’t be a deportation force. Trump will ratchet up his aggressive language, and Ryan will fall in line. This has happened too many times before to hope it’ll change.

So its on us now as Americans to stand up for who we are. We are not Trump, even though he’ll be our president for some time. We may be flawed sometimes, but at our core we are a patriotic, civil, and brave people who believe in freedom and opportunity for everyone. I wasn’t born here but that’s why I decided to live here. I am proud to be an American and I am proud of my fellow Americans. We are all in this together, whether you voted for him or her. As long we don’t forget that, no harm will come to our country.

PS: Trump named a white nationalist as his senior advisor a couple hours after I posted this. Please wake up if you still think this isn’t going to be as bad as it seems.

Brendan is back to save the Web

Brendan is back, and he has a plan to save the Web. Its a big and bold plan, and it may just work. I am pretty excited about this. If you have 5 minutes to read along I’ll explain why I think you should be as well.

The Web is broken

Lets face it, the Web today is a mess. Everywhere we go online we are constantly inundated with annoying ads. Often pages are more ads than content, and the more ads the industry throws at us, the more we ignore them, the more obnoxious ads get, trying to catch our attention. As Brendan explains in his blog post, the browser used to be on the user’s side—we call browsers the user agent for a reason. Part of the early success of Firefox was that it blocked popup ads. But somewhere over the last 10 years of modern Web browsers, browsers lost their way and stopped being the user’s agent alone. Why?

Browsers aren’t free

Making a modern Web browser is not free. It takes hundreds of engineers to make a competitive modern browser engine. Someone has to pay for that, and that someone needs to have a reason to pay for it. Google doesn’t make Chrome for the good of mankind. Google makes Chrome so you can consume more Web and along with it, more Google ads. Each time you click on one, Google makes more money. Chrome is a billion dollar business for Google. And the same is true for pretty much every other browser. Every major browser out there is funded through advertisement. No browser maker can escape this dilemma. Maybe now you understand why no major browser ships with a builtin enabled by default ad-blocker, even though ad-blockers are by far the most popular add-ons.

Our privacy is at stake

It’s not just the unregulated flood of advertisement that needs a solution. Every ad you see is often selected based on sensitive private information advertisement networks have extracted from your browsing behavior through tracking. Remember how the FBI used to track what books Americans read at the library, and it was a big scandal? Today the Googles and Facebooks of the world know almost every site you visit, everything you buy online, and they use this data to target you with advertisement. I am often puzzled why people are so afraid of the NSA spying on us but show so little concern about all the deeply personal data Google and Facebook are amassing about everyone.

Blocking alone doesn’t scale

I wish the solution was as easy as just blocking all ads. There is a lot of great Web content out there: news, entertainment, educational content. It’s not free to make all this content, but we have gotten used to consuming it “for free”. Banning all ads without an alternative mechanism would break the economic backbone of the Web. This dilemma has existed for many years, and the big browser vendors seem to have given up on it. It’s hard to blame them. How do you disrupt the status quo without sawing off the (ad revenue) branch you are sitting on?

It takes an newcomer to fix this mess

I think its unlikely that the incumbent browser vendors will make any bold moves to solve this mess. There is too much money at stake. I am excited to see a startup take a swipe at this problem, because they have little to lose (seed money aside). Brave is getting the user agent back into the game. Browsers have intentionally remained silent onlookers to the ad industry invading users’ privacy. With Brave, Brendan makes the user agent step up and fight for the user as it was always intended to do.

Brave basically consists of two parts: part one blocks third party ad content and tracking signals. Instead of these Brave inserts alternative ad content. Sites can sign up to get a fair share of any ads that Brave displays for them. The big change in comparison to the status quo is that the Brave user agent is in control and can regulate what you see. It’s like a speed limit for advertisement on the Web, with the goal to restore balance and give sites a fair way to monetize while giving the user control through the user agent.

Making money with a better Web

The ironic part of Brave is that its for-profit. Brave can make money by reducing obnoxious ads and protecting your privacy at the same time. If Brave succeeds, it’s going to drain money away from the crappy privacy-invasive obnoxious advertisement world we have today, and publishers and sites will start transacting in the new Brave world that is regulated by the user agent. Brave will take a cut of these transactions. And I think this is key. It aligns the incentives right. The current funding structure of major browsers encourages them to keep things as they are. Brave’s incentive is to bring down the whole diseased temple and usher in a better Web. Exciting.

Quick update: I had a chance to look over the Brave GitHub repo. It looks like the Brave Desktop browser is based on Chromium, not Gecko. Yes, you read that right. Brave is using Google’s rendering engine, not Mozilla’s. Much to write about this one, but it will definitely help Brave “hide” better in the large volume of Chrome users, making it harder for sites to identify and block Brave users. Brave for iOS seems to be a fork of Firefox for iOS, but it manages to block ads (Mozilla says they can’t).

Oracle sinks its claws into Android

This is my first blog post since leaving my role as Mozilla’s CTO 6 months ago. As you may have read in the press, a good chunk of the original Firefox OS founding team has moved on from mobile and we created a startup to work on some cool products and technologies for the Internet of Things. You’ll hear more about what we are up to next month.

While I am no longer working directly on mobile, a curious event got my attention: A commit appeared in the Android code base that indicates that Google is abandoning its own re-implementation of Java in favor of Oracle’s original Java implementation. I’ll try to explain why I think this is a huge change and will have far-reaching implications for Android and the Android ecosystem.

Why did Google create its own Java clone?

To run a Java app, you need a runtime library written in Java called the Java standard classes. This library implements basic language constructs like hash tables or strings.

Since the early days, Android didn’t use Sun’s version of the Java standard classes. Instead, the Android team enhanced the open source Apache Harmony Java standard libraries. Harmony is an independent “clean room” open-source implementation of the Java standard libraries maintained by the Apache Foundation.

There is basically no technical advantage in using Harmony. Its a strictly less complete and less correct version of Sun’s original implementation. Why did Android invest all this effort to duplicate Sun’s open source Java standard classes?

Apache vs GPL

Over the course of Android’s meteoric rise, the powers behind Android demonstrated a deep strategic understanding of different classes of open source licenses, their strength, and their weaknesses. Android has from its early days successfully used open source licenses to enable proprietary technology. Sounds counter-intuitive, but it explains why Google rewrote so much open technology for Android.

Java is actually not the only major open technology piece Google reinvented. Since Android 1.0 Google uses bionic as its standard C library. There were very few strong technical reasons to use bionic over open source alternatives such as the GNU libc. Quite to the contrary, at Mozilla in the earlier days of Android we had to constantly fight deficiencies in bionic in comparison to existing open source standard C libraries. Famously, bionic was not thread safe in many cases, crashing multi-threaded applications.

Writing a standard C library from scratch is crazy. Its one of the most commoditized pieces of software. Its almost impossible to do it significantly better than existing implementations, and it costs a ton of time and money and compatibility is a huge pain. Why did Google do it anyway? There is a simple answer: Licensing.

Bionic (as Google’s Java implementation) is licensed under the non-viral Apache 2 (APL) license. You can use and modify APL code without having to publish the changes. In other words, you can make proprietary changes and improvements. This is not possible with the GNU libc, which is under the LGPL. I am pretty sure I know why Google thought that this is important, because as part of launching Firefox OS I talked to many of the same chipset vendors and OEMs that Google works with. Silicon vendors and OEMs like to differentiate at the software level, trying to improve Android code all over the stack. Especially silicon vendors often modify library code to take advantage of their proprietary silicon, and they don’t want to share these changes with the world. Its their competitive moat–their proprietary advantage. Google rewrote bionic — and Java standard classes — because silicon vendors and OEMs probably demanded that most parts of Android are open (ironic use of the word in this context) to this sort of proprietary approach.

UpdateBob Lee who worked for Google at the time commented below that OpenJDK didn’t exist yet when Android 1.0 launched (2007), so Google couldn’t use OpenJDK back then. GNU Classpath (LGPL) did exist since 2004, however. Google still chose Harmony, and stuck with it even after Apache abandoned the Harmony project in 2011. The switch now is clearly driven by the Oracle vs Google lawsuit.


OpenJDK is the name for Oracle’s Java that you can obtain under the GPL2, a viral open source license with strong protections. Any changes to OpenJDK have to be published as source code (except if you are Oracle).

Because Oracle has means to control Java beyond source code, OpenJDK is about as open as a prison. You can vote on how high the walls are, and you can even help build the walls, but if you are ever forced to walk into it, Oracle alone will decided when and whether you can leave. Oracle owns much of the roadmap of OpenJDK, and via compatibility requirements, trademarks, existing agreements, and API copyright lawsuits (Oracle vs Google) Oracle is pretty much in full control where OpenJDK is headed. What does this mean for Android?

In short: there is a new sheriff in town. The app ecosystem is at the heart of every mobile OS. Its what made Android and iOS successful, and its what made Firefox OS struggle. The app ecosystem rests on the app stack, in Android’s case Harmony in the past, and going forward OpenJDK. In other words, Oracle has now at least one hand at the steering wheel as well.

Its anyone’s guess what Oracle will do with it, but Google and Oracle have a long history of not getting along, so its going to be quite curious to watch. Java itself aims to be a platform, and it is similarly vast in scope as Android. Java includes its own user interface (UI) library Swing, for example. Google has of course its own Android UI framework. Swing will now sit on every Android phone, using up resources. Its unlikely that Oracle will try to force Google to actually use Swing, but Google has to make sure it works and is present and apps can use it. And, Oracle can easily force Google to include pretty much any other code or service that pleases Oracle. How about Java Push Notifications, specified and operated by Oracle? All Oracle has to do is add it to OpenJDK, and it will make its way into Android. Google is now on Oracle’s Hamster wheel.

A rough year ahead

In the short term Google’s biggest challenge will be to rip out Harmony and replace it with OpenJDK. They actually have been working on this for a while. It seems this project started in secret already 11 months ago, and is now being merged into the public repository.

All this code and technology churn will have massive implications for Android at a tactical level. Literally millions of lines of code are changing, and the new OpenJDK implementation will often have subtly different correctness or performance behavior than the Harmony code Google used previously. Here you can see Google updating a test for a specific boundary condition in date handling. Harmony had a different behavior than Oracle’s OpenJDK, and the test had to be fixed.

The app ecosystem runs on top of these shifting sands. The Android app store has millions of apps that rely on the Java standard classes, and just as tests have to be fixed, apps will randomly break due to the subtle changes the OpenJDK transition brings. Breakage will not be limited to correctness. Performance variances will be even harder to track down. Past performance workarounds will be obsolete but it will be hard to tell which ones, and entirely new performance problems will pop up. Fun.

And of course, licensing is changing as you can see here. The core of Android’s ecosystem runtime is now powered by GPL2 library code, copyright Oracle.

I also have a very hard time imagining Android N coming out on time with this magnitude of change happening behind the scenes. Google is changing engines mid-flight. The top priority will be to not crash. They won’t have much time to worry about arriving on schedule.

The winner

No matter how you look at this, this is a huge victory for Oracle. Oracle never had much of a mobile game, and all the sudden Oracle gained a good amount of roadmap and technology influence over the most important mobile ecosystem by scale. Oracle is a mobile titan now. I didn’t see that one coming.

The losers

Google, and silicon vendors. The entire middle part of the Android stack will be subject to proprietary Oracle control. Google calls this “reduced fragmentation” in their press release. That’s true, kind of. There will be less fragmentation because Oracle will control anything Java, including Android.

Silicon vendors will be still allowed to do proprietary enhancements if they obtain the same library code under a difference (non-viral, non-GPL2) license from Oracle — for a fee. Oracle has actually already a history of up-selling OpenJDK. They are offering certain components of the Java VM only for royalty payments. You get a basic garbage collector for free. If you want the really good one, it’ll cost you. I expect Oracle to attempt to monetize in similar ways the billions of mobile users it just stumbled upon.

New Adventure

It is with mixed emotions that I end my almost 7 year long journey with Mozilla next week. Working with this team has been one of the peak experiences of my professional life.

I am also extremely excited about the next chapter in that life. I am departing Mozilla to create a new venture in the Internet of Things space, an open field that presents many of the types of challenges and opportunities that drive our passion for the Web.

I feel deeply humbled and honored that I had the chance to be part of such an amazing and passionate group of people for the last many years, building together the Web we want. I leave with fond memories and great respect for this organization and the people who build it each day. It has been a great honor to be your colleague and friend.