Player is loading...

Embed

Copy embed code

Transcriptions

Note: this content has been automatically generated.
00:00:01
okay welcome guys i area guideline contracts yeah as you got the the latch
00:00:09
i can't get because your candidate for the sock fish it's not gonna be the usual talk to you
00:00:17
guys are used it because guess what you gotta do
00:00:21
it all the work so why is this talk about
00:00:25
this joke about um how you can in the same well
00:00:31
why a perfectly your code and hopefully make your code better
00:00:35
and i'm like oh yes i'm the now and i i'm
00:00:42
a software engineer and typing brightness colour for a while um
00:00:47
but i haven't always of return star are actually started my career with java
00:00:53
and accidents caught hangs
00:00:59
well it was an amazing journey wasn't always that easy
00:01:03
um so this is a collection of all the things that are learn over the years and
00:01:10
collection of things that i've seen other people do i i'm i'm also writing a buck
00:01:16
um uh and my yeah these are give me a code that gives you forty percent off
00:01:21
on what the books not just might that that's more in stuff we wanna talk about curves are
00:01:28
yeah you're right some beautiful again piece of corrode and and you know um
00:01:37
you think is also um and and one of your
00:01:39
teammates starts reading it and they think that it's really
00:01:48
not right so there is this that means speech at
00:01:51
that tells you that the finding good code is really difficult
00:01:57
so depending on how many swear words you use um that could be a good better off
00:02:05
you know how good your code is but even with the basket you'll still have a couple of moments where
00:02:13
second tape does this code to write
00:02:18
said it's really important art to try and
00:02:24
right corrode that um it's the best that we can write any particular
00:02:29
when you're learning a new language is not just about the sink docks
00:02:34
he's also by the humans style that that's specific language has
00:02:39
which can be tricky some time to master in particular the beginning i
00:02:47
can i feel that then uh to us well but a while ago
00:02:51
i had the opportunity of looking at some off old clothes that um
00:02:58
i've written in one of my previous companies oh yes i write this part
00:03:08
that should be an idea get blamed because come up everybody both that everybody wants to know who's to blame and then
00:03:17
it and that was me weights with um embarrassing
00:03:23
ish but is it that making that myself six
00:03:27
years ago or six months ago or six weeks ago i was right in a different type of crowd
00:03:33
so my solve now he's up better co there there was
00:03:40
to freely second half and this is why i think talking about
00:03:46
could party giving people little tips on how to improve code having
00:03:52
the courage to stand up and say okay tell me if discuss good is
00:03:55
really important because it makes you a better person and attending events like place
00:04:01
i always had a friend in at the end of the data either wanna spend the entire night
00:04:07
going we fucked them into your code base because i've learned so many nice tricks i don't wanna
00:04:13
try them all to refer doing is the way of improving yourself as a
00:04:19
developer but obviously you know most of the time we don't work our by ourselves
00:04:27
so we always have to make our teammates happy in particular if one
00:04:34
of our team eight could arm for to know what i've so always good
00:04:41
as if the guy you whip and that's maintain your code will be violent rough who knows where you live
00:04:49
right we want to make our team life it's easy
00:04:53
as possible but i i'm not not only that um
00:04:57
when we write bad code we inject a lot of complexity that is not necessary
00:05:04
so there are two types of complexity wise because you know the problem that we are
00:05:10
actually trying to solve is complex to your one is just accidental complexity
00:05:16
it's just us making the code more convoluted than necessary
00:05:22
so off we are gonna play again today but isn't that great game of all
00:05:29
so that's where you guys come in there is called what's wrong with my code
00:05:36
we're gonna have time out um when we're gonna i'm gonna show you a snippet of code
00:05:43
and i'm gonna ask you what's wrong with my code and then we're gonna discuss
00:05:48
it together and see you know how we can make it better there than it
00:05:53
the different that was also difficulties some will be he's here
00:05:57
you know there's some will be a little bit more tricky and there might be
00:06:02
problems related to performance readability or simply code
00:06:07
that doesn't really look sky lucky enough okay
00:06:13
so are we ready for the first round yeah i gots um okay let's start
00:06:20
this high actually yeah i've done this not in production unit test it
00:06:25
to find out how the database right and you have a function connection
00:06:31
followed some configurations and then calls a function that
00:06:36
uh in eastern instantiate the connection to the database
00:06:42
so what about
00:06:45
if
00:06:50
if if if not i hear the word ass sorry i forgot to say n. so i experience don't worry about
00:07:00
it all the slides will be online and i know it's gonna be really to afford be um mike guy so
00:07:06
reach out and i would repeat all the answer to this is gonna be fine
00:07:11
so it must be fun for you as well so don't worry about it okay cool i i'm gonna give you at six
00:07:18
sarah had this that's it's and i was running it
00:07:23
anyone else you know the memory was going up enough enough happen it
00:07:28
was like how things so how much memory doesn't make any sense certain zealots
00:07:38
that every time i was calling the function connection and i was in stop wishing menu connection to the database
00:07:45
and the solution to fix this is to turn the function into of all that would avoid a lot
00:07:52
of memory allocation okay so that the da i'll take away is that every time you write the faction
00:08:02
and this function as an no argument you
00:08:06
should ask yourself if these function already is
00:08:09
this actually of all can i avoid a locating memory for this over and over again
00:08:18
the second
00:08:21
lots of but i still have the speed of workload that has
00:08:27
an a. p. i. cold my p. i. that has a function
00:08:32
that is called my into point and any calls to other functions
00:08:37
uh the function and another how functions are so let's row or it might be a
00:08:55
oh it it if the answer is it certain
00:08:59
oh it's a problem of ordering functions yes but
00:09:05
i'm looking for something more specific any other answers
00:09:13
like i said the problem is that these functions are not meant to be
00:09:19
public right these functions are out there functions that access my a. p. i.
00:09:27
right so i come from a java backgrounds and
00:09:33
in java at least when i used to write java d. d. for
00:09:36
taxes modify your was protected so you actually writes because by putting the function
00:09:43
within the sayings code will you are limiting the scope of the function
00:09:48
um but they come from the top background which i believe is the
00:09:53
same background of the majority of the star developers i separate use
00:09:57
not to worry about it right i don't let anything and that's it
00:10:01
but by so every single function they you over ah eat is gonna be topic
00:10:08
which has so i fax one it makes your e. p. i. a lot more complex years
00:10:14
because when you're user calls that functioning press the
00:10:17
ought is gonna have a much longer list of methods
00:10:22
very nice to pick from and this current is the incremental compilation
00:10:29
so i think that's a compiler wendy's tries he needs to recompile
00:10:34
the public matt uh the house to such where this probably mattered
00:10:39
what else this puppy method disuse body from actually spread the search is gonna
00:10:45
be a lot faster so i'm just saying why don't we have here is that
00:10:53
i know it's the hunting uh no it's easy to forget that but make sure
00:10:58
you use the most restrictive boxes modify your the makes you occurred
00:11:04
work so if something should be for that make it right it's it's something should be protected
00:11:10
make it protect because it's gonna help your compilation and your uses life okay
00:11:18
well it's it's rock and this function
00:11:24
that is called my function but that's and stuff
00:11:28
and i am a has a data that is again it's
00:11:35
what's wrong with my code
00:11:40
yes you guys got it it was the the return type it right yes that's an easy mistake to make
00:11:47
so actually these facts uh needs not actually returning data is just returning unit
00:11:53
and this is the classic copy and paste things like i it happens to everybody
00:12:00
what these functions should actually read had is you can
00:12:03
add because this will make shirt that data is not discarded
00:12:08
pays return s. value of the function my function is is that there are a lot of these tricky parts
00:12:16
that can easily be detected by using something that is called flat compilers
00:12:23
uh it's something that you can enable a within your field
00:12:26
that is b. t. file and i strongly recommend you to
00:12:31
enabled them because they cats a lot of these silly bites they
00:12:36
can happen and they're really really difficult to notice so r. i. e.
00:12:42
link you are made in noise article by robin reese wary lace all
00:12:47
the fact that we have available that we should all be using okay
00:12:54
the next wow it's we have these neat that's got a then we half of our a
00:13:01
that is the string that contains the string happy times
00:13:05
but they and then we do a bus scallop days
00:13:12
what's wrong with this code
00:13:15
i'll give you guys thirty seconds of what the stock is gonna be a winning ten seconds
00:13:23
okay get if you know the answer is string concatenation and the plastic yes absolutely so
00:13:33
this command is not wrong it does what is meant
00:13:37
to to live but string concatenation is a normal that
00:13:42
frost what you should do his dad is use the string interpret eight
00:13:48
or operator that is the little ice that you see before the string
00:13:52
in terms of performance this is gonna be a lot faster
00:13:57
so as a general rule in style not
00:14:00
use the plus the always use the um
00:14:06
the string operator okay cool
00:14:12
next rounds a set of our half
00:14:17
that's correct simple script that needs to be verified that exactly one on
00:14:23
argument as being passed so i receive somehow all the
00:14:29
least of all the arguments that i've received any do if argument has
00:14:34
the lamp of zero than i for an exception no parameters found a if
00:14:42
arts the lymph has small them one then afro an exception
00:14:49
too many arguments phones otherwise i do art style head
00:14:57
what's wrong with like a it no it's no no it the
00:15:05
too many people to okay let's go is why what's wrong with this guard
00:15:13
oh it's a um there's there are problems
00:15:18
with these code are you are you are close
00:15:21
uh and the biggest problem that i have we discovered is that had
00:15:27
dot had dog get an option are
00:15:31
really really really unsafe functions to use
00:15:35
in style reason why they're unsafe is that if you call dot had on
00:15:42
a collection that is empty or if you call don't get on the norm
00:15:47
shown that exempted they will for a nasty exceptions exceptions right so like this code
00:15:56
i probably every yeah yeah i'm after maybe hide the
00:16:00
night of drinking and i have a production her or and my boss is going up made
00:16:06
because everything is broken i need to go
00:16:09
into makes myself that the if statements before all
00:16:14
logically got antsy there i only have one elements
00:16:22
which is fine but in the requires in human intervention around
00:16:28
reasoning on the lack of right i have to thank that if it's not zero if it's
00:16:35
no more than one then it's one so that the
00:16:41
why over factoring this is using bottom matching like you
00:16:47
can patent much on oh right he and you can say
00:16:52
if i have the empty are righty de and high for the exception if
00:16:58
i have an array with exactly one had a mentor and returned the other man's
00:17:03
you know the other cases are returned the other exception this is a lot more readable
00:17:08
then trying to figure out all d. if animals
00:17:13
statements in particular because this isn't simplification i've seen functions there where
00:17:21
two underlines long there where one single if
00:17:25
else if else if all's if else else um segment place if
00:17:38
if you split might okay yep yeah time you i'll get to that in one second
00:17:46
um so the take away and is the is please dawns don's get
00:17:54
don't don't use that had dined used all get either use that option
00:18:01
or these use pattern matching of any of the i order
00:18:05
functions um there are available and now to the bus rounds
00:18:13
this one came directly from my to know their ski
00:18:17
um i wasn't sage you don't and giving this talk
00:18:23
and then suddenly marketing race that and saying i don't hit the something else running scared
00:18:29
and i know they serve learn something and so what is wrong
00:18:34
with discovered if i give you guys mean it up with him
00:18:45
okay okay
00:18:51
if
00:18:54
so the answer is are we should use the ensuring that it is not my answer
00:18:58
is a lot more simpler than that anything else will like to give it a try
00:19:09
yes the types i. e.
00:19:14
uh the typeset not cracked up but uh you might be right yeah somebody
00:19:20
before indy audience was shouting either and i absolutely agree with you but it's
00:19:25
not what i'm looking for i'll give you guys a little hint if it
00:19:35
a right to cave so apparently for
00:19:40
the compiler days is not as powerful moment
00:19:45
as a base is so first they said there wasn't aware of uh
00:19:54
it's always advisable to put the happy case first you know after matching
00:20:02
so it is a small formant serve thank you marty i wasn't aware of that and i don't something at fish
00:20:11
so my take away is that are you know can't
00:20:15
really is awesome right you can always always learn something
00:20:21
from showing your code to other people i'm not saying that you should
00:20:25
invite marked no that's good to utah and the bigger rooms that you're
00:20:30
cut these rock because there that a little bit traumatic i have to
00:20:34
admit that had a hard on something you why wasn't plates that's awesome
00:20:40
but i i get ready for the next not yeah yes awesome
00:20:46
we have a case to us a that takes a an argument that it's an x.
00:20:52
tight ends and then we'll have a class the if that as two parameters and x. and y. both
00:20:59
of type int and they extend and a of
00:21:03
x. but give you guys thirty seconds difficulties one left
00:21:13
it yes but the point is absolutely right it's dawned x. downs
00:21:21
case classes let me say this again i don't want
00:21:24
to extend the case classes because it's gonna be a mess
00:21:28
i'm gonna show you why because he likes than the case the us
00:21:34
then apparently if you compared to efficiency is you could break equality
00:21:40
so i say this is a disaster because
00:21:44
the quality is how we used a lot of
00:21:48
internet of scar which means that potentially you could
00:21:52
retrieve do wrong element from a mop or other
00:21:58
really really tricky parts to figure out if just don't do it doesn't right
00:22:05
are half time on forcefully to fully explain why this is
00:22:10
really a deeper at re read but it would feel like
00:22:15
and also we will have nickel us there is sitting right in front here
00:22:20
that tomorrow is gonna explain us a
00:22:23
little bit more why extending pace classes are
00:22:28
really pretty bad sorry my solution is to
00:22:33
play is always the clarity okay stresses the final
00:22:37
because it's gonna avoid a lot of headaches so let them marketing was in the audience we asked him
00:22:45
why it is that says i'm not final by
00:22:48
design and it turns out that there are some um
00:22:53
i it's crazy thing he started compiler code
00:22:57
that requires case classes to be not final
00:23:01
sell i present to you could wrap flow
00:23:05
all off she is not final k.'s classes uh_huh
00:23:12
okay martin and i see no my case argued about it
00:23:16
being the start complied a meaning are you pushing to scouts go
00:23:21
i'm not so please don't use case classes that are not find all
00:23:29
if you are not not as key or you are working
00:23:33
on the east dallas colour report and you know what you're doing
00:23:37
there is a really good chance that you probably need to put a final there
00:23:45
so these guys don't extend case classes because it's it's really tricky to it and figure out what's wrong
00:23:53
okay so to take away in case you didn't get a please may
00:23:58
all your case classes find all unless you really really know
00:24:03
what you're doing and if you really need to extend that
00:24:07
don't make them at case plastic case classes does something that the compiler
00:24:14
did you can rewrite the same methods their case class has just monday
00:24:22
okay the next round we have these beautiful piece of code
00:24:29
that he's a function that is cool or something it
00:24:33
takes two parameters a billion there is gold enable a
00:24:39
and now when there is called any will be and you returned whatever and unit
00:24:47
yeah so what's wrong with my kurt i would give you guys
00:24:52
a minutes otherwise we're gonna be here if done in ten minutes
00:25:03
t. v. audiences shouts name parameters absolutely so when you look at this signature
00:25:11
sorry when you do not don't look at the signature in just look at the function implication
00:25:18
just something true false what what that's true false means if i don't i i need to look
00:25:25
at this signature of the function to remember that the
00:25:29
first volume value is the city to enable i. e.
00:25:33
and the second bullion value is associated to enable be any particular factoring
00:25:40
and it's what them that's that it's gonna be a park
00:25:47
so my suggestion is to always use name parameter is full billions
00:25:55
always because they are so easy to mix up yes we have a question
00:26:10
with
00:26:14
so the question the if if i'm gonna be simplify a
00:26:17
if things will uh be bettering doughty a high hopes of um
00:26:25
these uh just under half is not to do these
00:26:28
just for millions but to do it every time you have
00:26:33
more than one parameter there he's at that has the same type of another one
00:26:40
and i seem functions that take time parameters and all of them are really and
00:26:47
which are really really tricky to use uh if
00:26:50
you have more then free parameters of the same type
00:26:56
please do you consider making something more tight said if you could
00:27:01
have an object or a case class that drops all these billions
00:27:05
um because this will make your code safer and easier to read as well
00:27:11
so the take away ace afraid it's amazing featuring star
00:27:17
use fully name parameters because it makes the code a lot more readable
00:27:26
okay ready for the next was yes sir where um of
00:27:31
this function that a scroll there's something there it turns and and and this function calls
00:27:39
three functions a. b. and c. a. plus b. plus c.
00:27:46
then you have a function that is private a the returns forty two
00:27:51
the function they spread that that does some read some stuff from
00:27:56
a database then we wait and and then we have a private function
00:28:01
see that returns plentiful i. d. v. guys i mean it's but what's wrong with discovered a
00:28:18
so so that you're from the audience the show the news for comprehensive exam periods there is
00:28:23
yep everywhere yes yes yes yes yes it's uh
00:28:30
the the idea of features in particular for beginners a it
00:28:34
sometimes a little bit difficult to grasp the general idea is that
00:28:38
don't lie about your types of eva function does some to synchronise computation
00:28:46
'kay to return type of function it's a clear indication
00:28:51
of what these function das so by blocking the future
00:28:57
into line there has been a lighted you'll
00:29:01
are basically asking of fried to step aside it's
00:29:07
and do nothing
00:29:11
instantly okay i'm back i'm done i'm gonna continue and continue my computation
00:29:19
so this is terrible because you are wasting a lot of computational power
00:29:26
so the ah about your types if the function be does some uh synchronise computation
00:29:32
it was a few sort of and then has somebody was shouting from the audience how to deal with features
00:29:41
useful action that's a much better way of extracting
00:29:47
the result batteries written by your future and combining it
00:29:53
and if you really really really really need to block future because at some
00:29:58
point you need to have the answer try to do it as late as possible
00:30:06
so the take away in this case it is not uh have a have a lock a future
00:30:15
if you are blocking future there is a really good chance that you're doing something wrong
00:30:22
okay next round said these these
00:30:28
um function factorial are that has
00:30:34
a recursive function very school nope that calculates for the orioles
00:30:41
by the way if you don't people nazi now you'll have a hundred percent coverage
00:30:45
on recursive questions during interviews so yeah that's that's good what's wrong with this got
00:30:55
oh okay zero lot work because we pass one
00:31:02
i'm not sure if that's the answer that i'm looking for it might
00:31:05
be the micro these are wrong and yet to happen before we make area
00:31:10
uh but it's not what i'm looking for but yet
00:31:13
uh let's assume that my my factorial is actually correct
00:31:19
i i take ah yes the audience is she is shouting to record an annotation
00:31:29
so when i go that means up the that recursion annotation
00:31:35
was struggling an optimisation in the compiler out that no no
00:31:41
the scroll bar there is a lot smarter so he's able to detect
00:31:46
that uh records it's function can be optimised even if there really is no
00:31:52
uh to record steve annotation so that's awesome our
00:31:56
act uh humans are not as good as the compiler
00:32:01
so every time one of my team mates right the recursive function
00:32:05
i want to make sure that is the recursive when you hop it's a
00:32:11
recursive function you are sure that it's not gonna blow up your stock so
00:32:16
you know it's safe to use in production uh the good thing is that if you are on these
00:32:23
annotation annual function is not to require see if the code will not compile
00:32:29
so even though this colour compiler doesn't
00:32:32
need these annotation to trigger the optimisation
00:32:37
because the petite optimisation i was still suggest to use it because it combines your teammates
00:32:43
and yourself that you are fighting a function daddy's a stack safe so are your writing up
00:32:53
recursive function please please make sure there is there a recursive
00:32:59
meaning that it's safe to use in production and use the
00:33:03
'kay wreck annotation so that you can prove that f.'s actually a case okay
00:33:13
next route so we have been so fireballs
00:33:18
and we have my map fat that has a type
00:33:24
o. option of uh my whole the string to string
00:33:28
we have my list that is an option of list the strain
00:33:34
we have my option option that has like the option options right
00:33:39
anyway half my body and that has a a is an option of body
00:33:46
so
00:33:48
what's wrong with mica
00:33:53
some in the oh that's yeah see shouting yeah you could use our ideas because it's hard to read
00:33:59
yes i really do it but that's not the point there oh yeah
00:34:02
arm to look in full but yeah that that could be a good improvement
00:34:10
type arrays are uh_huh yeah oh it's a lot simpler life then
00:34:17
oh yes option of map option also laced option
00:34:22
of option option of wood and are we don't it's
00:34:25
do we really need to distinguish between i receive poles and i received no value
00:34:33
do you really need to distinguish between have no laced
00:34:37
versus i have an empty list don't get me wrong there are gonna be cases where
00:34:42
y'all business requirement will require you to do that but we have this kind of types
00:34:50
'cause yourself is the is the simplest type that satisfies my requirements
00:34:56
right beside the option of mock is the same
00:35:03
c. a. is equivalent to empty mop and so on and so forth question from the audience
00:35:23
so the comment from yeah disease that option of billion
00:35:25
actually have a body case in particular when you read
00:35:30
from five and i absolutely agree with you but that is
00:35:33
probably one percent of the cases that i've seen are so
00:35:37
yes i agree with you there are specific cases that uh
00:35:42
require an option proper or to transform these in too much right
00:35:47
uh what i'm arguing is um make sure that your types are
00:35:54
simple enough don't be lazy and just although
00:35:59
complicate your types because then you will pay
00:36:02
a big price for it but you are absolutely right if you're reading
00:36:05
from a file you my actually want to keep an option of one okay
00:36:12
so in this case the take away ace don't be lazy try to think about your tights
00:36:20
and if possible try to simplify them if you're starting to have too many
00:36:27
rappers then there is probably something that is not quite right it's probably has the
00:36:34
he did the the gentleman you've been suggested maybe you need to try
00:36:40
right uh but when you start a nice thing to
00:36:43
many types uh it could be a design issue um
00:36:50
cool um so the dogs were all my mountains
00:36:56
and this is the summary of all the things that we have seen these obviously are no not uh
00:37:05
on global rules there are always exceptions um but these are my suggestion
00:37:12
uh for people that maybe just thought in the language of things to look out for so we
00:37:18
discussed about um function that takes no parameters and
00:37:25
the fact that sometimes they are located too much memory
00:37:29
in those cases maybe you should consider transforming your function into a file
00:37:35
we have discussed the about the fact that depending on your backgrounds
00:37:40
you might want to forget about our all access modifiers
00:37:45
and you should always try to make your function
00:37:49
as restrictive as possible it takes one second to make a function public
00:37:54
but try and control the visibility of your code because he will make
00:38:00
the combination fast the n. is gonna make
00:38:03
your um code easier to use for other people
00:38:10
enable compiler flags because there are some parts of the really see later really
00:38:16
easy not to see and they can really really save you so really strong you
00:38:22
i strongly suggest you to go and look at the problem laurie's article about it i am i don't use
00:38:31
don't use string concatenation if i think i said the ops the uh sorry um
00:38:37
be careful when you are combining strings always the big
00:38:42
string interpretation over string concatenation because it can really have
00:38:47
an impact on the performance of your problem uh if you're concatenating to strings is not a big deal but
00:38:54
if you scale this to all the big number of strings then obviously um
00:38:59
just can have an impact w.'s to hide don't use dog
00:39:05
gets because even the your coat my still work you are making
00:39:12
humans life more difficulties because people will have to
00:39:17
reason about the lines before you function call and complains then self that
00:39:22
in this context stuff had dock at is a safe operation to to
00:39:30
i'm always always always always make your case gases final any few
00:39:37
needs to extend something that you region if thought is the case costs
00:39:43
don't make it as a case does make it has a regular fuss when half parameters to have the same type
00:39:51
don't risk it it's really easy to just the fact that the function and create
00:39:56
really difficult attacked bucks to use fully name parameters
00:40:01
that will guarantee that the parameters are passed consistently
00:40:06
just by their names rather than their position of decoration
00:40:12
don't flocking futures it's really really inefficient
00:40:17
try to always have types that actually represent the computation that you are
00:40:22
uh performing and if you have a computation that is a synchronous
00:40:27
well done all the computations that use they will need to be a synchronous
00:40:33
and if you really really need to block block is the latest possible
00:40:40
use their records even the patient even if the compiler you smarter than
00:40:44
us any well anyway optimise your code we're not as much as the compiler
00:40:50
and it's a nice way of proving that your body's safe to use
00:40:56
and finally tried to simplify your talks off
00:41:01
just so that you are not gonna pay the cost of maintaining really complex that signature later on
00:41:08
so i hope that this was useful um effective remote for listening and for participating
00:41:15
i hope it was fun i am gonna post this light on my tutor account so if
00:41:20
you want to have a look you can go into that and uh thank you very much
00:41:32
exactly four questions so if you have some just freeze you may come to you okay sure see
00:41:40
yeah just version of the program is when you are even before yeah we used to use it you just use
00:41:51
research because shoe you're you should we be review shows you should interest usual
00:41:57
you should request absolutely i mean writing good code thousand
00:42:03
doesn't allow you not to write tests i hope they that was not the message
00:42:08
uh yes absolutely we still need to write unit test integration tests
00:42:12
whatever we need it does that uh avoiding certain functions avoids um
00:42:20
avoid the uncertainty when you are you the review decoder
00:42:24
re factoring occurred but you're absolutely right now using the
00:42:29
um the metadata had or to get doesn't mean that
00:42:32
we don't have to write a unit test to guarantee that
00:42:36
yeah things are actually working so you're absolutely spot on writing
00:42:39
did good code doesn't mean that you don't write tests of
00:42:45
so about a seizure production functions i got
00:42:48
beaten just a collection max correction mean a soul
00:42:55
no one knew him get or just be very very careful
00:43:00
oh yeah absolutely i mean a a stylus colour to thirteen very i
00:43:05
i came out like two days ago uh that as a matter of
00:43:09
fact are that there are still a lot of functions that that there
00:43:13
are not safe so as you were saying if you two don't max
00:43:17
uh on a on a list that is empty will bob absolutely sir dot
00:43:22
had don't get are not the only ones are that you need to be um
00:43:28
aware of but are definitely the most common ones
00:43:33
dot size an ethernet laced guy is alive is getting scary now yeah s. the
00:43:39
absolutely didn't part about there but that that's terrible yes absolutely that's question someone wants

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.
2231 views
Techniques for Teaching Scala
Noel Welsh, Inner Product and Underscore
June 12, 2019 · 10:17 a.m.
1295 views
Future-proofing Scala: the TASTY intermediate representation
Guillaume Martres, student at EPFL
June 12, 2019 · 10:18 a.m.
1156 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.
1655 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.
393 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.
6374 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.
810 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.
374 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.
1340 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.
301 views
Building Scala with Bazel
Natan Silnitsky, wix.com
June 13, 2019 · 12:18 p.m.
565 views
244 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.
2702 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.
753 views
Immutable Sequential Maps – Keeping order while hashed
Odd Möller
June 13, 2019 · 4:45 p.m.
276 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

Lord of the rings: the Spire numerical towers
Denis Rosset, researcher in quantum physics
June 14, 2019 · 1:47 p.m.