Alan: So, hello.
Hey, how's it going?
Mario: hey!
Today is one of those days.
Alan: One of those
days?
Yeah.
I know.
oh man.
Mario: Yeah.
Today is been,
This whole week has been a frustrating week.
Actually.
We have a lot going on around
here.
My wife and I have some plumbing issues at our place and
Alan: the word?
Plumbing is the worst.
Like
electricity.
You're like, oh, we haven't got light.
Water is
like a nightmare.
Mario: Yeah.
Yeah.
So we
we had a
leak from one of our bathrooms upstairs and they came and they fixed.
They found that there were two different problems and they fixed a one of them.
The simpler one, and then they found the other one that's more complicated.
So they haven't fixed that one yet.
Meanwhile, we can't use all of the bathroom upstairs.
Luckily we have another bathroom downstairs.
and so the reason It's taking forever is because they found asbestos in
Oh, no.
in
Mario: the dry wall in the area that they need to access to fix the plumbing issue.
So, and that is.
Alan: to a standstill until they can deal with that,
right?
Mario: Exactly.
So
this, this home was built in
the seventies, I think.
So it has some as,
Alan: throw asbestos on
everything
Mario: Yeah.
Yeah.
So, so the
area they need to access is downstairs in the ceiling below,
you know, where the bathroom is upstairs and it's a utility closet.
So luckily is pretty isolated.
You know, it's inside a utility closet where we have the water heater and, and
there's a central air unit there as well.
And so we're waiting for just got word today that they are going to be
here tomorrow to continue because the test results came back and, you know,
they have, now they know what they're dealing with and they're going to come
in and, and start the abatement process.
So we're dealing with that.
And then at the same time we're reconfiguring some rooms in the house.
My wife is setting up her office space somewhere else.
So we've moved furniture and all kinds of stuff around and
everything is upside down.
It's like,
Alan: I know that feeling well, and I hate it.
Mario: yeah.
And
Alan: It makes you appreciate the, when things are back to normal again, so,
much more though,
Mario: yeah.
Yeah.
And as part of that process, we sold this huge cabinet that we had, you
know, kinda like a dresser, you know, for clothes and stuff, but it was
like pretty big and it was too big.
We've been wanting to get rid of it for a long time and we finally sold it online.
And that means all of the, all of our stuff that was there
now is everywhere is out.
And we're in transition.
We're buying a smaller piece of furniture.
Alan: Well, you don't have
it
Mario: But we don't have it yet.
So everything is like, so everything is a
mess.
The whole house is a mess.
Alan: It's it has a, like a big effect on your, just your mental balance.
It's like, oh God,
Mario: It does.
Alan: I just go into my
laptop.
It's calmer in there.
Right.
Mario: Yeah,
Alan: maybe it's not,
Mario: is.
And see, that's the thing.
That's on the
personal end of things, but also on the work side of things, I'm dealing
with this issue with fusion cast that
I'm, I still haven't been able to resolve.
And so even that's not going the way I want it to go.
Alan: but you don't even have the luxury of going away, going out to the house
to work and leave the mess behind.
Right.
It's
Mario: No, it's it's right here.
I'm surrounded by
it.
As we speak, everything is a
mess.
Alan: I know it well, and it's no
fun.
Mario: Yeah.
Yeah.
Alan: have my sympathy.
Mario: Thank you.
yeah, so this recording issue.
The recording itself is working, but the problem is with one of the features
that I introduced, which I, I should have done before from the beginning
which is remote controlled recording, where the host has control of recording.
And when the host clicks record, then everyone, everyone in the session
starts recording automatically remotely, You know, after all, this is a remote
recording tool, so
Yeah.
Mario: have that.
And
I introduced that feature and it was working perfectly on my dev environment.
Then I pushed it to production and it doesn't work there for some reason.
And I don't understand why there are no errors.
There's nothing, you know, it's just, it just doesn't do it.
So it's one of those, and I've been in contact with a certain cloud
provider that should go without mention th no, they've been great.
They've been pretty supportive support.
Hasn't been great.
The only thing is that, that it takes forever.
The turnaround time is, you know, I send a message and then I have
to wait around 20, about 24 hours, you know, before I hear back from them.
And then.
Alan: what you're using for basically pushing messages to, from
the server to the client, right.
In order to get it to do
something
Mario: Yeah.
Yeah.
So I'm using a couple of different services for that.
One of them is that one that we've talked about before and
that, that seems to, be working.
Okay.
But the other one is it's a different kind of API that sends more they're more
like a UDP type messages, you know, so client to client, kind of thing, no TCP.
So it's more more
performant, but the
Mario: nature of that is that there's no guarantee that it's going to be received.
So it's like UDP, like you know,
Alan: Yeah.
Mario: Protocol messages and
I don't know quite yet, if that's even the problem, you know, if it's something
to do with UDP or anything like that
. So one thing that has been hindering my progress in troubleshooting
this, is the fact that I don't have up until this point, I don't
have a working staging environment.
I just have my dev environment and production.
And so it kind of, there's certain things that I can't freely do because
I don't want to break production.
So I've the past couple of days I've been working on setting
up a proper staging environment replicating my production environment.
And that way I can test all kinds of things without fear of breaking
anything, and I can enable console log and I can enable all kinds of logs and
I'm not having to be in production.
Alan: yeah, exactly.
And just breaking other
people's
Mario: Or exposing, you know, logs or
exposing sensitive information.
so I'm almost at the end of setting up this staging environment and it's
time consuming because, you know, I have to set up with all these
different services and APIs that I
use, you know?
Alan: It's not.
So it's not so much just that you need to get your software deployed.
It's that you're relying on other API APIs that all need to be up and running,
Mario: Yeah, yeah.
So I have to create
the staging projects, so to speak in each of these services.
right?
So,
and I have to make sure that I faithfully recreate what I have in production, and
Alan: The worst, the worst thing's going to be, if it works finally staging
Mario: I know
that.
Alan: you're like, oh,
okay.
Mario: Yeah, but at least, yeah.
I don't know.
Hopefully
Alan: hope that's
Mario: I think that's not the case.
I, you know, it should not
work and I should be able to see logs and things like that, or enable logs
and things like that to, to trace it.
Alan: Of those things that you had that you needed to do this
eventually, but you'd rather have not had done it right now.
Mario: Yeah.
yeah.
So,
this thing it's part of the same process that allows me to show if you notice
now I have indicators that tell you if anybody's mic is muted or the camera's
turned off or anything like that.
And so those are
Messages going across that everyone receives and their
UI gets updated accordingly.
And so that same mechanism drives the remote controlled recording.
Alan: are working.
Mario: So, it works
partially the, I mean, the, see here, if I disabled my camera,
Alan: Okay.
Yeah, that
Mario: do you see a little red icon now that works.
fine, but
for some reason That part is working.
But if I enable the remote control recording which
actually did it through a flag.
So there a flag now in the podcast that you can turn on or off.
So right now I turned it off so that we can record.
So when that flag is on only, I have a record button as a host.
You as a guest, wouldn't see a record button.
And but turning that flag off, puts everything back the way it was with
you having a record button as well.
And and so when that flag is on in, and the host controls, controls recording, if
I hit record, then that same mechanism, that's sending data that updates, the
UI also sends a signal for you to start recording every participant in the session
starts recording.
And for some reason that part is not working.
so it's, I
don't
Alan: That's frustrating.
So Yeah, the, you need to know if it's getting the
message and if it's is getting the message, why isn't it starting?
And if it isn't then why not?
Mario: Exactly.
Alan: it's
yeah.
You don't want to do that in production because you're
filling around with logs and
Yeah.
Mario: Yeah.
And, the reason I
found out about it.
was because one of the people that I onboarded a little while back
actually used the fusion cast to record, and he ran into some problems
I'm trying to record, but luckily he noticed that backup recording was on.
So he was, he still went on and recorded an episode with guests.
And you know, I'm assuming he knew that backup recording was on.
So he took his chances and still did it.
There was no local recording for anybody else, but himself, but
back our recording was there.
and so he messaged me later and asked me
if I could give him the backups.
And so I did everything was there,
Alan: I mean, that's good to know as well.
Right.
Mario: yeah, yeah,
yeah.
Alan: that there is the backup facility and there is
the, you know,
that, that recording is there.
So but
that, that hopefully, you know, it gives him confidence that, oh, okay.
Even if things do go wrong, then that's still, you know, that works
fine.
Mario: exactly.
So, so I was able to provide the backups to him and you know, I
apologized and I, you know, told him I'm, I'm looking into it.
And I said, hopefully that the rest of the experience wasn't too bad.
And he said, no, it was great that we actually
enjoyed it.
So, so hopefully, you know, that didn't leave a bad flavor, but
Alan: Well, it's better to find it out now with one person then later with a hundred,
right.
Mario: Yeah.
Very true.
Alan: Get to the bottom of it.
Once you got staging up.
I'm sure it will be one of those obvious
things that it's like a one character to fix.
And you'd be like
all of that.
Mario: maybe.
Yeah.
Alan: I hope
so.
Mario: yeah, I hope so, too.
So.
after that, I I sent that email to everyone that I have onboarded
just to give them a heads up.
And I'm sure you received that email.
Alan: Yes.
I was going to say it might be worth clarifying.
Cause my takeaway with that was our, I can't do local recording.
Rather than just say, you know, like the, the auto
recording, just to clarify the
ultra recording isn't working.
So
yeah,
Mario: I guess.
Yeah, that's a good, that's a good suggestion.
I wasn't sure how to handle that because that's a new feature
that people didn't know about.
And so I didn't want to convolute the message with, you know, there's
new features and this and that.
So I just wanted to keep it kind of straight, but cause I was looking forward
to sending this email with an update of all the features that I've been working.
on and all the changes that I've put in based on the feedback that I
received and then this thing happened.
And So now I have to deal with this and I, I feel like
I can't send an update about new features when this thing is not
working
Alan: Fundamental basic is kind of having an issue, right?
Yeah, yeah,
Mario: Yeah.
so it's like, kind of frustrating, but.
Alan: Yeah.
I it's strange that you said it
works locally.
I mean, is it possible
it's some just permission issue because
it's accessing camera and microphones.
So if it may be trying to do
that, programmatically is just, you know, causing some,
Mario: It could be.
Alan: permission issue.
It sounds like it's me, if it's it's one thing that would probably be my first
thing I look to is just the fact that
it's it, it is a permissions, you know, like the fact that the
browser is triggering the camera without a user interaction.
Right.
So programmatically triggering the camera or microphone could
be something to do with that.
That that's, that would just be my, I I've never used this stuff, so I'd have no no
idea, but that would be the, the thing
which would make me think there's an issue, especially since it works locally.
Mario: yeah, yeah, That was the only thing is by, by then.
Camera's already given permission.
Microphone is already, you know, it's already going and
Alan: going
great.
But yeah.
I'm wondering if there's some way, you know, it's cause it obviously
starts capturing it, so I don't know.
yeah,
I,
Mario: Yeah.
I don't know.
It's a, it's an interesting one.
And I,
hope it's not something that simple because man, that's gonna suck
if it's
something super simple that I missed and I've been breaking my
head, you know, this whole time.
Alan: But you you've, you've got staging up and running now
or it's
Mario: almost, almost
yeah, I I just need to finish a few,
a few areas here and there, but yeah, I w I almost.
have it all up and running
Alan: Cool.
Mario: and then I have to do the DNS updates so that I get my staging
domain going.
Alan: Yeah.
Oh, well, good luck.
That sounds like a nightmare run stressful, especially since you have
people trying to use it now is like,
The pressures on
now, right?.
Mario: yeah,
Alan: Feel like you're against the clock, but it's good practice.
Mario: Yeah.
Yeah.
Good.
Yeah, for sure.
Alan: It is not optimum.
Mario: Yeah.
So needless to say, I haven't really had time to, to put
together our podcast episode
Alan: yeah.
Mario: is so,
Alan: There's priorities.
Get this working
first
Mario: yeah.
So I apologize.
I really want to Get that going, but I have to focus on this for now,
Alan: Yeah.
Mario: but Yeah.
but we'll, we'll get there.
We'll get there.
I can't wait to be in a position where we can outsource editing to somebody else.
And so that way we just record and we don't have to worry about
Alan: happens right.
Mario: it just magically appears on the, on the pod catcher.
Alan: That'd be the best, doesn't it?
Yeah.
It's like, especially if, I mean, that's the nice thing, because you have
a possibility somebody else going in and grabbing the fires, you
literally don't have to do anything.
You'd just be
like, tell them, it's just record it finish.
And it just
appears, right.
That'd be the, the
ultimate.
Mario: Yeah.
Yeah.
Alan: Nice.
Mario: That's, that's where I'm working.
I'm working towards that.
Alan: that's a goal.
You got to have a good goal, right?
Mario: Yeah.
Yeah.
So let's see.
What else what else did I have to update?
I had I contacted somebody else to onboard.
And I just noticed today they scheduled a date.
I think it's next week or so I have to double check, but I have
another one lined up to do a demo.
Someone from MicroConf that I, came across on the community there and, I'm
going to be doing that demo and then somebody else also from MicroConf.
That I had all already on my list.
Contacted me about it.
And I was like, oh yeah, I have You on my list.
So, I just sent out my Calendly to this other person and hopefully
we'll get something scheduled and do another demo there as well.
It's, let's see what else?
We have yeah, like I mentioned earlier, most of the changes based on feedback
that I received are already in,
Except
Alan: the UI is starting to look very tight.
It is, let's start into it.
As I said before, it's, it's amazing how it looks like.
Oh, everything's fine.
And then you do some improvements.
There's that?
Now it looks better.
I didn't know it was a problem before, but it looks, it feels better.
So yeah, I noticed you got your like ellipses thing
in and Yeah.
they got these, these status icons and things, and it's looking nice.
Mario: Yeah.
yeah, it's getting there.
Thank you.
Thanks.
Oh, notice I implemented the HashIDs library.
Alan: I noticed that I was going to ask about that.
So that's, that's kind of fun, isn't it?
That it's it's handy.
Think
Mario: yeah, yeah,
Alan: Just to be able to throw stuff in and then you
just decode it?
and it's done.
Mario: yeah, yeah.
It was cool.
I like it I like the short little hash and I like how it looks now.
it's a little more,
I dunno, more professional, so to speak, you know?
Alan: I mean, it's the same with mine, you know?
Cause especially if you're looking at like a, you know,
a check-in and it's in a profile or some type of uses, you know, a particular
user's check-in so rather than having,
you know, slash seven slash 13, it's like something, can you like,
oh,
Mario: Yeah.
Alan: Must be it must be secure that.
Mario: Yeah.
Yeah.
And, and I didn't do it for all of it.
All of the, all of the app just yet.
Because I have a lot of IDs
everywhere.
And so I figured this is the most public facing URL.
Right.
And so I just
Alan: I had to think the same.
Yeah, it was, it was what's what's the most likely thing that's
going to be cut and paste is, is really the thing, which yeah.
Made me decide what to watch twin code like that is, and
there's a possibility for mine.
It would be a reference to a particular check-in or particular user.
So those are the things that I did first and then
just other things as, as I come across them, I might might change them, but
Mario: Okay.
So you didn't, you didn't implement it across the board?
Yeah.
Just yet.
Alan: I think there's a few places where
it's not using it.
Yeah.
I, I didn't
that, wasn't how I intended to do it.
That it wasn't how I implemented it.
It was like, okay, where do I want it implemented?
And just pick out particular ones.
And then it's like, well, if I come across one, I'm working on something.
I think.
Change that while I'm here.
And so, as I said, it's not a priority for every single page.
It's just certain things which are likely to be cut and paste,
or is an obvious reference to an internal that you really want to
expose.
So in particularly user ID, which is,
Mario: yeah,
Alan: especially at this stage, let's say when we're talking like tens of numbers
or single digits, and there's like a little, that's funny because I had,
So the original photo sharing thing that I did back in 2002 that, that was, you
know, I was still, you know, it was the first web application I ever built was
2002.
It was pretty much, you know an interface to your database.
Mario: yeah.
Alan: And so of course IDs were just exposed as numbers and it became a kind of
Like a badge of pride for people as well, because they were like a, you
know, I'm not number 100, are those one that was you know, seven and they,
they, they incorporated seven into their profile image and stuff like that.
So it's kind of, it became a bit of a badge that that ID number, to be
honest, even with like Twitter, because I'm number 5,000 or something ID in
Twitter before they implemented these crazy long digits that that don't
really mean so much originally they just had, you know, incremental ideas.
So, yeah,
it's, it's a little bit of a, a badge of pride.
It's like, I was,
Mario: Yeah.
You were early, early adopter.
Alan: yeah,
I didn't get it at first, but yeah, I, I was like, okay,
this has gotta be interested.
And then
I came around,
Mario: Yeah.
Alan: so, yeah.
So I've had an interesting week as well.
As you may have noticed.
Mario: Yeah,
Alan: Not quite as hectic as yours, but interesting, nonetheless, so yeah, I sent
out a bunch of invitations, so I was quite the, the reasoning or the choice
of first invitations to send out was people who I knew would be picky
about or spot things that I've missed.
So rather than go for someone who's like the, the perfect user, it
was like, okay, let's, let's get these all these niggles ironed out.
And so choose, you know, five people who I know are going to be like, that's wrong.
That looks weird.
This
Mario: yeah,
Alan: pick all the things, which I know I'm blind to now, it's you, you know,
yourself, you're looking at something and someone says, that's the wrong color.
And you're like, oh yeah, because of this.
Mario: yeah.
Alan: So yeah, I was kind of selective with those.
And it was perfect for that because all of the feedback I got was interesting.
Unique and not, not really anything overlapping, so different people
saw different things and all of them were either immediately actionable or
things, which are like, okay, that's, that's a really interesting thing
to consider for the next release.
So yeah, almost all of them I've been able to incorporate already.
Some of them, you know as you know, some of them are like five minutes
that it's feels great just to have now have a list of a to-do list
to just be able to check through.
And there was very few which I disagreed with which was nice as well.
All of the points were things that it's funny, some of them.
So one of the things when you're editing, if you've added items and
you're editing them, clicking away, used to leave the form field open
because when I first added that.
I couldn't get the blur, the input blur thing, working properly with life
view, as I wanted it to, it was kind of half working, but it never felt right.
So therefore I was like, okay, it feels less weird to leave it than it does to
have this weird state state where it doesn't always do what I wanted it to.
Which.
And so someone's feedback was okay.
The blur feels weird and I'm like, yeah, I know it is.
I know when I did this, it's just like, oh yeah, I know.
And I really let, let me have a look.
And it literally took one minute to, to make it work.
As I talk about, you know, leaving something and coming back to it,
looking at it fresh, because I haven't looked at this, you know,
for probably a few months or months, definitely three or four months.
And so I was like, ah, this will make it work.
And I did it and it, it was like two minutes and it, it worked exactly as I
wanted it to, and it felt perfectly right.
And I'm like, phew, I'm glad I didn't bother wasting days trying
to get it working before, because like fixing it now is just so easy.
So I don't know whether that was me understanding Liveview better LiveView
fixing something that wasn't working before, or I'm not sure exactly
what the reason I couldn't get it to work properly before it was.
I'm going to blame LiveView, you just cause it's easier than blaming myself,
but it's mostly, probably my fault.
So that was really nice to be able to just improve it in ways
that I knew were not great.
And somebody to point it out and then immediately be able to improve it.
And it'll add that's exactly how I wanted it to work in the first place that thank
you for reminding me to re-look at it.
And yeah, even some of your feedback was, was really helpful.
Just, you know, like alignments and the button of stuff, some of
the hover states I improved it, it feels significantly better to
me now than it did two weeks ago.
So and that's a direct result of people's feedback.
And I say it's, it's up in.
I think there's seven invitations have sent out five who have given
good feedback, two who I think are on, have been on Easter vacation.
So I'm going to poke again and probably under this week, give
them a week to recover coming back.
So it's been really helpful.
So that, that has been kind of fun.
So the next step now is to introduce the people who I think could actually
be the, kind of like the ideal use cases of the specifically around teams.
So all of the people I picked right now are either,
Basically using it by themselves.
Mario: yeah.
yeah.
That's how I've been
using
it
Alan: right.
Mario: And but you know, it surprisingly it works well.
I mean, yes, it's designed for teams and it's it's you, you know, teams
could take a better advantage of it, but but it surprisingly works.
I mean, so PR surprisingly in terms of, you know, Because your main
focus is for teams, but it works really well with, you know, with a solo
Alan: Well, that's the thing.
I mean, I use it
myself every day, right.
So this is, this is my own
thing and it it's, I know how useful it is just for me.
So I, that doesn't surprise.
It's surprising that other people have picked up on it,
but it doesn't surprise me that much because it's like, yeah,
I know, I know it's actually
useful.
Mario: Yeah.
Alan: so let's, that's good to hear.
But at the same, because it's not optimized for that.
There's a lot of things that could be done
better if it was just for you.
Right.
So that is definitely something that I'm thinking more about simply because
it's easier to convince one person to use it then to convince five, right.
So, you know, someone will try it out for themselves and then
potentially invite other people.
The single person use cases, something I want to think about a little bit
more in the reasonable, close future as well, just cause I think it's
actually has a lot of use I think it'd be good to spend a bit of time on.
I just haven't really given it much as much thought as I have the team side.
So so the it, it's funny because you're not the only person that said that either.
I've had a few of
the people say, ah, this is actually really useful just for me.
And I'm
like, ah, okay,
Mario: Yeah.
So I've been, I've been using it,
You know, here and there.
I want to get more into it and use it even more, but I have, I have been using
it occasionally just to, you know, get a feel for it and and give you feedback.
But I like it a lot.
I like the, the, the interface is playful.
It's you know, pretty modern and, and it just feels good.
I like what you've done with that.
Yeah.
Sometimes I, I, I think some interfaces.
Tend to be kind of rigid, you know, or utilitarian, you know, even, even
Fusioncast, you know, sometimes I question some of my choices and just the structure,
you know, cause I made it very structured and, you know just to try to give it give
it a sense of order I guess, or, you know,
But I like how you accomplish that.
I mean, it looks, it makes sense.
It looks intuitive.
And at the same time it's playful.
And, and I guess what I mean by playful is just that it it's you
know, it, it, it doesn't have this utilitarian feel to it where, you
know, everything is rows and columns, you know, it's, you know what I mean?
Alan: Yes.
Mario: Yeah, It
Alan: it does.
It's funny because somebody else gave me the feedback.
Yeah.
It feels in one way, kind of old school web, even though it's
using modern technologies
and it feels a little bit more retro in the way that it isn't regimented.
And
I guess that's my personal preferences coming out strongly,
Mario: Yes.
Yes.
Alan: but I know that
I
Mario: that's a good, that's a good way to describe it.
It's like,
like old school, but with a modern touch, you know the.
modern UI, you know,
Alan: Cool.
That's really good to hear that that's very reassuring because that's, that's
something that bugs the hell of hell out of me about the current state of the web
is just, everything's becoming very, to feels culprit, even when it's a you know,
an indie project, it still feels like things are coming from a corporation.
It's like, I, you know, I want your personality to come through too.
So I tried to, and this is something I'm trying hard with
the copy and things as well.
So I'm, so I've started playing with copy.ai.
Have you seen it?
Have you played with
it?
Mario: No, No,
Alan: cool.
It's an indie hacker project is two guys, I think.
And it uses the GPT three machine learning data prediction, text
prediction rewriting thing.
So you give it a description or some copy.
You basically tell it
what.
What you want or what you want to say, and it will rephrase
it in multiple different ways.
So for instance, you can use it for say a landing page, like hero texts.
You, you describe your project and it gives you like 10 different
examples of copy that you could use as hero, text for your project.
And it's not using it too directly, but as a way of like unblocking your mind.
Cause you know, when you think about something, you get stuck in a rot, right?
So even just like the copy on my homepage, where you.
As in, after you've logged in, there's kind of a dashboard page that shows
you, other people have logged in.
So the text says like, you know, good morning you know, other people have done
things, you know, have you finished this?
So I write it as how I'd want to say it first.
And then once you've done that, you kind of get stuck in that you
can't see other ways of writing it.
Right.
So you throw it in copy AI.
And it says, how about these?
And you're like, Okay, that wasn't thinking of that, but that
some part of that wording would sounds better than my wording.
So, so it kind of just a way of getting your brain out of that groove
and just trying different things.
So I highly recommend it.
It's a, it, then there's a seven day free, completely free trial.
And then it's like $30 a month and it's, so it's got a thing for like
email subject that are catchy.
So again, you say what your email is, and it says, how
about these as email subjects?
And you're like that one, that's the tone that I want.
It's got to think for like blog ideas.
So you tell it what your blogs about, and it says, how about these?
And they're all AI generated.
So they kind of coming from a, a reasonably sensible place, but
some of them are way out, but the general mix is quite quite fun.
So that's really helping me improve my.
Simply because it's making me try different things
that I wouldn't necessarily
come up with myself.
So
Mario: nice.
What,
Alan: playing with.ai.
Mario: dot AI.
How did you find out about this one.
Alan: I don't know it, I, I,
Twitter
pretty much everything I know comes from Twitter these
days.
Mario: right?
Yeah.
Alan: So the two founders are on Twitter.
They're there, they're doing a building in public.
I think
that their revenue is
starting to go significantly.
They were like I mean that tens of thousands, I think a month, but they, they
give updates on their MRR, MRR regularly.
So they seem to be onto something quite good.
And it is a really simple web app.
It's just an interface to TP T3, but with specific contexts.
So you say, you know, I want this type of thing.
It just like sentence rewriting, things like that.
So it's well worth playing with, if you want landing page copy
or email copy, things like that.
Just you like your landing page is already pretty good as
well, but it could be a way of
just trying to get different ideas.
Mario: Yeah.
Yeah, totally.
Yeah.
I'm looking at their website site.
Site looks cool too.
Alan: Cool.
Mario: Yeah.
Alan: Yeah.
So that's that that's really good to hear.
I'm very happy to hear that that it's it feels like it's, you know, there's a
million things that I really wanted to do, and I've been desperate to just not
get too bogged down in doing everything.
So hopefully this the functionality provides right now has a use and it is
useful and now a consult to build on
top of that.
So,
That's, that's the hope.
Mario: Yeah.
Yeah, It's looking good.
It's looking really good.
I like using it.
I'm going to be using it more.
I started using it for Fusioncast related tasks, So, to speak.
And so As I, as I get more into it, I'll give you more feedback,
you know, whatever I come across.
But Yeah.
it's, it's looking really good.
I like it.
Alan: Good.
Thank you.
So I think that the thing which I find it's helpful with, so I,
especially on a solo project, you.
know using like an issue tracker just feels like completely way too heavy.
Even though, you know, it might probably be a good idea it's
right now, it just feels too much.
But at the same time, having a.
I kind of a notepad of like, yeah, these are the things I need to do.
This is the thing I need to do next and I've done it.
So having that kind of way of organizing it and recording it, it
just seems it works well for, for me.
Hopefully others find the same thing too.
So just having that, having that list of, yeah, I need to think about those things.
Moving that to, this is my thing.
These are the three things I'm going to do next.
I mean, I've even almost, there's lots of things that I thought about trying
to like codify and recommend, but I kind of want people to figure those
things out for themselves as well, figure out what works best for them.
So I'm trying not to be too heavy handed with like, you
know, what is your main thing?
Choose three things.
And it's like, ah, they're adults.
They can figure it out.
Right.
Mario: Yeah.
Yeah,
no, I'm glad.
I'm glad you're going in that direction.
It's a little more,
It just gives freedom to people to use it the best way it fits for them.
You
Alan: mean, so, yeah, I mean, one of the things that's, I, again, I guess this
is a product, a byproduct of me being a, an old school web user and fan of
like my favorite web apps that I've I've I still feel I learnt a lot from under
my kind of favorite types of web apps.
I think it's like the original delicious before it became something
that the original flicker when, and all of them are still, they have
this aspect of like human hacking.
So they give you a re loads of features and they say, you figure it out.
So communities naturally form around like flicker tags or, you
know, like albums and things.
And same with delicious, you know, people come up with different ways
of using it that weren't necessarily on their original roadmap or, you
know, it wasn't the original design.
They.
Created by the users.
I mean, like Twitter's hashtags and at the same rate, they weren't originally part of
the original design, but they came out of people finding ways to use it that weren't
necessarily conceived by the original app.
So my hope is to create something that, that has a similar kind of ethos,
something that is, here's a bunch of tools you figure out the best way of using them.
Mario: Yeah.
Alan: And then as things as people use it, then you see patterns
then maybe make those, you know, more first older features.
But yeah, I don't want to force those down people's throats, which again
is certain, you know, newer apps tend to be like, this is how you use it.
And you're like,
don't feel like it.
Mario: yeah, yeah,
Alan: that's
just really good to know.
I I'm I
appreciate the comment
that I hope that's come through.
Mario: Yeah.
Yeah.
Alan: it's been nice also to see no bugs as in no,
Sentry things appear on my email, which is nice.
Mario: Yeah.
Alan: That's, that's one of the best things is like, oh, it seems
to be working for everybody.
Mario: Yeah.
So far everything that I've, you know, the things that I shared with you have been
just really cosmetic and, you know kind of
superficial you know, like,
Not, not any errors.
I haven't come across any errors.
Alan: I'm curious.
Cause you're, you're in you're in us west, right?
So this is obviously how it's done AWS US west.
So I guess that's Oregon is that I'm not sure.
Mario: Oregon.
Yeah.
It's west
Alan: so that's reasonably close to you, right?
So
since this is using live view, this.
A more latency for me, a lot more latency for me
than you.
And it still feels okay for me.
It's, I mean, there's a, an 80 millisecond.
You can't get faster than that.
So that's like the best case scenario.
So because a lot of the, so there's two types of interaction on.
On the site, there's ones which are using Alpine, which are like dropdown menus
and hotter states, things like that.
And then there's life view actions, which are basically it triggers a uses the web
socket to basically tell the server what's happened in the server responds where they
chunk of HTML that's replaced on the page.
So anything as far as your plan, in terms of checking off something,
moving something, editing something you know, clicking on a a plan item
and changing it to an eight state.
All of those are actually responses from the server.
The HTML cluster is given back by the server.
So I'm curious how responsive it feels like when you're close by is
it feels pretty like almost instantaneous.
Mario: it feels pretty instantaneous to me.
It, it, yeah, there's really not any,
noticeable latency at all.
It's just, yeah, it's very snappy.
Yeah.
Alan: I mean, my, it does.
I don't wanna say it's noticeable.
I I, notice it because I know what I'm looking for when I'm doing it
here.
I notice it because it's like, ah, it's, I mean, there's an 18 mil probably
a hundred milliseconds, you know,
rounded up between clicking on a plan and it becoming editable.
There's ways I could change that.
So, you know, happens on the client first, but using just straight
forward roll live view to do it.
There's, that's how he does it.
So yeah, that's kind of, I wish I was a bit closer to the service, but
I, I it's nice being the worst case.
Right.
Or I guess Australia would be a worst case.
It's but it still
feels absolutely good enough from here, so yeah, I can imagine
it.
Mario: So your, your server is in Oregon.
You
said.
Alan: Yeah, yeah,
Mario: Okay.
So is that a AWS?
Can you share or,
okay.
Alan: Yes they do.
Yes.
So I'm using a service called a Gigalixir,
which is kind of Heroku for Elixir.
And they have the option of going through Google or Amazon.
You can choose that they've got set up, I think on four or to Amazon, to
Google data centers that you can choose.
And U S west one is, is the optimum for me because it's the closest to me.
And it's, it's kind of the, I guess if you're in the U S you'd probably
choose, you know, us central on Google is probably a best case, but for
me, it's, it's closest to personal request to, and also it's, it feels
like a good balance for everybody.
So
it's, if it works for me, then it should be fine for what else was, was my thinking
then.
Mario: yeah.
exactly.
I did the same thing.
My servers are in Oregon too.
And I figured it doesn't re nowadays it doesn't really with with the internet.
It doesn't really matter because you're going to have people connecting
from the other side of the world.
So even if I were to go with a data center, you know, in the middle of the,
of the U S it it doesn't really matter because people connecting from Japan or
Asia or some, you know, anywhere it's still gonna be around the world, you know?
Alan: Right, right.
Exactly.
I mean, so I've someone has recommended CloudFlare Argo to me,
which is Cloudflare's per perf.
It basically optimizes the path from.
Client to the server.
So it would say you're going from Australia.
You know, you might end up with, you know, multiple routes, which is some
of them far from optimum using Argo.
It's expensive.
As in it's, when you look at the but apparently it does significantly minimize
that that route or optimize the route.
So you basically get like preferred route from wherever to the server, but
I'm hoping I don't have to pay for that.
So
Mario: Yeah.
That's
a,
Alan: the server is an elixir a quick enough that the response from
the server is so quick that I'm basically dealing with latency.
That's the only expense, you know, it's, it's, it's a millisecond or two for the
server to create their response.
And then you just got latency.
So.
Mario: yeah.
And I wonder if it's more cost-effective to, before going that route of, you know,
CloudFlare enhanced features or whatever.
I wonder if it's more cost-effective to just up the server you know,
first, if you need a boosting in performance, just up the caliber of
the server that you're running on.
And until you exhaust,
you know, That that
Alan: mean, for, for, in, in my case, especially, you know, the, the slowest bit
is, is always going to be the, the latency because the, the database is on RDS.
And so I did this founder's life thing a month or so ago.
Right.
So I got a bunch of AWS credits for that like $5,000 worth of
AWS credits.
Good.
For two years.
So I'm like, yeah, big database.
So
Mario: Nice.
Alan: basically spending way more than I ever would personally
on a, an RDS configuration.
But because of that, the database is now not the issue.
So the, the actual CPU bound tasks are very minimal right now because
elixirs pretty damn quick and the database is right next to it.
And that's really quick.
So it's, it's all latency pretty much.
So I hope hopefully, you know, That will be able to maintain that
kind of balance that, you know,
we'll see how that goes.
Mario: Yeah.
Alan: require users for that to change.
Right.
Mario: Yeah.
True.
Alan: So that's, that's been a yeah.
A fun week or a week and a half
of responding to that and just seeing how people have using it setting up some I set
up mixed panels, basic response tracking.
So I'm trying to use this to two ways.
I'm trying to record how people are using it.
So I'm using a service called Bento, which is made by somebody local, for.
Being able to trigger like email drips and things like that.
So that's the thing I'm trying to design right now is like, you know,
what do I, when do I want to do things and what do I want them to do?
So I want to start thinking about that process of like, okay, they've logged
in, they've created an organization, but they haven't checked in yet.
Well, in that case, if they haven't done that for a day, maybe send them
an email to say, why don't you do this?
Or if they've checked in, but they haven't invited somebody then, you
know, maybe recommend them to do that.
So I'm setting up that service to do that.
And I need to figure out
the, the flow of emails for that.
But
Mario: do you do that.
programmatically with an
API
Alan: so
it's a.
Mario: with your, with your code?
Alan: So he has a two things.
There's either a JavaScript API, which will basically just trigger pace
changes or the, but they also have a an a, an API, which I'm actually
writing an Alexa module for to be able to do that programmatically.
But basically just say, they've done this, they've done this.
So you just send events.
So it makes panel has exactly the same thing in terms of
triggering recording events.
You basically just say this user you know, just give them a number.
This user did this, this user did this, and you just send strings of you
know, created an account signed up, created organization, invited user.
So you just, I'm Jason, just sending a bunch of events down to
Mixpanel, and then on Mixpanel.
You can create.
Basically queries to make a dashboard of those things.
So I say, so right now I've got a thing, a graph, which
says number of signups per day.
And so every time you, you basically can say show the number of times
we get that event uniquely per day.
And so you get a graph of signups per day, same with number of check-ins
are like number of plans created.
So I have a little graph of a little bar chart of how many
plans have been created today.
How many check-ins have been created so you can see how the usage patterns are.
So without getting all you know, nosy about who did what, this just
gives me an overview of like, some people did this thing this many times
without being too I effecting people.
Yeah, exactly.
I mean, I don't care.
I don't, I don't want to see, I don't want to know anything that anybody's doing.
But it's useful to me to know how often people are checking in.
So how often, how many people have made plans today or how many people
have checked off plans today?
So just by triggering, like telemetry events of when someone's done
something I can just say again, it's, it's a, it's a hashed user
ID, so I don't know who did it.
All I know is that at this point in time, a user and it's unique
because it's hashed did this thing.
So and again, mixed panel have like this, this space, I guess, is highly
competitive for like, I guess there's a hundred different people trying to
be the, the one provider, I guess, like segment.io Mixpanel data.
Box there's, there's a bunch of these.
So, Mixpanel have a thing where you just say you're a startup.
I I've literally new customers start up and they give you
$50,000 worth of credits.
And I'm like, okay.
So I mean, it's, it's fake money, right.
But at the same time means it means I can use a service for free
for a year, as much as I want.
So I guess after that, they'll get you and I'll decide, you know, either I'm in
a position where I can afford to continue or I can't and don't need to because,
Mario: Yeah.
Alan: so at least it gives you a year to figure out what to do with it.
So yeah.
Recommend doing that.
If you want to get an idea, I mean, in your case, you know, you
could literally say, you know, somebody you know, created a.
It created a scheduled on a, a call.
Somebody started a call, someone joined a call, someone started recording.
You could basically just see, can trigger either via JS or via serverside.
And again, as long as it's just hash the user ID in a specific way you can
just get a, a dashboard of those events and just knowing, I mean, I literally
just have a dashboard then I just can see that one person signed up today.
You know, some accepted an invite, somebody, you know, five
plans have been created, you know, to have been checked off.
So it's just gives me an idea of that's the usage patterns
without getting too invasive or,
Mario: That sounds awesome.
Yeah.
I, I would like to do that, something like that
at some point.
Alan: yes.
Highly recommend just, just to get that idea and say then the next
thing for me is, is looking at Bento to, to, get the same thing going
with like email trips, because.
Somebody signs up, you know, right now I've just got, you know, the
welcome email goes out and they've got the invitation email goes out.
But I then want to separate the kind of like the sales emails from that.
So something, you know, that goes out at when people do particular things.
Yeah.
I'm like, I want to manage that outside of my application.
I don't want to write that in my code.
That's like, and
so also, I don't know if you've noticed, but I also have email
reminders that you can create from within the application as well.
So you can say like email me at 6:00
PM every day to do a check in.
So,
Mario: Oh, okay.
I didn't know that,
Alan: I, I, well, that's the thing nobody else has created apart from me.
So I'm like, okay.
But
because I can see that on Mixpanel, I'm like, okay, I need to prioritize that.
Like was so I'm doing it now after you've created a basically creates an
organization or joined an organization.
I'm going to come up with a, like an info banner.
So I'm thinking of putting it in like the top right of the dashboard page.
Kind of put a box around it to say you know, did you know, you can set a, a daily
reminder or something and then close it if you want, if you don't want it to go away.
But I'm thinking of using that space as like a like a
recommendation of what to do kind of
thing.
So if you haven't invited somebody, then you know, why don't you invite
a teammate if they haven't created a, a a reminder, maybe remind them
to do that, or otherwise just, you know, use it for something
fun if there's nothing to tell them.
So kind of a space that is that the top right.
Of the, at the dashboard page use that for something
informative or like a, did you know that kind of space?
So.
Mario: that sounds good.
That sounds like a really good idea.
Alan: But again, but mixed panel is showing me that no one has
created a reminder is like ah,
Mario: Yeah.
Alan: should do something about that Cause right now it's just in the settings page.
If you go to settings as reminders.
And so I'm curious about that as well,
because that's, that was a nightmare to write from a time zone point of view.
Mario: Oh Yeah.
I I can only imagine time-zones such
in such a pain.
Alan: Yeah.
So yeah, obviously if you say you want it to go out at 6:00 PM and
I say, I want it to, go out at 6:00 PM there, different things.
Mario: Yeah.
Alan: So I want to, the next thing I want to add is say, I want to
send it at 6:00 PM on weekdays.
Right now it just sends it every day.
I want it, so you can say, send it at five 30 every weekday.
So then I've got to basically check anybody who's, you know, needs a reminder.
Well, what, what days?
It not just, what time is it for them, but what day is it for them?
And
Mario: Yeah,
Alan: And that changes, obviously, if I suddenly go back to the UK for a
week I want that kind of to follow me.
Right?
So, because it updates the user's time zone when you log in.
So anytime you go to the dashboard, it basically records your current
time zone via the browser.
So that those reminders will actually then automatically reshare module
because it just uses UTC to store.
So those from that point on will then be 5:00 PM in the UK
rather than 5:00 PM Japan.
So that should work
Mario: Yeah, it
Alan: all my tests, have it work.
But I'm curious to know, to have some other people in different
times on use it to see how it
makes sure it
works, confirmed that I'm not going crazy.
And my tests are actually useful.
Mario: okay.
I'm going to, I'm going to try, I'm going
to use that I'm going
to do something with it then I'll report back.
Yeah.
Alan: So, yeah, so this, my plan for this weekend is to basically invite some teams.
I've say
I've
I've improved the invitation system page a little bit as well, to give a little bit
of information as to what you're doing.
As you mentioned, a lot of the UI is some of it's good.
Some of it is very utilitarian and the invitation page has one of them.
It worked.
And then I was like, I don't, I wasn't in the mindset to, to figure out
how to fix that how to display it.
So I spent a bit of time with that last night.
So it now has like a description.
You can add a message.
There's like a default message that you can send as part of your your invitation.
You can change that.
And so that's all that's improved somewhat.
So now as that's working I'm going to try and add this little information
box in the, on the dashboard and then send out to some teams at the
weekend and cross my fingers and hope for somebody wants to use it.
so so it's been a, it's been good.
It's it's simultaneously like,
oh, this is great.
I've got some users and also like, oh crap, I've got users now.
Like what if nobody wants it?
What if nobody uses it?
So it w it's like, before that point it's anything's possible.
Right.
And then you're like, oh crap.
No, one's logged in today.
Like, why not?
It's Sunday.
Oh yeah.
That's why,
but you get a little bit I say, I
don't, you know, right now it's still very early learning
days and because of the people
I've invited, I don't expect massive
like
use.
Yeah.
exactly.
It's going to be trying things dipping into the Panetta was into it.
But.
Mario: And that's the way it goes.
I, I
find myself in a similar situation, I've onboarded a few people and
I'm only a couple of people have logged on and tried it, you know
I think I, I'm only aware of one
person who actually recorded an episode and which I talk, I
mentioned earlier in a, had a
Alan: Wasn't it didn't go perfectly, right?
Mario: yeah, it.
didn't go perfectly, but but.
he was able
to
record and.
Yeah.
So you know, in my case, I have to understand that some of these people,
they already have a solution and they're just, you know, kind enough to be willing
to give my product a try and just, they're interested in checking it out.
And they might schedule a session here and there at some point or they might
be waiting for a chance to give it a try without it being like a critical
recording session that they want to do, because after all this is still beta.
So I totally, you know, understand if it takes them a while to get to it,
Alan: and plus, you know, it's not something well, unless you're a
professional, full-time podcaster is not something that you're going to have.
Okay, I'm going to use this right now.
It's like, no, I'll have a, you know, there's a recording that
I need to do next Wednesday.
And you know, the usage patterns are going to be not necessarily
predictable, regular, like,
Maybe regular, but not frequent.
Mario: Totally.
And yeah.
And we'll see.
One thing I wanted to mention before we wrap it up, the problem that we had
with your recording last time which, you know, today you were not able to,
to get in without the recovery mode popping up was because in the, and
I I've addressed this issue already.
But before the leave button.
When I, as a host
select to leave the session, it ends the session for everybody
else Well, it wasn't checking
for the state of, others in the session.
And so if you were still uploading it'll kick you out.
so I changed that.
So that now as the host, if you select to end the session won't let you, unless
everyone in the session is done uploading.
Alan: Yup,
Gotcha.
Mario: it checks for that now.
And before it was only checking for my, for the local, you know, the local state.
And and so that's what happened last time when I
ended the session, you were still uploading and it kicked you out and
it didn't get a chance to finish.
Alan: Say, this is why we're doing it.
This is why we're making these help you a debug, all this stuff.
Mario: Yeah.
Yeah.
So,
Alan: It's, difficult.
This stuff.
I mean, especially asynchronous, synchronous and asynchronous, because yet
you need these things to happen, but you don't know when they're going to happen.
Right.
So it's
Mario: Yeah.
That's crazy.
Alan: It's tricky, man.
Mario: Yup.
Alan: It's close.
You just get this
recording bug salted and you begin,
Mario: I know.
Cool.
All right.
So maybe it's a good time to wrap it.
up
Alan: It sounds like it.
So if I hit stop recording now,
Mario: Okay.
Alan: and then, so I'm just thinking, give it time to finish
up.
Mario: Yeah.
Yeah.
That sounds
good.