Christian Heilmann

Author Archive

Four years at Microsoft

Wednesday, January 9th, 2019

LinkedIn this week reminded me that I am now four years at Microsoft. Technically, my first day in a meeting on a company machine was the 5th of February (as Rey Bango reminded me). It’s been quite a ride and I am still happy to work here.

Do Epic Shit Microsoft cup

When I started, I was curious if that works out. Coming from a fiercely open company like Mozilla back to a large corporate felt odd. I wanted to make a change where it matters. Internet Explorer was the boogeyman of the web development world, so I wanted to help phase it out. This, to a degree, worked out. More importantly though, during my journey I learned a lot of things I hadn’t before about large companies.

Here are a few things that kept me humble and interested over all these years. Some were a surprise, others shouldn’t be, but I think it is worth while mentioning them.

The sheer size of Microsoft is staggering

I was more or less told to spend my first few months in the company to get my bearing, to get to know the structure and network internally. This sounds like overkill or bad organisation, but it is not. It is pretty straightforward to find people you need to know on the Intranet and in Teams. But, to forge some meaningful connections, it is important to put more effort in. It surprised me to get this opportunity, but it helped a lot with my career. Far more companies should allow people to do so. In the long run, this can help with employee retention.

That said, I still have no clue what some departments in the company are doing. Microsoft has its fingers in many pies, and works with a lot of different customers. We do hardware, write software, provide connectivity and hosting, education, research and consulting services. Some departments are around for a long time and can’t change without annoying their customers. Others are on the bleeding edge and it is OK to build something that will never be a commercial success. And then there is the whole entertainment and gaming part that I have no clue whatsoever about.

The great thing about this is that it helps with diversity and it brings a grown-up attitude to work. When you walk around the company you find all kind of people.

  • You meet the amazing young people who innovate fearlessly.
  • You meet researchers that don’t touch code but work on ideas and concepts.
  • You meet wise old sages of the network stack and people who invented languages people use right now.
  • You meet interns and supported students
  • You meet people from all over the world and from different local offices coming to the main campus for meetings
  • You meet partners and clients

There is no shortage of creative work and releases of products. But there is a lack of “work yourself to death because it is cool” attitude we often see as a great sign of an up and coming company. Meetings are short and to the point. Work hours aren’t quite fixed, but it is rare to see people late in the office. You are encouraged to take breaks and vacation. It pretty much feels like a company that invests in you for the long run. Some people have been here for dozens of years.

This diversity of options also means that there is always an option to move sideways to other departments of the company. Of all the “I am leaving” emails I got in the last years, only 2% were people leaving the company. The others were all people moving to a different department. Often doing something completely different, but without having to start new. They keep their contract, compensation, shares and bonuses that accumulate over time.

I like this as it is relaxing. You know there are other options when you are annoyed with what you do now.

Microsoft reaches where I never could before

The amount of day to day operations of our world that Microsoft works in is ridiculous. When I thought that in my little “web world” the company is not that important any longer I was wrong. I learned that a lot of what we consider as innovative and success is not having much impact. The cool tech praised on hacker news today can quickly be forgotten.

There is a vast world of software developers and systems out there that we as people who want the web to be the platform never heard about or reach. People who build amazing and important things and do not keep up to date like we do. People who see this as a job and spend time outside the office with their families and hobbies. People not falling for the “side hustle” we proclaim to be oh so important. People whose products customers rely on to work without knowing or caring how they work.

This size and impact multiplies with the third party companies that resell and use Microsoft technology. I’ve been to internal conferences where everybody around me was an expert in our technologies. All these people were working for small companies or freelance consultants. I had no idea what most of them talked about and wondered how I never thought that could be a career for me. You can have a decent living creating with Microsoft products without ever having to code much yourself. Same with Amazon, IBM, Oracle or Google. A sobering fact to me were the training materials these developers can use to learn how to use product XYZ. They are outstanding and blow away anything I’ve seen for web technologies. Maybe we can learn something there. You don’t need to be an expert and work all the magic when the products you use are reliably supported and explained well.

Working remote is fun – and hard

I work remote, my office is my sofa or my kitchen table and my only local colleague a deaf, 14 year old cocker spaniel. I also work in the Berlin time zone, whereas most of my colleagues work in Washington. I could go to one of the offices here, and sometimes I need to – f.e. to set up new hardware or fix VPN issues. I’m lucky in that regard, not many people in Microsoft work from home, but the number is increasing.

I like this freedom, but I also realise that it can be a burden on my colleagues. That’s why I try to be flexible with my work hours and sometimes start in the early afternoon and end at midnight. That way I can attend meetings (on Teams) with my colleagues and work on what they created during their day until they come back.

I found out though that it is important to meet face to face every few months and I am flexible to fly over to do so. That way I realise that when people are late for a meeting at 7pm my time there are reasons. They don’t consider me unimportant – they are stuck in horrible traffic on the way to work. It is also important to be in the office from time to time to see how people work there. The Microsoft campus is overwhelming at first. You need a car or take buses or company owned taxis to get around and in between buildings. You realise why sometimes your requests aren’t handled immediately when you need to navigate it yourself.

Anyone working remote needs to put some more effort in to make it work for the others. That’s my opinion – not a company policy. Remote workers should be a calming agent in the interplay of colleagues, not someone who has lots of demands. Often I found myself being able to give advice to colleagues about their career as I am not in the middle of the office hustle.

Education is paramount

One of the things I want to do more is to take advantage of our internal training tools. There is a ridiculous amount of courses and video content you can consume to learn new skills. Not only Microsoft ones, but including subscriptions to Pluralsight, Lynda.com and the likes. In our quarterly reviews you are always asked to challenge yourself to learn more and things you haven’t done before. You get time to do so, but you also need to prove that you took the classes and did something with it. I should do a lot more of that.

Our internal trainings are great. This sounds odd as you hardly ever hear people having a great time learning about corporate security standards, code of conduct or legal requirements for working with clients. But our materials are outstanding. They are professionally produced video series with transcripts, captions and actually good acting. Instead of telling you what not to do in a hypothetical scenario many are based on real happenings in the past. So you learn how someone almost lost their job and went to jail because he didn’t think something was bad that actually is. Think of a Netflix mini series with tests at the end.

Things that didn’t happen

All in all, I’ve had a great time so far at Microsoft. Of course, there are office politics, re-organisations and sometimes odd paperwork to do. But I found that there is a place for an out-spoken open source, open web person here. I was never asked to only promote Microsoft products. I am not forced to use Windows only. I am allowed to keep my personal channels like this blog and my crazy Twitter account. I don’t need to wear company attire. And I don’t need to apply for a patent for all my code or release it behind closed doors. There is a lot of open source work happening here, and I am happy about that.

Right now, there is a lot of change happening and the times ahead are interesting indeed. I am looking forward to these challenges. And we are hiring a lot, soon. AMA :)

[webfinds] ML and security, Pixel Fire and your best work time

Wednesday, January 9th, 2019

As people complained that I post too many links to follow on Twitter (it is my stream of consciousness – as I find it, I post it), I’m starting to release these link lists every few days now. Hopefully that helps.

Error

Security

Tools

  • Automatic visual diffing with Puppeteer is a simple explanation by the amazing Monica Dinculescu
  • Blobmaker is a tool to create organic shape blobs and save them as SVG (saving doesn’t work in Edge, at the moment)
  • RRWeb is an open source web session replay library, which provides easy-to-use APIs to record user’s interactions and replay it remotely.

Misc Tips

Geek shit

Inspiration

Books

  • Algorithms by Jeff Erickson – This web page contains a free electronic version of my (soon to be) self-published textbook Algorithms, along with other lecture notes I have written for various theoretical computer science classes at the University of Illinois, Urbana-Champaign since 1998.

Mental health and working

  • New Office Hours Aim for Well Rested, More Productive Workers – one of the big new(ish) topics is that of personalized biological rhythm known as “chronotype”. Basically this means that we all tick differently – some of us a more effective in the morning and others in the wee hours of the morning. That leads some companies to put people on different shifts. More information about the chronotype is also in the morning lark or night owl article of the World Economic Forum

2018 in events and trips

Tuesday, January 8th, 2019

I just did a quick round-up of my events and trips in 2018, and despite me promising myself to do less, it tallies up to quite a bit. Here is my 2018, and I am not quite sure if I haven’t missed some bits and bobs:

January

February

March

  • MVP Summit – a Microsoft event for Most Valuable Partners/Programmers
  • PAX Day – a planning event with the team I was with back then
  • Techdays Finland – again a Microsoft centric event, but great fun.

April

May

  • Beyond Tellerand Duesseldorf – a must, every year
  • //build – Microsoft’s flagship event for developers
  • Influencer Day – this is an event we run right after build where we invite selected people to peek under the hood and have meetings with our development teams for candid conversations
  • We are Developers Vienna – as described in my blog post I gave a workshop, the opening keynote, acted as MC and took part in a panel about artificial intelligence and ethics

June

  • NDC Oslo – I love this event, great crowd and super speaker community
  • EnterJS Darmstadt – this is the first time I did that one, an enterprise-ish, German JavaScript conference. I got a lot of good leads from that one, giving the opening keynote and a talk I think :)

July

  • Video Shoots One Dev Question – these are a great format, where you get one question to ask in videos of tops 2 minute length, so that they can be put in tweets. I shot a series for Webhint and another for VSCode. I’ll do more of those.

August

September

October

  • Web Unleashed Toronto was my first time at an FITC event, and I will be back this year, they do a great job. My notes and resources are here .
  • Nuremberg Web Week was an odd one, as I was asked by people of the local government to present there. It was great as my family lives nearby, so I could bring my nephew.
  • DevFest Nantes – this was one of the biggest DevFests and interesting to present there. I got really good feedback for the keynote.
  • TDC Trondheim – I was there once before and very happy to come back. Again I did a lot of work and had a great time seeing some surprising talks

November

  • DevRel Summit Singapore was insightful, I wrote in great detail about my findings there
  • BTConf Berlin – I didn’t present, but helped with the warm-up
  • Halfstack London – good show, always, as I explained in my post
  • Codemotion Berlin – I was let down by Codemotion events in the past, but this one really worked, as I explained in the post here
  • DotJS Paris – I went to man the Microsoft booth there, but this year I shall be back to present :)

December

  • We are Developers AI Congress – I went back to Vienna to give the opening talk and MC the AI Congress for the two days. Some really great material there.
  • FHWS Wuerzburg – I went to the place I grew up to give a guest lecture at the university I would have gone to had I chosen to pursue a degree :)

All in all a nice, full year, and I managed to squeeze a few more podcasts, a book chapter and some articles in magazines, too. Don’t try this at home. It is exhausting, but I am happy that I have these opportunities to work with so many amazing people.

Chris Heilmann on plane

Let’s make Machine Learning on the web and in the client happen. We need your input!

Friday, December 14th, 2018

Machine learning and deep learning is the hot breakthrough in computing and a well-hyped topic. How “intelligent” your systems are can be a significant factor in sales and many a mobile device is sold as “personal AI” for your convenience.

O hai, robot

There is no question that learning interfaces are superior to hard-wired ones. The biggest example to me is the virtual keyboard on my mobile. The more I use it, the better it gets. It doesn’t only fix typos for me but also starts guessing the words following the current one correctly. And it doesn’t even matter if I swipe in English or German, the system is clever enough to recognize my needs based on earlier actions on my part.

Machine Learning is everywhere – it is just not accessible to most developers

I love the idea of learning machines and I think it is an inevitable step in the evolution of human-machine interaction. What we saw years ago in Star Trek – a ubiquitous computer at our beck and call with a voice interface – is now common. And we use it mostly to ask it about the weather. It makes no sense that we need to buy a certain device to reap the rewards of a new technology – I want this to be available on the web and any device.

The problem I have with this new evolution in computing is that it is opaque and locked to a few vendors. I love the web for what it is and how it broke down closed development environments and vendor lock-in when it comes to tooling. Anyone can start developing on the web, as it is the one and only truly open and distributed platform we have. The difference is the skill you have, not what device you have access to.

Now, when it comes to Machine Learning on the web, things look a lot less open and mature than I’d like them to be. In order to train models or to even get insights from models you need to use a third party service or library. Out-of-the-box, you can’t do any training or even image or facial detection in the browser.

Enter the WebML Community Group

I think this needs to change, which is why I am happy that there is a new community group of the W3C that works on an API proposal for Machine Learning on the web. This work started with Intel and Microsoft and I am happy we’ve come quite far, but now we need your help to make this a reality.

Let’s quickly recap why Machine Learning on the web and on device is a good idea:

  • Enhanced performance – results from trained model are returned immediately without any network latency
  • Offline functionality – lookups running on device don’t need a connection to a cloud service
  • Enhanced privacy – it is great that many cloud services offer us pre-trained models to run our requests against, but what if I don’t want that image I just took to go to some server in some datacenter of some corporation?

As with every innovation, there are current limitations and things to consider. These are some of the ones we are currently working on in the discussion group:

  • File size – well-trained models tend to be on the large side, often hundreds of megabytes. Using file sizes like that on the client side will result in I/O delays and also extensive RAM usage of browsers or your Node solution
  • Limited Performance – browsers are still hindered by a single thread JavaScript engine and no access to multiple cores of the device. Native code doesn’t have that issue which is why we propose an API that allows access to the native ML code on different OSes instead of imitating them.

The current state of affairs

Currently you can use tensorflow.js and onnx.js to talk to models or do your own training on device. Whilst there are some impressive demos and ideas floating around using those it still feels like we’re not taking the notion that serious.

That said, it is pretty amazing what you can do with a few lines of code and the right idea. Charlie Gerard’s learning keyboard is a great example that uses tensorflow.js and mobilenet to teach your computer to recognize head movements and then control a keyboard with it.

Why not just offer this as browser functionality?

One of the requests we often heard was why browsers don’t have this functionality built-in. Why can’t a browser create an alternative text for an image or recognize faces in a video? Well, it could, but once again this would mean your data is in the hand of some company and said company would control the functionality. It is no better than the offerings of native platforms in their SDKs. The web doesn’t work that way.

How can you help?

We’re right now in an experiment and investigating phase. As rolling out a new standard in the W3C isn’t a matter taken lightly we want to make sure that we deliver the right thing. Therefore we need to get real-life implementation examples where running ML on-device would make a massive difference to you.
So, please tell us what use cases aren’t covered in a satisfactory manner in the current web-talks-to-cloud-and-waits-for-data-to-come-back scenario.
We’re not looking for “I’d like to do facial recognition” but scenarios that state “If I had face recognition in JavaScript, I could…”. I’d be very interested in companies who do need this functionality to improve their current products, and I am already working with a few.
You can reach me on Twitter , you can fill out this form , or you can mail me at chris.heilmann@gmail.com with the subject “[WEBML scenario]”.

Thanks for your attention and all the work you do to keep the web rocking!

Feeling chart – to make you write more goodly with better emotionness

Monday, December 10th, 2018

Lagwagon: Let's talk about feelings

(Or something like that)

A few weeks ago I found this incredibly useful chart that describes different emotions you can use when you write about, well, emotions.

unreadable chart

As you can see it’s been through the optimise-by-force mill of several posts on Facebook and other social media mangles and thus has become hard to read.

Fret not, for I spent the five minutes to turn it into a more readable interface.

You can find the source code of the HTML version on GitHub or click through it in all its glory on capable browsers. Older browsers get a simpler interface. I tried to make the showing and hiding as accessible as possible, but there is still space for optimization which I will ponder when I am back from the Christmas market.

Enjoy.