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.
How are you doing?
It is confused as well as you.
Mario: I know, that change threw me off.
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.
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.
Mario: Ah, cool.
Yeah, that sounds good.
Let's do it.
So did you notice it's already recording?
Alan: oh, it is.
Oh, nice one.
I was like, well, should
I start recording?
So I, I got that feature going where
it's auto starts recording automatically
locally, as soon as you log in.
But perhaps I need to make it more obvious
so that the person knows that they're
being recorded because you didn't 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
Mario: recording local recording
in progress or something like that.
Yeah, yeah, yeah,
Yeah, I'll do that.
So have you been,
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.
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.
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.
And I don't know about
you, but I'm really bad.
I kind of.
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.
I've done that so many times.
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.
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.
And my wife wakes up later and then
she's like, you're still awake.
And I good.
Alan: So you've been a, he got
any anybody else onboarded?
Mario: No, no, not yet.
Alan: I'm the next run, right?
I'm the next
Mario: You 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.
Alan: that's good.
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.
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
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
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.
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.
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.
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,
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
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
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.
It's not, you know,
next time that comes up.
You're like, I know this.
Whereas if I was writing a parser, like
Alan: going to go in one
ear and out the other road,
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.
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.
That it's entirely mine.
Some of my side projects.
I've launched, you know, before.
Like three or four of them before
Fusioncast, but none of them.
You know, anywhere close
to what fishing cast is.
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.
Completely different types of projects.
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?
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.
One piece of that breaks down
that you don't really have
a working product, right?
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.
Once I figured it out, it was a big
Alan: that's the core of everything.
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.
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
Alan: you get a particular
type of problem.
It's like, what does that mean?
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.
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.
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.
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
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.
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.
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,
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.
Mario: Right, exactly.
Alan: It's a tricky one.
Alan: what's new in your app anyway.
What have you done apart from
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
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.
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.
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.
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.
Mario: So it's both of us in
the corner and then the screen.
So that made it into production.
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.
And you could either Fullscreen it or not.
So you could either see
the full picture or like.
Mario: Or not.
So you can choose to do that.
Alan: So this also as you mentioned,
this records, the original stream
of both your, the screen, your
sharing and your video as well.
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.
I remember you talking about that now.
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.
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.
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.
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.
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.
Alan: 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.
I, yeah, I'm trying to trick my
brain into thinking that way,
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.
Mario: not ready.
And then, you know,
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.
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 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.
Alan: Like, of course there's ongoing
improvements, you know, starting
the thing is it's not difficult.
You just start writing code.
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.
Alan: The hardest part of this process.
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: 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?
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.
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,
Well, in terms of, Hmm, in terms
of architecture, it's more.
More in the infrastructure layer that
I need to make some improvements.
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.
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.
And these other things are
more just enhancements.
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
No, thanks for pointing that out.
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.
Mario: Right, right.
No, but that's totally true.
And no, I really appreciate it.
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.
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.
Alan: that's not an easy, not
an easy thing to accept, but
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.
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.
How about you?
What about DotPlan?
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.
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.
So they just want to do it on their own
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 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
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.
Mario: you know, the, the, the steps and
Alan: I'll put
know, Burton, captions on it and
stuff as well as, so it's clear.
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.
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.
So that kind of plays to that advantage.
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.
So it's, and if they really aren't
interested, then just dismiss it and
it's gone and they can figure it out.
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.
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
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.
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.
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.
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.
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,
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.
Alan: Thank you for
Mario: yeah, definitely.
Alan: affirmation of my, my feelings,
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.
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.
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.
You need to unblock it.
And so the way to unblock that it's
different for different browsers.
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.
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.
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, much better.
Mario: So yeah.
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.
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.
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.
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.
Alan: for, for this tonight
and tomorrow is, is okay.
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.
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.
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?
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?
And so I'm like, if nothing else,
then I've got to say yes to that.
Like it's done.
Well, good luck with that.
Alan: So that's the plan
for this week anyway.
So that's hopefully fingers crossed.
Mario: All right.
Alan: Should I wrap it up?
Mario: don't have anything
else, we can wrap it up here.