Skip to content
Raincode Labs Logo
  • Home
  • Dragons
  • Services
  • Podcast
  • Mainframe
    • PACBASE
    • DATAKOM
    • DSL
  • Academics
  • Careers
  • Blog
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 - 2021 Raincode Labs | All Rights Reserved
      LinkedInFacebookTwitter
      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.

        Xtrm.tech

          test

          Download the White Paper CA Gen

            Go to Top