5: To unit test, or not to unit test

We're back after a short break! Alan and Mario discuss how they're testing (or not!) parts of their app, the latest development updates and different approaches to onboarding new users.

Mario: Alan.

Alan: Hello?

Mario: Hello?

Hello?

Good.

How are you doing?

Alan: Ham.

Okay.

Hello.

It is confused as well as you.

Mario: I know, that change threw me off.

Alan: Yeah.

Yeah, exactly.

It's that extra week that I was like,

Mario: Yeah, I

Alan: like, they look popped up on like,
Hey, I'm like, oh yeah, that hold on.

That was just recovered the thing out yet.

Mario: yeah, I thought we were
going to record do the, do the

onboarding tomorrow and then that
we were going to meet to record

Alan: right, exactly.

I mean, we can do that if you prefer.

I don't mind

Mario: no, no, no.

Alan: a quickie and then.

Mario: No, that's fine.

That's funny.

We can, we can do this.

Alan: I say it, it might, might be worth
also recording the onboarding tomorrow as

well, just as a reference point for you.

Like it's cause I saw our
software social also did a a

customer interview kind of thing.

So they basically posted
like the, the role rodeo of

the, of a customer interview.

And it was kind of interested in
hearing that as a, like an, a bonus

kind of content kind of thing.

So,

Mario: Ah, cool.

Yeah.

Yeah, that sounds good.

Let's do it.

So did you notice it's already recording?

Alan: oh, it is.

Oh, nice one.

Cool.

Ah, sneaky.

I didn't.

I was like, well, should
I start recording?

Oh, cool.

Mario: Yeah.

Yeah.

So I, I got that feature going where
it's auto starts recording automatically

locally, as soon as you log in.

Alan: Cool.

Mario: Yeah.

But perhaps I need to make it more obvious
so that the person knows that they're

being recorded because you didn't know.

Alan: know,

Mario: So even though it says
at the top, but it's not, I

guess it's not obvious enough,

Alan: maybe some kind of notification
thing that just kind of pops up

and just says yeah, maybe some kind
of banner that just says recording

has been

Mario: recording local recording
in progress or something like that.

Alan: Yeah,

Mario: Okay.

Yeah, yeah, yeah,

Alan: Nice

Mario: yeah.

Okay, cool.

Yeah, I'll do that.

So have you been,

Alan: Good.

It's like, I know it's weird because
like, as we talked last rate, right.

But I don't know what the
hell does the time go?

No things are good to things.

Good.

I think also we were away for
the weekend, so I w mother-in-law

mother-in-law's for the weekend.

So I kind of like add last two days.

Hiking,

Mario: Yeah.

Alan: know,

Mario: Yeah.

Alan: kind of like, what did I do other
than it's, it's a bad habit to kind of

do this development of the weekends, but
it's sometimes unfortunately the only

time you can get stuff done when you're
juggling full-time stuff during the week

and things, and then like the kid often,
you know, disappears for the weekend

days to go out and play with the trends.

So it's like, oh, I've got like two hours
to squeeze in an extra bit of bonus work.

So a bad

Mario: when you get it, get some,
some, sometimes some, a solid block

of hours to, to work on things.

Alan: exactly.

And I don't know about
you, but I'm really bad.

I kind of.

It's evenings.

I find it much easier to get
into the zone then daytime.

So I have this terrible habit of
like, you know, oh, it's 10 o'clock.

I'll just do a, you know, an hour before
bed, like one o'clock in the morning.

And I'm like, but I've just
got to finish these things off.

Like, I can't do that during the day.

It's like, you know, my trying to get
like a continuous block of just like, I

can do this and then you get distracted,
but evenings are so easy to get focused.

It's yeah,

Mario: Yeah.

I've done that so many times.

Yeah, totally.

Alan: and then unfortunately my son has
to leave for school, like seven 30 ish.

So yeah, that doesn't,
it's not compatible,

Mario: Oh yeah, yeah,

Alan: it's a habit and it happens,
but yeah, probably shouldn't.

Mario: I've done that so many times.

It's tough.

Yeah.

I've brought my laptop to
bed sometimes just to, okay.

I'm just gonna do a little bit just
before I go to bed and then yeah,

sure enough, you know, one o'clock
rolls around and I'm still at it.

If my wife is like,

Alan: I've just got to finish this.

This is really important.

Mario: Yeah.

And my wife wakes up later and then
she's like, you're still awake.

Yeah.

Alan: Yeah.

Bad habit.

Mario: Yeah.

And I good.

Alan: So you've been a, he got
any anybody else onboarded?

Mario: No, no, not yet.

No,

Alan: I'm the next run, right?

I'm the next

Mario: You you're next?

Alan: pig.

Mario: Yeah.

You're next.

So, no, I haven't onboarded anybody else.

But I've been busy making changes.

Applying changes based on that feedback.

You might notice, it looks a little
bit different, not by much, but

the screens are separated now that
there's a little bit of a split

before there were all together.

Alan: Right now, I was just thinking, it
looks kind of it's it's funny how, you

know, again, I'm not a great designer.

I'm not a designer,

Mario: Same here.

Alan: when you kind of make small
differences and you're like, I

think this is, this is better.

I'm I'm not sure.

And then you come back to it like a few
days later and you accidentally load

like the previous version or something.

You're like, oh my God,
like this, this is terrible.

Like, it's amazing how things do
improve and you put, you're not

actually sure about it at the time.

So I, like, I kind of changed some
of the like the border and the shadow

on some of the boxes on my thing.

And at the time I'm like, I
can't tell which is better.

They look kind of similar, just different.

But then, yeah, I hadn't deployed
the new version and I went to the

deployed version production version.

Oh, who's broken the site.

It looks terrible and say,
I made that change to know.

So it's

Mario: That's

Alan: that's good.

Yeah,

Mario: That's validation.

Alan: This is the, again, one of the
downs, I don't know if this does that a

bonus of, of it not being my full-time.

I'm not concentrating
on this all the time.

Right?

You, you, you are working on
other things most of the time.

And then when you come back to
it, you're like, well, I'm not

sure who made that decision, but

Mario: Yeah.

Alan: you can be reasonably objective
about the decisions because it's

like, I don't remember him making
that decision so I can be critical

of it because I'm not sure it was me.

Mario: yeah, totally.

And that goes with code too, and not just
the visual aspects, but with code I've,

I've come back to my own codes sometimes.

And then I look at it, I'm like, huh, what
was I thinking when I, when I coded this

Alan: Yep.

No, I mean, absolutely the best, one
of the best refactoring God debugging

techniques is to just like walk away.

And I do this all the time and I walk away
from it for like three or four days at

a time and coming back to it and then be
like, wow, that was a really bad decision.

Mario: Yeah.

Alan: You could, you know,
like I'd fire that person.

That was terrible.

But yeah, you can be pretty
objective about it when yeah.

You can distance yourself from your code.

Mario: Yeah.

And, and there you go
start refactoring again and

Alan: Especially for me.

Cause I'm so I'm developing
DotPlan in Elixir and Phoenix.

And this is my first Elixir
Phoenix production app.

Which I think I mentioned,
I, it wasn't intentional.

I was like, oh, I should try this out.

See how, you know, see how I like it.

And then I'm like, oh, I built a thing.

Mario: yeah,

Alan: So you just kind of, so I'm
very much learning as I go with it

in terms of, you know, I'm applying
all of the things I've known in

developing rails apps, but 10 years.

But there's a lot of, I don't
want to say subtle as could

some quite huge differences.

I mean, the, the concept and the
structure and things is very similar,

but there's a lot of unique, functional
programming things in Elixir that

I'm just not very practiced at.

So there's definitely this constant
reevaluating, how I've done things.

And then it's like, okay, I can rewrite
to this now because I've learned

a better technique of doing this.

So it it's definitely.

A big learning experience as well.

It's it's yeah.

Normally if it was just rails, I wouldn't
really think too much about that, but this

is definitely a different experience to
be learning a building at the same time.

Probably not the most efficient, but

Mario: Yeah, no, but that's good.

I mean, you're learning and you're
learning with a real, you know, a real

life application, that, that puts a
lot of things to the test, things that,

Alan: Right.

I mean, I, there was a, there's a
discussion on one of the select seven.

I think yesterday I'm like, you know,
how should I learn a new language?

And I think we mentioned this before,
you know, I'm, I can't learn a language

by building what the suggestions were
like, you know, build a parser or build a

Mario: Yeah,

Alan: like that has zero.

Like I'm not gonna learn anything.

I'm just gonna learn syntax.

And, you know, I've learned some stuff
and then forget it the next day, because

it's completely impractical to me.

And so by building a real thing and, and
actually solving problems that I would

be solving in a novel process of building
an application is the only way for

Mario: exactly.

Alan: me.

Right.

Mario: Yup.

Yup.

Alan: So all the things I'm
kind of trying to learn from.

It looks from Phoenix.

I thinks it's like, okay, I don't know how
to do this, but I need to make it work.

So it's like, okay, applying
what I know from, you know,

rails and Ruby, but like the, the
concepts that are quite different.

So it's like the, there's definitely a
whole process that you need to go through.

Like, but then it sticks because
you've had to go through that.

Right.

It's not, you know,
next time that comes up.

You're like, I know this.

Whereas if I was writing a parser, like

Mario: yeah,

Alan: going to go in one
ear and out the other road,

Mario: Yeah.

I find myself in a similar situation with
the fact that I'm building this app, that

I've never built anything like it before
with audio, video and recording and all

through the browser and never built that.

I've been a developer for a long
time and built a lot of different

kinds of systems, but I've never
worked on something like this.

So it it's a lot of firsts for me.

And I don't sometimes, you
know, it's the same thing.

I don't know how to do
this, so it has to work.

I

have to figure it out.

So, you know,

Alan: So have you released a production
app that is entirely yours before?

Or have you only worked on
stuff as part of teams that has

been released to the public?

Mario: Mostly just as part of the teams.

Yeah.

That it's entirely mine.

Some of my side projects.

Yeah.

I've launched, you know, before.

Yeah.

Like three or four of them before
Fusioncast, but none of them.

You know, anywhere close
to what fishing cast is.

But yeah

Alan: in terms of
complexity or completeness.

Mario: in terms of complexity, cause I've,
I have launched let's see, two, two or

three other projects were products that
I worked on that were pretty complete.

I mean, I could have iterated more on
them and, you know, continue making them

better, but I did launch them, you know?

So they were pretty complete at least
good enough for other people to use.

But yeah, not, not anywhere as near
as Fusioncast in terms of complexity.

Yeah, yeah.

Completely different types of projects.

Alan: Cool.

Okay.

So this is, yeah, it's, it's, it
is a big deal launching this one.

It's, it's, it's much more of
a step up in terms of yeah.

Does this work?

And

Mario: Yeah,

Alan: as I said, yeah, you know, I
think yours is especially there's

a lot of moving parts and it's
all got to work perfectly for

it, for the product to work at.

All right.

One piece of that breaks down
that you don't really have

a working product, right?

Mario: Yeah.

Yeah.

So far the biggest, the biggest challenge
that I had was when a recording wasn't

working and you remember our first
recording didn't work very well at all.

And that was kind of scary cause I was
like, it's the core piece of the product.

And you know, like what's the problem
where, you know, where's the bug.

And we already talked about that
in the, in a previous session, how

the problem was in multiple places.

And it was, you know, logical errors
and, you know, I had bugs and,

and stuff that I needed to rework.

And it was, it was one of those where like
it has to work and I have to make it work

because it's the core part of the product.

And it took me a couple of weeks
to figure it out and it was

like, man, it was, it was tough.

But.

Yeah.

Once I figured it out, it was a big

Alan: that's the core of everything.

Right.

But I mean, it's, this is also something
that is very much on my mind am

releasing this in having been written
in Elixir and Phoenix says I'd not

used to debugging this in production
because you know, like a rails app,

I know the pop-ins to expect in terms
of, you know, what, what happens to an

application when it's been a bunch of
users, all the same particular problems.

Mario: yeah,

Alan: The biggest unknown for me in
this is like, I don't know how a an

Elixir up performs in production and
what to you know, what the problems mean

Mario: yeah.

Alan: you get a particular
type of problem.

It's like, what does that mean?

Mario: Yeah.

Alan: like it looks or has a lot of tools
for going in and kind of debugging a live

system, but I've never used them in anger.

You know, I, again, I've played them,
played around with them, but never

to solve a live production problem.

So that will be an
interesting learning curve.

Mario: Yeah, definitely.

Do you write tests with your

Alan: I, it depends on the
day I'm I should write more.

So rails, both rails on Phoenix
have a very strong, like baked

in testing culture and systems.

My testing habits are not
as good as they should be.

So I tend to.

I wrote these days, I write much more
higher level integration system tests.

I kind of got out of the habit of
writing as many unit tests as I used to.

Just I find them less and less
useful as time goes on and much

more of a headache to maintain.

So if I, the tests I right now
are generally much higher level

system tests, integration tests.

So, but yeah, th that's also one of
the problems of developing a thing

that you're not sure what it's going to
be when you start is it's like, okay,

do I write all these tests and then
realize I'm building the wrong thing?

Or do you get further on and then
say, okay, this is now a thing.

How do I test this?

So it's it's an ongoing challenge.

Mario: Yeah.

I totally get it.

I feel the same way.

I, I don't to be honest, I, I haven't
written any tests for Fusioncast, and

part of it is that, you know, the fact
that it's started as a side project

and as all my side projects, I don't
know if they're going to go anywhere.

I don't know.

So I don't want to be
wasting time writing tests.

So.

I don't, I don't do that.

And and the another part is with
Fusioncast specifically, it's a really

difficult app to, to write tests

Alan: Again yet,

you're almost right, right.

Yet that there's individual things in
terms of like, you know, merging your

files and making sure things happen.

But yet the end to end, I mean, I guess
that's where, you know, like integration

tests are going to be the, the main thing
for you because it's like, it's got to

be an end to end process of actually
recording multiple things and making

sure that joined and everything right.

Mario: Yeah, exactly.

So but yeah, a lot of parts of, of an
app, like this are really difficult

to test because of just the nature
of it, you know, the video connection

and and you know, multi-part uploading
and all that, all that stuff.

It's kind of kind of hard, but, but
I, I see if it gets anywhere at some

point I need to, you know, So-called
back around and and then to some, some

integration testing and you had a higher
level, but yeah, I feel, I feel the

same as you in terms of unit testing.

Cause when I, when I'm, when I'm
coding and you know, as I'm coding, I'm

testing all the time, I'm testing it.

Yeah.

It takes a little longer to manually
test, but I want to see this thing work.

I there's, to me, there's nothing
more obvious and more what's the word

I'm looking for reassuring, right?

To see it actually work and to
actually feel it and see it.

So as I'm coding, I'm always
testing everything as I go.

So I feel the same way about unit

Alan: It's yeah.

I mean, it's, it's they're important
and there's certain things that are

worth unit testing, but I've also been
I've, I've come into many projects

that claim to have, you know, amazingly
complete tests specs and you know,

like we've got like every line of code,
you know, like 90 something percent

Mario: 99%

Alan: Yeah, exactly.

And then you look at the test
and 90% of the tests, the test

in the framework, it's theirs.

It's like, yeah.

Okay.

Well rails does that, if you
stating a thing in your car,

so it's like, okay, does.

You're making sure that you've done a
thing, but by writing the thing in the

first place, you've already done that.

So it's well worth testing, certain things
that you do and making sure that the

outputs are expected to be the inputs.

But again, that, that, doesn't
just because you have a high test

coverage number doesn't necessarily
mean that your tests are worthwhile

or you're testing the right thing.

So again, that's, it's difficult
sometimes to to understand that while

you're writing the code, because you're
in that world of like, well, I'm doing

this, therefore I need to test that
and I'm doing this and this test that.

So my very first job out of.

second, third, third job out of
college was I was doing QA stuff, so

I was actually doing automated test.

It was, you know, the company
actually had separate QA department.

So we had this system, you
know, like literally code

to get thrown over the wall.

We'd write automated tests, test it.

And then we'd file bug reports.

And it seems ridiculous now that there
was this wall in not literal wall, but

yeah, a virtual wall that code went over.

We didn't really speak very
often to the developers.

It was more of like, you know what?

We've got this thing, how do we test it?

And it seems like crazy that that's how
it worked, but that's how it did work.

And so , I'm reasonably used to trying
to figure out what needs to be testing

or what the edge cases might be.

You know, but said, that's not what I see
from a lot of tests that are not a lot of

applications that I've come into as a, you
know, as a developer, it's like existing

products and it's like, yeah, this is just
taking a lot of time to run your test.

It doesn't actually prove anything.

Mario: Right, right.

Yeah,

Alan: it's a topic.

Mario: yeah, yeah,

Alan: So yes, but I
need more is the answer,

Mario: Same here.

I get it.

Yeah, I feel the same way,

Alan: that's

Mario: but at some point, at
some point, Come back around

and we'll both come back around

Alan: For sure.

I mean, I think, well, yeah, I mean,
we're both in this period where it's

okay, we've gone through initial
validation of like, yes, this is a

useful thing, but there's a, there's
still a gap between, is this actually

a, a revenue producing product third.

I want to continue investing in and
research, maintaining and supporting

for an ongoing period of time.

And it's like, well,
how much do you need to?

Yeah, but there's a balance that right.

When it's a project like that, it's not,
you know, a paid-for gig that you have

to deliver on spec and to a particular
quality is like the quality is to

your customers not to specification.

Right.

Mario: Right, exactly.

Yep.

Alan: It's a tricky one.

Mario: Yeah.

Yeah,

Alan: what's new in your app anyway.

What have you done apart from

automation?

Mario: see what else?

Oh, by the way, if you see that a little.

Little circle thing on the top,

Alan: I was going to ask what's XL,

Mario: that's, that's

Alan: that a break points for a

Mario: yeah.

It's, it's a break point for four
screens that I forgot to remove

it and I pushed to production.

So it's there.

It's not supposed to be there.

Alan: It was

Mario: need to

Alan: how XL was immediately like,
oh, that's a tailwind break point.

Mario: Yeah, yeah, exactly.

So I have this little, little
widget thing that I, that I created.

I actually saw it somewhere.

Someone had something similar on a blog
post, and so I created my own using

tailwind and and then it's pretty handy.

It's pretty useful.

When you, when you're developing a,
you need to know where you're at, you

know, resizing, the screen and stuff.

Yeah.

And it's it helps you figure out code
and debugging and that kind of thing.

So I need to put her under a flag,
so it doesn't show up in production.

I didn't do that.

So it's just there.

So ignore that one.

So I don't know if there's anything else
actually that made it to production.

That's new.

Actually let me let me
try something real quick.

Let me share a screen and
then let me know what you see.

Cause I don't know if I made that
into, if that made it into production.

See, where are my screens here?

Trying to find something.

Okay here, some some code.

Did it show up as a larger

Alan: pick one and I've
been moved to the corner.

Yeah.

Very nice.

Mario: Okay.

Okay.

So you can see that.

But you can't see me, right?

Alan: I can see you as well

Mario: Oh, you can see me.

Okay.

Alan: Yep.

Mario: So it's both of us in
the corner and then the screen.

Yeah.

So, okay.

So that made it into production.

Alan: Yeah.

Very nice.

Mario: So I'm working on that.

So that way we can still,
everyone can still see each

other while sharing the screen.

And the screen is more visible because
it's, it becomes larger, as suppose,

to before, where if you shared a
screen, it was like a little tiny

window, just like another participant.

Alan: Right.

And you could either Fullscreen it or not.

Right.

So you could either see
the full picture or like.

Mario: Or not.

Yeah.

So you can choose to do that.

So

Alan: So this also as you mentioned,
this records, the original stream

of both your, the screen, your
sharing and your video as well.

Right.

Mario: It does in the cloud,
it does record everything.

That's everything that's added into
the room, including the screen-share,

it gets recorded in the cloud.

Now in terms of local recording at
the moment, it's not recording the

screen because it's, it's recording
the participant's video cams

Alan: right, right, right.

Mario: So I would have to add
an additional track that records

the screen at that point.

So that's, and I think we
might've talked about that.

So I, I would, I would
add that in the future.

Alan: right.

Yeah.

I remember you talking about that now.

Yeah.

Yep.

Yep.

Mario: So right now, what I'm working
on is refining that a little bit.

You might've noticed that I dunno,
in your case, but in my case,

the screens kind of shifted, so

Alan: bit of a flicker when it moves it.

Yeah,

Mario: yeah, but also the position.

So my screen used to be on the left and
now after turning off screen sharing,

I'm on the right and you're on the

Alan: no, that's the same.

Mario: Okay.

So it changed for me.

So, so I'm working on handling the
screenshare functionality a little better

now that I, I got some of it going it
kind of basically now I'm working on

better handling of the layout when you
know screen-sharing is on and when it

comes off and the screens should stay
in the same position and not shift.

So basically your own screen should
always be on the top left and everyone

else should be, you know, after.

Alan: Yup.

Yup.

Mario: Yeah.

And so another thing that I I'm working
on is changing the number of total

participants supported from four to six.

So now it's going to be six, but with
that comes the challenge of layout.

So because now I have to support
more screens and they have to fit

and they have to all resize properly.

So I'm refining that a little bit.

I think some of that
made it into production.

When I did the screen-share resizing, but
it needs to be polished a little more.

And now that I'm supporting six
participants total I'm working on

that, so that'll be the next update.

Alan: Very

Mario: And let's see, what
else did I push oh, the older

recording, like you saw it now.

It starts recording automatically and
oh, and the other nice little features

I'm working on are status updates on the
screen so that you can see who's muted.

Who's cameras turned off and who's
recording locally and who's not.

So you'll see a little icons
right below your name, where

you can see statuses basically.

Alan: is looking really good.

It's all really coming together.

Yeah, you definitely need customers now.

Mario: Yeah,

Alan: You're ready.

You're ready.

I don't like this.

There's no excuse

Mario: I know it's getting there.

Alan: No seriously, this is a, I mean,
I think you're in the territory of,

you know, like this is beyond a th
that MVP level of being able to, you

know, have meaningful users, all of
these are just, you know, very nice

improvements, but yeah, I think you'll,
you're way beyond that point now of it

being like you know, pre pre production.

Mario: Awesome.

Thank you.

Thank you.

I, yeah, I'm trying to trick my
brain into thinking that way,

Alan: Yeah.

I mean,

Mario: for me, for, for me, it's like
a like, oh I'm still, you know, in very

much beta MVP, it's still not ready.

You know, in my mind,
my mind goes there, you

Alan: Of course.

Yeah.

Mario: not ready.

And then, you know,

Alan: No.

I mean, I've, I've, I mean,
exactly the same point now.

So I'm definitely, so my goal was to get
some people on board last week and and

I didn't especially since the, for the
weekend was I knew that I was, had to

leave on Friday afternoon, so I'm like,
okay, this is probably not the best time.

Bye.

Have fun.

Yeah, exactly.

So I'm like, alright.

And then, so I was, you know, looking
at it fresh you know Sunday night

when we got back and I'm like, Hey,
what, what do I absolutely need

to finish in order to get it out?

And then suddenly you're
like, I really need that.

I need this and I need to hold on it.

This is, this is not the point, right?

This is that they know that
it's pre-release, they know

that it's early access, beta,
whatever you want to call it.

And they, they are understanding people.

So I'm like, but I really just need
to finish at these things before it's

suitable and it's so yeah, I'm going
through that very much right now.

And so there's no excuse, really.

I can think of now to not give them
access like tomorrow or Friday.

So it's, I'm, I'm kind of, I've
reached that point where I'm

really running out of excuses.

I mean, as you, as, you know, th there's
a million things, which I'm like,

this is completely unsuitable, this is
nowhere near finished, that this isn't

ready really needs to do these things.

But I'm reaching the point
now where I'm like, hold on to

that, that could go on forever.

And I really just need to accept
that and let people try and.

Mario: yeah, yeah.

You should.

You should definitely.

Alan: It's the harder it is.

Literally it's I think is probably the
hardest point of this entire process

is just like getting over that hurdle.

Right?

Mario: yeah.

Alan: Like, of course there's ongoing
improvements, you know, starting

the thing is it's not difficult.

You just start writing code.

Right.

You, once you find that, the thing you're
looking for talking to potential customers

is not that difficult because people seem
to be interested and want to try it out.

It's just, it's literally
that point of going all right.

They go

Mario: Yeah.

Alan: The hardest part of this process.

Mario: Yeah.

One of the, the.

The last person that I onboarded,
actually, he made a nice comment about

it and he said, you know it, wow.

He's like, it looks, it looks so complete.

It looks so polished already.

Like it's nowhere when I launched
my product, he's like, it didn't

look anywhere near what this looks

Alan: I'm telling you, it
looks, looks fantastic.

It looks really

Mario: And thank you.

And and then he's like,
yeah, just, just let me know.

As soon as you're ready, he's
like, I'll be your first customer.

And like, oh, wow.

You know, thank you.

But yeah, in my mind, I'm thinking, you
know, it's just yeah, it's not ready yet,

Alan: no,

Mario: but

Alan: every single day
I'm going through this.

And it's like, I can't,
but it doesn't do this.

And then I look at some of the similar
products that are not even similar,

but you know, vaguely related.

And I'm like, yeah, they only
do like half of what I was

still like, no, it's not ready.

It's not ready.

It's like people seem to be
using that as and paying for it.

So whole gate, what am I doing here?

Mario: Yeah.

Yeah.

So let's see, what else so
I'm working on those statuses.

That'll be in pretty soon.

I'm pretty much done with that.

And also hoping to also include one
more change to, to the next deployment

is remote controlled recording in, in
the sense that, you know, the, but I

want to make it a flag driven feature
so that if you choose to, to use

it that way the record button won't
be available to other participants

Alan: Only to the controller.

Right, right.

Mario: Yes.

Only to the host who controls everything.

And so when they click record and
automatically starts recording

for everyone in the session.

And so I pretty much got that working.

I, I still need to tie a few loose
ends, but it's pretty much working

where, you know, I can do that.

Just pretty, pretty much.

Alan: as I said, these are all nice to
have, but not say not not essential,

but th if there are any things that
you need to do that is that will

have a fundamental change to the way
somebody uses it and not an incremental

improvement, like, for example.

So one of the things that I desperately
wanted to get in to mind before led

anybody on it was is, so you basically
have like, be able to check ins

people, respond, comment, whatever.

I wanted to be able to show.

It's like the latest activity, kind of
like an activity feed on your check-in.

So like somebody commented,
you know, view it.

And so in order to support that, I
needed to make some database changes

to make sure that it was populated.

So the feature is, is simple
right now, but it's there.

And even there's things that aren't
exposed, but are being recorded

and logged in the database.

So I do desperately wanted to get that
in before I like started to let people

on, even though the feature isn't
finished, that the changes needed to

be in there to be able to track it.

So is there anything like that
that's effectively need to be done?

Like underlying architecture
wise or is it like literally just

features that are stacking up now,

Mario: huh?

Well, in terms of, Hmm, in terms
of architecture, it's more.

More in the infrastructure layer that
I need to make some improvements.

Like I

Alan: So you've, you've got the managing
of files that have been like temporary

files you know, west of three saved
and cleaned up and all the rest.

So it feels, it feels to me like that's
probably the bigger barrier to you.

Longboarding 20 customers than having
a feature that does something for them.

Right.

Mario: yes, you're right.

You're right about that.

Because yes, the, these are, these
are features that came about from the

feedback that I got, you know, with
onboarding some, some, some of the people.

And and so I'm trying to push those
because they're, they're really, really

nice features that they pointed out
that would be really useful to them.

So, but, but yeah, they're, they're not
must haves at this point, but in terms of.

Of changes that, that are preventing
me from opening this up to more people,

I would say it's more infrastructure
changes that I need to apply.

You know, bring in a load balancer
and have at least two servers behind

a load balancer for redundancy and
you know, little improvements to maybe

caching and more, more redundancy
at the database level as well.

You know, right now I
just have one database.

There's no replication.

There's none of that.

So, so I need to make that stronger
before I can feel comfortable

bringing in more people.

So that w I think that that would be
it in terms of roadblocking, you know,

things, but in terms of features,
I think, I think you're right.

It's pretty much.

Ready.

And these other things are
more just enhancements.

Alan: Right.

Exactly.

Yeah.

Yeah.

So I, I think that if I was in your shoes,
that would probably be my priority list.

Like the order in terms of like,
get those, those fundamental changes

in, then there's nothing effectively
stopping you saying, okay, like an icon

on board, 10 extra people, I reckon,
you know, like start to work through,

whoever wants to go on it on cost,
then you actually have to build them.

So that, that would be my

Mario: Yeah.

Yeah.

I agree.

Yeah.

No, thanks for pointing that out.

That's

Alan: I, again, I it's easy
for me to say that it's much

Mario: totally appreciate that.

Alan: it's much easier to critique
somebody else than it is yourself.

Right?

Mario: Right, right.

No, but that's totally true.

And no, I really appreciate it.

Cause.

It.

Yeah.

And I think I need to really buckle
down and and, and work towards that

and make those changes instead.

And and kind of postponed these
other enhancements for later.

Alan: That would, it would definitely,
but the thing is about them as well.

There, I mean, I went through something
similar, you know, a few weeks ago when

I set up all the AWS stuff, you know,
and I know, again, I was similar to you.

I was running on.

You know, mini stuff like that, you
know, the free database layer and you

know, like all the freebies to, to
just turn development, work and market.

Like, if I let somebody
on, I can't do this.

So it's ripping off the band-aid is
just like, I've got to go through

Saturday of setting up infrastructure.

And during that, so I did that and, you
know, again, I made some, some changes

to the deployments that the database,
all of the DNS stuff and everything.

So now it's that set up how I
wanted to, and now it's like, oh,

I've done that I can just deploy.

And I can, it does remove one barrier.

That is it always feels like, wow, but
I can't do that because of these things.

And yes, I I'm just trying to work
through all of those mentally, but what's

to stop me just giving out a, a code.

So

Mario: Removing those excuses,

Alan: yeah, literally it's
it really is, is just working

through those in your mind.

Crossing them off one by one.

So I'm going to get to the point
where I'm like, I've got no

excuses anymore, which is, yeah.

Mario: yeah,

Alan: that's not an easy, not
an easy thing to accept, but

Mario: yeah,

Alan: I mean, it's, it's exciting,
but terrifying I say is the hardest

and the most I think it's, you know,
we're all terrified of external input.

Right?

We need that, but it's terrifying.

Mario: it's hard to get over that,
but yeah, I think in terms of

changes, I think that's it for now.

That's, that's what I have.

That's what I'm working on.

Yeah.

How about you?

What about DotPlan?

Alan: Yeah.

So I, I kinda, I did a whole once I'd
got those cha say I wanted to get this

like activity tracking and things and
just to make that feasible, because

again, I'd hacked in a very very early
way, just actually just hitting a

database just for like, manually like
the brute force way of calculating that.

And it's like that isn't going
to scale it's, it's fine.

Just to, to see how it looks
and to see how it feels.

And to, for me to understand
what I need to show and as, okay.

I need to actually make this
something that will, that will

work, you know, performance wise.

Long-term so I did
those changes last week.

And now that's in, yeah, it's
just a case of like, okay.

I started to run through it as a new user
and, you know, came up with another list

of 20 things that are like, ah, okay.

Like to address those.

So there's, most of those are
now addressed this, the biggest.

I think which is not code related,
but is, is very I'm trying to figure

out the what to do about it is as far
as the onboarding process goes, it's,

it's, it's pretty straightforward.

You know, it's just SaaS, you
sign up, you can add team members

if you want, or at that later.

And then it says we haven't made any
plans, click here to, to make some plans.

And it's literally that explaining
that, you know, there's a little bit,

little bit of text above each one saying
what you should do, but it's the fact

that I need like some, I, I always,
I never really liked that whole thing

with the, you know, like the tool tip
thing that moves around and says, you

should do this, and this does that.

And it's like, just go away.

I'll figure.

But I almost feel like I kind
of need something like that now.

So the, the idea is, you know, you
can fill in your to-do list and then

you can literally check them off.

It looking at it fresh as a a
first user, it's not obvious that.

You can click a like the empty
check mark to make it checked,

to move it, to make it done.

So the moving things around on
the page doesn't feel obvious.

And again, it's something that I've
been too close to to be able to see it.

And I think just going through the,
the first user the, the fresh user

experience, it doesn't feel obvious to me.

So I'm trying to figure out whether
I should do some kind of a tool tip

thing that hovers over it and says,
you can do this and then click that.

Or whether I should do like a
video or some text description.

And I don't feel, I have
a clear answer there.

And so regarding the onboarding
thing So I've got like three

people, like, absolutely.

I know I'm going to
use these people first.

And I know one of them is like, just
send me the email, I'll figure it out.

Like, I don't need to walk through it.

Just, just send me the email and,
you know, I'll figure it out.

And I'm like, so I, I, it would be
easier just to talk them through

it, but they're like, no, no, no,
just, just let, let me figure it out.

And I'm like, okay.

So how do I make it so that it's obvious
to them, without them coming back to

me and saying, well, what do I do?

Because I really don't.

Don't want that.

So I dunno if you have any
suggestions I'm all ears

Mario: Oh man.

Okay.

Let's see.

So they just want to do it on their own

Alan: right?

The main three ways I I'm considering.

Literally doing like a, a mini in the
corner video, which says like, you know,

how to how to use the planning page in
you know, it could be literally 20 second

video that could probably cover it all.

Just embedded in the corner,
close it to make it go away.

Or like a tool tip type thing, or have
more of a like a, like a banner that

says, you know, kind of an instructional
banner that you can just dismiss entirely.

So those are the three
things that I'm considering.

And I maybe do all three.

I don't know.

Mario: Well, I think you should not do
all three because that would take longer.

So, okay.

So it's just to one of those.

And I would think if you, so if you,
if you do the video, if you go the

video route, do you have a good place
in your UI where you can place that?

Would it, would it mess with your

Alan: right?

The bottom right of the screen.

If they're looking on desktop on
mobile, then all bets are off.

On desktop, the bottom right of
the culinary is kind of unused.

It's, there's a big blank
space in the bottom, right?

So that, that is a perfect spot to
put a you know, an eight size video

of that's just like click here and
I'll explain how to use this page.

So that's one of the reasons the
video is kind of tempting because

it's like it would, it would also
give, make a use for that blank space.

It gives it something to do kind
of balances the page out on the.

Mario: yeah, I think you should go with
the video route because it's, it's,

you know a picture's worth a thousand
words and a video is like even more

so and if you just, you know, it would
be relatively simple to create, right.

Alan: Yeah.

Oh, completely.

Yeah.

Yep.

Mario: you know, the, the, the steps and

Alan: I'll put

like, you

know, Burton, captions on it and
stuff as well as, so it's clear.

Yeah.

Mario: and that's something
that you, you can, that that

would be useful going forward.

You know it's not just for this one person
or, you know, it's not just for this phase

of the product, but you could just make
it a permanent feature of the product

have having these little screencast
explainers built, baked into the product.

Alan: Okay.

Mario: The only challenge with that
is that if the product changes later

on, then you kind of have to rerecord
the screencast because the UI changes

or the way the feature works changes.

But but I think it's the clearest,
you know, most straight away to,

to explain and show someone how it

Alan: of, yeah, I was kind of li
I was hoping, you'd say simply

because it feels to me like the
most personal version, right.

It's again, I think I've said before a
big part of, one of the things I want to

do with this is make it a more like kind
of homely personal product, not just a.

Corporation.

So that kind of plays to that advantage.

Right?

It's it's me explaining how
to use it and if you have any

feedback, then they can subscribe.

So it's, and it also, yeah, as you
said, show is better than tell.

Right?

So it's, and if they really aren't
interested, then just dismiss it and

it's gone and they can figure it out.

Mario: yeah.

I think that's the way to go.

Alan: I, yeah, I was kind of, as I said, I
don't really like those, those hover boxes

that move around, I'm just like, go away.

I'm like, let me figure this out.

So I know that if it creates that
and a video of like, I don't care

about if it's there, I can watch it.

If I don't want to watch
it, I don't have to.

So it feels less intrusive even.

It takes up more screen real
estate it's it it's louder.

Potentially.

So yeah, I guess even though it,
it feels heavier way of doing it.

It feels to me like it might be
the right way, so I'm glad you

Mario: yeah, And it's, yeah, I feel the
same way about those little those hover

boxes or whatever that move around the UI.

I don't really like them.

And it's even worse when
they don't give you a way out

Alan: right.

Exactly.

Like just go away.

Mario: through each, each one of them,
you have to, you know, keep going.

You can't bail out of those.

So yeah, I'm not a big
fan of those either.

Alan: Yep.

I couldn't understand why.

I mean, there's a lot of, it's
interesting going through this process.

You know, it's a long time
since I launched my own product

as I've done it before, but it
was, you know, a long time ago.

So there's a lot of things now in the
current state of web applications that I

felt more like aah that I hate this trend.

I don't like what, you know, what certain
new aspects, whether it's almost like, you

know, the flat humans in terms of landing
page stuff, whether it's these hover

states, things, all this kind of stuff.

And it's funny going through the
process of now having to do all of these

things myself, So many of them, I now
know why they made those decisions.

I don't know.

Probably I, I'm not not saying I
like them either, but you almost

end up at the same end point, right?

You're like, well, you know, I don't,
I don't want to put photos on my

page because that's very, it's very,
like, people have different reactions

to different things and you know,
you have to, there's a lot more to

consider if you go in the photo route.

Right.

And then you're like, yeah, but I don't
want to do like, cartoons feels a little

not right yet until I have more confidence
in my branding and all the rest.

So, and you're willing to stand up at
this point while you're like, wait,

it's a purple, flat picture of a pure
Mohnish kind of thing that'll do.

And it's like, ah, I've, I've fallen
into the same trap as everybody else.

And the same thing with these,
these hover things as well.

I don't want to be heavy handed.

I don't want text on the
screen, but I need to tell

them that they should do this.

How do I do that?

Well, if I just did that and I'm
like, no, no, no, what am I doing?

So, yeah, I'm kind of,
it's, it's revealing.

But I also don't want to fall into
the same trap as anybody else.

Not, not trap.

I don't want to default to what
everybody else doing without

understanding why I'm doing it.

Right.

Mario: yeah, yeah.

That's exactly it.

But yeah, dude, I think if
you go the screencast route

that would know what else.

Alan: and I can always change it.

Right.

I can, I can always say be the AB
test these things in the future,

but for this initial pass, it feels
like a, an obvious route, right?

Well, if you don't want to spend
half an hour on a call with

me, watch this video instead,

Mario: Yeah.

Alan: and it's only 20 seconds long and
it'll tell you what you need to know.

So it, it feels like a
nice way of doing it to me.

Mario: yeah,

Alan: Thank you for

Mario: yeah, definitely.

Alan: affirmation of my, my feelings,

Mario: yeah.

There's a part of Fusioncast where I need
to do something similar to that because

of the nature of of the problem which is
when you first go into a Fusioncast URL

and, you know, you're trying to connect
or whatever, or basically any, any part

of the app where it needs access to the
camera and the microphone, a browser

has to allow the app access to those

Alan: of course.

Mario: devices.

Right.

So, and then for privacy reasons,
the user has to sort of see

that and, and allow access.

And so, but if there is if the user
selects decline or I mean, if they

say like block to block access, right.

At some point if they select to
block, it goes into a mode where

it won't show you that anymore.

It'll just,

Alan: you can't re get it right?

Mario: Like you can't regret it.

So like the browser is already
blocking it and that's it.

And so you can't see that prompt
anymore, but the way I did it with

Fusioncast, it detects the fact
that it's gotten into that mode and

it, and it brings up a dialog box
that says your browser is blocking.

Like, there's nothing I can do about it.

Basically.

You need to unblock it.

And so the way to unblock that it's
different for different browsers.

So

Alan: You have to go into

Mario: have a, like a.

Yeah, but there's a way to access it
on the, on the bar, on the address

bar, that little icon right next to it.

You can click on that.

But if, you've blocked it completely,
then in some browsers that doesn't even

work, you have to go to a little icon
that's to the right of the address bar

where it shows like a little camera
or whatever, or a little microphone,

and then you have to go in there.

So it depends on the browser and it
might even depend on the platform.

I need to do more research on
that, but right now I just have

a sort of a temporary, you know,
instructions at that point telling

people how to get out of that mode.

Alan: That's not a block of
a lunch, you know, that you

can't use that as an excuse.

Mario: Yeah, no, no, no, no, not at all.

You're right.

You're right.

No, no, I'm, I'm not gonna, I'm not
gonna hold back because of that, but,

but I that's an area where a screencast
would be perfect to just show the person

based on the browser they're using.

Alan: yeah, it's probably
easier for you to make as well.

Right.

Because trying to explain where to
click is a nightmare, but one of the

reasons that this is, this is quite a
nice solution for mine as well, because

it's like go to here and click here.

Mario: yeah,

Alan: it's

Mario: yeah, much better.

Alan: Nice

Mario: So yeah.

What else?

What else do you have?

What else have you been working on?

Alan: again, lots of small things, but
as I say, the big thing is just like

what I've got, I've got to get this out.

So it's anything that's stopping
me from giving a link to somebody,

making sure all of the email
invitations are working for it.

So when you invite teammates to it, do you
know making sure that signup process is

fine, which again, this is not something.

Hit very often because
it's, I don't do that.

Right.

So that's one of the
parts which I'm like okay.

I tried it again and I'm
like, I need to look at this.

Just improve it a little bit.

So there's and again, setting
up, I had to set up move to

AWS email service from mine.

I had to get approved by them.

So you have to explain to them
why you're going to send lots of

emails, hopefully lots of emails.

So it, it, all of those things take time.

Right.

And it's a say it, those
are legitimate blockers.

It's like, well, I don't want to be
on a temporary free email service that

doesn't work outside of my own domain,
so I need, need to make that happen.

And so those things are all done now.

So yeah, it's literally when
I run out of excuses in terms

of application development.

So yeah, so I, I'm literally
just going through and trying

to make sure all of that.

The, the first run stuff is
working, which is how I hit this.

Because everything else, as far
as daily use, it's all fine.

Of course there's a million things,
which I don't like about it and want

to improve, but none of them are
good enough excuses to not release.

Mario: Yeah.

Alan: So, yeah, it's, it's just finishing
off this, this onboarding stuff really now

is the thing which I want to get finished.

So

Mario: okay.

Alan: for, for this tonight
and tomorrow is, is okay.

That's it?

Those are, those are good enough.

Mario: So any onboarding this
week, any plans to onboard?

Alan: hopefully if I can get this by
making a video, then I've got zero.

Excuse, cause I don't
have to schedule anything.

Right.

Mario: Yeah.

Alan: So if, if I can do that, then yeah.

I'm going to send out a couple to the
people that I've that I know don't

want to schedule an interview so I
can definitely get them on board.

And if it seems okay with them, I might
even be feel brave enough to send out

to a few of those that I wasn't going
to onboard yet, just because it's over,

you know, in, for penny and for pound.

Right.

Mario: Yeah.

Yeah.

Well, I say you do it as long
as you don't have any braking,

braking features anywhere.

Alan: That's that part of, yeah.

I mean, one of the nice things about
this, because I've avoided all real

external dependencies, even to the point
of late, I didn't allow a photo uploading.

The obvious one is, you know, you want
a photo for your avatar, but I even

punted on that for now, just cause I'm
like, I, I won't know, external uploading

is always a pain and yeah, yours is
entirely uploading, which is like crazy.

So I even punted on that
lumpy, I'll do that later.

There's nothing that doesn't
stop you from using it.

It doesn't stop.

So I use the email address now to
generate a hex CSS color you know, like a

pastel color based on the email address.

So everybody gets a unique
color that stays with them.

But a, you can't upload
your own photo yet.

And I'm like, just
like, ah, that can wait.

That's not, not blocking.

So you know, one of the nice things
about this is there's no external APIs

that it hits there's no apart from
the obvious, like email and things.

So yeah, that's, that's quite nice.

So there's nothing
breaking, everything works.

It's literally just like, is it clear?

What they need to do is, is, is there
nothing that they're going to the

obvious first things they're going
to do, they all are obvious, right?

Yeah.

As I said, it's getting to the point
where I'm like, I can't can't delay

this any longer now if nothing else,
because my wife keeps asking me every

day you got any did anybody yet, I just

Mario: When are you going to launch?

When are you going to launch?

Alan: Exactly.

And so I'm like, if nothing else,
then I've got to say yes to that.

Like it's done.

Mario: Yeah.

All right.

Well, good luck with that.

Alan: So that's the plan
for this week anyway.

So that's hopefully fingers crossed.

Cool.

Nice.

All

Mario: All right.

I think

Alan: Should I wrap it up?

And

Mario: don't have anything
else, we can wrap it up here.

Alan: cool.

5: To unit test, or not to unit test
Broadcast by