00:00:18programming languages are my substitute
00:00:20girlfriends yeah it’s easier to get a
00:00:23relationship with the programming
00:00:25language then with a yeah but you have
00:00:28to take her kind of your dating course
00:00:30alright since I’m going to maybe insult
00:00:35some people and you know maybe I step on
00:00:38some toes I just want to say Kelly oh
00:00:41and this is just my personal opinion
00:00:44and also I want you to you know to think
00:00:46about this and then make your own
00:00:49decisions okay
00:00:50all I want to do is make you think and
00:00:53ultimately you decide for yourself all
00:00:58right
00:01:00of course you expect a doc where I’m
00:01:05going to Cali or go and scream and curse
00:01:09and talk about that agile and scrum are
00:01:12cancer that needs to be eliminated from
00:01:14this industry right that’s what you all
00:01:16signed up for you’re all kind of have
00:01:18your beers your snacks ready and I have
00:01:23to say this dork is not going to be like
00:01:26that and and what I want to do is I want
00:01:30to take you back to a little bit of some
00:01:33recent history and in 2013 I left
00:01:39Microsoft this was when Ballmer was
00:01:42still kind of er in charge now he’s
00:01:45doing some basketball team like that’s
00:01:47way better for him
00:01:52but I left Microsoft with the goal to
00:01:56make the world a synchronous and
00:01:58reactive so I found it this small
00:02:02company applied to allottee and that was
00:02:04trying to do that and then in June and
00:02:07the first customer one of the first
00:02:11customers I had was Facebook where I
00:02:14worked with them on a language called
00:02:16hack hack is a version of PHP that looks
00:02:20like PHP but under the covers it’s
00:02:22really Oh camel okay Facebook is all
00:02:25written in hack but really it’s written
00:02:29in Okemah with hex index with PHP syntax
00:02:32so functional programming if you’re not
00:02:34doing functional programming yet you are
00:02:36already behind so who here is not doing
00:02:39functional programming okay you can go
00:02:41home now and and maybe you know you can
00:02:45do some MOOC or start some course but
00:02:47you know in few years you will be
00:02:49obsolete and and then in slightly later
00:02:55that year I started to work with Netflix
00:02:58on Eric’s Java and I guess that they’re
00:03:03sick this thing has been run a runaway
00:03:07success I think a lot of people are
00:03:09using it that has gone beyond my wildest
00:03:12dreams
00:03:13and let’s look at 24 13 14 well at
00:03:20Microsoft I did programming languages as
00:03:22a hobby but turned out there with my
00:03:25startup you know it became you know like
00:03:28a way to make money so in in April 2014
00:03:31I worked with Google on dart and there I
00:03:36helped dart to get also support for
00:03:39asynchronous programming async await and
00:03:43dart already had support for streams and
00:03:47now we put our the API in API for
00:03:49streams and now we put that in the
00:03:51language as well so dart is one of the
00:03:54few languages that has kind of you know
00:03:56complete support for synchronous
00:03:59iterators async await and streams all
00:04:03built and the language
00:04:04if you haven’t looked at dart yet I
00:04:06would really say give it a try
00:04:09just like you should get a give heck a
00:04:12try
00:04:12and then in September 2014 I gave the
00:04:16heck I’ll talk that you are all
00:04:19expecting to see but that you don’t get
00:04:22but that talk was my interpretation of
00:04:26what I saw and Silicon Valley I moved
00:04:29from the Pacific Northwest to Silicon
00:04:32Valley and I worked with a lot of the
00:04:35internet companies there and I was
00:04:37really impressed by the way they develop
00:04:41software I was really impressed by the
00:04:43way that they look at software and
00:04:46that’s what I wrote down and and I will
00:04:49talk a lot more about this in the rest
00:04:51of the talk and and then in October last
00:04:55year I added the FP 101 X MOOC where I
00:05:00tried to teach the world about
00:05:02functional programming the MOOC starts
00:05:05again October 15 the second edition so
00:05:07and don’t despair if you put up your
00:05:11hand and not doing functional
00:05:14programming and because there’s your
00:05:17chance to learn functional programming
00:05:20all right and then this astir struck on
00:05:25christmas eve 2014 i my leg was swollen
00:05:30my left leg was swollen and when I put
00:05:33on my PJs so I told my wife I said I
00:05:35don’t trust this you know my leg is all
00:05:37swollen so we went to the Stanford
00:05:39emergency room and and of course you
00:05:44know it’s Christmas Eve so you wait for
00:05:47a few hours and then the doctors can
00:05:50talk to me I said ok it’s ok you know
00:05:53probably you
00:05:54you ate curry or some salt foods you can
00:05:57go home and so I went home and I went to
00:06:02bed it’s like around 4 a.m. in the
00:06:04morning and then at 6 a.m. I got a phone
00:06:08call and I still have that phone call
00:06:10and right here on my saved messages in
00:06:15my voicemail box
00:06:17and the doctor said sir when we did your
00:06:22blood tests the white blood cell counts
00:06:25were a little bit out of whack and then
00:06:28I asked him you know what does that mean
00:06:30and you said well sir if you want to
00:06:33have Christmas with your family then
00:06:35it’s okay you can come in tomorrow so I
00:06:38did a quick google search high white
00:06:41blood cell count and that’s not good I
00:06:44can tell you it’s not good okay so what
00:06:48I did we took the car went back to
00:06:51Stanford and at 8:00 a.m. I was in the
00:06:55oncology section and I was diagnosed
00:06:57with this thing called CML chronic
00:07:00myeloid leukemia it sounds crazy but
00:07:05actually if you want to have some form
00:07:08of cancer this is what you want to pick
00:07:11it’s really what you want to pick so
00:07:13what happens and this is the Cliff Notes
00:07:15version and what happens is that you
00:07:18know you’re all our DNA kind of
00:07:21constantly gets kind of damaged and then
00:07:23your body tries to repair it and
00:07:26sometimes that repair can go wrong and
00:07:28in this case two parts of a chromosome
00:07:32kind of switch and make sure they get
00:07:34glued back together in the wrong place
00:07:36and again this is cliff notes I’m not a
00:07:39medical person so if there’s somebody
00:07:41here with medical background they will
00:07:44probably laugh but you know just trying
00:07:46to explain this in computer science
00:07:48terms so what happens it’s it’s like you
00:07:52know first thing first thing of your DNA
00:07:54and what happens you know the DNA makes
00:07:58proteins and now that this program is
00:08:01wrong so they just switch to statements
00:08:04around and it creates a protein that
00:08:07your body doesn’t recognize and that’s
00:08:09going to focus everything up well the
00:08:13nice thing about science is that they
00:08:16came up with a medication that binds to
00:08:18this particular protein it’s like an
00:08:21exception handler it catches the
00:08:23exception and that’s it so every day I
00:08:27take this pill and if I would have to
00:08:30pay it without
00:08:30insurance I would be broke so my life I
00:08:33can now can count how expensive my life
00:08:37is and it’s like a few hundred dollars a
00:08:39day for this bill but I’m happy that it
00:08:42exists and so as I said that was that
00:08:45but if that was the only story and life
00:08:49would be good right it’s just okay you
00:08:52know my DNA got messed up I pop a pill
00:08:55every day life goes on but of course
00:08:58being Eric Meyer things are never simple
00:09:00in my life and instead a couple of
00:09:06things went wrong so this was me around
00:09:09New Year’s Eve and you know I was close
00:09:14to dying because what happened is that I
00:09:17got some internal bleeding’s and and one
00:09:21of the effects of leukemia is that your
00:09:24spleen this is the thing when you’re
00:09:26running you know you feel pain in your
00:09:28left side that’s your spleen your spleen
00:09:31gets enlarged and when your spleen gets
00:09:33enlarged it takes up all the space in
00:09:35your abdominal section and so I got some
00:09:40bleeding’s for for whatever reason and
00:09:43and since there was less space the blood
00:09:48could not go anywhere so my kidneys were
00:09:50kind of pushed out I don’t know like 50
00:09:53centimeters from where they were
00:09:55supposed to be so I got like you know I
00:09:58don’t know what the doctors call it I
00:10:00could get any injury and then they’d
00:10:04have to open me up and if you’re curious
00:10:06I can show you I have like a big yo
00:10:12wound here that everything that’s soft
00:10:16in the belly they kind of opened up to
00:10:17kind of go in there I spent five days in
00:10:20intensive care
00:10:22I was nearly dead I could if I have
00:10:25wanted I could have just floated away
00:10:27and got you know just given up but I was
00:10:30fighting because you know my my journey
00:10:34wasn’t over I had to kind of you know
00:10:36still eliminate scrum and agile from
00:10:39this world so how
00:10:40I mean
00:10:47how could I die all right but anyway it
00:10:50was it was pretty pretty horrible and I
00:10:53can tell you and – wrong one of the
00:10:55things that people that happens to
00:10:59people when they are in intensive care
00:11:01they literally go crazy there’s a
00:11:03medical term for that and I can
00:11:06understand that here it’s it’s it’s a
00:11:09bizarre experience I don’t know if
00:11:12anybody here has ever been in intensive
00:11:14care and they probably know what I’m
00:11:17talking about and alright so that was
00:11:20the end of 2014 and not the kind of
00:11:24Christmas vacation I was expecting but
00:11:26hey you know I’m still here
00:11:28so early January I was released from the
00:11:31hospital
00:11:32because of the kidney moving around all
00:11:37the nerves that kind of traveled to my
00:11:41lack were displaced and and kind of
00:11:44you’re a little bit out of whack so I
00:11:47was I couldn’t walk anymore my whole
00:11:49right leg was you know I couldn’t move
00:11:52it so I had to learn to walk again
00:11:54because they I had a breathing tube and
00:11:56for a couple of days I lost my voice I
00:11:59couldn’t even speak I was so they kind
00:12:03of went in with the syringe and kind of
00:12:05injected kind of straight through my
00:12:06throat some stuff to kind of make it
00:12:08work so all kind of fun things you know
00:12:12the body is it’s kind of a remarkable
00:12:15machine and so that was fun and then of
00:12:20course here when something like that
00:12:21happens you start to think about what is
00:12:24the meaning of life what am i doing on
00:12:27this planet blah blah blah blah blah and
00:12:30and it took me literally six months six
00:12:35months to get back to normal and and it
00:12:39was it was quite a big journey but as I
00:12:43said you know and when something like
00:12:45this happens to you and you really start
00:12:48to think what do I want to do with my
00:12:50life and and then in July Mark
00:12:56Zuckerberg
00:12:57asked me about our ex and how good that
00:13:04could help solve you know giving people
00:13:06that are on 2g a better experience a
00:13:09better Facebook experience and now you
00:13:11may have seen the kind of you know the
00:13:13the article by Mark Zuckerberg
00:13:15and Bono about giving everybody access
00:13:19to the Internet well that was that
00:13:21that’s kind of you know appealed to me
00:13:23because what I wanted to do is you know
00:13:25like after this whole event can I make
00:13:29my technology kind of do something for
00:13:32real people okay so it’s great to kind
00:13:35of talk about rx and programming
00:13:37languages for other geeks but you know
00:13:41what I wanted to do is really use what I
00:13:45do for normal people for the world to do
00:13:47good for the world that’s kind of what I
00:13:50came up with after I reflected about
00:13:52life and when Mark Zuckerberg asked me
00:13:56that I said well that sounds really good
00:14:00it sounds like a nice combination of my
00:14:03technical stuff and a real opportunity
00:14:05to help people in the real world you’ve
00:14:08seen what happened now with the refugees
00:14:10here in Europe they use Facebook to kind
00:14:13of find their way it’s kind of amazing
00:14:15how this really affects normal people
00:14:19and kind of your improves their lives
00:14:21and this is something you know I think
00:14:24fits right in with the kind of new new
00:14:27Eric so just a few weeks ago I joined
00:14:31Facebook and that’s what I’m going to do
00:14:35now so um my my startup adventure was
00:14:40short but sweet and but thanks to this
00:14:42kind of big life-changing event I think
00:14:46I can spend my the few years that I
00:14:49might have on this planet you know to
00:14:51really kind of help you know the the the
00:14:55big population of this earth by the way
00:15:00if there’s questions in the end I have a
00:15:03whole bunch of t-shirts here so for
00:15:06people that ask questions they will get
00:15:08a nice Facebook
00:15:10you see here isn’t that beautiful
00:15:17all right so as I said if you look at
00:15:23you know did why I made this decision
00:15:26and first of all when I look at this the
00:15:31the heck I’ll talk that was as I said
00:15:34that was my learnings from working with
00:15:37many companies in Silicon Valley and
00:15:41mostly that talk and that paper that I
00:15:45wrote about it so there’s an ACM a C ACM
00:15:48and an ACM queue paper about that that
00:15:50really that talk was mostly inspired by
00:15:53Facebook by the Facebook culture and and
00:15:57then of course and the whole thing with
00:16:00our X that was all done to make you know
00:16:06communication at the cloud scale better
00:16:09and then the last thing is you know what
00:16:14I call here seize the day you know given
00:16:17that I can be garbage collected every
00:16:19single second and all of you yeah you
00:16:22can be garbage collected every second
00:16:24you cross the street and you know you
00:16:27get hit by a car so never take life for
00:16:30granted
00:16:30I can tell you and so really going to
00:16:33live every single second and that was
00:16:37the third thing it’s like how can I help
00:16:40real people using my technical knowledge
00:16:43and the great thing here is that you
00:16:46know all these three things kind of just
00:16:49come together in a single spot all right
00:16:54so this is my new motto to unite the
00:16:58earth connect it and that’s what I’m
00:17:00going to be spending and you know the
00:17:03next couple of years on and hopefully I
00:17:06will be able to you know talk in like
00:17:10give keynotes and talks and many more
00:17:13times and hopefully I can escape that a
00:17:17few years more now let’s talk a little
00:17:21bit about the technical side and the
00:17:24opportunities about this and then I kind
00:17:26of relate that again to this whole I
00:17:29year of you know how we should write
00:17:33software and so why did why did I get so
00:17:40and you know induced about push based
00:17:44systems so why why did I do our X well
00:17:47the whole point is that when you want to
00:17:49stay up-to-date about the state of the
00:17:53world it’s much better to push not pull
00:17:56so here is an example
00:18:00and where there’s me and I want to come
00:18:04up you’re stay up-to-date about what LS
00:18:07Bob and Carol are doing but think about
00:18:09this you know you can you can translate
00:18:11this into you know that Eric is an app
00:18:14on your phone and Alice Bob and Carol
00:18:17are sensors on your phone right or you
00:18:20know Carol’s the UI Bob is you know at
00:18:23the GPS and you know LS is whatever all
00:18:27right so this this kind of is a metaphor
00:18:29for whatever thing that has sensors in
00:18:32it or sources of information now if you
00:18:37go and pull well I’m going to by Merrick
00:18:40so I’m going to pull that first going to
00:18:42ask
00:18:42LS your alice is there anything
00:18:45interesting that I should know and but
00:18:48you know Alice is a little bit of a
00:18:49boring type so she doesn’t answer her
00:18:53there’s nothing so I asked her in the
00:18:55second ah nothing happened and then I
00:18:57asked Bob hey Bob Bob Bob doesn’t answer
00:19:03and if I’m not careful I’m kind of
00:19:06blocked asking Bob Bob Bob until Bob
00:19:10answers right so this is why you have to
00:19:13do a synchrony right this is why you
00:19:15should never do a blocking call because
00:19:17Bob might not be there or boat might be
00:19:20slow but might be gonna be uh grabbing a
00:19:24beer and he doesn’t answer and then of
00:19:27course you know while I was kind of busy
00:19:30leaking to be a pulling information from
00:19:31Alice and Bob Carol had all kind of
00:19:35exciting things going on but I never had
00:19:39the chance to ask her so when I finally
00:19:41asked her she says
00:19:43you missed already missed all the action
00:19:45is now all stuff alright so when you
00:19:49want to stay up to date with the world
00:19:51you have to push you cannot pull and
00:19:56another way to look at this it’s a very
00:20:00simple and naive implementation of pool
00:20:04so if you’re building a web page and you
00:20:06want to refresh the webpage but a lot of
00:20:09people do is they you set interval and
00:20:12then they kind of pull the server at
00:20:14some rate right that’s the way you do
00:20:17pool well of course there’s the question
00:20:20marks here because how often do you need
00:20:23to pull you don’t know if we’ve seen
00:20:26with Alice if you pull too fast you
00:20:30waste resources because there’s nothing
00:20:31interesting going on and with Bob we
00:20:35have seen that if you pull at the wrong
00:20:37moment you get blocked and you know and
00:20:40then you don’t know so you have to so
00:20:42this this code here will never work you
00:20:45have to always have to deal with the
00:20:47fact that you can get blocked so you
00:20:49have to come to another layer of
00:20:51callbacks but fortunately now JavaScript
00:20:56also has a sink weight or gets
00:20:59async/await
00:21:00I think Microsoft edge is the first
00:21:02JavaScript thing that has a sink weight
00:21:04but of course if you use dart you will
00:21:07get it also but you cannot write code
00:21:09like this right because otherwise you
00:21:11get blocked or if you pull too slow you
00:21:14might lose all the action you might not
00:21:16go fast enough okay so you can basically
00:21:18when you pull you never get it right and
00:21:22so here it’s the same example and but
00:21:27now where the sources push alright so
00:21:31think again these sources can be sensors
00:21:34or they can be your friends or they can
00:21:36be stock ticks whatever sources of
00:21:39information you can imagine so in this
00:21:41case LS it’s kind of relaxed you know
00:21:46slowly every once in a while something
00:21:48interesting happens but not that often
00:21:51Bob you know he is offline but then
00:21:56suddenly
00:21:56hey I’m back from vacation okay so you
00:21:59don’t block because Bob will tell you
00:22:01and he’s back from vacation I don’t have
00:22:03to kind of check whether he’s offline or
00:22:05online Bob will tell me and then of
00:22:08course now I’ve I hear all the
00:22:11interesting stuff that carol has to say
00:22:13and you know she goes and that she
00:22:17pushes really fast and that’s all fine
00:22:19and then if Carol goes too quick I can
00:22:23always put some coat kind of right after
00:22:27her that kind of drops all her messages
00:22:30or can you know just kind of like comes
00:22:33down the stream and that’s much easier
00:22:35than going the other way around
00:22:37so again this is why I think things like
00:22:41reactive are so important because in
00:22:44these cases push works and pull does not
00:22:49work now let’s talk about scale okay
00:22:54because here I have a very simple
00:22:55example of it with three sources and if
00:22:58you look at your phone I think the
00:23:01average phone has maybe six to ten
00:23:03sensors and so there’s you know there’s
00:23:06you know like a accelerometer there’s
00:23:10like a compass there’s GPS you know
00:23:12there’s a couple of sensors in the phone
00:23:16but that’s um that’s kind of a little
00:23:21bit now if you look at things where you
00:23:23know when we worked on Eric’s Java there
00:23:25the skill we looked at was about you
00:23:28know I don’t know tens of millions of
00:23:31event sources that scanner wherever rx
00:23:36Java I was optimized for but now if you
00:23:39look at Facebook recently there were 1
00:23:42billion people communicating over
00:23:45Facebook in a single day okay that’s
00:23:49going to 1 billion what is that this is
00:23:51one with nine zeros okay so that’s kind
00:23:54of quite different than you know dealing
00:23:57with push based systems on your phone
00:23:59and and this is also quite different
00:24:02than kind of you’re dealing with like a
00:24:05few million and the
00:24:07other thing to notice is that you know
00:24:10this is just one out of seven people on
00:24:13the earth right so this can be more or
00:24:16less an order of magnitude more and so
00:24:19if you want to build a system that works
00:24:22at that scale it just blows my mind then
00:24:25the other thing that I just want to
00:24:27emphasize is that it’s really the
00:24:33mission of Facebook is really to convey
00:24:36or connect people and so that’s again it
00:24:41fits into my kind of year my new mission
00:24:45in life but this thing is kind of what’s
00:24:47scaring me that’s keeping me awake at
00:24:50night is how you know how is it possible
00:24:54to build software that can work at this
00:24:58scale and just for the numbers here and
00:25:04if you look at rx mobile that was the
00:25:06thing that I was building with my with
00:25:11my startup yeah that only has to deal
00:25:14with you know like ten of you know about
00:25:18ten sensors that pushed up at you 4x
00:25:21Java we kind of assumed it would be you
00:25:24know 10 15 50 million and now we have to
00:25:29go to 1 billion and and I’m kind of
00:25:34sweating when I think about that
00:25:36and anyway then the other thing is if
00:25:40you look at at building software at that
00:25:42scale and again this is not only at
00:25:44Facebook with all the companies I worked
00:25:47with in Silicon Valley and also at
00:25:50Microsoft is the amount of moving parts
00:25:54is enormous and this is one thing that I
00:25:58am Not sure that if you’re in a small
00:26:01company that you can appreciate but this
00:26:05is like numbers these are kind of old
00:26:06numbers but like the Facebook has open
00:26:10source about over 200 projects okay so
00:26:16these are 200 things that you need to
00:26:18know more
00:26:19less in order to plug everything
00:26:21together and and yeah so and this is one
00:26:27thing is like I’m also part time
00:26:28professor and one thing that’s really
00:26:31hard to teach the students when you can
00:26:33when you teach them to program it’s like
00:26:35okay let’s do Java right we teach them
00:26:37do Java so you open up IntelliJ and you
00:26:40can public static void main and you
00:26:43start coding that’s not the way you code
00:26:46in the real world right in the real
00:26:48world you have you get like you know
00:26:50whatever 200 different kind of
00:26:52technologies and there’s some bug and
00:26:55then you go fix it and you have to see
00:26:58how you can kind of your hook everything
00:27:02together and I have no honestly I have
00:27:05no clue how we can teach this to
00:27:07students I have no clue how I can even
00:27:11teach this to myself and I don’t know
00:27:13how you guys deal with it but I think
00:27:16this is something that’s yeah I really
00:27:19would like to solve as well so how can
00:27:20we kind of you know prepare students
00:27:23better for for this kind of work and the
00:27:27traditional way of teaching programming
00:27:29is not helping here and I think the only
00:27:33way that I know it’s Bertrand Meyer has
00:27:35a book where they try together they have
00:27:38like a simulation or something of the
00:27:39Paris metro system and they’re they kind
00:27:42of dump you in the middle of the ocean
00:27:44and you have to kind of find your way
00:27:45back to the shore but most text books
00:27:51about programming I think are completely
00:27:54outdated to have nothing to do with
00:27:56reality and so again this is one of
00:28:00those things where you know I want to
00:28:01kind of you apply my my time on this
00:28:04planet to solve real problems and that
00:28:07is I think you know teaching how to
00:28:09build software at this scale is one of
00:28:13those things and now here are a couple
00:28:17of of these projects and and why am I
00:28:21talking about this well probably you
00:28:23heard about react and react native so
00:28:25that second front-end stuff then there’s
00:28:28flow which is a kind of you know it’s
00:28:30something like typescript like it’s the
00:28:32type
00:28:33system for JavaScript then there’s a
00:28:36virtual machine then infer it’s a way to
00:28:39do static analysis
00:28:41there’s hexyl so they even do kind of
00:28:44your different languages including
00:28:45Haskell presto if that’s the database
00:28:48stuff and then there’s many programming
00:28:50languages okay so these are all examples
00:28:54of technologies that are used now the
00:28:57thing is when you’re building a push
00:29:00based system and that’s the one of the
00:29:02lessons that we learned at Netflix when
00:29:04we were applying our X Java there is
00:29:07that you cannot block anywhere so if you
00:29:10look if you remember that picture I had
00:29:13where you know we’re where Alice Bob and
00:29:16Carol were pushing information at at
00:29:20some point if anywhere if you make a
00:29:22kind of larger pipe line like this and
00:29:24if any where things are blocking or not
00:29:27really push based then you might as well
00:29:30just go and then everything collapses
00:29:33because then it’s the same as just doing
00:29:35traditional synchronous calls or pool
00:29:38based calls so really to make things
00:29:41work to make get one flow you have to
00:29:44make everything push based you cannot
00:29:47kind of just have pull somewhere and and
00:29:51the thing is that most current languages
00:29:55and tools and api’s are all optimized
00:29:58for synchronous programming okay and
00:30:01that’s why we need things like async
00:30:04await and so on to do async programming
00:30:06but that’s in the language but now it
00:30:09also means that your api’s have to
00:30:11change because everything that can be
00:30:13blocking should be eliminated from the
00:30:15api’s and Microsoft I think did a good
00:30:18job when they they introduced async
00:30:22await they went through all of their API
00:30:24s and everything that you know took
00:30:27longer than X millisecond or could block
00:30:29they made it async but it’s so it’s not
00:30:32just the language it’s also the api’s
00:30:33but then the tools if you’re if you’re
00:30:36doing callbacks because basically that
00:30:38just async is doing now all your
00:30:42debuggers don’t work anymore because
00:30:45there is no sequential
00:30:47there’s no call stack so your debuggers
00:30:50are all messed up so it’s just it keeps
00:30:52on going and going so to make the world
00:30:54a synchronous it’s not just you know
00:30:57adding a few keywords to the programming
00:30:59language it’s really means changing the
00:31:01complete stack from you know the UI all
00:31:05the way down to the database and the
00:31:09nice thing is that you know for me is
00:31:12that Facebook they control the whole
00:31:15stack which means that you know that
00:31:18there’s at least a chance to get it
00:31:21right and I’m sure that you’ve seen this
00:31:25diagram before so these are what I call
00:31:30the four effects of programming so if
00:31:32you look at the top left so that’s a
00:31:34synchronous call that returns a single
00:31:36result that’s what’s current programming
00:31:39languages have been optimized for since
00:31:41their inception so over the last 50
00:31:44years but what we need to go async and
00:31:48push based is we need to go down here so
00:31:51we need to kind of have an asynchronous
00:31:53call that returns one result and that’s
00:31:56kind of getting you know more accepted
00:31:58now with async await in several
00:32:01languages except Java where’s Brian
00:32:02goods okay Brian
00:32:05Java is running behind okay that’s what
00:32:09the only language even JavaScript has
00:32:11async await Python has a sink with
00:32:13artists a security sharpest a sink with
00:32:16even PHP si Saket
00:32:18but Java no we Java programmers week are
00:32:23going to stay in the old world of
00:32:25synchronous calls or no we have love –
00:32:28we can do callbacks now no no no no
00:32:30callbacks are not good and long – don’t
00:32:33help you so Java really need async await
00:32:36above anything else I think you know you
00:32:39should drop everything for Java 9 and
00:32:41put in async await and everybody would
00:32:44be happy
00:32:46and and if you know how to do that Java
00:32:48people you can read this paper here
00:32:51where we can explain how to do this we
00:32:56did in dart and it comes with a nice
00:32:58denotational semantics and to do that
00:33:01but again it’s consumer important to
00:33:04change that we have to shake up the way
00:33:07we do programming to make this work
00:33:10alright so now let’s go and talk a
00:33:14little bit about agile and let’s talk a
00:33:16bit a little bit about programming
00:33:17methodologies and so one of the things
00:33:23that I saw when I came to Silicon Valley
00:33:27that was completely different from what
00:33:30I see at conferences like like this and
00:33:34what I see in Europe I think Europe is
00:33:36much more into a of first whatever
00:33:39reason fell for scrum and an agile and
00:33:45and the thing is that you know if you if
00:33:48you look at scrum and agile the way I
00:33:52kind of you can can phrase it is that if
00:33:55you look at McDonald’s alright
00:33:57McDonald’s at McDonald’s every employee
00:34:01is a teenager right and and in order to
00:34:05make a product that’s kind of still of
00:34:07average quality with like low educated
00:34:12employees you need a lot of process you
00:34:14need a lot of steps to can make sure
00:34:17that what comes out in the end
00:34:19is presentable to the customer that is
00:34:22to me what scrum is about so if you are
00:34:24like an average guy whatever developer
00:34:27you need a lot of process you know to
00:34:31kind of make something that’s kind of
00:34:33okay but that’s not what we want to be
00:34:35right we are better than that
00:34:38we are hackers we we are you know we
00:34:41know how to build this stuff we don’t
00:34:43need this process so compare that with a
00:34:46michelin-star chef if you’re in a really
00:34:49good restaurant the menu is different
00:34:51every day the chef goes and sees oh they
00:34:54go to the market and say oh the fish
00:34:56looks really nice today this coat I will
00:34:58take that
00:34:59and there’s Garrett’s they look really
00:35:00good and they just make the exam on the
00:35:03fly okay there’s no process but the food
00:35:06is definitely much better I’d rather go
00:35:08to a Michelin star restaurant than to
00:35:11McDonald’s and I think it’s the same
00:35:13with software I rather have software
00:35:15that’s built by hackers by really good
00:35:18programmers then some whatever ever it’s
00:35:20staying that’s kind of you has been
00:35:22built by doing stand-ups and you know
00:35:24scrum masters and whatever okay so think
00:35:28about that um but I think the real thing
00:35:32about this is that it’s scary for the
00:35:35managers the managers feel that they are
00:35:40in control with scrum and that’s why
00:35:42your boss space you to go to a scrum
00:35:45course and your boss doesn’t pay you to
00:35:48kind of yo spend some time and try
00:35:51something out new and kind of you know
00:35:52just just got to build stuff okay um so
00:35:58um that is the kind of the real thing I
00:36:02think the essence of the the hacking
00:36:05culture is here is goto wins arguments
00:36:08the person that writes ago because in
00:36:11the end that’s all what we’re doing
00:36:13right we’re building software software
00:36:16is code software is not words software
00:36:18is not UML diagrams software is not
00:36:21yellow stickies on the wall that you can
00:36:24you can move around so the person that
00:36:27can move stickies around on the on the
00:36:29board it’s completely useless the person
00:36:32that writes the code that’s the person
00:36:35that’s useful okay so every minute that
00:36:38you spent in a stand up every minute
00:36:41that you talk about code instead of
00:36:44writing code is lost okay and that is
00:36:48the thing that you know I don’t
00:36:50understand about scrum and agile and it
00:36:52just it it kind of you know makes you
00:36:55less than what you’re capable of because
00:36:57it treats you like a teenager and
00:36:59McDonald’s so don’t fall for that
00:37:03okay so um and and just to compare this
00:37:09a little bit more let me kind of show
00:37:11you the kind of the Facebook values so
00:37:14these are kind of axioms
00:37:15these are axioms that you as a developer
00:37:19use to kind of structure your day okay
00:37:23so I want to write software how do I
00:37:25kind of you know because there’s so many
00:37:27things you can do that’s the day I think
00:37:29that’s also one of the things with
00:37:31software ever it’s so soft that you can
00:37:33do everything with it
00:37:35so you need some structure to make sure
00:37:37that you kind of stay on the right track
00:37:39so let’s go through these things here
00:37:43and then I will compare that to scrum
00:37:45and then hopefully you will see the
00:37:48difference okay
00:37:49so here’s the number one thing it’s you
00:37:52focus on impact so this is what I said –
00:37:55it’s like after this kind of tragic
00:37:57thing happens with my health I thought
00:38:00am I really focusing on impact
00:38:03am I really spending every single minute
00:38:06of my life achieving the most impact and
00:38:09that’s kind of you know I think what you
00:38:11do to when you write code you should
00:38:13always kind of you know think about do I
00:38:16solve the most important problems so you
00:38:19look at this like am I just gonna be
00:38:21messing around or am I really trying to
00:38:23solve the right problems and I think
00:38:27most people don’t do this and then you
00:38:30waste your time okay so you as a
00:38:33developer it’s your responsibility to
00:38:36always find and solve the most important
00:38:40problem for your company and when you do
00:38:43that I bet you nobody will complain that
00:38:46you didn’t show up for that stand up
00:38:48because you fixed a real problem instead
00:38:50of talking about whatever imaginary
00:38:53problems
00:38:55okay here’s the other thing you have to
00:39:02move fast and with move fast assists the
00:39:05things that you you need to learn you
00:39:07cannot cut it the only way you can learn
00:39:09about something is and again this is my
00:39:12personal opinion you cannot learn about
00:39:16something by not writing code by
00:39:19thinking about it the only way you can
00:39:21really understand the problem you’re
00:39:23working on is by actually writing code
00:39:25for example in language design you can
00:39:28come up with the most beautiful design
00:39:32but then it turns out that it’s
00:39:34impossible to implement the type checker
00:39:36or that is impossible
00:39:38to kind of get good error messages or
00:39:40that it’s impossible to integrate this
00:39:42in the IDE okay and the only way you can
00:39:46discover that is by trying things out so
00:39:48you always have to be writing code and
00:39:51then you know when when you figure out
00:39:55that it doesn’t work then you kind of
00:39:57know you can do it differently but this
00:39:59is the most important thing and people I
00:40:01think a lot of people are afraid of
00:40:03writing code and then they go and kind
00:40:05of talk about it this phone oh I first
00:40:07have to write my UML diagrams wrong just
00:40:11open the freaking editor and start
00:40:13coding
00:40:20okay and that that’s related so if you
00:40:24don’t take any risks you know you’re not
00:40:27going to get it you know you’re going to
00:40:28guarantee to fail so um you know you
00:40:31have to try it and and sometimes it will
00:40:34fail which is good and now of course for
00:40:39most managers the traditional managers
00:40:41that’s the thing they most scare about
00:40:43risk everything they do is to avoid risk
00:40:46and and I think that’s also one of the
00:40:50big things in in scrum and agile it’s
00:40:53all about managing risk but I think this
00:40:56is the completely the wrong way you have
00:40:59to embrace risk because if you don’t do
00:41:02it you know well it says here the
00:41:05riskiest thing is to take no risks but
00:41:08we have to not not be afraid of that
00:41:11okay then the other thing is openness so
00:41:16this is I think one of the great things
00:41:18that that the companies in Silicon
00:41:20Valley do it’s like Google has it
00:41:23Facebook has it like once a week you
00:41:26know the founders come and they have a
00:41:29meeting that you can ask them anything
00:41:31okay they treat you as adults instead of
00:41:34kind of you know keeping everything
00:41:35that’s kind of important for you kind of
00:41:39hidden from you so you have to be kind
00:41:42of the information access to information
00:41:45is what you need and that’s not only for
00:41:47us developers but it’s for everybody
00:41:50all right and I talked already talked
00:41:53about this so I’m given the time I were
00:41:55going to speed up a little bit but you
00:41:58know again think about yourself you know
00:42:01look at this you know and see if this is
00:42:04something that you recognize yourself in
00:42:06okay so you know you see rules and you
00:42:12know you think what happens if I twist
00:42:14the rules a little bit you you have an
00:42:17API or you have a programming language
00:42:18and can I kind of bend the rules to make
00:42:21the impossible happen this is kind of
00:42:24you and I know I am British
00:42:26sure that every one of you here when you
00:42:29do that at work you kind of think that
00:42:31somebody told you this cannot be done in
00:42:33Java but you know you found a way to do
00:42:36it you feel absolutely proud okay
00:42:38that’s the hacker spirit okay so you
00:42:41have to get your challenge yourself
00:42:43intellectually and and this is what you
00:42:47don’t like right
00:42:48you don’t like stupid people you know
00:42:52people with ties I don’t fortunately I
00:42:54don’t see a lot of people with ties here
00:42:56okay you don’t like boredom but now look
00:43:01at this
00:43:01okay so now I’ve kind of briefly showed
00:43:05you all the kind of critics now look at
00:43:07this scrum the art of doing twice to
00:43:11work and half the time okay what does
00:43:19that mean twice the work in half the
00:43:20time that means that you can do
00:43:22everything four times as fast okay you
00:43:25believe that it means that college
00:43:27instead of four years we can do it in
00:43:29one here right yes we believe that
00:43:32okay let’s kind of all do college in one
00:43:35year Oh elementary school okay well this
00:43:39is it’s like 10 high school that’s 12
00:43:41years we can do that now divided by 4
00:43:44and 3 years so we can kind of compress
00:43:47high school and elementary school into
00:43:49in three years and university and one so
00:43:53in four years we can take a
00:43:54kindergartner up to our level
00:43:56with scrum let’s do that let’s introduce
00:43:59scrum and education and there are crazy
00:44:02people that are proposing to do scrum
00:44:04and education because they believe that
00:44:06stuff and then look at this look at this
00:44:09other stuff here certified scrum coach
00:44:13scrum master strainers whatever this is
00:44:17like a pyramid scheme
00:44:18okay this has
00:44:20this has nothing to do with writing
00:44:23coach
00:44:27so talking about duality ok scrum is the
00:44:31dual of hacking that is I think it
00:44:35cannot be more different than the way
00:44:38you should so you look at scrum and do
00:44:40everything completely the opposite then
00:44:42you have the right methodology and so
00:44:45again I’ve shown you this kind of the
00:44:47rules here the five rules of Afghan
00:44:52hacking
00:44:53now look at this the scrum is the
00:44:56opposite I wasn’t joking because scrum
00:44:59is all about prescription okay it’s it
00:45:02reached like a law okay the product
00:45:04owner is the sole person responsible hoe
00:45:07there cannot be two person responsible
00:45:09there’s only one person responsible if
00:45:12you don’t do it oh the scrum police will
00:45:14come after you okay let’s print a sprint
00:45:18has to be like this and if it’s not like
00:45:21that it’s not a sprint and what else do
00:45:25we have
00:45:25Oh sprint planning you can only do eight
00:45:28hours of sprint planning if you go like
00:45:30one minute over you’re not doing scrum
00:45:32if you’re going one minute less oh no it
00:45:34says here it’s books to eight hours so
00:45:37be careful okay and the daily scrum is
00:45:4115 minutes not more not less this is
00:45:45crazy guys okay this is like a boring is
00:45:51you need like a police and you need the
00:45:53judges and you like and what happens in
00:45:56practice I’m pretty sure when I gave the
00:45:58stop before people say well but you know
00:46:00for us it works because we have our own
00:46:03version of scrum of course because it
00:46:07doesn’t work that that is a proof that
00:46:09it doesn’t work
00:46:16but if you already have your own version
00:46:19of scrum why don’t you throw it away
00:46:21altogether okay and go to heck all right
00:46:25all right
00:46:26as I said don’t be McDonald’s employee
00:46:29and be a hacker now for managers you
00:46:34know maybe you’re scared but what I tell
00:46:36you is that hackers are the ultimate
00:46:38employees okay so don’t be scared this
00:46:41is this is these are the people that you
00:46:43want if your manager listen carefully
00:46:45hackers are the people that you want
00:46:47okay and this this is the interesting I
00:46:51think it was meant as a joke this link
00:46:54here but it compares developers to B’s
00:46:58and managers to beekeepers okay but if
00:47:01you look at scrum managers are like
00:47:04sheep herders okay but what managers
00:47:06should be is they should be like
00:47:09beekeepers and bees are can’t you they
00:47:14are scary they kind of goes around you
00:47:16have to kinda have your pipe and smoke
00:47:18to keep them away from not kind of
00:47:20biting you but the great thing is they
00:47:24make honey and you kind of you take away
00:47:26the honey and they don’t care because
00:47:28they make more honey and that’s what
00:47:32developers do they write code you ship
00:47:36the code and they will write more code
00:47:38you’d never have to be afraid that
00:47:41developers don’t write code the trick is
00:47:44that you have to kind of you know keep
00:47:46them honest and focus on where is the
00:47:49most impact and that’s what as a manager
00:47:52that’s your role you have to be a big
00:47:54keeper and make sure that they are
00:47:56producing the right honey and create all
00:47:59the right circumstances that they can be
00:48:01efficient in creating honey and one of
00:48:04the things to do is that you know you
00:48:07have to pay them a lot
00:48:11and and and of course there’s another
00:48:22way kind of you know like a one-shot
00:48:24bite in which you can say that is that
00:48:26you cannot hurt racehorses but you
00:48:28cannot raise sheep and so that’s and
00:48:31again like scrum is a way to try to make
00:48:34sheep kind of go into racehorses okay so
00:48:37now I’m going to can appeal
00:48:39you should do a couple of more things
00:48:41here is that software is kind of a
00:48:46there’s a lot of things that we can
00:48:47learn from the military here and you
00:48:49know if you drop the last e from
00:48:52software you get soft war now there’s
00:48:55this very interesting document out on
00:48:59the internet it’s the Fleet Marine Force
00:49:01manual one about war fighting okay now
00:49:06I’m not the military person but I think
00:49:08and there’s a lot we can learn from the
00:49:13way they kind of manage things and do
00:49:14things they operate at incredible scale
00:49:16they have been doing this for hundreds
00:49:19or thousands of years so there’s a lot
00:49:20of experience there so it’s always good
00:49:23to kind of look at that and if you take
00:49:25this manual and you replace war by
00:49:28software this thing is still true it’s
00:49:32amazing it’s amazing right because here
00:49:35look so first complex it’s shaped by the
00:49:38human world schedule by friction
00:49:40uncertainty fluidity this is we all see
00:49:43this right that’s when you when you
00:49:45write software this is you know how
00:49:47things go okay and you know it’s not an
00:49:52art it’s not the science it’s some
00:49:54something that humans built now if you
00:49:57then go and read further in the document
00:50:00it also says is the same thing but the
00:50:03other guy says about beekeeping command
00:50:06must be decentralized okay
00:50:10so each the older people on the floor
00:50:12should know what their mission is but
00:50:14then in a situation of war there’s no
00:50:17way you can tell them you know take five
00:50:19steps to the right but only for 15
00:50:21minutes
00:50:21because otherwise you’re not doing it
00:50:23right that’s not working okay so I think
00:50:26this is a is a really good way to kind
00:50:29of look at this if you want to manage
00:50:31software developers you look at the
00:50:34military and then the last thing here is
00:50:38that one of the things that hackers
00:50:43dislike is hierarchy or people in suits
00:50:46telling them what to do because they
00:50:49have an impressive title or they can
00:50:51talk a little bit smoother and yeah but
00:50:55that’s that’s something that you should
00:50:57fight against okay it’s only the code
00:51:00that speaks so if somebody comes with
00:51:02some gut feeling or Seconal I’m the CEO
00:51:06so you have to listen to me
00:51:08don’t do that okay
00:51:11so vote with your feet you can always
00:51:13take your laptop and leave okay and I
00:51:16don’t think that we do this enough as
00:51:18developers and we should take our
00:51:21laptops and leave if you’re forced to go
00:51:24and take you know scrum training yeah
00:51:27you say good I’m going out for the day
00:51:29I’m not coming back okay and then the
00:51:33thing is I say you know either come to
00:51:35Silicon Valley and I I might be able to
00:51:39help you there or you know we should
00:51:42have more companies like the companies
00:51:44in Silicon Valley in Europe and I think
00:51:47we really and I don’t know what it is in
00:51:49Europe that this that this hacker way is
00:51:52not embraced so much but yeah I’m here
00:51:56to help you and and hopefully talks like
00:51:59this you know will inspire a few people
00:52:01and and you know make the world a better
00:52:04place
00:52:05on the other hand you can also say think
00:52:07all this guy was he was talking
00:52:11yeah I don’t believe it
00:52:12I love scrum that’s great too but make
00:52:15up your mind for yourself think about it
00:52:17don’t take anything for granted now
00:52:20don’t just believe it because you have
00:52:22somebody told you so always be critical
00:52:25and always be hacking thank you very
00:52:27much
00:52:44right we don’t actually have time I know
00:52:47the food won’t be served until 8:00 so
00:52:49in your opinion what is missing for the
00:52:53functional paradigm to revolutionize the
00:52:55industry ah well I think it already has
00:52:59so there’s nothing missing if you look
00:53:02at javascript javascript is really
00:53:04schemed with curly braces
00:53:06so really the web is already powered by
00:53:08the lambda calculus even like I was
00:53:11joking about Java not having async/await
00:53:13but it has slammed us so the world’s
00:53:19most widely used language which
00:53:21according to whatever the indexes that
00:53:23we have is Java it has loved us C++ has
00:53:28lambda so I think functional programming
00:53:30is there now there’s one thing and maybe
00:53:33this is what the the person that asked
00:53:36the question is thinking about a lot of
00:53:38people think wrong about functional
00:53:40programming they think functional
00:53:42programming means not using mutable
00:53:44state I I don’t subscribe to that idea
00:53:48at all because I cannot use mutable
00:53:51state in C but then I’m not using
00:53:54functional programming functional
00:53:56programming is all about using higher
00:53:58order things using functions okay and
00:54:02mutable state yeah that’s that’s not
00:54:06that important but it has nothing to do
00:54:09with functional programming per se and I
00:54:12wrote a paper about this it’s like you
00:54:14know the curse of the excluded middle
00:54:15because mutable state is just one of
00:54:17many effects exceptions strats
00:54:21reflection there’s so many effects and
00:54:24you can simulate one effect in terms of
00:54:27the other if I have threats and no
00:54:30mutable state I can simulate mutable
00:54:32States because I can make an object
00:54:33where I can send you know get and set
00:54:37messages and that object has no mutable
00:54:40space it’s like an airline kind of an
00:54:43actor that that maintains it immutable
00:54:45thing but it’s still now at the next
00:54:47level it’s mutable
00:54:49so being immutable has nothing to do
00:54:52with functional programming that’s
00:54:53people that say that don’t really get
00:54:55from
00:54:56programming so I think functional
00:54:57programming that’s already wrong and
00:55:00this is this idea of using higher-order
00:55:03concepts and good are there any more
00:55:07questions there are a lot of questions
00:55:09and I’ll send them to them and we don’t
00:55:10have time to take them in public so you
00:55:12can come up to Eric and get a t-shirt
00:55:14you can get a t-shirt and then we can if
00:55:17you have more questions I can and I’m
00:55:19happy to talk to you can appear and
00:55:21thank you again thank you very much
00:55:34you
”