Virtual Machines: Joa Ebert (@joa)






I have been following Joa Ebert’s work for quite some time now, and I am very happy to see that he had another session at FITC Amsterdam 2013. There are a couple of speakers that always know how to pack the room: Grant Skinner, Lee Brimelow and Colin Moock just to name just a few - Joa Ebert is also one of them. I tried to get into this session a little early just to get a seat.

My hunch was correct. The room was packed with people, 99% developers and 1% FITC staff. We were all getting ready for what would probably be the only 'hardcore' technical session this year at FITC. The topics that Joa covered were: “What are Virtual Machines?”, “Why do we need Virtual Machines?”, “How do Virtual Machines work?” and “Where are the issues?

He started off his session seeming a little nervous, showing images of cakes. Really complex cakes. With ribbons, extravagant decorations and loads of color. Joa is a foodie! I was loving the session already, and found myself hooked from that point on. He explained that cooking and programming have a lot of overlap. Cooking requires precision and so does coding. However, when we look at coding, we must first consider what makes our programs run. A virtual machine.

In order to know what a virtual machine is, we must first look at what a real machine is. Basically, a virtual machine (or VM) is a simulation of a real machine. With programming, we use process vm’s, that start and stop with the beginning and ending of a program. A VM is used for code execution, and it handles memory management and multithreading.

So, why do we need VM’s? The basic usage for a VM is that they execute your code and interpret this at runtime, whether it is in the browser (Javascript, Flash, Silverlight), on a device or on a desktop. The cool thing about a good VM is that it is platform agnostic, which means it is capable of running on any platform. A VM handles a lot of extra stuff like: optimization of code, sandboxing and security. We all benefit from innovation in VM development because if VM’s become faster, that means our programs run faster - which equals a better experience for the end user.

He also gave us loads of food for thought on why the Flash Debugger is so slow and what the difference between a conservative and precise garbage collection is. His talk went on to discuss different types of VM’s and different garbage collection methods. He used these topics to illustrate his point in a more visual manner, and he also created several demos in Javascript that showed us the way a garbage collector works in real time. A visual representation of the sweep, mark and collect fases. Really impressive stuff.

This was one of the best sessions I have attended in the last while. I think I learned more about VM’s and garbage collection in one hour of hearing Joa speak, than I did in 4 years of college.


Written by: Sidney de Koning

This post was written by guest blogger, Sidney de Koning from Mannetje de Koning, who attended and covered four sessions at FITC Amsterdam 2013.