← All conversations
Languages

SF Scala: Q&A with David Yu, Creator of Protostuff.io, by Alexy Khrabrov

David Yu ↗With Alexy KhrabrovMay 26, 20158:44

FunctionalTV interview or Q&A with David Yu.

Follow the words

Read the transcript

oh hello everybody i'm alexi kravrov the hello everybody i'm alexi kravrov the organizer of sf scala and here we are on organizer of sf scala and here we are on location at radius location at radius for a special meetup about uh google for a special meetup about uh google protocol buffers protocol buffers uh we had to talk today uh one on scala uh we had to talk today uh one on scala implementation and one on protostaff uh implementation and one on protostaff uh and here with us we have david yu and here with us we have david yu who is the creator of the original proto who is the creator of the original proto staff uh project which is at staff uh project which is at protostaffaio protostaffaio welcome david it's great to have you welcome david it's great to have you here yes my pleasure uh i wonder if this here yes my pleasure uh i wonder if this is one of the oldest projects about is one of the oldest projects about protocol buffers right so you start it protocol buffers right so you start it and you keep doing it so not often and you keep doing it so not often people often start the projects and they people often start the projects and they drop them but you keep doing this drop them but you keep doing this project so can you tell us how did you project so can you tell us how did you start this and what is so exciting about start this and what is so exciting about protocol buffer so you still keep doing protocol buffer so you still keep doing this after all these years this after all these years okay so okay so i started it because i found protocol i started it because i found protocol buffers to have a very good design buffers to have a very good design so so it has all the features uh schema it has all the features uh schema evolution evolution and compact binary size and it has and compact binary size and it has implementation in lots of languages implementation in lots of languages so it's easy to get started and you just so it's easy to get started and you just generate the code for your client side generate the code for your client side server side for your data everything server side for your data everything so so um um for me for me when i try when i created protosoft when i try when i created protosoft i was using it i was using it internally for my projects so internally for my projects so um along the way um there were many um along the way um there were many feature requests from the feature requests from the from the users so i tried to improve so from the users so i tried to improve so one uh one of the one uh one of the one of the modules that are one of the modules that are feedback base is the process of runtime feedback base is the process of runtime so i wasn't planning on adding that so i wasn't planning on adding that because how i use photoshop is purely on because how i use photoshop is purely on code generation code generation so so protocol runtime and protocol runtime and also the protocol graph so also the protocol graph so some users use it they also use it on some users use it they also use it on android android so i've gotten feedback that so i've gotten feedback that it works there before i had a phone so i it works there before i had a phone so i was happy about it so i couldn't we was happy about it so i couldn't we continued to continued to fix bugs because there were already some fix bugs because there were already some users on the dose of runtime and graph users on the dose of runtime and graph and for me it were the core projects um and for me it were the core projects um over time i need i need another feature over time i need i need another feature that i want like the pipe it came later that i want like the pipe it came later so so i continued adding that and maintaining i continued adding that and maintaining that that so that's basically so that's basically i'm creating proto stuff and maintaining i'm creating proto stuff and maintaining it because i use it internally in my it because i use it internally in my project okay got it uh and so uh it's project okay got it uh and so uh it's very interesting so you're from the very interesting so you're from the philippines which city philippines which city cebu yeah so i didn't know much about it cebu yeah so i didn't know much about it i went to wikipedia i think and i found i went to wikipedia i think and i found it at a port it at a port it's a poor city it's a big city right it's a poor city it's a big city right and so uh and so uh you're the first speaker from the you're the first speaker from the philippines at sf scholar and uh a lot philippines at sf scholar and uh a lot of people doing you know portal buffs of people doing you know portal buffs are in big data and they're all in the are in big data and they're all in the bay area i'm sure probably some bay area i'm sure probably some companies try to hire you companies try to hire you from the bay area but you are still in from the bay area but you are still in the philippines so can you tell us uh the philippines so can you tell us uh you know you know did you ever like feel the pool of the did you ever like feel the pool of the bay area all the startups you know when bay area all the startups you know when you come here did you ever want to move you come here did you ever want to move here what is the uh startup scene in the here what is the uh startup scene in the philippines like and kind of how does philippines like and kind of how does this work you know you're there and this work you know you're there and we're here we work on the same thing we're here we work on the same thing yeah yeah so yeah yeah so basically um basically um my father has a my father has a big business there food business big business there food business and and um instead of yeah i could have um instead of yeah i could have applied here but i wanted to help our applied here but i wanted to help our business also so i wanted to make sure business also so i wanted to make sure that that um um i use protostaff and i use protostaff and i improve our business through i improve our business through automation our inventory automation our inventory our sales so it's most mostly the our sales so it's most mostly the beneficiary of prototype goes directly beneficiary of prototype goes directly to my father's company oh god okay cool to my father's company oh god okay cool so so they are helping the business the so so they are helping the business the business and the local economy yeah yeah business and the local economy yeah yeah yeah yeah this is great this is awesome yeah yeah this is great this is awesome this is great uh cool and so and i this is great uh cool and so and i noticed uh so i found about proto stuff noticed uh so i found about proto stuff through some big data people right and through some big data people right and so you obviously kind of it's used in so you obviously kind of it's used in many many uh in you know some of these projects so uh in you know some of these projects so i'm just wondering kind of uh is this i'm just wondering kind of uh is this something something why you keep working on this like you why you keep working on this like you have users in different projects have users in different projects right who who who applied this is right who who who applied this is another thing like you you because you another thing like you you because you you help them fix bugs you help them fix bugs right right so so what was the question well the question what was the question well the question is like is this some motivation also for is like is this some motivation also for you the users who keep you know finding you the users who keep you know finding proto stuff and using the different proto stuff and using the different projects yeah yeah so for projects yeah yeah so for for the users that use it in a in big for the users that use it in a in big data so i just they usually message me data so i just they usually message me directly and some do it on the issues so directly and some do it on the issues so for me for me if i find a bug if i find a bug on the that's critical i always try to on the that's critical i always try to fix it immediately because i don't want fix it immediately because i don't want uh because yeah it direct is also uh because yeah it direct is also impacts me because i'm using it in impacts me because i'm using it in production in our inventory system yes production in our inventory system yes so so so it's uh it's basically so it's uh it's basically the core stuff everything there that has the core stuff everything there that has bugs directly impacts me so that that's bugs directly impacts me so that that's what that's one of the reasons why i try what that's one of the reasons why i try to maintain it as fast to maintain it as fast as um often as um often and fix bugs as early as i can okay and and fix bugs as early as i can okay and i know you were attending a gwt uh i know you were attending a gwt uh conference here can you tell us a little conference here can you tell us a little bit and you mentioned also that your uh bit and you mentioned also that your uh prototype is interacting with the prototype is interacting with the browser can you tell us a little bit browser can you tell us a little bit about how that uh part works yeah so about how that uh part works yeah so prototype as a the public project is prototype as a the public project is more on serialization more on serialization in code generation yes that's just and in code generation yes that's just and also also a few templates for the uh java javabean a few templates for the uh java javabean pls and gwt overlays pls and gwt overlays so so in my internal project it's probably in my internal project it's probably bigger than the processor project bigger than the processor project uh uh i have also have internal uh uh i have also have internal libraries and most of them are for libraries and most of them are for everything so everything so when i uh when i uh i notice in my if you notice in i notice in my if you notice in in the bio i said i prefer a lean stock in the bio i said i prefer a lean stock yeah so basically my stock is yeah so basically my stock is engine x engine x and the jvm and level db so that's it and the jvm and level db so that's it and there's no frameworks uh photo stuff and there's no frameworks uh photo stuff is the framework that connects it all so is the framework that connects it all so i have in photostuff in my internal i have in photostuff in my internal library i have a data layer library i have a data layer so i declaratively i use the protoforma so i declaratively i use the protoforma to declaratively to declaratively index the fields and i store it index the fields and i store it and also to store the and also to store the into the database i have a into the database i have a so basically in the server side i have a so basically in the server side i have a database object from other stuff database object from other stuff and then an rpc layer and then an rpc layer still managed by photoshop and then still managed by photoshop and then a client-side layer using gwt a client-side layer using gwt and and another js javascript library named view another js javascript library named view v-u-e so i integrate v-u-e so i integrate view and gw3 view and gw3 and i communicate and i communicate the library the library uh communicates directly in the server uh communicates directly in the server using the protostaff protocol okay okay using the protostaff protocol okay okay so it's basically so it's basically my in my own framework that i did not my in my own framework that i did not publish yet publish yet and so but this closure is short nginx and so but this closure is short nginx closure uh is it just for nginx or are closure uh is it just for nginx or are you using any closure in your stack no you using any closure in your stack no no no i don't use clojure i just no no i don't use clojure i just noticed that his implementation was fast noticed that his implementation was fast so i was wondering so i was wondering what made it fast what made it fast okay so because uh i usually over okay so because uh i usually over optimize and use optimize and use and especially in the jni side i try to and especially in the jni side i try to make it as fast as possible and do bulk make it as fast as possible and do bulk processes because of the overhead processes because of the overhead so so i i i noticed that he was using jna in a i noticed that he was using jna in a different way so when i found out that different way so when i found out that about his hacks then i applied it also about his hacks then i applied it also oh cool got it well that was i think a oh cool got it well that was i think a really great project and you know very really great project and you know very great insights i think you know people great insights i think you know people learn a lot so thank you very much david learn a lot so thank you very much david and we're always happy to have you here and we're always happy to have you here and talk about your your study stack and and talk about your your study stack and technology yeah thank you thank you for technology yeah thank you thank you for having me you

Recovered English captions. Automatic transcription may contain errors.

Keep exploring

Follow the guest, their work, and the ideas behind this conversation in the Devreal knowledge graph.

David Yu on Devreal ↗
Independent by design

Your player.
Your subscription.

One permanent feed. Listen in the podcast app you love, with the conversations always at home here.

https://struct.fm/feed.xml
113 audio episodes available in the feed.