18: Taking the Elixir and Paddling to revenue
Alan: Hey, we're recording
Mario: Hey, we are.
How's things going, right.
How about yourself?
How are you feeling?
so, yeah, I had the the booster vaccine.
Was it is it yesterday morning?
Yeah, about like 10 o'clock or something.
Mario: knocked you out, huh?
Alan: actually, no, it,
the day before I had it.
So that evening so was
it's Thursday today?
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.
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.
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.
Well, that's good.
, be prepared.
Alan: so yeah.
So you've been up to, you've been busy.
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.
Alan: I mean, in theory
I could take the day off.
It just means I don't get paid for it.
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.
Mario: Must be nice.
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?
do you do Rails for your clients
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
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.
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.
Alan: you know, there's, there's,
there's, you can never fail really.
It's there's there's everything
you ever need, it will do.
So it was just a, a very sensible decision
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.
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.
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.
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.
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.
Alan: and, and Vue for front stuff.
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.
Mario: It it's good I liked it.
But I, I still prefer Vue . View
is so much more simplified.
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.
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
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.
Vue is, is much more like lean
I prefer view and I'm used to it.
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?
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.
I mean, the is very Vue-esq
but it just even removes any
kind of baggage whatsoever.
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.
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.
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.
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 thing that does basically all the ding
between, you know, and updating the DOM
from the server responses, it now actually
from your within that code, right?
code within your Phoenix event.
So you say, okay, if this event is
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.
So it's kind of interesting
how this is evolving.
We're not done yet.
We haven't finished with this
whole web architecture thing.
Mario: It's always evolving.
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.
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
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.
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.
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
So I'm gonna be releasing
those updates pretty soon
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.
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
Mario: version two came and came and went
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.
Alan: bet that was fun.
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.
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.
Mario: So it's weird cuz.
It, when I save my changes, it builds,
you know, it, it looks like it's building,
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.
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.
Well, I had a weird thing with one
of my, the, the, the host I'm using
for DotPlan is called Gigalixir
Alan: it's it, it's very cool.
It's a, it's like Heroku for Elixir.
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.
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.
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.
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.
I, I know I come across as
questions and, and things like
that, where that nothing, you know,
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.
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.
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.
Once it's set
Mario: set and forget it for a long time.
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.
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?
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.
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.
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.
Alan: so it's really
Mario: It's yeah.
It's it's come a long way for sure.
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.
Alan: never again.
Mario: no way
Alan: Kids dunno how good they've got it.
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.
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,
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.
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.
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.
Mario: I see.
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.
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.
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.
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.
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.
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
Mario: and just deleting a bunch
of code that, well, you know,
I can do it this other way.
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.
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.
I tend to do that too.
Alan: I'd rather be explicit
in, I'm doing this here.
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.
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
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.
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.
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,
So yeah, I rattled through those and
yeah, it's just really nice for that.
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.
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.
Alan: Command F.
If they really need to find something.
Alan: trying to stop myself
from building anything else
Mario: Yeah, right.
You don't need more projects
Alan: no, I really don't need
more sleep, more projects.
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.
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.
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
And you're like, but I
can't leave this here.
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.
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.
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
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.
Alan: it is tough.
Alan: You know, gotta have a goal
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.
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.
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.
Alan: pro or four Paddle.
You, you mean.
Mario: a, pro Paddle I
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.
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?
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.
, 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.
Alan: it's trust me.
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,
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
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.
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,
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.
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
I mean, E even if, even with Stripe,
they're still taking a cut for card
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.
And that's what I've been
thinking about and, and being
that our businesses are online.
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.
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
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.
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.
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.
They're they're not
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.
And so that means you can create plans
like payment not plans like subscriptions
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
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.
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.
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.
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.
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.
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.
It just means that, you know, there's,
there's so many more cases to check.
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.
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.
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
thing to overlay the payment thing.
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.
Yeah, for sure.
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.
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.
Alan: There we go.
That's the one.
Mario: File retention period.
Alan: My language ability is dropping off.
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
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,
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.
Still go pay.
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.
Mario: now that it's beginning
of the year, I can do it.
I have a whole, whole year to, you know
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
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
Should we wrap it up here then?
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.
Need to figure that out.
Alan: cheers, man.
Mario: All right.