Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:02
okay however on this is a love story
00:00:08
uh_huh and germany who's uh i'm from new zealand and
00:00:15
everything i'm going to describe a so with my noise
00:00:22
these are the full colourful characters that would dominate the story
00:00:25
schuyler java script the t. s. and type script don't be
00:00:33
put off by their parents or some uh friendly somewhat dangerous
00:00:40
the worst about friendly and dangerous
00:00:47
this is gonna classy expensive taste place honest likes bertrand
00:00:55
russell and european history complicated but and then during fashion
00:01:04
this is transcript a pragmatic empiricist likes the out doors that miles which in stone
00:01:15
or some of the uh features of type script i'm gonna go through them one by one with some code examples of
00:01:23
touch script is structurally sub talked so in this example
00:01:29
why is a sub topics uh before
00:01:33
structural reasons not fall a nominal reasons
00:01:38
so why can be assigned to something that has topics
00:01:44
as an take unions uh just like stella three
00:01:50
has been to sections so in this case we have topics in type why
00:01:55
the type z. has a properties of both x. and
00:02:00
y. so has alpha of number and peyton of string
00:02:06
uh_huh as a thing called index type excesses um so you have an object in this case i
00:02:14
and we can ask what is the type of the property on i. e.
00:02:20
all of this looks all string type uh so here is
00:02:25
a uh the function value that just saying give me okay
00:02:29
that exists on type i give me an object of type i and i'll give you the value correctly typed
00:02:36
at that location and on i so uh say we have um uh
00:02:41
an object containing the name and the height of the world's tallest man
00:02:45
i don't wanna get high we can pass and hot and i think it back a value which would be quickly typed as number
00:02:53
uh if we passed and something other than part nine and that was part time here
00:03:03
talk script has conditional types which has similar to scour threes match
00:03:08
types uh example here is say i have a um a codec
00:03:14
uh which is the way of getting from the type
00:03:18
i to some sort of a binary or officer realisation type
00:03:24
or and back again ah i'm not want i convenience of message to jason on this codec
00:03:33
which is only applicable to celtic where typos in some type of jason
00:03:38
um so here i can use a conditional types which
00:03:42
yeah i'm saying if if our is a subtitle jason dan i require a value of
00:03:48
i am going to return um it's in coding and jason otherwise you can't give me anything
00:03:55
to never so if you try to close method on a poetic we are does not extend jason um it it's
00:04:01
gonna become part on file 'cause you cannot give a single value to two guys on that will be correct um
00:04:09
perhaps more familiar example is something similar to what
00:04:14
a nice and gave in his cane i where um
00:04:17
we have a couple type so here it's a
00:04:20
um it's a union of empty and pay at um
00:04:29
transcript and he has on taking and so we and you like taking ends by having a little type tag
00:04:35
yeah that's why the people pay and that but that's what allows us to discriminate between the two
00:04:40
um and then we have this content type which uses
00:04:44
the um conditional talking of top script to say if um
00:04:50
it's as as a pair and wise is also appear then we're gonna pretend i um
00:04:56
hi claude otherwise you just get access a wise um i've got a a diminishes us working but um
00:05:05
i can show you the end of the talk not during such a hassle to switch between
00:05:12
also has many types um which is why of
00:05:17
encoding something similar to a higher conduit um data types and scalable you have a a
00:05:23
data type that takes that might be that the font assert that the values could be um
00:05:30
identity or option all of that kind of thing so here um i
00:05:36
we pass and two i um i met type this thought little
00:05:42
of of uh of number and backup string um and the mattress
00:05:47
if if we katie and what i've taught you pass me pass
00:05:51
back and a wry that's sorry pass back um yeah i at
00:05:57
for that casey a value which isn't right of whatever type is that okay
00:06:03
so the pasta never of number better string and get back of
00:06:06
a of a red number and data of a right of string
00:06:14
this is javascript javascript is a topological novelist
00:06:20
everyone's friend everyone's unpredictable back into the room for and you
00:06:26
need new just by looking want the yellow clan would do next
00:06:31
the brightest almost foliage among us didn't let this bother bother us
00:06:36
how we're courses acquaintances wished i could invite the clown over to cook
00:06:39
dinner before inviting the clown over to put in there just to
00:06:43
make sure the coven tonight and also include setting fire to the house
00:06:51
finally this is d. c. s. and d. uses five
00:06:55
or trick is to dress javascript up in top scripts clients
00:07:02
this falls most people most of the time
00:07:06
when you compile i you touched up for what you get at the other end is
00:07:10
a file of java script and a file of type script um type declarations which is
00:07:15
like a top t. t. s. for how um that data to yes uh and those
00:07:20
those files having consumed in turn by touch script again if you depend on it module
00:07:27
if you're pulling down some but a model that's
00:07:30
just purely java script you can provide a manually person
00:07:34
don't data t. s. file describing the types of that job script module that's what did he starts
00:07:43
those are the characters in the story
00:07:48
so he got us once upon a time a far off land
00:07:53
the land of new zealand with the hello and on that whole skeleton type script made one sunny day
00:08:01
the attraction between them was palpable so schuyler ventured a friendly greeting
00:08:09
transcript really did not understand
00:08:13
detections me too so much script said hello or
00:08:20
it's colour to not understand uh so it we knew it your fist tend to get into understand each
00:08:27
other's to plug a the code from one to the interpreter of the other uh this is what you get
00:08:34
it's kind of doesn't work um what it's not what could have been if agreements thoughts golf
00:08:42
it's going home depressed why bother and even if there is a reason to papa how are we ever going to understand each other
00:08:51
and even if that works out when we allowed to the land of general availability on get hard
00:08:58
it's going to be the structure of the story why how and when
00:09:04
why why have this relationship in the first place well once upon a time there was a
00:09:10
project the project plan which had to use
00:09:13
javascript you be protected from java scripts unpredictable nature
00:09:20
had a server riddance colour of course and kind of no man's land and between
00:09:25
code that needed to be flexible to be run on the server all the client
00:09:30
when necessary uh that lightly because we didn't you know what we were doing and this is a project we yeah
00:09:37
it was a budget for experimentation they contain just enough
00:09:40
light to choose to reach into the unknown and find laugh
00:09:48
we need to do is run on both server and the client but expose something beta then on top javascript to the park
00:09:57
oh yeah and i love doesn't need a reason
00:10:07
how did this come about well scale we got up early and plan
00:10:12
to tall hill to get a sense of perspective it's colours friends came to
00:10:18
everything looks so simple from here it's like standing on the shoulders of giants
00:10:24
you don't know this is the uh the logo for skeletal yes so if thanks stella j. s. and everyone that also
00:10:34
what about the other four friends had an opening style and javascript could communicate
00:10:39
java script and type script could communicate the full by transit
00:10:44
typically scale and type script could communicate tedious in particular was delighted
00:10:51
oh
00:10:52
salad as gets us javascript ovary only to do
00:10:57
supply touch script type declarations for the jobs the
00:11:01
output of stella j. s. and been without creating the type declarations is all we need to do
00:11:11
so the friends tried it out once it's first disgusted and improvised a short poem
00:11:19
about length of string then javascript rendered and interpretation
00:11:27
the d. s. all the javascript had left out some important information
00:11:32
so tedious added it back and
00:11:36
and so for obvious reasons javascript lift off the types and easiest put the talks back
00:11:44
transcript hit and understood so everyone was very happy that end
00:11:53
it's a really kind of concise example of of what you get put and um
00:11:59
stella j. s. get at java script rot that information fall for
00:12:04
the java script um and then you can consume that from type script
00:12:10
it's not the and there are two problems
00:12:17
problem one is that devious a second favourite
00:12:21
trick is misrepresentation here's an example of that
00:12:26
tedious provides a um a file containing a declaration for the current time get now
00:12:35
a touch your start trip script consumes the s. a. t. and crates function for getting the county park
00:12:43
number of milliseconds since unix zero everything topics
00:12:50
and less of a run time because get you to see milliseconds is not a function on tight
00:12:58
why is this well it's because t. v. a slide
00:13:03
what javascript actually say it was thicket now returns a string so this is this is something that easy us is very fond of
00:13:12
mister presentation is another example this colour touch script
00:13:17
scale wants a flower presumably is a sign of the fiction of like flour
00:13:25
type script of course i'll i'll give you fly has a flat
00:13:31
how we have a um
00:13:34
combine on to scale and touch grip part script has once again been tricked by d. c. s.
00:13:40
so tedious is grain um and presumably told top script that
00:13:47
yep his hat to give a flour um but at run time
00:13:53
um what's happening is is giving a flame instead of a flat so ram scalar doesn't flaming agony
00:14:07
problem is the type script trusts devious completely
00:14:11
so if you make a change to whatever generates
00:14:16
javascript and for get about take your definition files
00:14:22
you get run time problems if something your depending
00:14:27
on some upstream library makes a change and you uptight
00:14:31
and don't relies you don't change your d. v. s. files then you can get problems at run time
00:14:38
if you update your devious files but mike a typo
00:14:42
that um topics then you can't get problems at run time
00:14:48
it's the worst of both worlds you have the confidence of types and run time fairly is of no types
00:14:56
so if you use a devious and there's been no why you will be sorry
00:15:05
the second problem is that is related to before sky let's apply
00:15:10
to nest and type script as a pragmatic and purses so scallop
00:15:14
believes and the platonic abstract ideal of darkness for instance touch script
00:15:21
believes that if it looks like a duck it is a dark
00:15:26
so discusses his uh a duck anyway so you give me a duck
00:15:31
touch goes or right oh i've got a duck and i'm gonna give you a duck little topics it's weak
00:15:39
and scalable as of run time both f.
00:15:43
javascript downtime blows up um because you gave
00:15:48
me an object which happens to have a name and i really want to do that
00:15:55
so this is because it's colours normal way sometimes and type script is structurally subtract
00:16:02
there's the two problems we need to have become a
00:16:05
tedious lines and produces um definitions that are just plain wrong
00:16:12
and secondly use colour because normal types from touch got which doesn't believe in them
00:16:18
so it's in terms of the story once upon a time table for frames
00:16:22
java script you could speak but was unintelligible tedious you couldn't chipper but was a pathological liar
00:16:31
type script to trust the devious implicitly and scully was pedantic about abstract platonic ideals
00:16:38
had we progress the plot 'cause we want these guys to get together
00:16:43
are we to put two constraints on t. t. s.
00:16:51
constraint number one is we generate a d. c. s. from star
00:16:59
so we we we cut out the um the manual process so
00:17:04
provided yeah generation is correct we're not gonna have the the update problem
00:17:09
devious might be just wrong all alignments flies off anymore because it's
00:17:13
being generated from the the source of the types to begin with
00:17:20
concern about to us that we emit emit light normal types in at
00:17:24
d. c. s. definitions is an example to duck his head give me duck
00:17:33
and if any ideas file so his attacker has nine type string
00:17:40
it also has an additional property with the unit nine fully qualified name of dark
00:17:47
it's it's just like the nickname of tight never so exists only at the top
00:17:53
but mike stack structurally unique
00:17:59
so then
00:18:01
transcript says well here's something that looks like a dark gets a type error instead of a run time error
00:18:09
because what you've given to give me is messing this um this property fully
00:18:17
qualified name of dark that's how we can emulate normal types and type script
00:18:25
so those are the two constraints one is the process of generation and the second is
00:18:32
uh how we create normal times and now they lived happily ever after four real didn't
00:18:40
we've got now is some examples of translating
00:18:44
from the stellar types into the type script definitions
00:18:50
it is a scalar trite which has two members alpha and beta
00:18:58
pretty straightforward translation into i touch could interface with the addition
00:19:04
of this um this property that only exists um at the title
00:19:13
i
00:19:16
same thing with classes really uh we have an
00:19:20
interface which describes the class just the same as trite
00:19:24
i'm an interface which describes the class constructor
00:19:29
which in this case takes an awful string and in with the clear that is this value
00:19:35
i class which is the top of the construct and so now we can construct values of
00:19:41
this class by supplying a string that
00:19:46
between thing to leave off that second definition in the class constructor which contains a new because
00:19:53
as we've all heard new is passe we don't do that anymore but
00:19:58
that new definition is how i'm the type script uh kampala now is
00:20:07
that something can be an instance of the class so it's necessary we need to keep it around
00:20:16
uh objects are just interfaces that have a um
00:20:20
uh tell you implementation and the the the value side
00:20:25
of all this stuff um is supplied by ice teletext so
00:20:31
we just supplying quite literally just the types
00:20:36
uh so his his how in in touch to it yet this default i. e.
00:20:46
we can create union so therefore i yeah i'm first go type that's come like
00:20:51
either got result which can either the success of i or failure if they um
00:20:57
in touch script wait jenner right uh that too
00:21:04
interfaces that she uh a common by so
00:21:09
sixes and file a success of a failure if they uh i need a instead of
00:21:14
nothing does the same thing um and thin highlighted in pink is what turns into union
00:21:24
it's a um and on tagged union that because
00:21:30
the scene into classes we can use instance of chicks
00:21:35
to fold out of uh the different possibilities uh and touch
00:21:40
it does flow type so um if raises instance of sixes then
00:21:47
the rest is passed on to do success has a type of success um and the same
00:21:53
to devalue and by the time you get down to total riches will have the type of never
00:21:58
and so the the total function does is um
00:22:04
provides a compartment chick that this um this fall is and the total uh
00:22:12
and if something weird happens around time it's gonna blow up with the inconceivable message
00:22:22
what we could do to get slightly different ergonomics um is and
00:22:26
tag to each of the classes in this case uh probably called tall side we're at um
00:22:33
using shapeless to create a literal types out string success and failure
00:22:39
and the scale three obviously when it shape us to do that
00:22:43
and then what is generated um is pretty much the same as the previous slide with the
00:22:49
addition of this variant fields and a match type
00:22:54
code i result because wind up and fixing on
00:22:58
the top of your head so sixes maps to the type of success and failure maps to
00:23:03
the top of fire and then with a little bit of extra one time i only um
00:23:11
type definitions we can create a function that will fall okay in the union that's been generated using this mechanism
00:23:18
so if this what we define attack union as any union ah out of you with it
00:23:27
the um the objects of the union contain this variant property
00:23:33
and dan what we're not passing into the fold method is this this um object union for cases
00:23:41
which is meant taught this is for every case in union when a function from that case to what if we're
00:23:49
whatever the result follows the advantage of this out of uh the instance all of
00:23:56
'em approach is that we get a label for each of the cases enough for um
00:24:04
we've got many cases it's handy to have labels so you you know we last
00:24:08
uh got the sixes label on fire label for each of the cases in the fall
00:24:16
a it's a possibility um which is what i'm finding increasingly um well
00:24:24
like but i guess below because it does lisp will apply and um
00:24:29
yeah is is to create the um to fall cases type and scour
00:24:35
and stated needs to be in here it um jester objects so that um
00:24:43
javascript semantic supply including ability to pass and i structurally
00:24:46
conforming object rough and one that has to be normally taught
00:24:51
uh and what that means is that we can call
00:24:55
fault um without having to supply the extra tight script stuff
00:25:02
that we did in the previous slide so we get the same ergonomics um well that the extra types being necessary
00:25:14
touch it doesn't do hardcoded types like the this this encoding
00:25:18
a lot like encoding somewhat what am uses but it's uh
00:25:23
it's pretty awful uh so if we have m. steps traction on the scale aside which takes a hike
00:25:30
on the type and wanna use on the top scripts side that we need to cut film how uh so
00:25:38
we have a a type alias then that it's turned into a high um
00:25:43
like a a filled an interface on the touch upside
00:25:47
down this case um obstruction of rye um we get the
00:25:55
an instance that's populated um with the right as if
00:26:05
uh the final things uh blah actually gonna be obsolete by it's got a three
00:26:10
i'm using the uh still echoes going you tight package we
00:26:13
can create a new types um on the south side um and
00:26:22
they generate a um like a text type on
00:26:26
the township sites or it is say a fully qualified
00:26:30
string literal type which is used as katie the tag and um
00:26:37
in this case law on the scale aside we're uh we're creating it out of
00:26:41
string so on the top step side we have a string into sick to it with
00:26:48
a tight tag off the top of katie uh
00:26:53
the intersection uh something that exists any of the top level so at run time we've
00:26:58
got a string but um at project time we have a string intersected with this unit tag
00:27:08
that means that the anyway korea it
00:27:12
a value of that type is with this tag method
00:27:17
unless your you you being deliberately nefarious and you've cast
00:27:24
true the tech type
00:27:28
to create refinement instead of supplying something that
00:27:31
simply takes you wants plus something that uh chicks
00:27:35
and tags um ideally you'd return either labels and the frame on
00:27:40
the slides on just gonna throw our fuel michael pike um you switch
00:27:47
new subtype for you type the scouts side um and string full full weight on the top step side
00:27:56
what his name is that on that so the ice thing you can do with the value of of
00:28:01
this void intersected with the tag is what even if it's
00:28:06
you've supplied on the scale side in this case then if
00:28:09
it is michael throws a we kind of a lot but we couldn't get something else on like can connect to uh that
00:28:21
into um into sections sorry unions of looked rules uh
00:28:28
it's pretty awful
00:28:31
i'd pretty good to see it go away and i think's go through make that possible um at the moment it's kind of
00:28:38
the uh because we need to use internally uh as you can see it relies on some um annotations which is kind of yeah
00:28:50
one problem we could come across a was needing to pass types
00:28:55
like either across from schuyler to top script uh m. because uh
00:29:03
stella j. s. only a minutes um java script
00:29:08
methods and things for types that have been annotated you don't get it to something like either so it's
00:29:15
it's tempting and we tried initially to implement something like either on the scale j. aside
00:29:21
um uh so that we could use that and scholar and also talk script um but
00:29:27
but actually came to the realisation that it seems to work with uh if we implement either in top script
00:29:32
because we get transcripts semantics a top scripts and text
00:29:36
seems to work better with the rest of the at um
00:29:40
and insisted from scout days to just explore this really simple um
00:29:48
eva like object which just contains the focus and and then at the you saw that and touch got in his rabbit
00:29:56
with the the type we've um implemented and type script
00:30:03
so we've got automatically generated from the scout types uh
00:30:08
tracts classes objects unions and new types with the few caveat
00:30:16
everything's read only a circular mutate something you create a method that
00:30:22
takes the the new value and and and do that and it's gotta
00:30:29
everything's unconstrained you're an hour a generic type constraints yet but i think
00:30:34
that it too difficult to implement laced simple ones but hasn't been necessary
00:30:41
and these now or variants um because tight script is
00:30:47
um structurally support kind of does the variance thing without
00:30:51
needing annotations but um we haven't really explored how that
00:30:55
would work out between scale j. s. and talk to work
00:31:02
yeah when we do want to use us um
00:31:10
if you can do everything and skeleton yes then do that
00:31:16
uh if you don't need to consume stodgy us for from javascript then by all means don't that's probably
00:31:22
the best thing um but if you'd consumes go jason
00:31:26
type script fry saris um need consumed psychology us from
00:31:31
java script and at the end that's with this comes in really useful because you get types
00:31:36
if you want to consume javascript from skeletal yes then
00:31:41
you gonna do something else um and hear some possibilities
00:31:47
for uh the scouts touch script direction um
00:31:54
it is an existing projects colour t. s. i. which uh that takes quite a different projects with checking out um
00:32:01
and for the opposite direction this suggestions colleges to a simple so and this other project as well
00:32:13
when's it gonna be available uh that the answers i don't know that this is kind of pat experience report as as well as going
00:32:20
through every day that uh the current implementation is a proof of concept as an s. p. t. plug in um in the future uh uh
00:32:29
i think it would be worthwhile investigating integrating something like this into scout
00:32:34
j. s. so as a flag or the default you just get types
00:32:38
as well as javascript happy and um and at some stage
00:32:44
i'm looking forward to i'm seeing how the changes that have come with stella three
00:32:49
it going to ram influence what we do sickly little types and and take unions
00:32:56
oh
00:32:59
that's it
00:33:06
oh
00:33:12
uh_huh so they're only just mention that uh it's worse you did that uh
00:33:17
and you would see something like that it's integrated inserts grudges what's the um
00:33:21
would benefit to you foresee from from the integration versus
00:33:26
an external tools can you hold them mm more freely
00:33:32
um expertise exists expertise perhaps uh at the moment um what we've
00:33:39
got is a sort of made largely kind of figuring out how um
00:33:44
scholars type introspection stuff works on the fly so that's
00:33:50
that's pretty ugly um i guess that initially i'd like to
00:33:53
look at the internal so scale adjacency how that works because are probably helped my implementation
00:33:59
um but also the possibility of having everything i'm kinda
00:34:04
generated in one pass for that having to match things out
00:34:11
no i have been used for their it's oh
00:34:15
because i mean sort of for your first expectation rose coverages works on the wrist types annually
00:34:21
through right everything military parameters you wouldn't gets an in
00:34:26
in any reasonable way and um this soul that hum
00:34:32
it feeds into your second dictation machine you could do it in one pass ball
00:34:37
not really rhino you would have to do with into i mean to present
00:34:40
anyway um so are so thin tasty is probably a a more interesting feature prospect
00:34:49
uh_huh uh this this is the
00:34:55
does the souls problems but not the root is coloured it's right oh i'm
00:34:59
so really that the compiler plugged in order to discover method is that um
00:35:06
so the the the the the comparator prodded would be your one
00:35:09
pass them is really injector phase summer under the beginning become part or
00:35:14
ron i'm births all the war is but none of the you know the older
00:35:21
things are going to to really you hope you either right okay so stick with an external
00:35:27
every that we can use various beatty or compiler plug and you know it's not yeah uh_huh
00:35:36
uh_huh
00:35:38
so if i'm um it's true programmer and scale use new doc
00:35:44
you know you actually use the field that's used is it that in that
00:35:50
has they never know it would be a lie right now it's not um
00:35:56
well you know you can certainly you could certainly try uh that that the reason that um i had it as a a
00:36:05
a um that's string kate feel starting with the at symbol is
00:36:10
kind of like it's not gonna just automatically would complete for you
00:36:14
uh uh_huh stay away don't use this yeah i mean it is fairly common idiom
00:36:21
fair enough but e. maybe you could do something that even if you use doesn't lead to an sound is right
00:36:27
they make it that that's not usable yeah a u. r. e. i. you could probably make a product uh_huh um
00:36:35
and then you're not gonna be able to use it all uh um cast to it unless you really really try yeah
00:36:48
uh_huh
00:36:52
anyone well thank you very much but you are a good seven and another question the uh
00:37:02
so do i mean you better defaults the the class that runs coverages are not visible
00:37:07
to to draw script to begin with good ideas there was an addition to generate order
00:37:13
tarts you to choose export it's um numbers rhythms
00:37:17
with us uh_huh ideas for you this is simply males
00:37:21
yeah now it's it's tied to the um the scale day sensations which i neglected to include
00:37:27
no the okay that makes sense yeah yeah things yeah oh
00:37:31
yeah but we have some um some macro annotations to generate um
00:37:37
some of the disco days annotations but that's kind of are relevant
00:37:50
uh_huh yep so don't locusts anymore

Share this talk: 


Conference Program

Welcome!
June 11, 2019 · 5:03 p.m.
1574 views
A Tour of Scala 3
Martin Odersky, Professor EPFL, Co-founder Lightbend
June 11, 2019 · 5:15 p.m.
8337 views
A story of unification: from Apache Spark to MLflow
Reynold Xin, Databricks
June 12, 2019 · 9:15 a.m.
1267 views
In Types We Trust
Bill Venners, Artima, Inc
June 12, 2019 · 10:15 a.m.
1569 views
Creating Native iOS and Android Apps in Scala without tears
Zahari Dichev, Bullet.io
June 12, 2019 · 10:16 a.m.
2232 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1296 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1157 views
Metals: rich code editing for Scala in VS Code, Vim, Emacs and beyond
Ólafur Páll Geirsson, Scala Center
June 12, 2019 · 11:15 a.m.
4695 views
Akka Streams to the Extreme
Heiko Seeberger, independent consultant
June 12, 2019 · 11:16 a.m.
1552 views
Scala First: Lessons from 3 student generations
Bjorn Regnell, Lund Univ., Sweden.
June 12, 2019 · 11:17 a.m.
577 views
Cellular Automata: How to become an artist with a few lines
Maciej Gorywoda, Wire, Berlin
June 12, 2019 · 11:18 a.m.
386 views
Why Netflix ❤'s Scala for Machine Learning
Jeremy Smith & Aish, Netflix
June 12, 2019 · 12:15 p.m.
5026 views
Massively Parallel Distributed Scala Compilation... And You!
Stu Hood, Twitter
June 12, 2019 · 12:16 p.m.
958 views
Polymorphism in Scala
Petra Bierleutgeb
June 12, 2019 · 12:17 p.m.
1113 views
sbt core concepts
Eugene Yokota, Scala Team at Lightbend
June 12, 2019 · 12:18 p.m.
1656 views
Double your performance: Scala's missing optimizing compiler
Li Haoyi, author Ammonite, Mill, FastParse, uPickle, and many more.
June 12, 2019 · 2:30 p.m.
837 views
Making Our Future Better
Viktor Klang, Lightbend
June 12, 2019 · 2:31 p.m.
1682 views
Testing in the postapocalyptic future
Daniel Westheide, INNOQ
June 12, 2019 · 2:32 p.m.
498 views
Context Buddy: the tool that knows your code better than you
Krzysztof Romanowski, sphere.it conference
June 12, 2019 · 2:33 p.m.
394 views
The Shape(less) of Type Class Derivation in Scala 3
Miles Sabin, Underscore Consulting
June 12, 2019 · 3:30 p.m.
2321 views
Refactor all the things!
Daniela Sfregola, organizer of the London Scala User Group meetup
June 12, 2019 · 3:31 p.m.
514 views
Integrating Developer Experiences - Build Server Protocol
Justin Kaeser, IntelliJ Scala
June 12, 2019 · 3:32 p.m.
551 views
Managing an Akka Cluster on Kubernetes
Markus Jura, MOIA
June 12, 2019 · 3:33 p.m.
735 views
Serverless Scala - Functions as SuperDuperMicroServices
Josh Suereth, Donna Malayeri & James Ward, Author of Scala In Depth; Google ; Google
June 12, 2019 · 4:45 p.m.
936 views
How are we going to migrate to Scala 3.0, aka Dotty?
Lukas Rytz, Lightbend
June 12, 2019 · 4:46 p.m.
709 views
Concurrent programming in 2019: Akka, Monix or ZIO?
Adam Warski, co-founders of SoftwareMill
June 12, 2019 · 4:47 p.m.
1974 views
ScalaJS and Typescript: an unlikely romance
Jeremy Hughes, Lightbend
June 12, 2019 · 4:48 p.m.
1377 views
Pure Functional Database Programming‚ without JDBC
Rob Norris
June 12, 2019 · 5:45 p.m.
6375 views
Why you need to be reviewing open source code
Gris Cuevas Zambrano & Holden Karau, Google Cloud;
June 12, 2019 · 5:46 p.m.
484 views
Develop seamless web services with Mu
Oli Makhasoeva, 47 Degrees
June 12, 2019 · 5:47 p.m.
785 views
Implementing the Scala 2.13 collections
Stefan Zeiger, Lightbend
June 12, 2019 · 5:48 p.m.
811 views
Introduction to day 2
June 13, 2019 · 9:10 a.m.
250 views
Sustaining open source digital infrastructure
Bogdan Vasilescu, Assistant Professor at Carnegie Mellon University's School of Computer Science, USA
June 13, 2019 · 9:16 a.m.
375 views
Building a Better Scala Community
Kelley Robinson, Developer Evangelist at Twilio
June 13, 2019 · 10:15 a.m.
245 views
Run Scala Faster with GraalVM on any Platform
Vojin Jovanovic, Oracle
June 13, 2019 · 10:16 a.m.
1342 views
ScalaClean - full program static analysis at scale
Rory Graves
June 13, 2019 · 10:17 a.m.
463 views
Flare & Lantern: Accelerators for Spark and Deep Learning
Tiark Rompf, Assistant Professor at Purdue University
June 13, 2019 · 10:18 a.m.
380 views
Metaprogramming in Dotty
Nicolas Stucki, Ph.D. student at LAMP
June 13, 2019 · 11:15 a.m.
1250 views
Fast, Simple Concurrency with Scala Native
Richard Whaling, data engineer based in Chicago
June 13, 2019 · 11:16 a.m.
624 views
Pick your number type with Spire
Denis Rosset, postdoctoral researcher at Perimeter Institute
June 13, 2019 · 11:17 a.m.
245 views
Scala.js and WebAssembly, a tale of the dangers of the sea
Sébastien Doeraene, Executive director of the Scala Center
June 13, 2019 · 11:18 a.m.
661 views
Performance tuning Twitter services with Graal and ML
Chris Thalinger, Twitter
June 13, 2019 · 12:15 p.m.
2003 views
Supporting the Scala Ecosystem: Stories from the Line
Justin Pihony, Lightbend
June 13, 2019 · 12:16 p.m.
163 views
Compiling to preserve our privacy
Manohar Jonnalagedda and Jakob Odersky, Inpher
June 13, 2019 · 12:17 p.m.
302 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
245 views
Asynchronous streams in direct style with and without macros
Philipp Haller, KTH Royal Institute of Technology in Stockholm
June 13, 2019 · 3:45 p.m.
304 views
Interactive Computing with Jupyter and Almond
Sören Brunk, USU Software AG
June 13, 2019 · 3:46 p.m.
681 views
Scala best practices I wish someone'd told me about
Nicolas Rinaudo, CTO of Besedo
June 13, 2019 · 3:47 p.m.
2707 views
High performance Privacy By Design using Matryoshka & Spark
Wiem Zine El Abidine and Olivier Girardot, Scala Backend Developer at MOIA / co-founder of Lateral Thoughts
June 13, 2019 · 3:48 p.m.
754 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
277 views
All the fancy things flexible dependency management can do
Alexandre Archambault, engineer at the Scala Center
June 13, 2019 · 4:46 p.m.
389 views
ScalaWebTest - integration testing made easy
Dani Rey, Unic AG
June 13, 2019 · 4:47 p.m.
468 views
Mellite: An Integrated Development Environment for Sound
Hanns Holger Rutz, Institute of Electronic Music and Acoustics (IEM), Graz
June 13, 2019 · 4:48 p.m.
213 views
Closing panel
Panel
June 13, 2019 · 5:54 p.m.
400 views

Recommended talks

GADTs in Dotty
June 14, 2019 · 4:41 p.m.
302 views