A slight refactoring

For almost precisely one year I’ve been working in the Microsoft Cloud Developer Advocacy team, focused on all things Java. I’ve enjoyed my time in this team, and I’ve learned a lot. I’ve been staggered by the degree to which the team is a magnet for highly skilled, highly motivated, and highly renowned people (I was the only glitch in the hiring matrix). Personally, my big rewards from the past year were two things:

  1. I managed to improve my public speaking skills and confidence – I started the year a little rusty, but by the middle of the year I was presenting to rooms of 800 and more people quite regularly, and by the end of the year I gave my first keynote at QCon Shanghai. The large number of presentations I gave came about because not enough conferences said ‘no’ to me when I submitted, so I found myself travelling and presenting far more than anticipated! I really enjoyed the ability to share my love of developer experience and good API design far and wide. I put up a page on my site that includes a few of the videos, as well as a DZone Refcard that I wrote.
  2. When I wasn’t travelling, my biggest reward was being able to work across all engineering teams at Microsoft, to ensure their SDKs and APIs were as good as they could be. I really enjoyed the opportunity to bring my Java expertise to a new audience inside Microsoft. I also enjoyed the ability to expose the work of these teams through the Java portal on docs.microsoft.com.

The team I’ve worked with has been exceptional, and the managers I had above me – Bruno Borges, Tim Heuer, Chad Fowler, Jeff Sandquist – even Scott Guthrie – have been extremely open, available, and supportive of me. Microsoft is a great organisation to be a part of, and the Cloud Developer Advocacy team is an awesome team. I highly encourage everyone suitably qualified to consider joining the team. Ping me if you ever want to learn more.

So, today, I’m excited to say that I’m refactoring things a little 🙂 As of next week, I am moving out of the Cloud Developer Advocacy team, and I’m taking on a Senior Software Engineer role in the Azure SDK team. My new role is to serve as the Java representative on the architecture board for Azure SDKs, and to help drive excellence in our Java developer experience. I will be heavily involved in driving the API design for our next generation of Java Azure SDKs, working alongside a team of excellent engineers to make this a reality.

I will continue to work remotely from New Zealand, as I have always done, and I look forward to the challenge ahead.

Hello Microsoft!

I’m joining Microsoft – and I couldn’t be more excited!

A while back I shared that I was leaving Oracle. Around this time I was casting my net out to friends at four companies I wanted to work at, with one of those companies being Microsoft (the others shall remain nameless, but needless to say I enjoyed chatting to all of them!). After JavaOne I was even more interested in Microsoft as I heard a lot about their push to supporting Java on Azure. Around this time I spoke to Tim Heuer on the phone, and less than a week later I was in Seattle interviewing with Microsoft. A day after that (literally whilst I was standing in Seattle-Tacoma International Airport) a job offer was confirmed, and now (after the usual protracted background check process to ensure I’m not a criminal, am educated, and have actually worked where I say I’ve worked), I’m joining Microsoft on December 11. This was an incredible pace, and actually, it left some of the other companies I was talking to in the dust. After only a short amount of soul-searching, I dropped all other discussions and jumped all in with Microsoft. The other upside is that I will be joining Microsoft but working remotely from my home in New Zealand – a setup I’m extremely familiar with 🙂

The ten year old inside of me dreamt of one day working for Microsoft (I was a pretty huge Bill Gates fanboy). To fulfil that dream is very pleasing (and surprising, considering my career as a Java developer). Additionally, it appears as if in recent years the culture at Microsoft has improved significantly under Satya Nadella, so it feels like really exciting times to be joining Microsoft.

I am joining the rapidly growing Cloud Developer Advocate team, where I will be focusing on growing the use of Java on Azure. This is exciting to me as I see that the Cloud Developer Advocate team is staffed full of passionate open source community members, and our goal is to not evangelise for Microsoft but to listen to the community, and ensure that developers get what they need and want out of Azure. Most critically, this team falls under engineering at Microsoft. It means our function is to work with the engineers building Azure and to act as an interface between them and the wider community. We are not marketing, and we can play an active role in advocating for community requests, and showcasing the work of the engineers building Azure.

From my point of view, it feels like there is a huge amount of potential here to grow the use of Java on Azure, and I look forward to that challenge. In my research so far into Azure/Java, I already have formed a lot of my own opinions on ways to improve the developer experience, and I will be working incredibly hard with the skilled engineers at Microsoft. I look forward to bringing my skills and experiences in API design and Java development to Microsoft, and I look forward to attending conferences around the world and continuing to exist in the excellent Java community that I have called home for a very long time.

This role will be a change of pace for me too – I’m moving from being a full-time engineer to being a developer advocate. Time will tell how this works out, but I’m interested to experience different career paths and the opportunities they present over my career. I know this role will be less ‘deep’ coding, but I suspect there will be significant amounts of code in my future in this role. More interestingly for me, it is a big step away from my client-side work into a whole new world of the cloud, including its entirely different lexicon, which I will be getting familiar with 🙂

As always, feel free to ping me at [email protected] if you have any questions. I’m on Twitter too.

Farewell Oracle

tl;dr: Today is my last day working at Oracle as a Consulting Member of Technical Staff in the Java team. I’m exploring new work opportunities right now and have a few opportunities I’m considering. If you want to employ me, email me today.

As they say, all good things must come to an end, and today marks the end of a big part of my life for the last nine years – I’m leaving Oracle. I came in to Oracle through the Sun Microsystems acquisition, and I have to say that it feels extremely bittersweet, as I’ve had the great fortune to work on Java itself with a collection of people from both inside Sun / Oracle, and the wider community of Java developers via Twitter, various conferences, and my inbox, many of whom became great friends in the process. Everyone I have worked with has been hugely professional and talented, and to say I enjoyed it immensely would be an understatement. Being able to work on Java was a dream come true for me, and I wish my colleagues at Oracle all the best as they continue to improve Java.

I have been working on JavaFX for a very long time – I joined in mid 2009 around the release of JavaFX 1.2, back when it was all written in JavaFX Script. JavaFX has come a long way since then – it’s travelled through a language transition from JavaFX Script to Java, the introduction of lambdas, and more recently the introduction of modules. There have also been so many other changes during that time, too numerous to mention.

It’s important for me to be clear: my leaving the JavaFX team is in no way a reflection on my lack of love for JavaFX and the Java client ecosystem – I wish it all the very best. I wish I was able to do more and grow JavaFX into what it deserves to be, but from here on out I can only do that from outside of the Oracle team.

I know whenever a person leaves a project there are questions that will be raised about its future. Perhaps one day soon I can write a blog post about JavaFX, but for today I encourage enterprises or individuals concerned to ping me if they wish to discuss anything.

What is next for me?

I have a few irons in the fire that I want to work on, and a few job offers from companies I have already privately pinged (which explains all the travel I’ve been doing recently). It has been nice to interact with companies and have them determine the right role for me – I’ve been considering a few different kinds of career path thanks to this, and so right now I am incredibly excited about what opportunities await, and where I land next.

All of this is to say: if your organisation is looking for a highly-skilled developer / technical lead / engineering manager / trainer / advocate, in a consulting, part-time, or full-time position, I am very keen to hear from you. On the other hand, for those wondering where I might end up, you might want to prepare yourselves to be surprised – although one consistent fact across all my discussions so far is that they are all heavily Java-focused, fortunately 🙂

To learn more about me, you can check out my projects and presentations pages, as well as my LinkedIn profile. Whilst I am currently based out of New Zealand, this is only my current state and I am happy to relocate with my family for the right projects.

What about my open source projects / blogs?

For now I plan to continue blogging here and at FXExperience.com, and to continue the work on my projects like ControlsFX, FXDocs, Scenic View, etc. If or when those plans change, I’ll be sure to make appropriate announcements.


That’s it. To me leaving Oracle was almost impossible – I always wanted to serve the community and grow Java client however I could. I immensely enjoyed the coding, the bug fixing, the discussions on Twitter and Jira, attending conferences, arranging the Java Desktop Lunch, and all the other things I got to do in my role at Oracle. No day felt like work for me. For now I say goodbye to Oracle, but definitely not to the wonderful Java community 🙂 So, please, update your address books – [email protected] will bounce by the end of Friday, and so from now on, please ping me on [email protected].

I know that to many people this is surprising and / or disappointing. If you have anything you want to ask or talk about, I will be as transparent as I can be – my email is always open to you.

Expect a few more interesting blog posts to come…

Exciting News

It is with incredible relief and excitement that Julia and I can announce that we are expecting our second child in early February, 2017. Today we are at the 20.3 weeks mark, and with that we feel safe enough to share this publicly. From our latest ultrasound, signs are pointing to there being a good chance that our next child to join our son Henry will be a little girl. Henry is such a cool dude, and we can’t wait to get to know our daughter in only a few months time.

With this excitement flows other emotions too. Miscarriage is something that is rarely talked about, and it was with considerable sadness that we struggled through three separate miscarriages in an incredibly short period of time. You begin to dread going to ultrasound appointments (where they used to be exciting when we were naive with Henry) – fearing some morsel of bad news. Every time the bad news hit us like a tonne of bricks, bringing with it sadness and disappointment about losing something you desperately want. In that instant it feels like the child has gone from being real to an apparition – a figment containing our hopes, excitement, and future, that never quite was. You reset your dreams once more, and hope like hell it’ll never happen again, and then, you are back at square one.

To others that struggle through this, we have no words of wisdom or advice. Nothing can quite heal the struggle you must go through, and the sadness you must endure. All you are ever given is statistics, and rarely do these make the situation better. All that can be said is to see the positives as best you can, and don’t give up.

And now, the obligatory photo:

baby 2

On why I’m not going to JavaOne

It’s been a really, really long time since I used my personal blog for something personal, but I guess there is a time and a place for that – and it’s now! 🙂

People are wondering why I’m not going to JavaOne this year. The answer is: my wife and I are expecting our first child late December 2013! This will be our first child and whilst I’d really like to be at JavaOne, being home is more important this year. I’ll follow along with the JavaOne announcements via twitter, and I may also take the opportunity to use my blog to bore you with more personal news items! 🙂

Here’s photographic proof (click for bigger pictures, if for some reason you are interested in ultrasound photos of my future child):

Ultrasound 1    Ultrasound 2