[et_pb_section fb_built=”1″ _builder_version=”3.22″ custom_padding=”0|0px|0|0px|false|false” fb_built=”1″ _i=”0″ _address=”0″][et_pb_row _builder_version=”3.25″ _i=”0″ _address=”0.0″][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” _i=”0″ _address=”0.0.0″ custom_padding__hover=”|||”][et_pb_post_title featured_image=”off” _builder_version=”3.17.6″ _i=”0″ _address=”″][/et_pb_post_title][/et_pb_column][/et_pb_row][et_pb_row column_structure=”2_3,1_3″ make_equal=”on” _builder_version=”3.25″ _i=”1″ _address=”0.1″][et_pb_column type=”2_3″ module_class=”vertical-center” _builder_version=”3.25″ custom_padding=”|||” _i=”0″ _address=”0.1.0″ custom_padding__hover=”|||”][et_pb_text _builder_version=”3.29.3″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_padding=”|||” _i=”0″ _address=”″]

Arnaud Bos is a software developer and functional programming enthusiast at MonkeyPatch and Toulouse JUG Leader.  After some early mobile apps development, he has switched focus to backend and distributed systems projects, and soon discovered the joy of Clojure.

[/et_pb_text][/et_pb_column][et_pb_column type=”1_3″ module_class=”vertical-center” _builder_version=”3.25″ custom_padding=”|||” _i=”1″ _address=”0.1.1″ custom_padding__hover=”|||”][et_pb_image src=”https://voxxedromania.ams3.cdn.digitaloceanspaces.com/2019VDCLUJ/Speakers/arnaud-bos-700.jpg” url_new_window=”on” align=”right” align_tablet=”center” align_last_edited=”on|desktop” _builder_version=”3.29.3″ custom_margin=”0px|||” border_radii=”on|100%|100%|100%|100%” _i=”0″ _address=”″][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”3.25″ hover_enabled=”0″ _i=”2″ _address=”0.2″][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” _i=”0″ _address=”0.2.0″ custom_padding__hover=”|||”][et_pb_text _builder_version=”3.29.3″ _i=”0″ _address=”″]

[/et_pb_text][et_pb_text _builder_version=”3.29.3″ hover_enabled=”0″ _i=”1″ _address=”″]

Q. Tell us a bit about yourself. What are your hobbies and interests?

I’m married and father of two, so family is obviously occupying most of my time. Biking, hiking and skying are the kid’s favorite activities so we try to spend time outside as much as possible.
I also climb 3 to 4 times a week and commute from-to work by bike 2 hours everyday, so I guess sport is an important part of my life (pro-tip: it also gives plenty of time to listen to podcasts!).
I’m also a passionate developer so I spend way too much time in front of a computer even outside of work!
When I’m not trying things, and starting more side projects than I will ever finish, I run our local Toulouse Java User Group, so planning meetups, finding speakers and sponsors, managing video production equipment and post-production tasks take me a few hours each month.


Q. Why did you select this topic for your session at Voxxed Days Cluj 2019?

For a few years I’ve wanted to gain more insight and experience related to concurrent programming. Fibers or user-threads have started to sparkle my interest in 2013 with the announcement of Clojure core.async.
At the time I didn’t understand every aspects of the value proposition, but I grew fond of the concept and then, a few months later, I stumbled upon Quasar’s fibers which has a Clojure/core.async binding named Pulsar, and I longed-for the day I could use it in production.
Fast forward a few years, after having used Reactive Streams quite heavily in a micro-services production environment, I started to grow frustrated with the uneasy aspects of feels-like-hacks combination of Rx operators to bypass the complexity of implementing the one operator missing to my use case. And I suffered from debugging and bug forensics pain too.
At some point a new use case came up to implement a scheduling service and we came up with a design that lended itself well in an actor model. So we looked at our available options on the JVM and Quasar was a good fit.
From there I’ve started to dig deeper into the internals of Quasar, the continuations, the fibers, and when googling around for what Ron Pressler (Quasar lead dev) was up to now, I was delighted to find out he was leading Project Loom.
I then started to study on Loom, and here we are 🙂


Q. Who should attend your session? 

Any developer having familiarity with concurrency or having used Reactive Streams implementations and wants to know what’s planning ahead into Java.
Experts will not learn anything. Juniors may gain more insight on what the fuss is around “blocking/non-blocking” calls and sync/async.


Q. What are the key things attendees will take away from your session?

Mostly that blocking/non-blocking and sync/async concepts can be orthogonal from a library user point of view, and that it’s not because the state of the Java platform currently enforces asynchronicity (or Rx) in order to be non-blocking that we’re doomed with asynchronous or “reactive” APIs forever.
And also that continuations are freaking awesome!


Q. Aside from speaking at Voxxed Days Cluj, what does the year review look like for you?

A fantastic year during which I’ve learnt tons of stuff on concurrency, programming languages and distributed systems.
I’ve taken the lead of our local JUG too, and it feels great to be an actor of the development community. Finally it’s the first year I have the chance to give presentations at national and international conferences (Toulouse DevFest 2018, France JUG Summer Camp 2019, Voxxed Days Ticino 2019) so that definitely feels like a new achievement unlocked 🙂


Q. What are your plans for the next year?

More experiments on high-performance services (C100K, C1M problems), deeper study of continuations and then more distributed systems. I’ve also started to experiment TLA+ so that’s definitely something I’ll keep using as much as I can.
And give talks about all of this if given the chance to!


[/et_pb_text][et_pb_button button_url=”https://romania.voxxeddays.com/cluj-napoca/2019-10-30/#speakers” url_new_window=”on” button_text=”SEE ALL OUR SPEAKERS” button_alignment=”center” _builder_version=”3.22.1″ custom_button=”on” button_font=”||||||||” button_use_icon=”off” box_shadow_style=”preset1″ button_text_color_hover=”#ffffff” button_bg_color_hover=”#18b9f0″ button_text_size__hover_enabled=”off” button_one_text_size__hover_enabled=”off” button_two_text_size__hover_enabled=”off” button_text_color__hover_enabled=”on” button_text_color__hover=”#ffffff” button_one_text_color__hover_enabled=”off” button_two_text_color__hover_enabled=”off” button_border_width__hover_enabled=”off” button_one_border_width__hover_enabled=”off” button_two_border_width__hover_enabled=”off” button_border_color__hover_enabled=”off” button_one_border_color__hover_enabled=”off” button_two_border_color__hover_enabled=”off” button_border_radius__hover_enabled=”off” button_one_border_radius__hover_enabled=”off” button_two_border_radius__hover_enabled=”off” button_letter_spacing__hover_enabled=”off” button_one_letter_spacing__hover_enabled=”off” button_two_letter_spacing__hover_enabled=”off” button_bg_color__hover_enabled=”on” button_bg_color__hover=”#18b9f0″ button_one_bg_color__hover_enabled=”off” button_two_bg_color__hover_enabled=”off” _i=”2″ _address=”″][/et_pb_button][/et_pb_column][/et_pb_row][/et_pb_section]