Japan: Part 2: The Day Tour

After RubyKaigi comes tourism, of course.

We were incredibly fortunate that Craig's wife, Rebecca, planned a full day tour for the first day. This was a fantastic way to get introduced to a broader Tokyo.

Our tour guide, Yosuke Yokokura from Discover Japan Tours, was an excellent guide, and we really enjoyed having him. Our itinerary covered a broad swathe of Tokyo, while being interesting and engaging.

The day started with a visit to the Sensō-ji temple, a Buddhist temple in Asakusa.

Driving across the city, through a number of districts we would revisit later, like Akihabara, Nihonbashi, and Ginza, we then arrived at Shibuya, where we drove through the famous Shibuya Crossing before parking, and heading to lunch. Lunch happened at the fascinating Uobei Sushi, a fascinating sushi place where your dishes are ordered on touch screen and delivered to your table via high-speed 'train'.

Unfortunately I have no photos of the interior, but I'd recommend the link above, which has some videos of the place.

Unfortunately I have no photos of the interior, but I'd recommend the link above, which has some videos of the place.

I think for many of us, the stand-out portion of the tour (and for me, perhaps the whole trip!) was our visit to the Meiji Shrine.

We followed up our walk through the Meiji shine area with a stroll through the very interesting neighbourhood of Harajuku.

We then proceeded to the Tokyo Metropolitan Government building to take advantage of its observation decks. 

It was a fantastic end to our tour, seeing an overview of the city that we would spend the next could of days exploring. 

Japan: Part 1: RubyKaigi

This year I was honoured and delighted to have my submission to RubyKaigi 2015 accepted. This was the entire impetus for our trip to Japan, and I was incredibly excited to finally be able to start talking about the OMR project in public.  

The Besalle-Shiodome, home of the conference. 

The Besalle-Shiodome, home of the conference. 

The conference was excellent. It was my first non-academic conference, and the schedule was filled with great talks. I'll likely share my favourite videos when they start to show up on YouTube, and as a dual track conference, I'll have to catch up on some of the ones I missed as well.  

As an english speaker, I was very happy that the conference provided English to Japanese translation services. It made it possible to enjoy some of the excellent content from the Japanese conference speakers, for example, @hsbt's entertaining talk on Ruby's test suites. I was really impressed with the live translation, so many thanks to the translation team, and to the organizers for hiring them. 

View from the speakers podium in Hall A, though, not after my talk, as I totally forgot to take a picture like this after I spoke. 

View from the speakers podium in Hall A, though, not after my talk, as I totally forgot to take a picture like this after I spoke. 

People tell me that my talk went well. It's hard for me to remember myself, from inside of the speakers-fugue I get into. I'll have to watch the video when it's available to confirm. It felt like it went OK, and I was pretty delighted with the questions I got. 

I also really enjoyed talking with members of the Ruby community as well. It was nice to start to feel out their needs as a community. Though Kaigi has helped a lot, I am still ultimately an outsider to the Ruby Community, so I really appreciated everyone who helped me to understand their usage of Ruby, and their understanding of the needs of Ruby applications and how OMR might be able to help them. 

I didn't go alone to RubyKaigi. Two colleagues of mine from Ottawa also went, to speak about our experiments with replacing Ruby's existing garbage collection technology with OMR GC technology. You can see their slides here. I enjoyed sitting in the audience for their talk; It managed to explain everything we were doing, while also getting a couple good laughs from the audience! 

Overall, I really enjoyed RubyKaigi. I hope that over the next six months we can make enough progress on OMR to warrant getting talks accepted to RubyKaigi 2016, which will be held in September, in Kyoto. Next time though, I'll be prepared for picking up a conference-cold, and bring medicine... 

Thanks again to the organizers, staff, and helpers for making the conference great. Thanks as well to the sponsors, for making the conference and excellent parties possible. 

Japan: Part 0

As is traditional... because I'm doing it now, therefore making it the start of the tradition, I am posting a preview of my trip to Japan, while sitting in Terminal 2 of Narita airport.

Unprocessed, Directly from Camera

More will come once I am home. I am thinking this will end up being a series of posts, as it would likely be too much for one post. 

My Kaigi talk's video hasn't been posted yet, however, I can share the slides below.

I'll have more thought on Kaigi once I have had more time to digest the trip. In the mean time, please, download our Tech Preview, and let use know what you think of it! 

 

What Have I Been Up To?

So, I've been cagey about writing about work here. While it's no longer a secret what I've been up to, I guess I still have a residual amount of hesitance to writing about my work. So here I am, trying to push back against my hesitance! 

JavaOne

JavaOne was last week, and IBM had some representation, including some people I work with. 

Perhaps the most important presentation for sharing what I'm working on, was that of my team lead, Daryl Maier, who presented the following on Wednesday (video here).

In it, he covers the work I'm most closely connected with: The refactoring and reshaping of an existing runtime system into a language agnostic set of recyclable components, which we want to open source!

Our focus, as the JIT team has of course been on the refactoring of the JIT compiler, however, other teams in the IBM Runtimes area are also involved.For example, below is a slide deck from Charlie Gracie describing the Garbage Collection portion of the effort. 

In addition to refactoring, my personal focus has been on the Ruby JIT, improving functionality, and exploring approaches to compilation for Ruby.

I've learned an immense amount about virtual machines, JIT compilation and software engineering over the last year or so. I'm planning on doing some in-depth writing about the JIT, and I will link to / republish it here as soon as I've gotten to it.

I'll also be presenting at a conference next month!  (More on that later!) 

One last thing: If any of this sounds interesting, if you have questions, or want to come work with us? Drop me a line: magaudet <> ca.ibm.com!, @MattStudies

Learn your tools: GDB and Replay

Lesson

Pay attention to what your tools give you. Sometimes it's exactly what you want. 

Story

I have been trying to figure something out inside the Ruby interpreter for a couple of days now. Trying to find something that happens only after hundreds of method executions can be painful; Putting a breakpoint is difficult when the breakpoint will be executed hundreds of thousands of times before it becomes interesting. Conditional breakpoints help, but still aren't perfect, as sometimes formulating the right condition can be difficult.

Mozilla's rr put me in the mind of replay. I even went so far as to find a machine to run it on . Turns out however, Ruby, or our JIT hooked up to Ruby uses a system call unimplemented in rr, and so it didn't work.

While looking for something else though, I noticed the replay family of commands in GDB's help menu. Some googling led to the documentation. Not going to lie though, it really took the tutorial to help me get a handle on it.

What a revelation!

Replay allowed my to very quickly find something I'd spent the day before trying to track down.

reverse-step, you are a dear friend now.


What about rr? As it turns out, for my issue, rr is almost certainly overkill. rr aims to catch non-deterministic failures; where mine is perfectly deterministic. I do hope to spend more time playing with rr though, as it's very cool tech.