the release

posted by qmx on 24 March 2013

Sometimes it’s kinda awkward how you can get to places you would never imagine going. This happened to me too, and my life was profoundly changed by this.

This all began when I was passing through very difficult times on my life, both personally and professionally - which led to a constant depressive state. After struggling with that situation for quite a while, I’ve decided that I could do better by just proving to myself I could make something meaningful… to me and to the world.

So that crisis that I thought would keep me trapped forever was my salvation. Suddenly I felt the need of making open source development my therapy - I was more than aware of my techinical limitations, but heck, I could learn! Then I started investing about 4 hours of my time daily reviewing open source code, and trying to contribute. At first, the stack traces and the errors were really cryptic; I kept moving forward, and after some long step-debugging sessions I started to make sense of things, and finally with more help I could start fixing some serious issues.

So what all this have to do with “the release”? That time a friend invited me to speak at a new JavaScript conference that would happen on Fortaleza/CE. I did use JavaScript a lot, but that was it. I never created something meaningful. I was still way more closer to the JVM/Java/Ruby lands.

Well, I’ve took the challenge of bringing an interesting topic to that conference, and I had like 6 months to think about something. Then the crazy idea came.

– My strongest environment is the JVM, I’m going to do a talk around JS on the JVM! Problem solved!

As soon as I started to dig deeper, the despair just increased. Mozilla Rhino was the only option, and unfortunately, I never heard about a codebase with more than 10 years that didn’t suffer from bitrot - that code was complex and with a lot of handicrafted optimizations needed to circumvent the JVM limitations faced on the early days. Even if we had better tools, like asm for generating Java bytecode, Rhino was still using its home-grown utility classes. After all, why would someone fiddle with something that was working?

That time I was already contributing as much as I could on JRuby, and we were on the early days of the mlvm project. There was a new cool JVM instruction coming to help dynamic languages to run, lots of new opportunities to make things fast - invokedynamic.

– Why couldn’t I do a new JavaScript implementation using it?

The prospect of taking a project big like this was frightening, to be honest - it was so scary that I was telling to myself all the time:

if you fail on delivering it, at least you’ll learn a lot of cool stuff

And this is where things went real crazy. I started that implementation on stealth mode, and gave a talk on why it was so hard to run JavaScript on the JVM.

At the end of the talk, I did a brief announcement about the project I was working on: dynjs.

I was putting hours like crazy, trying to figure out how things worked, then when the JSConf EU call for papers opened, I decided to submit it, after all it was a idea too crazy to get approved. Poor me! I didn’t know that time that crazy would imply to suddenly having chances of being approved, and this happened. I still remember when I’ve got the email from the organization telling my proposal was accepted - this was so unexpected to me that I started to scream at home :)

Then, a project started out of the frustration of dealing with 10+ years old code, targeted on me learning cool stuff and trying to produce a compiler with readable source code, had not only a deadline, but I would still need to prepare a presentation for it too. Even worse, that would be my first international travel and the first time I gave a presentation in english. Now looking back, I can laugh at it, but my stress levels were at the maximum peak there.

The presentation went well, I’ve opensourced dynjs at the end of my talk, had the conference bar set to a level so high that I consider it almost unbeatable (no, srsly, go to a jsconf, you won’t regret), then I’ve got back home - but something was different in me.

I just don’t know why, but that conference kept ressonating inside my head. That place was inclusive - even if I was stressed to death because of the preso, the staff and people there were so nice, that it was impossible to avoid comparing with all the other events I’ve ever attended. Chris’ Talk made me review my approach to community and opensource in general, and made me aware on how we tend to be aggressive when we’re hiding behind a keyboard.

All that inspiration made me continue on the endeavor of working on dynjs, and thankfully I’ve got help from a bunch of fine folks that helped me move the project forward.

After one year and a half of hard teamwork, I’m really happy to announce that dynjs debuts it’s first release ever!

add org.dynjs:dynjs:0.1.1 as a maven dependency and have fun!

This is more than a release to me: this is a life achievement, and I’m damn proud of it.

A wise friend told me when I was depressed and annoyed with the struggles of life:

Stop complaining and go create something!

Well, thank you Jim, that was the best advice I could have!

Thank you JSConf.EU, for changing my life to better!

Thank you all who create things, you’re making the world a better place.

– qmx