Alan: Hey, we're recording
Mario: Hey, we are.
All right.
It's working.
Alan: Yeah.
How's things going, right.
Mario: Good.
good.
How about yourself?
How are you feeling?
Doing better?
Alan: Yeah.
so, yeah, I had the the booster vaccine.
Was it is it yesterday morning?
Yeah, about like 10 o'clock or something.
So it,
Mario: knocked you out, huh?
Alan: actually, no, it, the day before I had it.
Yeah.
So that evening so was it's Thursday today?
Yeah.
Tuesday morning I had it, so that evening I was kind of Dose-y like sleepy
early and then yesterday I just like had the temperature and yeah, just so.
Mario: you, you, you crashed
Alan: Pretty much.
Yeah, I was, I felt like I was operating like 50% all day.
It was just like, you know, I was doing stuff, but I'm like,
I'm just not really all there.
So
, Mario: Yeah.
Alan: it's fine.
So, so, you know, it's better than the alternative, isn't it?
It could be worse.
Mario: Oh, yeah.
Yeah, for sure.
Yeah.
I haven't taken the, the booster shot yet.
Double vaccinated, but not the, not the booster.
Alan: Yeah, the, the thing, cuz Japan's a little bit they're
a little bit late started.
I mean they've only just really started doing their boosters now, but it seems
really low take up compared to the, the first vaccine, you know, the, the initial
two, you know, is very high, like 70 something percent of adults have had
it, but so far the boosters only like 10, 15% or something, just people that
just aren't really as lining up for it.
So either way
Mario: Yeah, yeah.
Yeah.
Well, that's good.
That's good.
Better to,
, be prepared.
Alan: so yeah.
So you've been up to, you've been busy.
Mario: Yeah.
Oh yeah.
the fund never ends
Alan: It really does.
It's like people say, oh, you've been busy.
I'm like, I'm never not busy.
Mario: I know, right.
Alan: A little bit of a break might be nice sometimes, but
yesterday it is weird cuz I, cuz I work primarily for us companies.
My, my main client is us based.
So yesterday here was a national holiday.
But kind of doesn't apply.
Right.
Mario: yeah,
Alan: I mean, in theory I could take the day off.
It just means I don't get paid for it.
Right.
So it's but you know, my son's got homework to do and he was playing
online with his friends and stuff.
So it's like, oh, just normal days.
Of course that means everyone, you know, that my friends are all like yeah.
You know, halfway, you know midweek break and all the rest I'm like, yeah.
sounds nice.
Mario: Must be nice.
Alan: Yeah.
Well unfortunately, because this startup is kind of You know, it, it's very small.
It's kind of, you know, all hands on deck doing everything.
The we're not really even set up for, I guess, us holidays either.
So they kind of just pass by as well.
So I should make more of an effort to actually just like, you know,
if, if something's a good excuse for break, I should take it.
But you know,
Mario: yeah, yeah.
Alan: it's great.
You have a vacation, so you can do some, get some work done, right?
Mario: yeah.
do you do Rails for your clients
Alan: yeah.
Yeah.
The, my client job is, is all rail stuff.
I mean, I, I kind of chose the stack for them.
And so I'm doing all of their backend development.
And it's interesting cuz I do, you know, my current framework
of choice is Elix and Phoenix
Mario: Yeah.
Alan: and that just really, you know, that's really clicked for me.
It's just so.
It's really cool, especially for anything that's interactive, you
know like web based interactive.
And it is just really clicked for me.
I love it.
But obviously Rails have been doing since forever.
Literally like, you know, the weekend the very first version of
Rails came out, was made public.
I played with it that weekend and I've pretty much been doing it.
So, so I've done a lot of Rails.
And it's funny because you know, it was always the The exception,
you know, the big frameworks at the time were all Java based.
You know, PHP kind of then has become the, I guess the, the default startupy kind
of stack, especially with smaller younger folks Rails has now become like the
accepted old school framework, I guess.
So, I mean, the, the nice thing about choosing it over Phoenix and LiveView is
just that so many more people know it.
So, you know, I'm not gonna be the only developer on this client project.
And at some point, you know, I'll probably end up having to either hand it overall,
you know, the, the team will increase and, you know, hiring a couple of even if at
first it's, you know, extra freelancers finding Rails, freelancers is gonna
be a whole lot easier than finding.
Phoenix freelancers.
Right?
So it was a very conscious decision for like this isn't a choice
for me, it's a choice for them.
So, you know what, what's the best thing for them.
And you know, you cannot go wrong with Rails.
It's,
Mario: Yeah.
Alan: you know, there's, there's, there's, you can never fail really.
Yeah, exactly.
It's there's there's everything you ever need, it will do.
So it was just a, a very sensible decision
Mario: Yeah,
Alan: of course that means that I'm living in Phoenix and Rails world at all times.
And you know, it it's, I, it's not so confusing cuz sometimes you just miss
something outta the other language.
Right.
You're like, I could just do this if I could, but it's not here.
and vice versa as well.
You know, there there's certain things especially within.
Phoenix.
So Ecto is the it's not an ORM, but it's the way you talk to a database, right.
In Phoenix world and Rails, you know, I, I assume it's got,
you know, the similarities with Laravel and stuff in terms of,
you know, accessing the databases.
It's insanely easy.
I mean, it's, it's so easy that you, you don't even think about it.
Right.
Whereas Ecto is very much more, it's slightly more, it's closer to SQL.
So you have to be a lot more savvy with your database technology whereas Rails,
you know, you could probably get by with, with knowing no SQL whatsoever, right.
With Rails and with active record.
So occasionally sometimes you just like, especially if it's just
something quick and hacky, you're like, I just need to get that there.
And Ecto you're like, okay, I've gotta figure out actually
how that works at the database.
whereas Rails, you just like, just.
Munge it all together and it'll be fine and it kind of works and it's slow, but
I didn't need it to be anything more.
Right.
So yeah, you kinda get used to Rails just providing that level
of convenience, active record, providing that level of convenience.
So occasionally I'll miss that, but it's like, well, it's for the
best I'm doing it properly now.
so you're, you're Laravel right.
Mario: Yeah.
Alan: and, and Vue for front stuff.
Right,
Mario: Yeah.
Yeah, for my own stuff, it's always Laravel and, and Vue for work we're
doing Laravel also, but we're not using Vue, we're using React, which
I didn't really have much experience with React or pretty much any
experience with React before this job.
So I've been learning a little bit.
Alan: Cool.
Mario: It it's good I liked it.
But I, I still prefer Vue . View is so much more simplified.
It's it?
You know, it's to the point and, and.
React has a little more stuff that you have to wire together
and, you know, get it...
Vue is like, it's so much more simpler.
Alan: Yeah.
And so my, my only real experience with React is I've I built a react native
for, for a client a few years back.
And so it's kind of the same, right?
It's just got a little bit more structure with regards to, you know,
fitting in mobile views and stuff.
And actually last week I did a, a quick react native app
as well for this for DotPlan.
I'll mention in a minute.
And so it's it.
Yeah, it's very.
verbose it feels
Mario: yeah.
Yeah,
Alan: everything has got boiler plate upon boiler plate.
And it just feels like, seriously, I just wanna stick that on the screen.
feels very yeah.
Top heavy.
Whereas yeah.
Vue is, is much more like lean
Mario: leaner.
Yeah, yeah.
I prefer view and I'm used to it.
I mean.
part of it is that I'm, I'm used to it and, and I mean, I'm still learning
some areas, but I've worked with it for a while and I'm more used to it and
react, the fact that I I'm new to it.
It's, already with the, limited experience that I've had with it at, work.
I can tell that it's a little more verbose and,
Alan: a little bit more baggage, right?
Mario: Yeah, yeah,
Alan: so have you seen the Alpine JS?
Mario: Yeah.
So I've been looking into it, recently.
we're also using Alpine at work.
and I but I, I haven't Really?
had I guess the need to, to work on it that much, except for actually this
past week, did a little bit, just little something with Alpine, cuz it's already
there and I just, you know, X data
Alan: Right, right.
I mean, that's the, it's, it's kind of, Vue, but even leaner still.
Right.
I mean, the is very Vue-esq but it just even removes any
kind of baggage whatsoever.
Right.
So, so I used it in DotPlan just because I needed stuff, which you
know, things like hiding stuff and, you know, dropdowns and, you know,
modals and things like that, that LiveView for all of it's amazing stuff.
It still requires a trip to the server.
Right.
So, you know, the, the idea being that all of your interactions
are basically on the server.
So you just talk web sockets for every thing and the server
handles all of the state.
Which is fine for anything that, you know, includes a form or a box
or you're getting data or anything that requires data that's perfect.
Right.
Because your front end would probably still have to talk to the
server anyway, to get something.
So, you know, there's no big difference, but stuff like just displaying a
dropdown menu, you don't wanna do that.
I mean, you could, but you wouldn't want to.
Mario: Yeah.
Alan: So the, the kind of preferred, or, you know, suggested method is
to use Alpine, which was, I mean, it's perfect for that, right.
Because it's such a tiny library.
And then just being able to sprinkle things that, you know, things that
need that imediacy just all over your code it's worked out well.
But interesting thing is with the latest version of LiveView, there's
now a there's an extension to the the, the LiveView, JavaScript library.
The thing that does basically all the ding between, you know, and updating the DOM
from the server responses, it now actually you can call JavaScript events directly
from your within that code, right?
So you can actually write JavaScript code within your Phoenix event.
So you say, okay, if this event is clicked, then do this JavaScript event
and then send this to the server and you can kind of chain things up and
do those events in your Relic code anyway, without even needing Alpine.
So , I've been kind of even removing Alpine from the stack bit by bit
was like, oh, when I'm working on something, I'll just be like, I
can actually get rid of that too.
So it it's, but at the same time, it's, it's just handy when it's there.
Right.
So it's kind of interesting how this is evolving.
it's funny.
We're not done yet.
We haven't finished with this whole web architecture thing.
Mario: It's always evolving.
Yeah.
I need to get more into it.
I've been learning a little bit here and there,
Alan: when I first started using it, it was even, you know, it did so
little, you know, it was pretty much, you know, there's a data thing you're
buy into it and things and that's it.
Whereas now, even that is kind of, it there's a whole lot more than it used to.
And it, you could go a really long way with it.
Right.
It's kind of interesting.
how how's product and development have you had a chance to do any
Mario: Well a little bit here and there.
I haven't had much, chance to work on it recently, but, I've done some work on it.
mainly in the area of improving the way it handles network, interruptions.
And I think we talked about that, before, or a little bit some of the
feedback that I received recently with, people using the product.
Has been in that area because you know, it directly affects the recording, right.
Alan: This is, this is the part of Europe, which kind of stresses me out
the most if I was built in it, just cuz there's so it's so I mean, networks are
just unreliable at the best of times.
And the fact that, you know, you've got different things, been uploaded and events
requiring things and yeah, it's that that's the bit which would stress me out.
So I understand the the wanting to get that, you know, rock
Mario: Yeah.
And, and it's, you know, the devil is in the details as they say, right.
It's, it's just all these different things.
just as an example, while everything is working just fine, you can
see the indicators, you know, saying recording and let's say one
participant has problems with their network and they get disconnected.
Well, if there's no network, then the signal that drives the status
indicator may not come across.
Right.
So, the host or the, you know, the other people, in the session, may still see
that it says re it's recording because it never got a chance to get updated.
right.
Even though the person is not there anymore, but maybe the,
the image still there, because it, didn't get a chance to clear.
that's the problem when the network connection drops
suddenly, then there's there's
Alan: You, you don't get a, this, the network has gone event, right?
you just, it doesn't have a chance to tell you.
Mario: is exactly.
It's just, it's an error.
and those things, those little details and things that are important in the
application are not able to get updated.
so then now the user doesn't know, is it still recording?
It says it's recording, but you know, what do I do?
And blah, blah, blah.
So it's, it's a little tricky to get that, to work in a way that
it, it satisfies everything.
So, and so that's what I've been working on and
yeah.
So I'm gonna be releasing those updates pretty soon
Alan: Excellent.
Mario: and, hopefully that's it in that area.
If, all goes well with that, that's pretty much the last thing that's
been keeping me from pricing and all that so that I can launch.
So
Alan: Let's hope we can get to the next next step.
Mario: next stage.
Yeah, for sure.
Aside from that I did have to I didn't have to, but I upgraded to
tailwind CSS three because I was still running on, believe it or
not, I was still running on 1.9
Alan: right.
yeah,
Mario: version two came and came and went
Alan: away.
You never get a chance to move to.
Mario: and now it's version three and I'm like, ah, and I, I
didn't wanna fall behind too much
Alan: The, the, the one to two, there was a few things which I had to update, right.
Forms especially changed a bit.
And they co to be honest, my client thinks still on 1.9 and I really I've just been
putting it off, just cuz so much other stuff building up that I'm like, eh
Mario: yeah, yeah.
You don't wanna,
Alan: no, well, especially since two to three, I mean that API,
the, the, the standard API seems pretty, you know, unchanging now.
I mean, there's extensions coming, but it's, I don't think they're gonna do a
drastic change of any existing stuff.
Whereas say 1.9 to two was like, oh, your forms are broken.
Mario: Yeah.
Yeah,
Alan: bet that was fun.
Mario: yeah,
Alan: but yeah, I mean, it's cool now they, especially with three and the, the
JIT and just having a command line thing and it is just such a smoother experience.
It's yeah, I I'm liking the way it's going.
Adam's
Mario: yeah.
Although,
Alan: is really quite impressive.
Mario: yeah, it's really, really nice.
It's really neat.
Although I'm having a problem with that a little bit, and I still haven't been
able to figure out, but I suspect it has to do with the way my my process
is set up where if I make any changes, it doesn't reflect the changes unless
Alan: I had
Mario: I save the config file the tailwind config file.
Alan: that.
sounds familiar.
Mario: So it's weird cuz.
It, when I save my changes, it builds, you know, it, it looks like it's building,
Alan: mm-hmm
Mario: And it completes successfully, but the changes are not reflected.
And so I have to go, even if I didn't make any changes to the
config file, the tailwind config file, I have to go into it, save it.
And then it builds again.
And then I see the changes.
Alan: I've had that.
I mean, it's fine most of the time, cuz you're not adding classes that
you haven't used elsewhere for the most of the time you, you know, you're
tweaking spacing or tech sizes and things and that's it doesn't, you
don't notice it and then you'll add a different width thing or something.
You're like, what the hell?
Oh yeah, I've gotta go.
And just poke that.
And I, I don't know what I did, but I resolved it I've had
that problem before in the past.
Mario: Okay.
Yeah.
I, think it's hopefully it's as easy as that.
I, think it's a leftover from my setup for the build process,
cuz I, I haven't changed that.
Alan: I, I, when I started a new project recently, I didn't have
the issue when from the beginning.
So I'm like, okay.
I inherited something from, because you know, it's an older project
and it's gone from like one up, you know, early to, to now.
Yeah.
Something.
Well, I had a weird thing with one of my, the, the, the host I'm using
for DotPlan is called Gigalixir
Mario: Okay.
Alan: it's it, it's very cool.
It's a, it's like Heroku for Elixir.
Pretty much.
This is quite a small company running it and it's really good.
I've been really happy with it, but the build process is there's like
three main ways of getting a binary that you can deploy in Elixir.
And there's no, canonical, this is the way they all have pros and cons and
depending on what you want to to do with it, or, you know, whether you want to
do this or that, they're all very valid.
So, you know, you kind of, you pick one and you go with it.
But the build process for it.
Yeah.
It's it, it runs on a.
Server, not your machine.
I think , I I've, I do too many, too many working on too many projects.
I forget and so when it was building it, it was doing it effectively at the
wrong order, it was kind of building the CSS and then doing something
else and effectively deleting it.
So when it deployed gets deployed, there was no CSS file there.
It was, it took me a whole evening to work out the, and it was
literally just changing the order of two things in my build process.
Mario: Huh.
Alan: I did my life at that time.
I'm like, oh yeah, that, that fixes it.
So, it was one of those, you know, like there's only one person in the world
who seemed to be having the same problem on the Gigalixir, like slack channel
And they were like, yeah, I'm kinda like someone else has gotta seen this.
This is a.
Pretty straightforward thing, sticking tailwind on a, you know, Elixir build.
That's going deployed on Gigalixir and they had, you know,
they stated the same problem.
I'm like, ah, you, my friend, tell me what the hell to do.
And of course it was just like silence.
They asked the question and they disappeared.
And
Mario: Yeah,
Alan: how so?
I, I, when I figured out I went and wrote a long thread there and
just explain that, I hope they saw it just because I hate that
Mario: Yeah, if not somebody else might run into that problem later
on and, and that'll be helpful.
Yeah.
I, I know I come across as questions and, and things like
that, where that nothing, you know,
Alan: Nothing.
It's just, there's the question you're like that, that issue.
How do you tell me what you saw?
I think there's
Mario: no answer.
Alan: XKCD says something along those lines as well.
Right.
Mario: yeah.
Alan: but the thing, the thing is as well, especially with build processes,
you spend what, what we should do is really document them really well.
Right.
But we never do, because once you've got them working, you're like,
oh, it's done, that's fine now.
And you forget about it and you move on.
And then in six months time when you're like, something's changed,
you're like, what did I know?
I don't know what I knew at that time.
Mario: yeah, yeah.
Cuz you don't work with that.
All that often.
It's just
Alan: Yeah.
Yeah.
Once it's set
Mario: set and forget it for a long time.
Alan: Exactly.
So it's interesting.
I've been using fly.io, which is new.
I don't know how new it is, but it's kind of an alternative to
again, Heroku and the, the whole platform as a service crowd.
and it's, it's really interesting because it's they've just hired the
creator of Phoenix which is kind of interesting, cuz it's a really good fit.
I mean, it's literally a perfect fit for how LiveView works.
Right?
So as I said, LiveView, every click, everything you do to interact with the
page effectively is talks to via a web socket to server and you get a response,
which is fine, you know, for most of the time because your latency is, you
know, what, you know, ites really quick.
And what's your biggest downtime, you know?
Sorry, downtime.
What's your biggest round trip is probably a hundred, 150 milliseconds.
So I'm like host in stuff in, Oregon and you know, in Japan there's still,
I, I can't get it less than like 180 milliseconds, but it's still
enough that you don't notice it.
You anything that below 200 milliseconds feels quick enough anyway.
Right?
But what they've done to make that even feel even faster is you can fire up these,
it basically works on these micro VMs that you can fire up and in any given region.
So you can say, I want you know, it deployed in Tokyo and Oregon and London
and, you know Frankfurt or something.
And so you're super close to a server that can respond to LiveView
incredibly quickly, but then obviously you've still got database, right.
You know, your database might still be in Oregon, even
though your server is in Tokyo.
But you can basically fire up these database read only, replicas.
And so you can say, okay, I want my rights to go to Oregon, but I want, I reads
to go to, to Tokyo which means you've got this super fast distributed thing.
And it sounds complicated, but the way it's set up and the way LiveView
works, it's literally just it's.
Oh, start a new one.
I want some here and some there, could you do it please?
And it just works and it's, it's, like's this stuff, which, you know, it sounds
insanely complicated to get set up.
But it's like, no, it's, it's like three commands.
It's no big deal.
Mario: Yeah.
Yeah.
Wow.
Alan: Technology has come a long way here.
So, you know, I remember like one, my first, you know, app that I
ever had, I had to put an actual physical box that I owned in a data
center in London and maintain it.
So now I'm like, I just spin these up all over the world.
It's fine.
Mario: yeah.
yeah,
Alan: so it's really
Mario: It's yeah.
It's it's come a long way for sure.
Yeah.
I remember those days.
where, when you had you, you had a server, you, you, you named
it, you had a name, had a label
Alan: That's also had the downtime in the middle of that when I had to drive out
to London, Docklands and replace a hard drive and like try to, you know, resync
raid array in the middle of the night and I'm like, I'm never gonna do this again.
Mario: no,
Alan: never again.
Mario: no way
Alan: Kids dunno how good they've got it.
Mario: yeah.
Yeah.
Alan: so, so yeah, DotPlan's been moving along.
So I think I mentioned this, my, you know, my client that I'm kind of
handholding and just being really helpful, getting things like just being lots of
feedback, just being really helpful.
So they desperately want to use it mobile first just because of their environment.
They they go out on site a lot.
They, they probably spend, you know, 20% of the time actually at a desk.
The rest is going out on site to do things, but they still want to maintain
this kind of, I mean, that's one of the reasons they like this is because it
can maintain the communication or at least the, the, the cadence of knowing
what people are doing, even if they're not in the office the whole time.
So they really like this idea.
But they're like, We're not particularly happy with you just using Chrome.
They they've got some older and Android devices that they have as work phones.
And they're like that it just people using it just through a web browser.
They're not particularly happy with.
I mean, not that it doesn't work well through a web browser, it's just, it
feels like I they're like, I wanna button.
I'm like, well, you can install it as a PWA.
And they're like, how do I explain that?
And I'm like, so I'm like, okay, I'll make just a, literally a, a rapper
around the website with, you know, a little bit of Chrome to kind of
make it feel a little bit more solid and some network checking stuff.
So if it goes down, you know, it gives a, a, a message, you know, so saying
that you need a network connection, just some kind of Stuff to make it
feel more cohesive as an app, even though the app is basically a web view.
So I was like, okay, I can do that.
That's that's doable.
So I, I built this react native wrapper I, I can't call it
an app with a straight face.
So I built this wrapper and I've just, I pushed it out to them.
Couple of days ago as a Google, as an Android internal test app.
So I've never I'm I know nothing about Android at all.
I've, haven't touched at all.
I, so this is a kind of, a bit of a learning curve.
Just even as far as the play store works you know, just, you know,
getting a developer account and what's required to publish at
the play store and, and all this.
So that's been been a learning curve and so far so good.
I've now just gotta get it.
The internal test seems to be going okay.
They could get installed.
They're using it.
It seems.
Okay.
So now I've just gotta get it through to the actual play store now itself.
And because it's a react native app, it works the same on iPhone.
I, no apple are a bit funnier about rapper applications, but I think
if it provides a, you know, some benefit, then it should be okay.
We will see I'm gonna try and submit it anyway.
See what happens.
I've been through the apple submission process a few times,
so I know what to expect there.
and that well, expect the unexpected repeat process, right?
Mario: Yeah, I, don't have a lot of, experience with mobile apps.
I back in, I don't know, a few years ago I tried building something just to learn
and get a little bit of exposure to that.
just using one of was, I think it was phone gap or one of those, you know,
using JavaScript and, and CSS, but I think what I was trying to build was
too ambitious for being first time trying to build something like that.
So I, I learned a little bit, but I got into a lot of.
Trouble where I didn't know what to do.
And eventually I ended up abandoning the project, but, how do you get the
app onto their devices without going through the app store or Google play or
Alan: it depends on so apple and, Google are different in this regard, but the
as far as Android goes, You can create there's different levels of tests.
There's an internal test, there's a public test.
There's a closed test and then there's like place, door kind of thing.
So I've just gone with the internal test.
You can just put in it says what's your email accounts.
And so, okay.
And then they gave me all their emails and then I discovered they're not their
Android, not their Google account emails.
Right.
So it's like, go back and sorry.
Can you tell me what the address is actually on your phone?
Not the email address you use.
So again, I never having done it.
I just didn't even think about that.
It's like, oh, you just send them a link right now.
It's gotta be, you've gotta authorize their Google account to
be able to access this internal test application to install it and stuff.
whereas apple, the it's.
You've either got test flight, which is kind of a managed system, or you can
get there U U D I D numbers, which is effectively serial number for the device.
And you can register those into your build and it works on those devices and it's,
it's like side loading process for that.
So the Android process seems to work well when you get the right
email addresses to give them to it.
So,
Mario: yeah,
Alan: cause I wrote
Mario: Have to be a, a Gmail
Alan: it's not Gmail.
I mean, because if it's a Google suite workspace, I can't remember what
Google's stuff is called these days.
As long as you are using it for Google accounts then it's a work account thing.
So yet that's that works.
Or it can just be whatever you logging to the phone with it, to, to
download stuff on the place store.
So as long as you've got those emails, you can just put them in and make those
authorized for the, internal test.
So.
Mario: I see.
Oh,
Alan: And then I can just push to that.
It installs and that's it.
So it's actually quite a smooth process when you realize, understand what you're
doing, what again, being the first time , I'm like, I dunno what I'm doing.
Mario: yeah,
Alan: Well, yeah, it's yeah, I, I wrote some objectives and stuff back
in the day for iPhone and things.
So a lot more, well even that's changed a lot since I've done that.
So I'm sure I'll have to go through a whole new learning
process for that as well.
Mario: yeah,
Alan: but it was interesting just by doing this, it kind of forced me to go back
and re-look at all of the pages, how they work on a mobile because they, everything
worked, but it was not necessarily as good as I'd like it at least I found out
that it wasn't as good as I'd like it.
So it was good opportunity to like, just tighten up spacing, font sizes
you know, this got like a sticky banner at the top now with the menu.
So it doesn't, you know, it feels less like a webpage, more like an app.
And so just going through just tightening everything up as far as some to works
better in the, the mobile version.
Mario: In mobile view.
Alan: Right.
So I'm really happy how that's turned out.
It feels like a lot, lot better.
It was just a good excuse to go through and reassess the whole design base.
Like, so
Mario: yeah.
Nice.
Alan: Also take out a lot of duplicated tailwind classes, which
Mario: oh yeah.
Alan: because I was looking at I'm like, oh, actually I don't need that anymore.
And also ended up refactoring a bunch of views again, because it's like, hold on.
This is the same view just with different data.
So it was a good opportunity to, to just tidy things up a let do a bit of
refactor and things without breaking anything and that that's stuff, which
you never make time for really, you're always pushing ahead with new things.
Whereas this was a have to.
You know, look at the same thing.
Re-look at the same thing you've already written to just tighten it up.
So it was a good excuse to do that.
So I'm happy with how it went.
It's we'll we'll see if I get, get the thing on the store.
It's yeah, that's the next thing just waiting for Google to, to
give the, go ahead for that.
Mario: Nice.
Nice.
Yeah.
I actually had to do a little bit of that.
myself working on, on this, you know, network related stuff.
came across a bunch of code that could be refactored and improved.
And ended up removing a lot of code, which is always great, you know, just
Alan: the best feeling
Mario: seeing all the, all these opportunities to make it more compact
Alan: yep.
Mario: and just deleting a bunch of code that, well, you know,
I can do it this other way.
It's better.
Or, you know, unified certain things where I had, you know,
Alan: How's the best feeling.
It really is.
Mario: a little bit of duplication because of the way that I approach It first of
course duplication is, the one thing you you're trying to minimize or eliminate as
Alan: I mean, I, I'm kind of very liberal with the duplication
when I'm writing stuff.
I mean, I kind of try to leave it for this revisiting thing.
You know, what some of the things well, I guess that's one of the things
I've learned over time is that, yeah.
You're never gonna get your abstraction right.
In the first place.
Right.
Unless you, you know, sit down for, you know, we and design
everything, which, I mean, even then you're probably gonna forget
something it's never gonna be right.
You're gonna end up changing something.
So I'm very liberal with just cut and pasting code and, you
know, tweaking it to work.
And then when everything is settled, I'll go back and
reassess it and kind of tidy up.
So this was yeah.
An opportunity to do that.
Right.
Mario: Yeah.
Yeah.
I tend to do that too.
Alan: I'd rather be explicit in, I'm doing this here.
Now.
It might be the same as I'm doing over there, but I'm doing this here
now, and I know how it's working and I know exactly what I'm working
on as opposed to some, you know, multiple abstraction abstractions
somewhere else that just yeah.
It's
Mario: Oh, I wanted to ask you, what kind of reception did you have, with
the wrapper, that you created once you
Alan: So they're using it now.
We I'm waiting to hear back, so I literally, they, they
installed it yesterday.
So I'm waiting to hear no complaints so far, so
Mario: Okay.
Alan: we shall see.
So, oh, so the other thing, get it.
I think I mentioned last time I was looking at this Thing for making
like documentation called Tango.
So I, I, I spent an hour with that and rattled out like 20 help pages.
So,
Yeah, I'm telling you, it's pretty nice for just getting something going
and because you can, you know, you can effectively link to any help page.
So I'm just making like a notion page of how to do things.
I can order them.
I can make that public, like link it to it from my site.
And then just use that as like a, you know, this is how to do
this and just linking to them.
I mean, most of them are like three steps.
Right.
You know, go to this page, click on this and accept that.
But, so the amount of times that we're getting requests
for like, how do I do this?
Well, it's easy, but you know,
. Mario: Yeah.
Yeah.
Nice.
Alan: Yeah.
So yeah, I rattled through those and yeah, it's just really nice for that.
Quite impressed.
So
Mario: Is that connected to any kind of, like a CRM or help desk
Alan: N it's not I mean, I could do, but this is purely I say it's a, like
a Chrome plugin that you just browse to the page, you do the thing click
done, and then it'll set them out.
You can delete them, you can replace images, you can just add description.
And then just say, it's done, you get a link, you can share it to it.
So it's actually it's one of those things that you're like, it's a
perfect kind of indie project.
I don't know who's behind it.
I don't know how big the team is or anything, but it, it could be an indie
project just because it's it's it does one thing and it does it quite well.
So it's, yeah, I kind, kind of impressed with that.
Mario: Cool.
Alan: so yeah, I, I could link it to say some kind of help desk thing,
but for the moment I'm like the simplest thing, just make those make
a page with them all listed and, you know, they can use their eyes.
Mario: Yeah.
Alan: Command F.
If they really need to find something.
Mario: nice.
Cool.
Alan: trying to stop myself from building anything else
Mario: Yeah, right.
yeah.
You don't need more projects
Alan: no, I really don't need more sleep, more projects.
Mario: right.
how are your sign ups going?
Alan: I need to, that's my next thing.
So once this is get this app done, they're out again, because this
client's kind of waiting on this.
It's, it's back to the, trying to, trying to get people on board.
So I did a, a few weeks ago I did some tweaks to the landing page
and I kind of got a better idea of now, of how I want to redesign it.
So
Mario: Okay.
Alan: that's, a thing for when this is done, just
Mario: Yeah, yeah,
Alan: otherwise it's too much to try and do it once, right?
Mario: yeah, yeah,
Alan: As you said, try, try and get into, as I said, you know, you
said a while back, you know, you'd like to get into a kind of cadence
of being able to do development and then marketing development marketing.
It's a, it's a nice goal.
Something I'd like to try and do, just because then at least You can,
I mean, this, this kind of context switching is just this killer.
I mean, I I'm sure you find it too, just switching between work
projects and personal projects.
And, you know, even when your personal project is actually
like 10 projects in one, right.
there's not just one thing.
There's the, there's the whole, you know, the technicalities of how it's working.
And then there's, you know, the marketing side of it there's even
the support side, things like that.
Being able to just pick one and at least your only contact switching
between work you know, paid work and this project then, you know, one
thing for at least in a week or two.
And,
Mario: yeah.
Alan: the more I thought about it at the moment, like that would be a, an ideal
really just cuz otherwise it's, it really does weigh you out just this constant.
Like what do I need to think about today?
I can't do it
Mario: Yeah, yeah, exactly.
It's, it's not easy.
it's harder too, when it comes to the personal projects, because you can only
work on your side projects, a small amount of time that you, that you have available
and you never know how long that's gonna be, how much time you're gonna have.
So you can set a goal to work on product development this
week and do marketing next week.
But if you don't get enough time to work on the project and reach
the goal that you had for the week product development, then I've, I've
been struggling with that because.
At the end of the week, I'm supposed to, the following week switch over to
Alan: right.
And you're like, but I can't leave this here.
Yeah,
exactly.
Right,
Mario: I'm half I'm in the middle of all this stuff you know, that I'm coding and
you know how it is when if you leave that, then coming back to it, it just takes
forever to restart that thought process.
Right, So,
Alan: Well, again, the context switch is even bigger then just because you've gotta
reload your brain with all this stuff that you knew at that point in time before.
Right.
Mario: Yeah.
so this whole thing about, getting into a cadence of, working back
and forth hasn't really worked out for me, at least not, not yet.
I ha I still haven't figured it out cuz it's a, it's a nice goal.
but I think that might work better once.
That's the only thing you're focusing on.
Like, you know, once you're doing this full time, then
that's, that's your main thing.
So you can divvy it up and, and kind of,
Alan: trying to give any kind of estimate in things right now.
He's just, I don't know, because I can't guarantee, I, I can't, I don't know how
much time I'm gonna have on a thing today
Mario: exactly,
Alan: tomorrow.
And you know, I, family stuff is always there as well.
You, so it's like, you think, okay, I'm gonna spend, you know, Saturday
doing this and then actually we can't because it's a thing and that's fine,
but it, it just means estimates.
It like completely wild.
You've got no idea.
Mario: Yeah.
Alan: it is tough.
Mario: Yeah,
Alan: You know, gotta have a goal
Mario: yeah.
yeah.
So
Alan: So hopefully, yeah, once you can finish this this kind of yeah.
Network stuff, you can at least put that to bed for the moment.
And and again, there's, this's everything else works so well.
I really hope you can get to the stage where, you know, you can start,
you know, Charging people for it.
Mario: yeah.
Alan: cause I think you're gonna be fine getting customer, you know,
like you've got, as I've said before, you've got a, such a clear target here.
You know, there's no ambiguity as to who you can use this app.
Which, you know, I fail with a little bit with mine, you know, it's more
difficult with mine because there isn't a clear single target market.
So yeah, I think once you've, once you open this up, you know, just you
can laser focus on particular people and targets and just go for it.
So excited for you.
just gotta get there.
Mario: Yeah, I know.
I know.
And now I've been, oh, that's that's one thing I wanted to share with you.
I've been reconsidering the whole Paddle thing and I, I may revisit that and
see if I, I go with them, It's just,
Alan: I, I understand where you come from.
Mario: yeah.
It's,
Alan: pro or four Paddle.
You, you mean.
Mario: a, pro Paddle I
Alan: Pro.
Okay.
Mario: Yeah.
A Pro.
Paddle.
Alan: Yeah.
Did you see, they kind of did a bit of a relaunch this week.
Mario: I I, yeah, I heard I haven't, I haven't gone to their site,
but I, I read something about it.
yeah.
Alan: And I think that they're gonna make all our pricing more transparent.
And I think that was one thing which really seemed to put a lot of people
off is just fact that the, this kind of opaque like, well, when you start using
those, you'll find out how much we take.
And it's like, what?
, Mario: yeah,
Alan: so they're gonna be a lot more upfront with everything.
And so I really like this, this just idea of them being.
Taking care of the, the tax and the filing and everything.
And it's just for, for you just said how much stuff you gotta think of.
If there's one thing you can remove, I'll take it.
And if that one thing is tax, I'll definitely take it.
Right.
, it's so stressful enough as it is, but them just taking care of that whole side
of things is makes it definitely me worth it to me again, especially when you know,
I'm not in a, it's not like I'm in The US selling to US customers and that's it.
And you it's no, I've, I'm already in a, at a disadvantage just from
the first sale I make because, don't know where it's gonna be.
I mean, my accountant is already like, I I've had meeting with my business
accountant the other day and trying to explain this concept to him.
He's like, so you have a customer in Japan.
Yes, I do.
So you're collecting sales tax.
Well, No Paddle are.
And he is like, who's Paddle?
Well, they're an Irish company.
and it's like, say what?
So they, they take care of that, but where does the sales sites go?
It goes to them and then they pay it to Japan.
Well, yeah.
so
Mario: yeah.
Alan: it's trust me.
It's okay.
Yeah.
So I mean, that, that's a disadvantage.
Well, because, you know, in terms of, if I register for sales tax,
then things, my company buys, obviously I can claim sales tax back.
But you know, I'm not spending that much money so
Mario: I wish it, it seems like I may be wrong about this, but it, it seems to me
that there aren't that many professionals in that area, that understand the modern
ways of, of doing business online.
Like, you know, I'm talking about, you know, tax professionals, and you know,
lawyers and I mean, it may be lawyers, a little getting a little better, but
there's still a lot of like uncharted territory where you've need professional
advice, but you don't know who to ask because they don't really know, you know,
Alan: absolutely.
I mean, it's, it was a, you know, just when I was setting up the
company here and, you know, the, the first, thing, they, you know,
the list of questions is, you know, where's your revenue coming from?
I'm like from selling software, like, you know, services and you, well,
what's your, you know, customers or what's your, you know, billing stuff.
And it, when you kind of say, I'm not gonna be, you know, billing with
invoices, I'm not gonna have an office I'm gonna be selling primarily to abroad.
And they're kind of just like, what, who, what are you doing?
Who are you?
Mario: yeah, they don't know.
They don't understand.
And it surprises me because there with so much business going on online, you
would think that there would be, you?
know, a lot of demand.
I mean, there is a lot of demand, so there should be more, professionals out
Alan: Yeah.
I mean, I guess it's, it's one of those things where, you know, you kind
of, we, we do live in a, a bit of a bubble, you know, you think every,
every man and his dog is making a web upright and , apparently they're
not, you know, it is still a small number in the grand scheme of things.
But obviously when you live in this world, you kind of, it feels like
everybody is building something everybody's doing better than you
everybody's having a lot, you know, it, it's, it's very difficult to, to get a
true perspective on things sometimes.
And even, even when you know that that's the case, it's
still difficult to actually.
Accept that.
So yeah, I, I understand, but yeah.
So for the, for the most part, accountants say, you know, when you
talk to, you know, look for accountants and they expect you to basically
have an office, be hire Japanese people, see have Japanese customers.
And then, you know, there's all these assumptions and it's like, what, what do
you mean you're not doing any of those.
So it's like,
Mario: yeah.
Alan: how are you a business then?
Well, it's just different.
Mario: yeah, it's not, it's not brick and mortar, you know, it's, it's a different
Alan: they expect, they expect me to be like running a bar or a coffee
shop, you know, that's kind of like the, the, the limit of kind of
understanding of like, you know, what kind of business I could be doing.
It's yeah, it's difficult.
Mario: yeah.
Alan: so, I mean, my accountant, you know, that I've got, I'm happy with him,
you know, he seems to get it eventually.
He just, you need to explain it.
Mario: yeah, it's one, that's one of the reasons why I've been reconsidering
the whole Paddle thing, because you know, if the, like you said, if I can
remove, one thing from the equation that I have to worry about, yeah.
They take a cut.
but, that may be worth the, the
Alan: Yeah.
I mean, E even if, even with Stripe, they're still taking a cut for card
Mario: still,
Alan: stuff.
So, you know, it's, it's just a little bit more of a cut.
And if it means it removes the lack of, anxiety over whether I need to
file something is worth it in my book.
you know, I don't wanna be on the hook for like, oh yeah, you should have filed
this paperwork to, you know, Luxemburg.
And I'm like, well, I didn't know that and now what's gonna happen now.
You know, it it's just that unknown and that stress and uncertainty
of and especially when it comes to tax, you know, it's, that's not
something I ever want to mess with.
Mario: yeah.
And that's what I've been thinking about and, and being
that our businesses are online.
Right.
And
Alan: I mean,
Mario: you can, you potentially have customers all over the world, so, you
know, it becomes even more of an issue
Alan: it always surprises me that, I mean, I know Stripe is making roads in
this area and they have, you know, things that you can add on as extra services
to take care of tax things and stuff, but it really surprises me that it
isn't like ultra high on their, roadmap.
Maybe it is, it's just complicated.
Right?
So it's it, because it feels like you could get into a very
deep, well of pain very easily.
if you're not careful, right.
You know, it's so easy to take payments and then we will, now
you gotta report these payments
Mario: yeah,
Alan: and you've just taken all this money and it been, hopefully you've
taken all this money and then suddenly you have, you've realized that there
are in, you know, 20 different countries and, you know, Five different states.
And, and guess what, that's now your problem.
Mario: yeah.
Alan: so it's, yeah, that, that would concern me.
And it's good that, you know, payments are being made much easier and Stripe
is really, you know, led the way there, but it feels like that its potential
for shooting yourself in the foot.
Right?
Mario: Right, Right
And I think I asked you this before, but if you go with Paddle, you technically,
you don't need a, a Stripe account cuz you're, they're not using that.
Right.
They're they're not
Alan: Mm-hmm
Mario: They're they're doing their own thing
Alan: yes, they do the wrong thing.
I mean, let's say on the, on your credit card receipt, as in your
customer's credit card receipt, it says, you know, Paddle and then
parentheses and your business name.
So it, it does have your name on the receipt, but there the, a seller
of account, I forget what it's the official term is, but yeah, they are
the it's that they're selling it.
Not you basically.
Mario: right.
And so that means you can create plans like payment not plans like subscriptions
Alan: Yep.
Yep.
You, you can create as many different subscription plans you can do.
You could do a plan per you can set different prices per region as well.
So like my monthly price I can set a round number in dollars and a round number in
Yen just because otherwise, you know, it's like, if you're in the us and it
comes out and it's, it's $43 29 cents a month, you're like, what the hell?
you know, it's easy just to say it's 45 and or 40, and, you know,
so you can set a, a number for each region if you want, or just set it
in dollars and let it auto translate to whatever the, the equivalent is.
And then obviously the sales taxes added on top of that and that's just
done automatically stuff like it, yeah, you can set like annual or monthly.
You recurring ones.
One off you, you do everything in there.
So it's good.
Mario: so one of the things that I, that I would like to do that
I've been thinking about for a long time is doing purchasing, parity
Alan: Yeah, yeah.
It'd be nice to do.
Mario: I can never, that.
Alan: purchasing parity.
Mario: Power parity
Alan: parity.
Yes.
Mario: So I've been thinking about, I would love to do that.
That's one of my goals and I don't know if, and that's one of the reasons I wanted
to use Stripe because, my thinking was that I could, do more custom stuff with
it, you know, and, and do stuff like that.
But I, don't know if that's something that I could do with Paddle
Alan: I'd say you've got this option of just being able to set different
currencies to be different prices.
Mario: And that's what I'm, that's what made me think of that, because
if you can set up different prices per region or something like that,
then maybe there's a way to do that.
Alan: Yes.
Mario: I don't know.
Alan: think you can, I, I, yeah, I didn't look at it closely.
But I think there's, there's a way of I say you, because you can set it
with the currency, which is, you know, if you're paying with a card in that
currency, that means that's where you are.
Right.
Mario: Mm-hmm
Alan: If it was just so I, I think that's, that's far, they do, they might do more.
I, I didn't look into that,
Mario: So they support all kinds of currencies around the world.
Alan: Yes.
Yes.
It's a very big list.
which is why I only picked a dollar and Yen because it's like, well, I'm
not gonna sit price for everywhere, but the main ones are fine.
So.
Mario: Huh.
All right.
More to think about
Alan: And so the, the interface to it is very straightforward as well, you
know, in terms of getting web hooks and there's an API as well, but I, I
just rely on Webhooks for most things.
And you know, they have like a, you know, just a good retry think and it's
yeah, it's, it's pretty straightforward.
The, the biggest thing, which through me is just having, so because I
did monthly billing and with three plans and annual billing with three
plans, that means I've got six plans.
Right.
So then you've got, and I'm like, this was a bad idea, you know, in, in hindsight,
maybe I should just kept it to one or two.
And just said, you know, like it's monthly billing and it's this price
and there's two plans or something for, for, to start off with, well,
I mean, you can, but every, an annual subscription is just another.
Price another subscription type.
Right.
It just means that, you know, there's, there's so many more cases to check.
Right.
You know?
And so you, each one of those has a different subscription code type.
So you get a thing that says, oh, I got, you know, type 16.
And you're like, okay, what's that then you like, okay, you've got that.
Which means you, you paid this here.
And it's just so much like logic just to maintain when they, and then of
course you got, you know, if they cancel, they, their cancellation only
starts at the end of that billing cycle.
Right.
So they've stopped paying and you've had the notification, but, and you
won't be them again, but you've gotta provide the service until.
The, the, this other data in the future.
Right?
So the logic, it it's surprising just how many details there are to it.
It sounds like, oh, you just, you know, you can hit up that
hit this API and you get billed.
And then there's all of these little things that you've
gotta take into account.
I mean, but their services is very straightforward.
But that's just a lot to it.
and again, as a first case, I mean, that's why, you know, when you talked
about, you know, billing, metering and things, and it's like, just try
and keep it as simple as you possibly can, at least for the first one,
just because, you know, I, I overdid it and I regret that now, you over
did everything oh, how
Mario: and this, and this is all through and this is all with the API, right?
This is your custom integration with their using their API and web
Alan: I, I just use the JavaScript thing to overlay the payment thing.
So there's basically a JavaScript hook, which you basically just say.
And it pops over the, an overlay when they complete it, they, you
can specify a URL to get pushed to so successful subscription.
They end up at a different URL and you get the web hook, you can do stuff with it.
It's all very, I said, pretty straightforward and the
documentation's pretty good.
There's a sandbox account as well.
So you can, but of us then you've got a sandbox account, but of course, because
it's a completely separate thing, right.
You create sandbox subscriptions, which of course have different ideas as well.
you're like, why do I take account to this?
So then you abstract that in your code.
So you've got like environment variables, setting what the
different place plans are.
And it's just like all of this complexity building on top of each other.
And all I wanna know is if they're paid fourty dollars or not, that's it,
, Mario: yeah, yeah.
Alan: it's surprising how quickly all of this, you know,
just builds upon each other.
Right.
So.
Mario: Yeah.
Yeah, for sure.
All right.
Well, more to think about and, I'll see.
I'll have to revisit that
Alan: that's why, I mean, I think, you know, you talked last time about
having like a, a I forgot what you called it, but basically things
expire your, your storage is for a certain amount of time or something,
Mario: oh yeah, yeah, yeah.
Yeah.
now I can't think of the term
Alan: yeah, I know it's my, my, my mind has gone blank too, but yeah,
I'd, I'd say just, you know, my advice would be, try to minimize the options
in as much as physically possible.
You know, if that includes just having a lower monthly plan and a higher annual
plan or something, because if they're gonna want higher anyway, they're probably
gonna want to pay the long term anyway.
So just the, the less subscription plans you have, the easier
your life is going to be.
So that's my.
Mario: Yeah.
That's true.
Retention period.
Alan: There we go.
That's the one.
Yeah.
Hold on.
Mario: File retention period.
yeah.
Alan: My language ability is dropping off.
nice one.
I hope you can get this stuff finished anyway, cuz I think it'd
be a big relief for you as well.
So, so hopefully next time I'll have a report on how my app went down and
the fact that it's in the store and and I've working on a new landing page.
That's my goal for the next chat.
how's See if I can meet it
Mario: Nice.
Nice.
Well, my, my goal for next time is to already be working on
pricing and billing integration, whether it's Paddle or whatever it
Alan: there is say there is an approval time with Paddle, so you
have to apply and get kind of they have to check your business account
business details and they have to, you know, also see your application.
You do like some screenshots or, you know, a video showing them what it is.
You have gotta explain all of the, you know, what you're
billing for and, and all the rest.
So read their acceptable cases.
I mean, yours is fine, but they will ask questions about it.
So it isn't just a straight approval.
So you'll be fine, but just one it's not immediate, but you can you, you can
send it for a sandbox account in the meantime and use that to, to develop it.
But before you go live, there's a period where you So,
Mario: Yeah.
Yeah.
Well, that's another thing I need to do.
I need to, file, for, establishing my company legally,
Alan: ah, might be an idea.
Mario: cuz I haven't.
done that yet.
And part of the reason was I was waiting for this year to roll around because
in, in California there's a minimum tax that I would have to pay, even if I
Alan: No income.
Right, right.
No revenue.
Yeah.
Still go pay.
Right, right,
Mario: And so if I, if I did it late in the year, last year, then I would've been
on the hook already for, for the taxes.
So
Alan: Yep.
Mario: now that it's beginning of the year, I can do it.
I have a whole, whole year to, you know
Alan: Yep.
You'll be fine.
You'll you'll say I I'm have no doubt that you'll be having customers lining up.
Mario: I hope so.
Alan: well, I mean, you know, I think, you know, the, as I
said, you know who to target you.
If you set a sensible price plan, you're fine.
You you've got no problems with the product.
You know, it's exactly what I think a lot of people want.
So just getting people to know about you is gonna be the, the fun bit
. Mario: Yeah.
Yeah.
That's the challenge just to get the word out, but Yeah.
Well, thank you.
I appreciate that.
And I hope that's the case.
Alan: Time will tell, but I'm sure
Mario: Yeah.
Awesome.
Should we wrap it up here then?
Alan: it.
Mario: All right.
Well, it's nice as always see you in a Couple of weeks
Alan: of weeks and say, I wanna hear all about the next
about your pricing strategy.
Mario: Awesome.
Yeah.
Need to figure that out.
Alan: cheers, man.
Mario: All right.
Take care.
Alan: Cheers.