0:00:26
what is going on guys welcome back to
0:00:28
another session or bill break and fix
0:00:31
which is brought to you by the raw
0:00:35
and today you have only got one rule
0:00:41
hope you're all doing very very well and
0:00:44
having a really great weekend
0:00:50
first thing is first and thanks to the
0:00:52
acknowledgement and pay our respects to
0:00:54
the elders of the past present and
0:00:56
future so here we go
0:00:59
i begin today by acknowledging the
0:01:01
traditional custodians of the land on
0:01:04
which we gather today and pay my
0:01:06
respects to the elders past present and
0:01:08
future i extend their respect to
0:01:11
aboriginal and torres strait islander
0:01:18
so that was all done pretty smoothly
0:01:21
and um yeah so just a bit of a context
0:01:25
from yet uh from friday night's stream
0:01:29
we did uh which involved me and kartik
0:01:33
uh we basically fixed an issue where we
0:01:38
see each other's notes that we were
0:01:44
through the web sockets and that was due
0:01:48
um dom purifier not being referenced
0:01:54
what we initially have done is we have
0:01:58
uh deleted the dom profile completely
0:02:02
um because we don't need to add this
0:02:05
stage uh we are just working
0:02:10
doing some other bug fixes of websocket
0:02:17
session we're mainly gonna be focusing
0:02:23
there's a bug of websocket which is
0:02:28
notes that are not being updated
0:02:36
they're they're still being tried to
0:02:39
when there's no new text in those notes
0:02:47
so that's the one that we're going to be
0:02:51
today um hey dec dev
0:02:56
uh tori's uh busy with his um
0:03:00
interviews and other
0:03:02
stuff as well so um
0:03:07
can hopefully be back
0:03:14
let's get the ball popping
0:03:17
so do you want to choose unless it gets
0:03:21
and on this time between one um so why
0:03:25
am i saying between one
0:03:27
that's not even a letter
0:03:28
this time however if we give you a
0:03:31
narrower option which would be a to
0:03:44
yeah that makes sense
0:03:48
let's give you up for tory
0:03:57
so we have got this logic that if a
0:04:00
letter doesn't match
0:04:03
any of the built-in background musics
0:04:07
then we just select the one closest to
0:04:13
so in this case r would be the closest
0:04:18
so we can play the
0:04:20
music starting with r so there we go
0:04:28
all right i'm pretty sure you have
0:04:30
already guessed that which one that is
0:04:33
it's pretty obvious isn't it
0:04:37
all right um so i'm gonna basically
0:04:43
and see how we go from there
0:04:57
we'll open up jira
0:05:01
just make sure that our bug is there
0:05:25
let's get the ball popping now
0:05:30
so yeah we plan to work on
0:05:34
this one here which is
0:05:36
um patch note method being called when
0:05:39
no changes are made to the note
0:05:45
uh the code up and going
0:05:50
so yeah i was working on that one but
0:05:54
uh eventually make a head way because um
0:05:59
needed another person
0:06:06
actually i wouldn't need another person
0:06:10
to test this out in order to reproduce
0:06:16
it doesn't it just requires
0:06:23
saving it and then
0:06:26
getting the board back
0:06:29
and then trying to update it as well if
0:06:36
all right uh so uh what i'm gonna do is
0:06:42
uh as you can see i like to
0:06:45
create different branches
0:06:50
different features or bug fixes so in
0:06:53
this one i've created a branch called
0:06:58
which is representing our bug in jira
0:07:01
which is sv80 over here
0:07:06
so like we're gonna be
0:07:08
doing that and then i will
0:07:11
go to my aws account and enable
0:07:36
okay what's my mfa code
0:07:44
these are actually a really
0:07:46
good feature that's been implemented
0:07:56
it really gets your account hacked
0:08:01
which is fantastic
0:08:03
all right unknown fries is coming i
0:08:05
don't know why this dash show it again
0:08:11
it was have to address address this
0:08:31
actually i might be able to do this
0:08:35
yeah i might be able to let's have a
0:09:06
local server and then it should bring me
0:09:09
to this board and um
0:09:28
create the first node contain one
0:09:38
let me create another note
0:09:46
let's see if there's
0:10:02
this is the one that we're working on
0:10:08
so it's actually create
0:10:11
essentially trying to
0:10:14
patch which note to
0:10:17
post patch not away in post pacing
0:10:22
which one is he trying to do
0:10:33
the card that is actually trying to
0:10:42
so it's trying to update that
0:10:44
but why is it gonna go into patch
0:10:47
which is over here
0:11:02
where's the status
0:11:05
isn't the status object of it gone
0:11:09
it should be there
0:11:25
so apparently doesn't have the status of
0:11:29
the status property coming through the
0:11:33
it's called the position
0:11:35
it's got the color
0:11:38
yeah it doesn't have text color yeah it
0:11:41
doesn't have the status
0:11:43
that's probably the reason why is
0:11:48
um so they tidy status no
0:11:52
that's not the one
0:12:06
create dispatch method
0:12:08
action data so what would this give us
0:12:13
and let's have a look at that
0:12:16
this would give us message
0:12:19
board id is undefined then
0:12:23
get bored idea from the local storage
0:12:26
otherwise some dispatch
0:12:44
this one id is there
0:12:51
i'm looking for text position and color
0:13:03
to data text position ah color right
0:13:12
um status here as well
0:13:21
that gets there so
0:13:23
what i want to do is
0:13:30
position is that one and texas that one
0:13:34
so i want to add the status here as well
0:13:40
okay and then i want to add
0:13:58
okay let's see that this
0:14:13
see if i create a new node
0:14:17
notes free then i should get get
0:14:21
the status as well
0:14:32
yeah i don't get this so it's giving me
0:14:49
so text if text is coming
0:15:06
oh no no no hang on status is no
0:15:12
data is not data id spring stages is no
0:15:16
inserting an array of the board
0:15:20
okay this is the board notes
0:15:42
why is it not games
0:15:44
why does he not have a property
0:15:55
let's see let me try it again
0:16:26
yeah it doesn't have
0:16:28
oh since script js
0:16:34
right 473 is happening
0:16:49
so that brings that one and then no
0:16:55
why is not printing out the insert a
0:16:59
text position color
0:17:15
add up the board notes
0:17:26
if it doesn't have a id then
0:17:31
keep it not in search but if it does
0:17:36
it should give me id data text and
0:17:41
let me check it properly
0:18:10
all right practitioner right
0:18:27
for each one data and
0:18:37
let's see if i could print it out
0:18:45
here we go cool so it's printing out now
0:18:49
which is great say five
0:19:02
now two is already inserted
0:19:05
which is fantastic
0:19:13
when it's when it tries to
0:19:25
it should take both and just
0:19:31
give me the console error
0:19:38
uh don't worry about that
0:19:54
she didn't give me anything
0:19:57
it's not basically what i was after
0:20:36
not inserted as well
0:20:40
cool and now if i try and
0:20:42
save it it should all be
0:21:03
so i've done this now i've
0:21:05
saved it once and i'm going to open up
0:21:29
okay and add another one
0:21:36
touches so shouldn't call the patch
0:21:44
so what he called the patch again
0:21:47
it would call the patch because it would
0:21:54
let's see what it does
0:22:07
okay so there's no one keeping me there
0:22:11
that's interesting
0:22:13
cool so that's problem doesn't exist
0:22:28
this doesn't exist
0:22:30
just great we can get rid of this
0:22:44
websocket connection time needs to be
0:22:48
that doesn't have to be done because
0:22:50
it's already for two hours max
0:23:17
now it's faulty at times race condition
0:23:22
might exist in board
0:23:28
when post the patch notes
0:23:49
so now when press ok
0:23:57
of this connection
0:24:15
needs to work between two people
0:24:19
saying knows faulty at times risk and
0:24:25
so in those faulty at times
0:24:28
what was the condition of this
0:24:30
race condition might exist in
0:24:35
board table when posting patch note
0:24:40
i need to have a look at this how do i
0:24:43
click i'm not being able to
0:25:06
let me open up the shoes yeah
0:25:08
i don't know what they did i'm changing
0:25:10
jeremiah what happened
0:25:17
generating error messages
0:25:21
let me check where messages i'm getting
0:25:25
that would be a cool starting point
0:25:35
this is really interesting honestly
0:25:38
rest of your project develops
0:25:42
so maybe not found
0:25:49
migration does not exist
0:25:56
there's something wrong on their end
0:26:02
memory league detected
0:26:04
performance shouldn't result in a
0:26:14
jira has got this bug
0:26:20
i just try to know from my and it's
0:26:22
working as normal but then but that's in
0:26:27
2020 that's two years ago
0:26:35
this days are not closure i can see
0:26:41
best place to investigate
0:26:54
and it's facebook jiren not providing
0:27:11
can i open a new tab no i can't open a
0:27:18
this is really interesting
0:27:26
it does not appear to be a perfect it
0:27:29
could blend in this
0:28:12
it does not appear to be a perfect group
0:28:14
into this and just kind of
0:28:21
approximately four years ago
0:28:39
what is happening to jira
0:28:47
can't open any of these shoes
0:28:51
i need to read in this part
0:29:16
how do we do this how do we do this how
0:29:21
how do i put any string here
0:29:57
all right i'll probably have to research
0:30:02
because i'm not being able to do
0:30:07
a energy manage project
0:30:15
so i can do it through here
0:30:24
work out from here
0:30:34
works okay time needs to be extended
0:30:36
nope it doesn't anymore
0:30:55
authentication and sharing flow
0:30:59
okay um we can go on this
0:31:08
four tier time rate condition my
0:31:10
existing ball table
0:31:12
one person passion note
0:31:33
read and write the same at the same time
0:31:37
creating a race condition
0:31:40
the way to deal with
0:31:43
that issue is explained in this article
0:31:45
as a condition expression okay
0:31:48
cool let's have a look at that
0:31:53
although these are edge cases but yeah
0:31:59
go for this one so by defaulting
0:32:03
via operations put uh
0:32:05
pull update delete uh unconditional
0:32:09
each operator overrides an existing
0:32:14
the specific primary key downloader
0:32:24
downloaded your options
0:32:30
timer db optionally supports conditional
0:32:33
price for these operations
0:32:36
conditional right succeeds only if the
0:32:40
attributes meet one or more expected
0:32:48
okay otherwise it returns an error
0:32:53
conditional rights are helpful in many
0:32:56
situations for example
0:32:59
you might want to put
0:33:08
operation to succeed only if there's not
0:33:11
already an item for the same primary key
0:33:16
always you could prevent an update item
0:33:18
operation from my modifying an item with
0:33:22
one of its attributes at a certain value
0:33:26
condition rights or are happening in
0:33:30
where multiple users are trying to
0:33:36
consider the foreign
0:33:47
and then our d1 price 8
0:33:50
okay and then bob gets the same idea do
0:34:00
suppose that alice uses
0:34:03
enrico to update the price attribute to
0:34:09
and the arguments are uh-huh
0:34:13
and nice voice update item because it's
0:34:15
price twelve football dashboards
0:34:27
request conditional
0:34:36
to request conditional pull items linger
0:34:39
to specify a condition
0:34:43
expression of conditionals when it's a
0:34:47
containing attribute names conditional
0:34:49
operators are built in functions
0:34:55
now consider the following option
0:34:57
showing how conditional right would
0:35:01
update from being overwritten
0:35:04
alice says okay she updates it to
0:35:06
alice updates to eight
0:35:09
and then update to when it prices him
0:35:14
so update price to 12
0:35:17
if price so this is basically the
0:35:22
operator if price is 10 which is
0:35:25
not anymore so you won't do it
0:35:33
alice first tries to obtain remember
0:35:37
so how do we implement it
0:35:55
capacity units how do we implement this
0:35:59
affiliation fry returns
0:36:03
oh okay cool so all i basically
0:36:10
operations condition expressions
0:36:15
values to force during a conditional
0:36:19
unconditional rights
0:36:23
conditional rights
0:36:56
okay i know what they are now which is
0:37:06
find a these system matches are and most
0:37:15
reviews in your table you might just
0:37:18
decide to wonderfully
0:37:26
quite some table item primary
0:37:32
is the product conditioner right
0:37:35
noise condition expression
0:37:39
additional expression
0:37:50
to handle this you can use actually
0:37:52
exist performances
0:38:01
conditional condition expression or
0:38:09
enforcing business rules
0:38:12
condition expression
0:38:15
it's that one zero promise
0:38:29
uh while conditional
0:38:47
conditional rights after directional
0:38:51
how they are done is
0:38:54
not public information
0:39:01
it's an appointment
0:39:05
probably information is but for person
0:39:22
so hang on do we even need this in the
0:39:24
first place at this moment because
0:39:27
it is kind of an edge case
0:40:52
possible concurrency issues
0:40:56
the right way to implement a mutex
0:40:59
no this is not the one i need
0:41:04
so if that's the edge case
0:41:08
yeah we can basically
0:41:11
leave that out at the moment because i
0:41:13
don't think that this is
0:41:17
we can probably come back
0:41:20
to this because i i don't think this is
0:41:22
critical for the first release
0:41:27
this is because we need to add
0:41:32
we need to include columns in the
0:41:43
uh where is that one
0:41:56
raise our coins and lips okay in
0:42:02
so come back socket to board column
0:42:06
right cool so we need to add columns
0:42:12
we need to hook up board to
0:42:15
as important columns to
0:42:25
oh i can basically
0:42:28
do the same which i did in the card
0:43:12
so i can do the same
0:43:23
close the columns function on column
0:43:28
there you go and total columns
0:43:58
no this is not gonna do it it's called
0:44:03
which is the first one
0:44:10
action default dispatch and message
0:44:15
so i need to give it
0:44:30
it sends a websocket message to a device
0:44:35
yeah which is what we find but
0:44:39
instead of this we want
0:44:48
another one two five basically
0:44:54
i wanna be able to see the columns
0:44:57
in the other one as well
0:45:05
and just keeping an eye on the um
0:45:12
okay so we don't really need this
0:45:22
so we need two people to
0:45:26
functionality of what
0:45:29
columns being done in fact okay
0:45:35
but we'll probably have to come back
0:45:37
tomorrow because i need to to test this
0:45:43
not being on the same network as
0:45:46
mine because in that way it doesn't
0:45:54
do our community to our guests and
0:45:57
let me actually try that
0:46:26
see if i do this and
0:46:30
you probably need to window
0:46:33
open that one up as well
0:46:36
okay cool so it does work
0:46:40
so that means if if i
0:46:43
create more columns
0:46:46
actually i want to add an
0:46:56
and they're calling me till one
0:47:03
but it doesn't really move
0:47:18
it does it what we are expecting it to
0:48:21
we'll probably have to come back to this
0:48:34
all right guys it was a
0:48:43
what i thought was the issue for
0:48:49
uh the patching of the note method has
0:48:52
been called when we don't even patch the
0:48:56
um that's apparently not the case so
0:49:00
we made a bit of a headway there
0:49:02
and um the next thing will be to hooking
0:49:06
up the board columns to the websocket
0:49:10
so all the users can see the
0:49:18
in one go as well while they are being
0:49:20
made all right so um we will come back
0:49:24
to that tomorrow so if you want to see
0:49:28
actually implement it because it hasn't
0:49:31
been implemented yet um
0:49:33
feel free to join us tomorrow's same
0:49:40
same task all right guys have a good
0:49:43
night and we'll see you tomorrow