[et_pb_section fb_built=”1″ _builder_version=”3.22″ custom_padding=”0|0px|0|0px|false|false” global_colors_info=”{}”][et_pb_row _builder_version=”3.25″ global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_post_title comments=”off” featured_image=”off” _builder_version=”4.14.7″ global_colors_info=”{}”][/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″ global_colors_info=”{}”][et_pb_column type=”2_3″ module_class=”vertical-center” _builder_version=”3.25″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text _builder_version=”4.14.7″ background_size=”initial” background_position=”top_left” background_repeat=”repeat” custom_padding=”||0px|||” hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]

Gabriel Bornea is a software engineer who’s been working with JVM languages for over 10 years now. As team lead at ING Hubs Romania, his main expertise is in software architecture for risk assessment, fraud detection and global internet banking features. Before joining ING Hubs Romania, he worked as a programmer for Cegeka and Dell. He is a Scala, F#, and Kotlin enthusiast and founder of the Kotlin user group in Bucharest. Gabriel is into automatic testing and reactive programming and believes that typed functional programming is the best way to write and develop applications with increased maintainability.

[/et_pb_text][/et_pb_column][et_pb_column type=”1_3″ module_class=”vertical-center” _builder_version=”3.25″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_image src=”https://voxxedromania.ams3.cdn.digitaloceanspaces.com/2022VDCLUJ/Speakeri/Gabriel-Bornea-700.jpg” url_new_window=”on” align=”right” align_tablet=”center” align_phone=”” align_last_edited=”on|desktop” _builder_version=”4.14.7″ custom_margin=”0px|||” hover_enabled=”0″ border_radii=”on|0%|0%|0%|0%” border_color_all=”#000000″ border_color_left=”#18b9f0″ box_shadow_style=”preset1″ box_shadow_color=”#000000″ global_colors_info=”{}” sticky_enabled=”0″][/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row _builder_version=”3.25″ global_colors_info=”{}”][et_pb_column type=”4_4″ _builder_version=”3.25″ custom_padding=”|||” global_colors_info=”{}” custom_padding__hover=”|||”][et_pb_text _builder_version=”4.14.7″ hover_enabled=”0″ global_colors_info=”{}” sticky_enabled=”0″]

Performance, validation, testing, concurrency and dependency injection are some of the aspects that we have to think about when we are designing our APIs. While frameworks usually handle all of these, let’s make an exercise: drop the framework “magic” and see how we can use the Kotlin compiler to do the work for us. 

Using functional programming concepts enhanced by Arrow.kt and describing our business domain as accurately as possible will prevent bugs by increasing error discovery at compile time, reducing and simplifying (no more mocks) unit testing, thus making our programs more predictable.

[/et_pb_text][et_pb_button button_url=”https://romania.voxxeddays.com/cluj-napoca/voxxed-days-cluj-napoca-2022/#speakers” url_new_window=”on” button_text=”SEE ALL OUR SPEAKERS” button_alignment=”center” _builder_version=”4.14.7″ custom_button=”on” button_font=”||||||||” button_use_icon=”off” box_shadow_style=”preset1″ button_text_color_hover=”#ffffff” button_bg_color_hover=”#18b9f0″ global_colors_info=”{}” 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”][/et_pb_button][et_pb_button button_url=”https://romania.voxxeddays.com/cluj-napoca/voxxed-days-cluj-napoca-2022/#pricing” button_text=”BUY TICKET” button_alignment=”center” _builder_version=”4.14.7″ custom_button=”on” button_text_size=”28px” button_text_color=”#FFFFFF” button_bg_color=”#18B9F0″ button_bg_use_color_gradient=”on” button_bg_color_gradient_end=”#18b9f0″ button_border_width=”0px” button_font=”||||||||” button_use_icon=”off” box_shadow_style=”preset1″ button_text_color_hover=”#ffffff” button_bg_color_hover=”#18b9f0″ global_colors_info=”{}” 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|hover” button_bg_color__hover=”#FFFFFF” button_one_bg_color__hover_enabled=”off” button_two_bg_color__hover_enabled=”off” button_bg_enable_color__hover=”on” button_bg_color_gradient_end__hover=”#18b9f0″ button_bg_use_color_gradient__hover=”on”][/et_pb_button][/et_pb_column][/et_pb_row][/et_pb_section]