18: Taking the Elixir and Paddling to revenue

Alan: Hey, we're recording

Mario: Hey, we are.

All right.

It's working.

Alan: Yeah.

How's things going, right.

Mario: 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.


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.


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.


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.

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.


Mario: yeah,

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.

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.


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.


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.


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.


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.

Mario: Yeah.

Alan: and, and Vue for front stuff.


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.


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.


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.

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.


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.


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

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.


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

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.


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.


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.


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.


Mario: yeah.


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.


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

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.


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.


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.


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.


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.


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.


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.


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.


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.



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.


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.

Mario: no,

Alan: never again.

Mario: no way

Alan: Kids dunno how good they've got it.

Mario: 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.


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.


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.


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.


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.

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.



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.



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.


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.


Mario: Yeah.


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

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.


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,

Mario: Yeah.



Alan: Yeah.

So yeah, I rattled through those and
yeah, it's just really nice for that.

Quite impressed.


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.


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.

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.


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.


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.




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.


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.



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.


Alan: pro or four Paddle.

You, you mean.

Mario: a, pro Paddle I

Alan: Pro.


Mario: Yeah.

A Pro.


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.


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.


, 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.


Mario: yeah.

Alan: it's trust me.

It's okay.


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.



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

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.


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

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.


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.


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.


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.


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.


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.


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.


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.


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

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.



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.


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.



Hold on.

Mario: File retention period.


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.


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.


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.


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.


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.


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.


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.


Need to figure that out.

Alan: cheers, man.

Mario: All right.

Take care.

Alan: Cheers.

18: Taking the Elixir and Paddling to revenue
Broadcast by