[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:04.52,0:00:06.69,Default,,0000,0000,0000,,good evening again this is the first time Dialogue: 0,0:00:06.70,0:00:10.70,Default,,0000,0000,0000,,I'm seeing this okay I'm holding it up Dialogue: 0,0:00:10.70,0:00:14.70,Default,,0000,0000,0000,,this is a gopher Singapore edition so Dialogue: 0,0:00:14.70,0:00:21.92,Default,,0000,0000,0000,,gopher Merlion and the title of my talk Dialogue: 0,0:00:21.96,0:00:24.52,Default,,0000,0000,0000,,if I speak it quickly Dialogue: 0,0:00:24.52,0:00:28.52,Default,,0000,0000,0000,,oops stay Dialogue: 0,0:00:28.74,0:00:31.82,Default,,0000,0000,0000,,nvm it doesn't want to Dialogue: 0,0:00:31.82,0:00:33.07,Default,,0000,0000,0000,,title of my talk if you speak it quickly Dialogue: 0,0:00:33.13,0:00:37.67,Default,,0000,0000,0000,,is Go for you? That's a pun there. Dialogue: 0,0:00:44.31,0:00:47.25,Default,,0000,0000,0000,,All of us have limited mental capacity Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,limited mind budget Dialogue: 0,0:00:48.38,0:00:52.38,Default,,0000,0000,0000,,budget some of us can keep more things Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in our mind some of us can keep less Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,things in our mind but you know in all Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,cases it's limited so what do you mean Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,by mine budget if you know how to drive Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a car it's instinctive Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you still know you still need to know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,where you're going so that consumes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,energy and mine budget so the point I'm Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trying to ask is what are your current Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,skills what you currently do today and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,what you want to do tomorrow so for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,example if I currently write stuff for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,typically web front-ends I know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,JavaScript quite well by definition but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I want to write back-end stuff around Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the right back-end servers I want to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,write API service your look you know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because you can write back-end stuff in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,JavaScript it's called no GS you still Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,need to know about the rules of writing Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,API servers you still need to learn Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about that domain but you don't have to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,learn a new language because learning Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,new stuff consumes mine budget and it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,difficult Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,before coming to go I used to write in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Java so I know Java quite well and I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,want to write web front-ends well you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can write web front-ends in Java it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not impossible but it's like using that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to pull out nails so the point I'm Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trying to say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the final point I'm trying to make is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you need to have the right tools so what Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is goal good for so hammer is good for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,hammering in stuff that cow hammer is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not good for pulling out nails go is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,good for writing cloud services back-end Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,service it's good for being well this is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,debatable but those people who have Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,written in go think it's actually quite Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,simple to read and understand it's good Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for having this thing funny thing called Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,implicit interface satisfaction which Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I'll talk about in a while it's got Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fantastic concurrency and my favorite Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,feature its Java done right it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,cross-platform Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Sogo is somewhat familiar that's the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,first line hello will in go if you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ignore the funny fmt in the capital case Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it's not a class print line it just goes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,way of denoting a public variable you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,see it's pretty much the same across Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,many many different languages so goal is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,somewhat familiar and therefore somewhat Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,easy to learn in fact go about design to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,be easy to learn anybody who comes from Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a Java environment or c-lite language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,will find go somewhat familiar go is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,definitely type safe I like to I like to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,put up this example do you think this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,come this program will run do you think Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this program will compile really compile Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it won't even compile let's try how many Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,of you have run your presentations Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,before I'm going to run the presentation Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and let's read their messages go error Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,messages are not too bad actually Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so what it's done is taken this HTML fed Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it into a temporary file called compiled Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,0 dot go and the compiler complained Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,cannot use B type string in an integer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for assignment can you do in JavaScript Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,yes or no yes let's prove it and you put Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,down a microphone Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so I is definitely okay thank you my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,anything so I is definitely an integer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,now I is a string Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,javascript is bad truffles I'm starting Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a flame war here actually not true Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,javascript is a pretty good language now Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in a godo so let's talk about go alright Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this one is not so obvious how strongly Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,typesafe is go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,why type safety at all but let's let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,look at this code and let's see whether Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it will compile at all Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I declare a type called mynum as an Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,integer and over here I declare a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,variable I it's of type my num and I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,assign it the value two over here I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,assign a variable J of type int integer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,of value three can I assign I and J in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Java cannot can in ogs definitely can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,bingo Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,No let's see the error message some of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you already guessed answer's no let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,look at error message Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,cannot use type J cannot use J type Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,integer as type mine um so my num Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,even though was derived from an integer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is a separate typing goal so it is very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,very very strongly typed and this is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,very useful if you write big code if you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,write code that is shared with loads of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,programmers it's also very useful for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,code you have written years ago this is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the equivalent of keeping everything in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,its right place and the right place for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,everything but there's always two sides Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to a coin keeping everything in the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right place takes a lot of time a lot of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,bookkeeping nodejs Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,allows you to throw things all the place Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a teenager's bedroom nodejs is like a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,teenager's bedroom go is like a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,well-kept well-groomed house so strong Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,static typing allows you to catch most Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,errors at compile time and the runtime Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is quite predictable in other words Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,after compiling and you deploy Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,production you can expect predictable Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,performance but the flip side of it is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if you are trying to throw a no-show to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,get a short script a language like Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,nodejs Python or Ruby is much more Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,appropriate so guess the message is what Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do you want to do what you already know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and what you want to do in the future so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,decide whether you want to learn go let Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,me try to convince you that go is worth Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,learning so go has implicitly satisfied Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interfaces those come in from Java know Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about Java interfaces go tries to keep Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,keeping a house in order Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,static typing strong static typing more Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,pleasant so over here I declare an Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interface type it's called one D fire Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and it's got one Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that in it called quantify and quantify Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it takes nothing and returns an integer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so over here I declare another type my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,SDR or my string it's derived from type Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,string and it also has a quantify method Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,now how do I know there is a method this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,funny syntax which go created the way Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you read this line means quantify is a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,method of s of type my string which Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,returns an integer that's how you read Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it so basically it's a matter of my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,string it says print that means printer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,screen quantifying s and was s its Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,length of s it returns the length of s Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as the funny has a final value this is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,just a side effect you just print out Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the string now I declare another type Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,called Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,my int and it's derived from integer and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to quantify this integer I did tell me Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,whether it's positive negative or zero Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that simple code for that so let's cut Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to the chase Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,well this code were let's go to line by Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,line Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that's just a print statement this line Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is interesting Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,oh by the way go has this funny reversed Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,declaration syntax so a variable Q is of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,type quantifier that's why it means it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is not quantifier is of type 2 it's the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,other way around so variable Q is of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,type quantifier so the quantifier has a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,quantified method Q equals my int 3 now Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that's another funny go Lang go language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,syntax all he's saying is victory and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,make it my it so I'm casting 3 to my end Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,think of it like a constructor in Java Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so that's a constructor kind of thing Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,print queue 25 so 3 is a numeric it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,positive so should be 1 I guess so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Q equals my string ABC and the length of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ABC is 3 so we run this program the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,first one should be 1 the second one Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,should be 3 let's check it out and sure Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,enough it is 1 in 3 now Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let me edit my presentation and rerun it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,anybody learn how to edit your Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,presentation and rerun it let's change Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this to a minus four let's editing my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,presentation this is written in go by Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the week Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,real cool stuff and let's run it again Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so now it shows up as minus one can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,everybody at a backseater bottom rows Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,good now no surprise if I change it to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,zero it should be zero let's run it and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it shows up as zero if I change this to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a four letter word maybe a five letter Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,word it just returns the length of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,string now I'm going to show you goes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,see you routes anybody know see here Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,good what do you think will happen here Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,0x20 a see that's a hexadecimal number Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,what do you think what happened you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,volunteers shout out your answer really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,will one character well let's try it on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,quantifying euro 0x20 AC is the Unicode Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for Euro the Euro symbol and the Euro Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,symbol is a single character string and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it says 3 because the signal character Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,string is actually an integer and it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,of length 3 really confusing stuff but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here are the things they will trip you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,up it's sea routes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,alright why is this useful why are these Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,car interfaces useful now let's say I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,have another type call exam paper and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,exam paper you submitted it as Syrian Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Dom I shouldn't use Microsoft should use Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Google stuff anyway that's the URL for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,my exam paper submission and let's say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,exam paper is to create me quantify how Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do you test this car stuff it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,difficult right it's gonna make a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,service call go out to the Internet Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,grab the real exam paper and try to test Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it and that's not very predictable the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,internet connection may be down I may Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,have changed my exam my exam submission Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but I can have fake exam paper to HTTP Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,does not matter dot see you in the doc Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it never makes the internet call but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fake exam paper because it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,satisfies quantify it works and it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,great for testing so this is how I use Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interfaces all the time but this way of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,defining interfaces is very very useful Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because in Java or similar languages you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,must say this class implements this and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you may find that the implements may be Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,implements ABCD efg until Zach a very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,very long string of implements in go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,there is no implements cuit it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,implicit implementation so long as it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,got a quantifier method it works the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,most fantastic example of this is IO Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,reader and IO writer you can print line Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to a database because it I all right I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,will read ok so that is the second Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,reason why go is such a good language if Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I'm losing any of you if you want us any Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,questions just shout out interrupt me Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,yes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so Java has if you have a functional Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interface yeah Java it onwards has Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,function interfaces and the question is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if you use the functional interface of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Java you have this kind of capability Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,sort of right and how is it different Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,from the Java interface well I like to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,think go start the refers Java copied it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but here that's actually a very good Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,question Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go JavaScript and I'm sorry Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,leave go office JavaScript nodejs Java Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Kotlin all the new modern languages if Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you hear one of the authors of go speak Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,his name is Robert by interesting Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,speaker he says all these languages are Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,becoming more and more alike they're Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,getting more and more features Java is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,getting functional features node.js is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,trying to get classes so all these Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,languages are converging more or less Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the same language perhaps it differs Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,slightly different syntax who is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,different go is very very limited I'd Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,want to use this word but it is quite Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,relevant limited stupid basic language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it is designed so that anybody coming Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,from a C language can look at it and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,solve kind of understand it it's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,designed so that you can write code that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is efficient that compiles quickly and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,when you look at here five years later Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you can still understand it so goal is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,designed somewhat like Python what Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,design Python was designed to be clear Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and easily readable so many people have Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,actually come from Python to go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,why because Python is really slow global Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interpreter lock Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I came to go not from Python but from Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Ruby the rubies are fantastic language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it makes developers like me who write in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Ruby very happy it's a very very fun Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language but but but yes group global Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interpreter lock it's really slow but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that wasn't my issue it was fast enough Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Ruby was fast enough for me but Ruby Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,code because it was so fun to write when Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you look at it five years later what am Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I trying to write here go tries to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,circumvent that problem by anyway let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go to goes the feature which I want to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,talk about which is concurrency which is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,something which for a person new to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,programming finds it really hard and for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,person who does JavaScript finds it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,quite hard as well so over here I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,declare a function let's call plus and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,all it does for event however prints Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the plus sign that's all it does after Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,one second it Blin prints another plus Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,forever and ever Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here we have basically the same routine Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but it brings out a period brings out a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,dot okay Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,most of us when we start out writing Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,code we write code like this this this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,one compiled so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's run it like this this one compiled Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it all it's got some real error message Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about to execute select so I'm about to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,execute select fatal all goroutines are Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,sleep deadlock which means there is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,something in NGO called a goroutine and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,his detected deadlock and its crash the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,program and it's exited so okay let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,make the program work Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's fix me ok let's run + let's run Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,this program ok pluses are running but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,my aim is to run + and go at the same Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,time concurrently so as a beginner Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,programmer I would do that of course Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,do you think that will never work Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,no why Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a sequential execution plus is holding Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,on to the CPU I just want to let go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's prove it yes plus is hogging the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,CPU doesn't want to let go it doesn't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let go any time to run it all okay I am Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the creator I'm the right of this Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,program now dot can run correct yeah Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't runs by one go and plus and dot to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,run at the same time how do I do that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,anybody we got go experts here come on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ah yes the goalkeeper do ah start a go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,routine let's do that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I added three characters g/o and a space Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and I've turned a regular routine into a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go routine in the routine that doesn't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,block let's prove it hey it doesn't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,block it works but hold on this part the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,code is not executing this particle Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which says about to execute select is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not executing how do I get that to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,execute as well Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,oh you guys are learning fast Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,put another make dot a go routine so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's do that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,bang now there's something interesting Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here this comes from printing lying go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,concurrency this comes from about to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,execute select and then the pluses and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,dots what is actually happened here is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the program ran put that into the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,background it's running independently in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the background put that in a background Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that took a few hundred microseconds Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fraction of a millisecond so in a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fraction of a millisecond or maybe a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,millisecond later the print line Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,executed and I needed to put this select Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here select here select is a statement Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which actually tries to determine which Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,grow routine is ready to run but if I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,remove that select if I remove the wait Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,forever what do you think will happen Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the program would actually the program Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,would terminate Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,what happened to my goal routines if Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,main terminates the core routines Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,dominate let's prove that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so no more select it's commented out and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,by the way the double slash if you've Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,not figured it out its comment Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,program exited no dots no plus so that's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,another feature of go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it has garbage collected the goal Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,routines goal is a garbage collector Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language with a very very very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,performant garbage collector those Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,people coming from Java every now and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,then when the garbage collector collects Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,garbage it stops the world the whole Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,system stops go garbage collector used Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to be like that as well stop the world Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,for a few hundred milliseconds the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,latest version or go stops the world for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a few hundred microseconds so it doesn't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,really stop the world alright Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,those people who know JavaScript will Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,know no js' that's nothing new Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,no Jas has concurrency as well so let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,prove it I'll put it here Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,f12 to get console Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so over here I've defined two JavaScript Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,functions function plus and function dot Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and this is very JavaScript every 1000 Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,milliseconds lakh to the console a plus Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,every 1000 milliseconds log to the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,console a - no - a dot so when I run Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that well pluses go on to pluses four Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,pluses five pluses go on and on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if I run dot if I can type Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,now you got plus and dot's so javascript Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can do what go to us mind budget if you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,know JavaScript do you want to learn go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,okay was it the same sort of sort of the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,same what I just did in my in my web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,browser was I made use of a web worker Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,which will consume this is roughly Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,equivalent to one java thread which is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,roughly equivalent to one operating Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,system-level thread so if my computer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,has four cores it can run four threats Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,at the same time at the same time you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can have many many threads like an when Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you run for them at the same time a go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,routine is not blind the JavaScript web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,worker know a goroutine well a million Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go routines can share one thread Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,somebody actually did a demo a million Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go routine share one thread so it's a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,very simple very lightweight go routine Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,almost does nothing but still a million Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go routines can say one thread and on a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fork or machine you get four million go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,routines so the next point I'll make is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ah after Java II guess guess who the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,coffee Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,guess who do you copy the coffee go the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ideas are very old the ideas are very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,very old right goroutine is actually not Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the correct word to use it's correct in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go by it came from paper called Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,concurrently concurrent sequential Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,processes it's called co-routines Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,spelled with a c' nobody paid attention Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,to co-routines except for the line for a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,long long time Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right then goal came out and say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,co-routines are cool and I'm gonna brand Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,them goroutines and then everybody Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,started saying hmm Cortland once it as Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,well Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Java wants it as well so all these Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,languages are becoming known as the same Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language with different syntax they're Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,getting features before coming to go yes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Rudy as a Jordi no I programmed in Java Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and I was looking for better Java so I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,thought Scala is good Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Scala is an extremely powerful language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't get me wrong it can do everything Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you can write dsls domain-specific Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,languages in Java it is so big that I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can't read my code after one week I can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,be so undisciplined there I cannot read Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,my own code after one week that is color Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,anyway Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,how good is gos concurrency that's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,that's another thing I want to highlight Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about goal is course concurrency good go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is design the birthplace of goal was Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,actually Google we are at its birthplace Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the organization not here but Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,organization and goal was invented the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,story goes when you're trying to compile Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a big C++ program that big C++ program Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,took about 40 minutes to compile they Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,compile the equivalent program in go and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it took less than a minute few seconds Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,but compiled time is one thing how Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,performin is it this is a whole web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,browser in go now those people working Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in no job no GSA say I can have Express Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and I can write a similarly short web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,browser in three lines or four lines or Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,two lines Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's besides the point the point is can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,no GS perform on my really crappy laptop Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,11,000 requests per second with almost Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,no optimization well go optimization Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,compared with nginx same laptop running Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a static website all it does is serve Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,hello well it came out with about the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,same 10,000 requests per second 11,000 Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,requests the second it's within the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,arrow pens right what I'm trying to say Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here is for beginner who knows nothing Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,about OS tuning who knows nothing about Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,concurrency you can write code that's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,production-ready Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as good as engineer Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so goal is designed for heavy-duty Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,back-end service production-ready Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,back-end service a really good really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,performant easy to read easy to extend Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,back-end service and my favorite feature Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,of all Java done right if you use pure Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go in other words you don't link against Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the C library you can link go against a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,CLI breathe that's called C go if we Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't use Seco or use Windows specific Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,dll's or Mac specific libraries you can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,all you need to do to cross compile the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Gnostic oh you go enable equals zero Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,turn off Seco specify an operating Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,system windows I've got clients that Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,insist on using Windows what they do no Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,near windows old windows 386 windows now Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,x64 go Buell hello well it generates an Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,exe file a windows 386 exe file let's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,look at the complete list Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Hayek's Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Wow Android Darwyn what's dragonfly Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't know what dragonfly is FreeBSD Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,some funny always called illumos I don't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,know about it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,ah this is really really really Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,interesting javascript was a web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,assembly yes cool can compile to the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,JavaScript web assembly binaries and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,these people are using it because they Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,want to play games on the web browser Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and go a so performin they put a whole Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,game engine in the web assembly with Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,with physics and everything in there Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,nice target before go is just another Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,target it targets all these platforms my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,platform happens be Linux AMD 64 so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let's go back another presentation Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,if you won a coat download the whole Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,presentation download its there soohyun Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,github lots of other presentations there Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,as well but this one is there and you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can run your presentation like I ran my Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,presentation thanks for listening thank Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you questions comments flamewars yes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,okay the question was usually Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine-learning folks used something Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,like Python and Python is a fantastic Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language for machine learning because Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Python was written by dude over in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Russell my pronouncing that name all Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,wrong Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,he's a mathematics professor so before Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,tensorflow came out you had numpy and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,Python was an absolutely great language Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in that area go is not it's not a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine language optimized language is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the wrong tool to use go for machine Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,language but go is very very good for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,data engineering before you can do Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine learning you need to get your Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,data in shape you need to clean your Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,data so go has data flow libraries which Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,can clean up massive amounts of data Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,really quickly but not the actual Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,machine learning itself any other Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,questions comments reactions you like go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is it worth learning yes okay my friend Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,here has a difficult question for me he Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,promised me a difficult question doesn't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,matter repeat your question yes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Music] Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,okay okay I guess I guess you can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,summarize the question is summarized the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,question is can you share pine can you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,share memory effectively if you got Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,sixty instances of the same thing can Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,you share memory sort of kind of it will Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,eat up it will be 60 times the memory Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,okay Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so let's answer actually is a very very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,good question Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,let me attack let me attack the first Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,question first let me address the first Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,question first go binaries can get Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,pretty big pretty fast that hello world Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was about one to two megabytes why is it Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so big why is a hello world almost two Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,yes when you write a Java class Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,HelloWorld in Java class and the class Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,file is a few hundred bytes a go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,executable is a few megabytes almost two Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes but the Java file can run on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,its own you need the JVM which is 50 Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes or more the last time I Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,checked the entire JVM for go the entire Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go runtime is embedded in the binary the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,entire go runtime the handles go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,routines the entire go runtime that does Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,all this smart implicit interfaces Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,entire go runtime that does strong Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,static types is embedded in that one or Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,two megabytes in the hello world so most Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go binaries are self-contained most HTTP Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is not self-contained but you can make Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it self-contained and can make a pure Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,coding net HTTP or the net library Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,actually makes use of the operating Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,systems resolver library which means Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,it's a time I'm a clear link library and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,many pure go operas don't like it so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,they turn off see go and you can produce Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a pure goal binary and that consumes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,maybe about five megabytes to eight Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes the entire web browser Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,resolver stack so that's why gold Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,binaries can get big quite fast the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,entire docker binary was written in go Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and it's about fifty megabytes I think Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,right so really really huge projects Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,like docker kubernetes cube control cube Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,CTL they win roughly tens of megabytes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,when you deploy a goal binary in a Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,docker container I don't use Alpine Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because I guess I just used from scratch Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,in docker terms from scratch means start Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,with an empty container empty docker Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,container and in my go binary is five Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes my docker containers five Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,megabytes really tiny docker containers Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,so the mantra for goal is don't Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,communicate by sharing memory right Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,don't communicate by sharing memory Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,share memory by communicating so Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,everything in goal is independent and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,unshared non share you communicate Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,across different processes using Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,channels any other comments questions Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,reactions if not I think Xiao Zhang yes Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,yes I've used a patch a benchmark to Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,test the let me repeat the question for Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the audience the question was is go now Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,because that hello world was static Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,content static web browsers everybody Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,knows it's blazingly fast right any any Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,person can write a fast static web Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,browser the question was is go the right Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,tool for IO intensive dynamic content Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,and absolutely that's the purpose of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,goal it's designed to have very very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,fast io intensive stuff if if everything Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,is compute intensive like video encoding Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go will not be very effective because Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,the compute or CPU resource hungry Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,process will grab the CPU but if it is Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,IO intensive go is the perfect fit much Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,much much better than no GS know GS Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,rocked the world because it multiplexed Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,a lot of i/o intensive process Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,on two one thread go multiplex the same Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,thing actually cause some copy no GS in Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,their sense but knock not one trip on Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,all available threads if you have a 64 Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,core CPU 64 processes can be called the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,task versus one process in no js' and Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,yet that yes ok take two days Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,I'll just because need ok Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,go good for writing back in service Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,. go is fantastic for writing back-end Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,service second question is cool Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,resource-hungry does go require a lot of Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,resources like Java for example in the Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,answer is no go is very very efficient Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,next to see in terms of efficiency if C Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,was the ghost and there is one it uses Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,100% go would use maybe of 110% maybe Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,hundred five percent so it is very very Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,resource efficient thank you Dialogue: 0,9:59:59.99,9:59:59.99,Default,,0000,0000,0000,,[Applause]