I will never work for Amazon

Today I have been contacted yet again by a recruiter from Amazon:


This is despite my LinkedIn summary starting with the following text:

(Please don’t contact me about Amazon roles. Also ONLY opportunities in Vancouver or remote-friendly please)

This is despite me having already said NO! to Amazon recruiters on numerous occasions in the past few years and explicitly asking to be blacklisted.   They obviously don’t share any information between themselves.

This is all despite me publicly boycotting Amazon since 2014.

Amazon is a horrible, horrible, company.   Please, Amazon recruiters, never darken my door again.   Seriously.    Thank you.

For any recruiters seeking to understand what I have to offer and what my requirements are, I wrote this Bob Summerwill for Recruiters article.   I am not looking for new opportunities at the moment, but that’s what I’m looking for if I become available again in the future.

And everybody, please read the New York Times article from last year: Inside Amazon: Wrestling Big Ideas in a Bruising Workplace

100% Ethereum

So I’m delighted to report that as of April 2016, I will be contracting for the Ethereum Foundation full time!

I started work for the Foundation part-time just over a month ago, and it’s been the most enjoyable work which I have done for many, many years.    I’ve been working on Ethereum for fun since last year at doublethink.co, and now I can focus entirely on it.

My BlockGrantX-funded work on “Ethereum for resource-constrained devices” will keep ticking along on the side.  We made Homestead releases last week and I posted an update on our status.



The run up to the Homestead Release was a huge rush.    I spent much of my time that week (and weekend) working on the Ethereum Documentation.   If you have not seen that, please do check it out, including the new home of the cpp-ethereum docs.

Thanks to everybody at the Foundation and in the Ethereum community who make this project a delight to work on.    Have a great weekend, everyone!

Microsoft ♥ Xamarin!

Today saw a very happy announcement in the technology world, in which I have a particular personal interest.

Nat Friedman, CEO of Xamarin, announced that Xamarin and Microsoft love each other and are engaged to be married.   They want to make babies together.   They will be very beautiful babies.    Baby monkeys.


Xamarin are a fantastic company, and their founders are gems.   I am just delighted for them.    I was lucky enough to attend their first conference – Evolve 2013, in Austin, TX, and to spend quality time with many of Xamarin Massive.   At that stage I was experimenting with Mono as a foundational technology for future EA Sports titles.

Mono is a fantastic enabling technology, which has spanned Linux Desktop to Windows to Mac to Consoles to Mobile.   It is the foundation of Unity3D, far and away the most successful game development technology in existence.    Mono and Xamarin’s success will have been a huge factor leading to the open-sourcing of .NET Core.

I spent several months in 2014 on MonoTizen and Mono for Sailfish, and the opportunity to work on Unity3D titles using Mono was one of the reasons why I left EA after 15 years.

Microsoft have had a sea-change in their culture in the last few years (see Scott Hanselman’s fantastic Microsoft Killed My Pappy for more on that).   Huge credit for that has to go to Microsoft insiders who have been pulling on the steering wheel from within, but we should also not forget individuals like those leading Xamarin, who have plotted a path for near 15 years, which has led to Microsoft coming to the conclusion that they wanted to travel in exactly the same direction too!

It is not clear exactly what this marriage will mean in the short term, but I am sure that we are going to love the outcomes.

About Hybris


Want to run Linux on a mobile SoC?

Well good luck with that, because you probably can’t, due to the dominance of Android.

There just isn’t a market for X11 drivers, let alone Wayland drivers, so most manufacturers won’t even think about delivering SoCs which supports them.

Some options:

  1. Use Android.   Obey your new masters.    This is what most people do, if they even consider leaving “Apple world” in the first place.
  2. Use AOSP (Android Open Source Project) on stock hardware, like a Nexus device.   Except that AOSP is getting progressively crippled and abandoned, because Google’s real operating system base is actually Google Play Services.   Google really don’t have your best interests in mind with Android.   See Google’s iron grip on Android: Controlling open source by any means necessary.
  3. CyanogenMod.   Getting better.   You’ve got yourself a usable OS, which some people actually prefer to commercial Android distributions.   But you’re still in much the same place.
  4. Use Replicant, which is built from CyanogenMed, but with every single bit of proprietary stuff removed.  Better yet from a “freedom” perspective, but you are now really cutting off your own nose in regards to the hardware you can use.    Replicant only works on chronically old devices.   And it still doesn’t solve all the privacy/security issues.
  5. Opt out of Android entirely, and go for the only true mobile Linux which exists, Tizen, which is actually running on X11.  You can even buy real devices with it installed like the Samsung Z3.  But Tizen has its own problems, the most acute of which, for potential end-users, is the complete dearth of available software, combined with no ability to run Android applications as a stop-gap, which makes the platform practically unusable, IMHO.   Even Samsung struggle to get SoCs which support X11/Wayland.   And Tizen 3.0, along with its open governance, has still not arrived on commercial devices.
  6. None of the above?   There must be a better way?    Well ….


The primary incompatibility between Android (which uses the Linux kernel) and existing Linux distros is the C runtime.    For the Android user-land, Google chose to build bionic (primarily to avoid GPL licensing), rendering Android applications binary-incompatible with Linux, even if they are running on the same hardware.    Linux userland applications typical use the GNU C Library (glibc).

This was the problem-space facing Carsten Munk in 2012, so he tried something crazy, and it worked.   He built a compatibility layer for glibc sitting on top of bionic which allows both Android and Linux user-lands to co-exist on top of an Android kernel.

He later extended that model to GPU drivers, so you can run Wayland on top of Android drivers, which is a very neat trick.

Hybris is the “secret sauce” which lets Sailfish OS, Ubuntu PhonePlasma Mobile and AsteroidOS work on the mobile/wearable hardware which we actually have to work with right now.    You can read more about it on Wikipedia and check out the code on Github.

Hybris is the reason why the following fantastic devices coming to Mobile World Congress this year are possible:

This magic opens up the possibility of Linux user-land in a world of Android-dominance.

We can all hope-and-dream of a future of open hardware and 100% open source drivers and bootloaders for them.   In the meantime, Hybris lets those of us who cannot affect that situation continue to build freedom-respecting software in the real world.

Forever obsessing about things which are not under your control is not the path to happiness.   Let’s work on the pieces where we can make a difference today.

UPDATE:   Also check out the Open Devices project from Sony which is working on a mainline Linux kernel for xperia devices.

Dream job – working for Ethereum Foundation

I am delighted to share the news that I will be starting my dream job on Monday, as a part-time contractor for the Ethereum Foundation working on the Ethereum C++ client.


As anybody who knows me will be aware, I’ve been rather obsessed with Ethereum over the past few months, and have been putting a lot of time and effort into the C++ client via doublethink.co, first with Anthony Cros and then more recently on my own.   It has been a real blast.

Now I get the opportunity to continue that work from the inside.  This is a real honor for me.    The Ethereum community is a delight, and I am ecstatic to have the opportunity to work directly as part of the Ethereum development team.

I truly believe that Ethereum has the potential to impact our technical and social landscape to as significant degree as the Internet did in the 90s, and the opportunity to work with the inner group building that future is a once-in-a-lifetime golden ticket of geeky joy for me.

Woot, woot – Happy Hat!


EASTL has been open-sourced by EA. For real!

I am delighted to see that EA have finally open-sourced EASTL for real, after a very convoluted journey starting in 2007.

You can check it out on Github, and build it yourself using CMake.


What is EASTL, you may ask?

It is a variant of the standard C++ STL (Standard Template Library) which is optimized for the specific needs of videogames software.   Paul Pedriana, its creator, wrote an article about it back in 2007, but no code was released at the time.

EASTL is a foundation technology for all of EA’s games, and has had nearly a decade of love-and-polish, across multiple platforms.   It is really solid and worthy of attention.

Paul is a super-star.   One of the best programmers I have ever had the pleasure of working with.   After 18+ years at Maxis/EA he moved to Oculus in 2014, to join their stallion farm of talent.    I am delighted for Paul to see his work made available outside of the EA castle walls.

Partial code for EASTL was released to gpl.ea.com as part of the LGPL obligations for EAWebkit.   Paul Hodge made a Github repo of that partial drop in 2010, and has been maintaining it.   I see that he has today updated the README for that repo to point to the new official EA one.   Thanks for 6 years of work, Paul 🙂

I personally blogged about EA’s open source software in June of 2014, and followed that up with some action in July of 2014, with the Fork me, EA! releases of all of the packages within EAWebkit.   See Github repos.    I’ll revector my repos too.

Here were my pleas at the time of those releases:

  • Step up to the plate, EA!
  • Build a community-friendly portal for these packages. Fork me back!
  • Re-add the missing source code, documentation and changelogs
  • Make these releases fully usable so that community members can contribute fixes and improvements

And it appears that they have done exactly that.

Some other full packages lurking in there too – EABase and EATest, and some partial code for others.   Hopefully we’ll see more opening up with time.

EABase was something which I put together in 2002, and which Ian Shaw took to a WW CTO meeting to pitch for me.   And now 14 years later it is public.

I really hope that this is a sign of change within EA, and that we’re going to see more open source releases from EA, and increased engagement of EA employees on external open source projects.

Good job, Rob Parolin and friends 🙂


There is a new EA twitter account too – @EAOpenSource – which I imagine will be coming to life in the near future.

Get poking in there, everyone, and submit your Issues and Pull Requests on Github!

New Year, New Focus


The New Year is going to see a new phase of development here at doublethinkco.


You’re going to see a lot more hands-on work from this old soldier.   I’m planning to finally get my hands dirty in the C++ code and start making concrete strides towards a C++ Light Client after our porting diversion.

Anthony Cros has laid the foundations in the last few months.  He has ground his way through lots of unglamorous build system work to give us the cross-build scripts inside webthree-umbrella-cross, and has got us working C++ cross-builds on:

  • Jolla Phone (Sailfish OS)
  • Meizu MX4 (Ubuntu Phone)
  • Raspberry Pi Zero, B and 2 (Raspbian)
  • Odroid XU3 (Ubuntu MATE)
  • Beagleboard Black (Debian)
  • Wandboard Quad (Debian)

Our flagship target device (Gear S2 smartwatch) is still fluttering just a fingertip beyond of our grasp, but it will happen soon, along with various other target devices – some rational (Android, iOS, Intel), some whimsical (N900, N9).


Anthony has wrapped up his contract for doublethinkco, and will be moving on to other projects.   I would just like to take the opportunity to think him profoundly for everything he’s done.  I think it’s fair to say that he have both learnt a lot in the process, and have equally high hopes for Ethereum.

So … it’s just me for now, but that’s fine.   I’ve been a professional developer for nearly 20 years, with the vast majority of that on resource-constrained devices (games consoles) in C++.   It will be a lot of fun.

I was only able to make occasional contributions in the past few months due to full-time work commitments at TD Securities in Toronto, where I met Anthony and many others in the Ethereum community.   I’m back in Vancouver now and am working as a part-time contractor and consultant, so am able to leach a lot more of my own time into Ethereum work.

Pull requests for Light Client support have been making their way into the Go client.   There is more to do, but the LES/1 protocol is largely defined.   LES/2 is starting to take shape.

It is time for somebody to grasp the nettle and start bringing C++ Light Client support to life, and it looks like I am the itchiest person 🙂

Best wishes to you all for the holiday season and New Year!