Skip to content
Raincode Labs Logo
  • Home
  • Dragons
  • Services
  • Podcast
  • Mainframe
    • PACBASE
    • DATAKOM
    • DSL
  • Academics
  • Careers
Contactarmin2016-10-25T22:49:58+00:00




    RAINCODE LABS HEADQUARTERS

    Rue de la Caserne 45
    1000 Brussels
    Belgium

    Phone: +32 2 522 06 63

    RAINCODE LABS INDIA

    #1144, Guru Nilayam, 3rd Floor
    Sector 2, HSR Layout Bangalore
    560 102 India

    Phone: +91 99450 47258

    NAVIGATION

    • DATAKOM
    • PACBASE
    • DSL
    • Academics
    • Partners

    CONTACT US

      Copyright 2012 - 2026 Raincode Labs | All Rights Reserved
      LinkedInFacebookTwitter
      Page load link
      General application form

        Julien Verlaguet
        Audio file

        We Speak Your Language S01 E01


        Intro:
        Welcome to ‘We Speak Your Language’, the podcast for computer language geeks and
        nerds.
        This first episode is hosted by Jan Vitek and is brought to you by Raincode Labs. Enjoy.


        Jan:
        Welcome to ‘We Speak Your Language’, a new podcast about programming languages and the
        people
        who create and work on them. My name is Jan Vitek and I’ll be your host today. Our guest
        today
        will be Julien Verlaguet.
        I
        have known Julien for over 7 years. We met when I was on sabbatical in Palo Alto. Julien was
        working
        with Facebook, and we had a shared interest in adding static types to ugly dynamic
        languages.
        In my case, I was interested in adding types to R, and Julian, while he was working at
        Facebook,
        so PHP was his poison of choice. Since then, the type PHP, which is called Hack, has been
        widely
        used internally in Facebook and open sourced for external consumption. Julien has now
        moved
        on to a new language project called Skip, I will ask him questions about both of these
        topics
        during this session.


        Julien
        : I’m Julien Verlaguet. I’ve been working most of my career for Facebook for close to 10 years, I
        joined
        in 2009. At first my position was around static analysis and then it became clear that we
        needed
        more properties in PHP. That’s when the idea started to float around to create a dialect of
        PHP
        called Hack which was one of the main contributions and main projects I worked on at
        Facebook.
        After, I worked on Skip, which is another programming language for incremental
        computing,
        the idea to work on Skip came after working on Hack. So that’s me and that’s more or
        less
        the world I’ve evolved around in programming languages Hack and Skip.


        Jan:
        I suppose a fair question would be to ask you how Hack came to be.


        Julien:
        That’s a good question. There were a lot of different factors. Back then Facebook had an
        evolving
        PHP code base, and back in those days PHP was still very much the dominant language.
        Today
        Facebook has many services, there was a lot of acquisitions for example Instagram which is
        written
        in Python. Now the ecosystem has changed but back then it was still very much PHP centric
        and
        as the codebase was growing, we were running into problems to do simple analysis such as
        refactoring.

        I was in the security engineering team, and we had problems to track, for example, the places
        where
        you could have forgotten to escape something or where you did something wrong in terms of
        security.
        I was working on analysis tools back in those days and it became clear that we were
        running
        out of juice, the analysis we were writing was working, but on very small examples and at
        the
        scale of Facebook we were running out of options to make the codebase better.
        So,
        the original idea around Hack was not to do a mass migration as the one that ended up
        happening,
        but the idea was to create a subset of PHP that was going to be strongly and statically
        typed
        and the original intent was to have that subset be used by experts, for example the people
        who
        write the cryptographic library, the people who write things that are critical to the codebase,
        that
        was the original intent.
        However,
        after it was originally adopted, we realized that it wasn’t going to be possible to have
        subsets
        of the codebase that are so well isolated that you can actually type them, so there were too
        many
        things going in and out of that subset that as we were working with it was clear that we
        ne
        eded to have a better interop between the two. After that the language loosened up in the sense

        that the first version was meant to be sound, and then it became clear that it wasn’t going to fly,
        there was just too much code that was not going to type check this way, and so the language
        changed to become more like PHP but with a type system on top of it.

        Jan: What was your first thought when you saw a large program written in PHP?
        Julien:
        I know what you’re trying to do here, you’re trying to get me to bash PHP! It depends on the
        program,
        because there are very different kinds of PHP code and we figured this out once Hack was
        open
        sourced – we went out there trying to figure out where Hack could be used in
        existing
        projects, and it turned out that the kind of PHP that was written at Facebook at the time
        was
        very different from the kind that you see in most open–source projects out there.
        The
        typical open–source project, what I would call ‘PHP old school’ is where you have a bunch of
        statements
        that are global statements. You take these global statements, and you make a couple of
        SQL
        queries and then you spit out some HTML directly in the page. That style comes with a lot of
        problems,
        one of these problems is security, for example whether you escaped the URL correctly
        and
        similar issues. It turns out that even if you think you did, you probably didn’t, and so I wouldn’t
        say
        I’m a fan of that type of PHP, what I like is programs that work well and don’t have security
        problems.
        But then the other kind of PHP, the more modern version looks similar to an untyped
        Java,
        if you will. The object model is close to Java, it’s not exactly the same for obvious reasons, but if
        you
        take that kind of PHP and you a semi reasonable type system to it, you have an experience that
        is
        pretty good.


        Jan:
        I’ve heard some people talk about these retroactively added type system as lipstick on pigs.
        I was wondering what your opinion is, can you make it better than that?


        Julien:
        Well, I think they’re right, it is lipstick on a pig some sense. Firstly, your problem is either,
        you
        create a type system that is good, the kind of type system that you would design if you were
        designing
        the language from scratch. The problem with those systems is that you’re going to break
        compatibility
        with a ton of code, let me give you a concrete example. One of the main features of
        Hack,
        and one that you don’t find in that kind of type system typically is the option type. Very early
        on
        we wanted an option type and typically it’s the kind of type that you don’t find in those types of
        languages.
        Normally NULL is compatible with everything else and that’s it, except that in PHP, NULL
        is
        really evil, because it can turn into anything, instead of giving you a full stop with a null pointer
        exception,
        which is annoying but fixable, PHP will just silently convert it into whatever it wants, and
        you
        end up with writing zero in a database out of nowhere.
        Clearly,
        we wanted a type that captures the fact that something can be NULL as a result of that. Now
        the
        problem is that now you have a type system where you want an option type, that’s great, but
        what
        are the consequences? There are a ton of APIs that return NULL, and when they do, it’s kind of
        a
        mistake, it’s an error case, a concrete example of this is array access. When you access an array in
        PHP,
        first of all an array is a very strange thing – but we’re just going to assume it works like a C or a
        Java
        array, which it isn’t, but let’s just assume that for now. Typically, in a normal programming
        language,
        if you do an access that’s out of bounds, it’s going to throw, but not in PHP, in PHP will it
        give
        you back NULL. Now, you are designing the language and you have that horrible choice where
        either
        you the make type correct, then when you access something out of bound, you get an option
        type
        that you actually have to check for NULL and everybody is going to hate you, and nobody is
        going
        to use your language. Or you lie. You say no, the type is T, you’re accessing an array of T and it
        comes
        back as a T. And now you have something that’s usable, but now you have a type that’s a

        Jan: What would you do if you weren’t involved in languages and tools for programmers?

        Julien: Can it be computer science?

        Jan: Anything.

        Julien: I can still work as a programmer, right? This is a tough one.
        I’ve
        always been fascinated with 3D graphics. But I really don’t know much about that. I spent a year
        and
        a half working on AI at the Facebook lab in New York, and that was fascinating. I really enjoy
        system
        programming, I could see myself work hacking on kernels or things like that.
        In
        fact the answer is pretty much all of programming except for the web. Just working on CSS and
        HTML
        I think I would go do something else, I would stop programming, so that’s how much I hate
        CSS.

        Jan: So, our next question is what would you do if you weren’t involving involved in computing at all?

        Julien: Probably maths. That was my second strong suit when I was in school, the two subjects that I
        was
        really good at was computer science and maths, but maths I was less talented, so if I if I look at
        the
        people who are really good at maths, I wasn’t I wasn’t coming close to them and I found it less
        enjoyable.
        So, thinking of how you’re going to prove something, I find it enjoyable, but thinking of
        how
        you’re going to program something, I find it more enjoyable because it runs and it’s kind of
        magic.
        You press that button, and it just does things and every time that happens, I’m like a child.
        But
        to answer your question, maths.

        Jan: How old were you when you wrote code for the first time?

        Julien: I believe I was seven years old. My parents bought me an Amstrad, I don’t know if you
        remember
        those? I was going on with the Amstrad CPC 464plus I believe was the name of the beast.
        Of
        course, because I was seven or eight years old, I wanted to play video games. But the problem
        with
        that Amstrad was that it was coming with games that you had, you had to buy tapes and put
        the
        tapes in etc., and my parents would not buy me those. So, I had this big book about basic and at
        the
        end of the book there were games, but the games were written down, so you actually had to
        write
        down the code off the video game to be able to play the game. What ended up happening is
        that
        I was copying this code without understanding what was going on. But obviously, it was never
        working
        because I was making mistakes as I was copying. So, then I was frustrated, and I needed that
        bloody
        thing to run, and as a result of that, I started debugging the code, and as a result of that,
        well
        I was kind of forced to understand what was going on and so that’s how I got involved in in
        programming.

        Jan: What software project would you have loved to be part of?

        Julien: Oh wow, well there are quite a few. Definitely the OCaml compiler, because they were my
        heroes
        when I was growing up. Leroy and OCaml at Inria, that was kind of the grail of what awesome
        people.
        But then there are quite a few others, I would have loved to be involved in Linux at the time
        where
        it came to be, but I was too young to be involved, but I think these are the two major ones,
        OCaml
        and Linux.

        Jan: What do you consider to be the most important quality in for someone in our trade?

        Julien: I have worked with a lot of people, and I think the one trait is obviously that you need some
        level
        of intelligence to be a good programmer. So this is this is true, but I would say that the level of
        intelligence
        you need is relatively low. You don’t have to be a genius to program well, and quite

        frankly, if I look at my career, the people who’ve achieved the most were rarely, those who were the
        smartest,
        the thing that they had was grit. So they kept on going no matter what.
        But
        I would say the most important one is kindness because without kindness you’re never going to
        go
        anywhere. You’re not going to go very far, well, It’s not entirely true. I’m going to answer in two
        phases.
        I would say the most important thing in our trade to succeed is grit. The thing that I care the
        most
        about is kindness. Sure, if you have a lot of grit and you keep on going no matter what you
        know
        they throw at to you, you’re probably going to be successful, and that’s probably going to be
        true
        in a lot of things, not just computer science. But if you’re a jerk, you’re probably working at like
        5%
        of what you could be doing because there are a ton of smart people who will not want to talk to
        you.
        I mean, think about it right, you wake up, you go somewhere, that’s called work. I mean not
        these
        days because of COVID, but at the end of the day, what I think most people want, including
        myself,
        is to be happy. And who wants to go every day to talk to a jerk? I don’t want to talk to you if
        you’re
        a jerk. I don’t have time for this and so at some point in life, I think when you’re young and
        stupid,
        such as I was at some point and I’m still stupid, just not so young anymore, you’re thinking
        ‘That
        guy is so good. I’m going to put up with how much of an a****** he is. Just because he’s so
        good.’
        I’m going to learn so much from him right, but. I think it’s not a good proposition, eventually
        you’re
        going to be sad, you’re going to be tired, you’re going to want to surround yourself by kind
        p
        eople, including at work kind of people you want to have a beer with and you’re going to produce
        much
        more and you’re going to be much happier, so I would say kindness is at the top of my list.


        Jan:
        If there was one language you wished never existed, you could erase from the planet, which
        would
        that be?

        Julien: Oh wow, that’s a that’s a good question. I really don’t know. I would say JavaScript. The three
        mainstream
        languages that I detest the most are PHP, JavaScript and Python. But the two others you
        k
        ind of have a choice, you’re writing PHP because you want to write PHP. And now if you use Hack,
        you’re
        actually better off and then you have plenty of other object–oriented languages out there that
        you
        can choose from. Same issue with Python, you’re writing Python, you can probably write
        whatever
        you’re writing right now in Python in Go or whatever better alternative there is out there,
        OCaml
        for that matter. But JavaScript, you’re stuck with it, if you want to do anything meaningful in
        the
        web, which is pervasive today, you’re stuck with it.
        If
        I had a magic wand, then I could say OK, you’re not going to design this thing in two weeks, and
        you’re
        going to have a community of people who know what they’re doing designing something for
        the
        web and do it well, that’s probably what I would do, and I would add that it’s also because the
        language
        community did not do their job. It’s true that back then they were, you know, spending all
        their
        time talking about monads and how they were going to compile lazy languages efficiently,
        which
        is useful and interesting. But the world needed language for the web, and nobody was
        thinking
        about that people were thinking about monads etc. So, in a way, it’s also a failure from the
        language
        community not to have provided at the time the language that people needed.

        Jan: Lastly, what would you like to be remembered for?
        Julien:
        Oh god, I don’t think I want to be remembered. I really like to be anonymous, but I was happy
        at
        some point to have a little bit of exposure with Hack. I was going to conferences, and I was talking
        to
        people and what I really liked about it was that it was an opportunity to meet a lot of interesting
        people,
        especially people who were users of the language that I was building, that was always super
        excitin
        g. I was happy to have some exposure because of that, but outside of that, if when you typed
        my
        name in Google nothing appeared, I would be happier.

        I like to be in a cave, I like to be by myself with my friends playing with my toys. And I know it’s a
        litt
        le bit in contradiction, but I’m incredibly proud of Skip, and I mean that’s the thing I’m the
        proudest
        of in terms of design. That is really the thing that I’m proud of, but do I want to be
        remembered
        for it? No, not necessarily. I’m happy that it works. I’m very happy that I get to play,
        and
        I get to write awesome code with it now, the goal is not so much posterity.

        Jan: Thank you Julien for answering our questions. This is the end of the broadcast of ‘We Speak
        Your
        Language’ and see you next time.

        Julien: Thanks a lot for having me that was very fun.
        Outro:
        We hope you enjoyed this episode of ‘We Speak Your Language’ and stay tuned for the next
        episode
        for more nice talks about computer languages and programming. Have a great day.

        Submit your response!

          By clicking "Send", you accept the terms of the contest.
          I accept the terms.

          test

          Xtrm.tech

            Download the White Paper CA Gen

              Go to Top