Last week I travelled to US for the first time in my life to give a talk about V8 at JSConf 2012. The conference absolutely fantastic and allowed me to meet a lot of different people. If you know any other conference that would allow me to chat with Richard Hudson about transactional memory applications for concurrent GCs, listen to Dan Ingalls talk, discuss compiler design with people from Mozilla and Microsoft and make s'mores with Rickard Falkvinge - give me a call and I'll buy some tickets :-)
But there is another reason why JSConf was an invaluable experience for me: I like talking and sharing knowledge but both preparing and speaking is hard for me. Partially because I am not exactly very good in speaking English - my thoughts and jokes-cortex are accustomed to immense flexibility of Russian grammar. It's also always hard to fit both useful information and some entertainment into 30 minutes talk.
Yes, I do think that any talk should be both useful and entertaining. Some talks are entertaining but not useful. Some are highly useful but not entertaining. The balance is crucial.
When I was preparing my talk for JSConf 2012 I decided that I don't want to speak about V8 basics again: hidden classes, number representations, optimizing vs. non-optimizing compiler, flags to trace optimizations, profiler, generic performance advices. There are numerous presentations on this: from V8 developers mine, Daniel Clifford's, from Chrome DevRel team Lilly Thomson's and from Mozilla SpiderMonkey team David Mandelin's. There are also numerous posts (some on this blog, some in Andy Wingo's) plus +Florian Loitsch started turning notes he took while working on Dart to JavaScript compiler into blog posts. I highly recommend reading them.
Thus I considered foundations well covered and decided to choose a different goal for my talk: I wanted to encourage people to look under V8's hood. Following this decision I called my talk "Can V8 do that?!" and tried to demonstrate that V8 assembly and HIR can be quite readable with some practice and that they hide a lot of wonders. I don't yet know if I succeeded or failed, only future will tell, but I will monitor v8-dev & v8-users mailing lists for questions about V8 internals and incoming patches :-)
I also have a suspicion that there are still might be some misunderstandings (e.g. if you think that V8 can always hoist expression like a.length
from the loop please raise your hand in comments!). Nevertheless... I will continue to work on my ability to convey knowledge in an entertaining way and I am looking forward to my next talk: 1h with V8 internals in the beautiful Oslo at Web Rebels