18: Taking the Elixir and Paddling to revenue - podcast episode cover

18: Taking the Elixir and Paddling to revenue

May 18, 202253 minEp. 18
--:--
--:--
Download Metacast podcast app
Listen to this episode in Metacast mobile app
Don't just listen to podcasts. Learn from them with transcripts, summaries, and chapters for every episode. Skim, search, and bookmark insights. Learn more

Episode description

Recorded on February 23, 2022.

Alan got the booster covid vaccine. React is good but more verbose than Vue. Playing around with Alpine.js. Mario’s continued working on refining how Fusioncast.fm handles some edge cases. Upgrading to TailwindCSS 3. Dealing with challenges building with Elixir. Alan created a React Native wrapper app for DotPlan.io, plus refactoring and cleaning things up. Dealing with multiple projects and context switching. Mario is considering using Paddle for billing management. Quick plans and goals for immediate future.

Transcript

Alan

Hey, we're recording

Mario

Hey, we are. All right. It's working.

Alan

Yeah. How's things going, right.

Mario

Good. good. How about yourself? How are you feeling? Doing better?

Alan

Yeah. so, yeah, I had the the booster vaccine. Was it is it yesterday morning? Yeah, about like 10 o'clock or something. So it,

Mario

knocked you out, huh?

Alan

actually, no, it, the day before I had it. Yeah. So that evening so was it's Thursday today? Yeah. Tuesday morning I had it, so that evening I was kind of Dose-y like sleepy early and then yesterday I just like had the temperature and yeah, just so.

Mario

you, you, you crashed

Alan

Pretty much. Yeah, I was, I felt like I was operating like 50% all day. It was just like, you know, I was doing stuff, but I'm like, I'm just not really all there. So , Mario: Yeah. it's fine. So, so, you know, it's better than the alternative, isn't it? It could be worse.

Mario

Oh, yeah. Yeah, for sure. Yeah. I haven't taken the, the booster shot yet. Double vaccinated, but not the, not the booster.

Alan

Yeah, the, the thing, cuz Japan's a little bit they're a little bit late started. I mean they've only just really started doing their boosters now, but it seems really low take up compared to the, the first vaccine, you know, the, the initial two, you know, is very high, like 70 something percent of adults have had it, but so far the boosters only like 10, 15% or something, just people that just aren't really as lining up for it. So either way

Mario

Yeah, yeah. Yeah. Well, that's good. That's good. Better to, , be prepared.

Alan

so yeah. So you've been up to, you've been busy.

Mario

Yeah. Oh yeah. the fund never ends

Alan

It really does. It's like people say, oh, you've been busy. I'm like, I'm never not busy.

Mario

I know, right.

Alan

A little bit of a break might be nice sometimes, but yesterday it is weird cuz I, cuz I work primarily for us companies. My, my main client is us based. So yesterday here was a national holiday. But kind of doesn't apply. Right.

Mario

yeah,

Alan

I mean, in theory I could take the day off. It just means I don't get paid for it. Right. So it's but you know, my son's got homework to do and he was playing online with his friends and stuff. So it's like, oh, just normal days. Of course that means everyone, you know, that my friends are all like yeah. You know, halfway, you know midweek break and all the rest I'm like, yeah. sounds nice.

Mario

Must be nice.

Alan

Yeah. Well unfortunately, because this startup is kind of You know, it, it's very small. It's kind of, you know, all hands on deck doing everything. The we're not really even set up for, I guess, us holidays either. So they kind of just pass by as well. So I should make more of an effort to actually just like, you know, if, if something's a good excuse for break, I should take it. But you know,

Mario

yeah, yeah.

Alan

it's great. You have a vacation, so you can do some, get some work done, right?

Mario

yeah. do you do Rails for your clients

Alan

yeah. Yeah. The, my client job is, is all rail stuff. I mean, I, I kind of chose the stack for them. And so I'm doing all of their backend development. And it's interesting cuz I do, you know, my current framework of choice is Elix and Phoenix

Mario

Yeah.

Alan

and that just really, you know, that's really clicked for me. It's just so. It's really cool, especially for anything that's interactive, you know like web based interactive. And it is just really clicked for me. I love it. But obviously Rails have been doing since forever. Literally like, you know, the weekend the very first version of Rails came out, was made public. I played with it that weekend and I've pretty much been doing it. So, so I've done a lot of Rails.

And it's funny because you know, it was always the The exception, you know, the big frameworks at the time were all Java based. You know, PHP kind of then has become the, I guess the, the default startupy kind of stack, especially with smaller younger folks Rails has now become like the accepted old school framework, I guess. So, I mean, the, the nice thing about choosing it over Phoenix and LiveView is just that so many more people know it.

So, you know, I'm not gonna be the only developer on this client project. And at some point, you know, I'll probably end up having to either hand it overall, you know, the, the team will increase and, you know, hiring a couple of even if at first it's, you know, extra freelancers finding Rails, freelancers is gonna be a whole lot easier than finding. Phoenix freelancers. Right? So it was a very conscious decision for like this isn't a choice for me, it's a choice for them.

So, you know what, what's the best thing for them. And you know, you cannot go wrong with Rails. It's,

Mario

Yeah.

Alan

you know, there's, there's, there's, you can never fail really. Yeah, exactly. It's there's there's everything you ever need, it will do. So it was just a, a very sensible decision

Mario

Yeah,

Alan

of course that means that I'm living in Phoenix and Rails world at all times. And you know, it it's, I, it's not so confusing cuz sometimes you just miss something outta the other language. Right. You're like, I could just do this if I could, but it's not here. and vice versa as well. You know, there there's certain things especially within. Phoenix. So Ecto is the it's not an ORM, but it's the way you talk to a database, right.

In Phoenix world and Rails, you know, I, I assume it's got, you know, the similarities with Laravel and stuff in terms of, you know, accessing the databases. It's insanely easy. I mean, it's, it's so easy that you, you don't even think about it. Right. Whereas Ecto is very much more, it's slightly more, it's closer to SQL. So you have to be a lot more savvy with your database technology whereas Rails, you know, you could probably get by with, with knowing no SQL whatsoever, right.

With Rails and with active record. So occasionally sometimes you just like, especially if it's just something quick and hacky, you're like, I just need to get that there. And Ecto you're like, okay, I've gotta figure out actually how that works at the database. whereas Rails, you just like, just. Munge it all together and it'll be fine and it kind of works and it's slow, but I didn't need it to be anything more. Right.

So yeah, you kinda get used to Rails just providing that level of convenience, active record, providing that level of convenience. So occasionally I'll miss that, but it's like, well, it's for the best I'm doing it properly now. so you're, you're Laravel right.

Mario

Yeah.

Alan

and, and Vue for front stuff. Right,

Mario

Yeah. Yeah, for my own stuff, it's always Laravel and, and Vue for work we're doing Laravel also, but we're not using Vue, we're using React, which I didn't really have much experience with React or pretty much any experience with React before this job. So I've been learning a little bit.

Alan

Cool.

Mario

It it's good I liked it. But I, I still prefer Vue . View is so much more simplified. It's it? You know, it's to the point and, and. React has a little more stuff that you have to wire together and, you know, get it... Vue is like, it's so much more simpler.

Alan

Yeah. And so my, my only real experience with React is I've I built a react native for, for a client a few years back. And so it's kind of the same, right? It's just got a little bit more structure with regards to, you know, fitting in mobile views and stuff. And actually last week I did a, a quick react native app as well for this for DotPlan. I'll mention in a minute. And so it's it. Yeah, it's very. verbose it feels

Mario

yeah. Yeah,

Alan

everything has got boiler plate upon boiler plate. And it just feels like, seriously, I just wanna stick that on the screen. feels very yeah. Top heavy. Whereas yeah. Vue is, is much more like lean

Mario

leaner. Yeah, yeah. I prefer view and I'm used to it. I mean. part of it is that I'm, I'm used to it and, and I mean, I'm still learning some areas, but I've worked with it for a while and I'm more used to it and react, the fact that I I'm new to it. It's, already with the, limited experience that I've had with it at, work. I can tell that it's a little more verbose and,

Alan

a little bit more baggage, right?

Mario

Yeah, yeah,

Alan

so have you seen the Alpine JS?

Mario

Yeah. So I've been looking into it, recently. we're also using Alpine at work. and I but I, I haven't Really? had I guess the need to, to work on it that much, except for actually this past week, did a little bit, just little something with Alpine, cuz it's already there and I just, you know, X data

Alan

Right, right. I mean, that's the, it's, it's kind of, Vue, but even leaner still. Right. I mean, the is very Vue-esq but it just even removes any kind of baggage whatsoever. Right. So, so I used it in DotPlan just because I needed stuff, which you know, things like hiding stuff and, you know, dropdowns and, you know, modals and things like that, that LiveView for all of it's amazing stuff. It still requires a trip to the server. Right.

So, you know, the, the idea being that all of your interactions are basically on the server. So you just talk web sockets for every thing and the server handles all of the state. Which is fine for anything that, you know, includes a form or a box or you're getting data or anything that requires data that's perfect. Right. Because your front end would probably still have to talk to the server anyway, to get something.

So, you know, there's no big difference, but stuff like just displaying a dropdown menu, you don't wanna do that. I mean, you could, but you wouldn't want to.

Mario

Yeah.

Alan

So the, the kind of preferred, or, you know, suggested method is to use Alpine, which was, I mean, it's perfect for that, right. Because it's such a tiny library. And then just being able to sprinkle things that, you know, things that need that imediacy just all over your code it's worked out well. But interesting thing is with the latest version of LiveView, there's now a there's an extension to the the, the LiveView, JavaScript library.

The thing that does basically all the ding between, you know, and updating the DOM from the server responses, it now actually you can call JavaScript events directly from your within that code, right? So you can actually write JavaScript code within your Phoenix event. So you say, okay, if this event is clicked, then do this JavaScript event and then send this to the server and you can kind of chain things up and do those events in your Relic code anyway, without even needing Alpine.

So , I've been kind of even removing Alpine from the stack bit by bit was like, oh, when I'm working on something, I'll just be like, I can actually get rid of that too. So it it's, but at the same time, it's, it's just handy when it's there. Right. So it's kind of interesting how this is evolving. it's funny. We're not done yet. We haven't finished with this whole web architecture thing.

Mario

It's always evolving. Yeah. I need to get more into it. I've been learning a little bit here and there,

Alan

when I first started using it, it was even, you know, it did so little, you know, it was pretty much, you know, there's a data thing you're buy into it and things and that's it. Whereas now, even that is kind of, it there's a whole lot more than it used to. And it, you could go a really long way with it. Right. It's kind of interesting. how how's product and development have you had a chance to do any

Mario

Well a little bit here and there. I haven't had much, chance to work on it recently, but, I've done some work on it. mainly in the area of improving the way it handles network, interruptions. And I think we talked about that, before, or a little bit some of the feedback that I received recently with, people using the product. Has been in that area because you know, it directly affects the recording, right.

Alan

This is, this is the part of Europe, which kind of stresses me out the most if I was built in it, just cuz there's so it's so I mean, networks are just unreliable at the best of times. And the fact that, you know, you've got different things, been uploaded and events requiring things and yeah, it's that that's the bit which would stress me out. So I understand the the wanting to get that, you know, rock

Mario

Yeah. And, and it's, you know, the devil is in the details as they say, right. It's, it's just all these different things. just as an example, while everything is working just fine, you can see the indicators, you know, saying recording and let's say one participant has problems with their network and they get disconnected. Well, if there's no network, then the signal that drives the status indicator may not come across. Right.

So, the host or the, you know, the other people, in the session, may still see that it says re it's recording because it never got a chance to get updated. right. Even though the person is not there anymore, but maybe the, the image still there, because it, didn't get a chance to clear. that's the problem when the network connection drops suddenly, then there's there's

Alan

You, you don't get a, this, the network has gone event, right? you just, it doesn't have a chance to tell you.

Mario

is exactly. It's just, it's an error. and those things, those little details and things that are important in the application are not able to get updated. so then now the user doesn't know, is it still recording? It says it's recording, but you know, what do I do? And blah, blah, blah. So it's, it's a little tricky to get that, to work in a way that it, it satisfies everything. So, and so that's what I've been working on and yeah. So I'm gonna be releasing those updates pretty soon

Alan

Excellent.

Mario

and, hopefully that's it in that area. If, all goes well with that, that's pretty much the last thing that's been keeping me from pricing and all that so that I can launch. So

Alan

Let's hope we can get to the next next step.

Mario

next stage. Yeah, for sure. Aside from that I did have to I didn't have to, but I upgraded to tailwind CSS three because I was still running on, believe it or not, I was still running on 1.9

Alan

right. yeah,

Mario

version two came and came and went

Alan

away. You never get a chance to move to.

Mario

and now it's version three and I'm like, ah, and I, I didn't wanna fall behind too much

Alan

The, the, the one to two, there was a few things which I had to update, right. Forms especially changed a bit. And they co to be honest, my client thinks still on 1.9 and I really I've just been putting it off, just cuz so much other stuff building up that I'm like, eh

Mario

yeah, yeah. You don't wanna,

Alan

no, well, especially since two to three, I mean that API, the, the, the standard API seems pretty, you know, unchanging now. I mean, there's extensions coming, but it's, I don't think they're gonna do a drastic change of any existing stuff. Whereas say 1.9 to two was like, oh, your forms are broken.

Mario

Yeah. Yeah,

Alan

bet that was fun.

Mario

yeah,

Alan

but yeah, I mean, it's cool now they, especially with three and the, the JIT and just having a command line thing and it is just such a smoother experience. It's yeah, I I'm liking the way it's going. Adam's

Mario

yeah. Although,

Alan

is really quite impressive.

Mario

yeah, it's really, really nice. It's really neat. Although I'm having a problem with that a little bit, and I still haven't been able to figure out, but I suspect it has to do with the way my my process is set up where if I make any changes, it doesn't reflect the changes unless

Alan

I had

Mario

I save the config file the tailwind config file.

Alan

that. sounds familiar.

Mario

So it's weird cuz. It, when I save my changes, it builds, you know, it, it looks like it's building,

Alan

mm-hmm

Mario

And it completes successfully, but the changes are not reflected. And so I have to go, even if I didn't make any changes to the config file, the tailwind config file, I have to go into it, save it. And then it builds again. And then I see the changes.

Alan

I've had that. I mean, it's fine most of the time, cuz you're not adding classes that you haven't used elsewhere for the most of the time you, you know, you're tweaking spacing or tech sizes and things and that's it doesn't, you don't notice it and then you'll add a different width thing or something. You're like, what the hell? Oh yeah, I've gotta go. And just poke that. And I, I don't know what I did, but I resolved it I've had that problem before in the past.

Mario

Okay. Yeah. I, think it's hopefully it's as easy as that. I, think it's a leftover from my setup for the build process, cuz I, I haven't changed that.

Alan

I, I, when I started a new project recently, I didn't have the issue when from the beginning. So I'm like, okay. I inherited something from, because you know, it's an older project and it's gone from like one up, you know, early to, to now. Yeah. Something. Well, I had a weird thing with one of my, the, the, the host I'm using for DotPlan is called Gigalixir

Mario

Okay.

Alan

it's it, it's very cool. It's a, it's like Heroku for Elixir. Pretty much. This is quite a small company running it and it's really good. I've been really happy with it, but the build process is there's like three main ways of getting a binary that you can deploy in Elixir. And there's no, canonical, this is the way they all have pros and cons and depending on what you want to to do with it, or, you know, whether you want to do this or that, they're all very valid.

So, you know, you kind of, you pick one and you go with it. But the build process for it. Yeah. It's it, it runs on a. Server, not your machine. I think , I I've, I do too many, too many working on too many projects. I forget and so when it was building it, it was doing it effectively at the wrong order, it was kind of building the CSS and then doing something else and effectively deleting it. So when it deployed gets deployed, there was no CSS file there.

It was, it took me a whole evening to work out the, and it was literally just changing the order of two things in my build process.

Mario

Huh.

Alan

I did my life at that time. I'm like, oh yeah, that, that fixes it. So, it was one of those, you know, like there's only one person in the world who seemed to be having the same problem on the Gigalixir, like slack channel And they were like, yeah, I'm kinda like someone else has gotta seen this. This is a. Pretty straightforward thing, sticking tailwind on a, you know, Elixir build. That's going deployed on Gigalixir and they had, you know, they stated the same problem.

I'm like, ah, you, my friend, tell me what the hell to do. And of course it was just like silence. They asked the question and they disappeared. And

Mario

Yeah,

Alan

how so? I, I, when I figured out I went and wrote a long thread there and just explain that, I hope they saw it just because I hate that

Mario

Yeah, if not somebody else might run into that problem later on and, and that'll be helpful. Yeah. I, I know I come across as questions and, and things like that, where that nothing, you know,

Alan

Nothing. It's just, there's the question you're like that, that issue. How do you tell me what you saw? I think there's

Mario

no answer.

Alan

XKCD says something along those lines as well. Right.

Mario

yeah.

Alan

but the thing, the thing is as well, especially with build processes, you spend what, what we should do is really document them really well. Right. But we never do, because once you've got them working, you're like, oh, it's done, that's fine now. And you forget about it and you move on. And then in six months time when you're like, something's changed, you're like, what did I know? I don't know what I knew at that time.

Mario

yeah, yeah. Cuz you don't work with that. All that often. It's just

Alan

Yeah. Yeah. Once it's set

Mario

set and forget it for a long time.

Alan

Exactly. So it's interesting. I've been using fly.io, which is new. I don't know how new it is, but it's kind of an alternative to again, Heroku and the, the whole platform as a service crowd. and it's, it's really interesting because it's they've just hired the creator of Phoenix which is kind of interesting, cuz it's a really good fit. I mean, it's literally a perfect fit for how LiveView works. Right?

So as I said, LiveView, every click, everything you do to interact with the page effectively is talks to via a web socket to server and you get a response, which is fine, you know, for most of the time because your latency is, you know, what, you know, ites really quick. And what's your biggest downtime, you know? Sorry, downtime. What's your biggest round trip is probably a hundred, 150 milliseconds.

So I'm like host in stuff in, Oregon and you know, in Japan there's still, I, I can't get it less than like 180 milliseconds, but it's still enough that you don't notice it. You anything that below 200 milliseconds feels quick enough anyway. Right? But what they've done to make that even feel even faster is you can fire up these, it basically works on these micro VMs that you can fire up and in any given region.

So you can say, I want you know, it deployed in Tokyo and Oregon and London and, you know Frankfurt or something. And so you're super close to a server that can respond to LiveView incredibly quickly, but then obviously you've still got database, right. You know, your database might still be in Oregon, even though your server is in Tokyo. But you can basically fire up these database read only, replicas.

And so you can say, okay, I want my rights to go to Oregon, but I want, I reads to go to, to Tokyo which means you've got this super fast distributed thing. And it sounds complicated, but the way it's set up and the way LiveView works, it's literally just it's. Oh, start a new one. I want some here and some there, could you do it please? And it just works and it's, it's, like's this stuff, which, you know, it sounds insanely complicated to get set up.

But it's like, no, it's, it's like three commands. It's no big deal.

Mario

Yeah. Yeah. Wow.

Alan

Technology has come a long way here. So, you know, I remember like one, my first, you know, app that I ever had, I had to put an actual physical box that I owned in a data center in London and maintain it. So now I'm like, I just spin these up all over the world. It's fine.

Mario

yeah. yeah,

Alan

so it's really

Mario

It's yeah. It's it's come a long way for sure. Yeah. I remember those days. where, when you had you, you had a server, you, you, you named it, you had a name, had a label

Alan

That's also had the downtime in the middle of that when I had to drive out to London, Docklands and replace a hard drive and like try to, you know, resync raid array in the middle of the night and I'm like, I'm never gonna do this again.

Mario

no,

Alan

never again.

Mario

no way

Alan

Kids dunno how good they've got it.

Mario

yeah. Yeah.

Alan

so, so yeah, DotPlan's been moving along. So I think I mentioned this, my, you know, my client that I'm kind of handholding and just being really helpful, getting things like just being lots of feedback, just being really helpful. So they desperately want to use it mobile first just because of their environment. They they go out on site a lot. They, they probably spend, you know, 20% of the time actually at a desk.

The rest is going out on site to do things, but they still want to maintain this kind of, I mean, that's one of the reasons they like this is because it can maintain the communication or at least the, the, the cadence of knowing what people are doing, even if they're not in the office the whole time. So they really like this idea. But they're like, We're not particularly happy with you just using Chrome. They they've got some older and Android devices that they have as work phones.

And they're like that it just people using it just through a web browser. They're not particularly happy with. I mean, not that it doesn't work well through a web browser, it's just, it feels like I they're like, I wanna button. I'm like, well, you can install it as a PWA. And they're like, how do I explain that?

And I'm like, so I'm like, okay, I'll make just a, literally a, a rapper around the website with, you know, a little bit of Chrome to kind of make it feel a little bit more solid and some network checking stuff. So if it goes down, you know, it gives a, a, a message, you know, so saying that you need a network connection, just some kind of Stuff to make it feel more cohesive as an app, even though the app is basically a web view. So I was like, okay, I can do that.

That's that's doable. So I, I built this react native wrapper I, I can't call it an app with a straight face. So I built this wrapper and I've just, I pushed it out to them. Couple of days ago as a Google, as an Android internal test app. So I've never I'm I know nothing about Android at all. I've, haven't touched at all. I, so this is a kind of, a bit of a learning curve.

Just even as far as the play store works you know, just, you know, getting a developer account and what's required to publish at the play store and, and all this. So that's been been a learning curve and so far so good. I've now just gotta get it. The internal test seems to be going okay. They could get installed. They're using it. It seems. Okay. So now I've just gotta get it through to the actual play store now itself. And because it's a react native app, it works the same on iPhone.

I, no apple are a bit funnier about rapper applications, but I think if it provides a, you know, some benefit, then it should be okay. We will see I'm gonna try and submit it anyway. See what happens. I've been through the apple submission process a few times, so I know what to expect there. and that well, expect the unexpected repeat process, right?

Mario

Yeah, I, don't have a lot of, experience with mobile apps. I back in, I don't know, a few years ago I tried building something just to learn and get a little bit of exposure to that. just using one of was, I think it was phone gap or one of those, you know, using JavaScript and, and CSS, but I think what I was trying to build was too ambitious for being first time trying to build something like that. So I, I learned a little bit, but I got into a lot of. Trouble where I didn't know what to do.

And eventually I ended up abandoning the project, but, how do you get the app onto their devices without going through the app store or Google play or

Alan

it depends on so apple and, Google are different in this regard, but the as far as Android goes, You can create there's different levels of tests. There's an internal test, there's a public test. There's a closed test and then there's like place, door kind of thing. So I've just gone with the internal test. You can just put in it says what's your email accounts. And so, okay. And then they gave me all their emails and then I discovered they're not their Android, not their Google account emails.

Right. So it's like, go back and sorry. Can you tell me what the address is actually on your phone? Not the email address you use. So again, I never having done it. I just didn't even think about that. It's like, oh, you just send them a link right now. It's gotta be, you've gotta authorize their Google account to be able to access this internal test application to install it and stuff. whereas apple, the it's.

You've either got test flight, which is kind of a managed system, or you can get there U U D I D numbers, which is effectively serial number for the device. And you can register those into your build and it works on those devices and it's, it's like side loading process for that. So the Android process seems to work well when you get the right email addresses to give them to it. So,

Mario

yeah,

Alan

cause I wrote

Mario

Have to be a, a Gmail

Alan

it's not Gmail. I mean, because if it's a Google suite workspace, I can't remember what Google's stuff is called these days. As long as you are using it for Google accounts then it's a work account thing. So yet that's that works. Or it can just be whatever you logging to the phone with it, to, to download stuff on the place store. So as long as you've got those emails, you can just put them in and make those authorized for the, internal test. So.

Mario

I see. Oh,

Alan

And then I can just push to that. It installs and that's it. So it's actually quite a smooth process when you realize, understand what you're doing, what again, being the first time , I'm like, I dunno what I'm doing.

Mario

yeah,

Alan

Well, yeah, it's yeah, I, I wrote some objectives and stuff back in the day for iPhone and things. So a lot more, well even that's changed a lot since I've done that. So I'm sure I'll have to go through a whole new learning process for that as well.

Mario

yeah,

Alan

but it was interesting just by doing this, it kind of forced me to go back and re-look at all of the pages, how they work on a mobile because they, everything worked, but it was not necessarily as good as I'd like it at least I found out that it wasn't as good as I'd like it. So it was good opportunity to like, just tighten up spacing, font sizes you know, this got like a sticky banner at the top now with the menu. So it doesn't, you know, it feels less like a webpage, more like an app.

And so just going through just tightening everything up as far as some to works better in the, the mobile version.

Mario

In mobile view.

Alan

Right. So I'm really happy how that's turned out. It feels like a lot, lot better. It was just a good excuse to go through and reassess the whole design base. Like, so

Mario

yeah. Nice. Nice.

Alan

Also take out a lot of duplicated tailwind classes, which

Mario

oh yeah.

Alan

because I was looking at I'm like, oh, actually I don't need that anymore. And also ended up refactoring a bunch of views again, because it's like, hold on. This is the same view just with different data. So it was a good opportunity to, to just tidy things up a let do a bit of refactor and things without breaking anything and that that's stuff, which you never make time for really, you're always pushing ahead with new things. Whereas this was a have to. You know, look at the same thing.

Re-look at the same thing you've already written to just tighten it up. So it was a good excuse to do that. So I'm happy with how it went. It's we'll we'll see if I get, get the thing on the store. It's yeah, that's the next thing just waiting for Google to, to give the, go ahead for that.

Mario

Nice. Nice. Yeah. I actually had to do a little bit of that. myself working on, on this, you know, network related stuff. came across a bunch of code that could be refactored and improved. And ended up removing a lot of code, which is always great, you know, just

Alan

the best feeling

Mario

seeing all the, all these opportunities to make it more compact

Alan

yep.

Mario

and just deleting a bunch of code that, well, you know, I can do it this other way. It's better. Or, you know, unified certain things where I had, you know,

Alan

How's the best feeling. It really is.

Mario

a little bit of duplication because of the way that I approach It first of course duplication is, the one thing you you're trying to minimize or eliminate as

Alan

I mean, I, I'm kind of very liberal with the duplication when I'm writing stuff. I mean, I kind of try to leave it for this revisiting thing. You know, what some of the things well, I guess that's one of the things I've learned over time is that, yeah. You're never gonna get your abstraction right. In the first place. Right. Unless you, you know, sit down for, you know, we and design everything, which, I mean, even then you're probably gonna forget something it's never gonna be right.

You're gonna end up changing something. So I'm very liberal with just cut and pasting code and, you know, tweaking it to work. And then when everything is settled, I'll go back and reassess it and kind of tidy up. So this was yeah. An opportunity to do that. Right.

Mario

Yeah. Yeah. I tend to do that too.

Alan

I'd rather be explicit in, I'm doing this here. Now. It might be the same as I'm doing over there, but I'm doing this here now, and I know how it's working and I know exactly what I'm working on as opposed to some, you know, multiple abstraction abstractions somewhere else that just yeah. It's

Mario

Oh, I wanted to ask you, what kind of reception did you have, with the wrapper, that you created once you

Alan

So they're using it now. We I'm waiting to hear back, so I literally, they, they installed it yesterday. So I'm waiting to hear no complaints so far, so

Mario

Okay.

Alan

we shall see. So, oh, so the other thing, get it. I think I mentioned last time I was looking at this Thing for making like documentation called Tango. So I, I, I spent an hour with that and rattled out like 20 help pages. So, Yeah, I'm telling you, it's pretty nice for just getting something going and because you can, you know, you can effectively link to any help page. So I'm just making like a notion page of how to do things. I can order them.

I can make that public, like link it to it from my site. And then just use that as like a, you know, this is how to do this and just linking to them. I mean, most of them are like three steps. Right. You know, go to this page, click on this and accept that. But, so the amount of times that we're getting requests for like, how do I do this? Well, it's easy, but you know, . Mario: Yeah. Yeah. Nice. Yeah. So yeah, I rattled through those and yeah, it's just really nice for that. Quite impressed.

So

Mario

Is that connected to any kind of, like a CRM or help desk

Alan

N it's not I mean, I could do, but this is purely I say it's a, like a Chrome plugin that you just browse to the page, you do the thing click done, and then it'll set them out. You can delete them, you can replace images, you can just add description. And then just say, it's done, you get a link, you can share it to it. So it's actually it's one of those things that you're like, it's a perfect kind of indie project. I don't know who's behind it.

I don't know how big the team is or anything, but it, it could be an indie project just because it's it's it does one thing and it does it quite well. So it's, yeah, I kind, kind of impressed with that.

Mario

Cool.

Alan

so yeah, I, I could link it to say some kind of help desk thing, but for the moment I'm like the simplest thing, just make those make a page with them all listed and, you know, they can use their eyes.

Mario

Yeah.

Alan

Command F. If they really need to find something.

Mario

nice. Cool.

Alan

trying to stop myself from building anything else

Mario

Yeah, right. yeah. You don't need more projects

Alan

no, I really don't need more sleep, more projects.

Mario

right. how are your sign ups going?

Alan

I need to, that's my next thing. So once this is get this app done, they're out again, because this client's kind of waiting on this. It's, it's back to the, trying to, trying to get people on board. So I did a, a few weeks ago I did some tweaks to the landing page and I kind of got a better idea of now, of how I want to redesign it. So

Mario

Okay.

Alan

that's, a thing for when this is done, just

Mario

Yeah, yeah,

Alan

otherwise it's too much to try and do it once, right?

Mario

yeah, yeah,

Alan

As you said, try, try and get into, as I said, you know, you said a while back, you know, you'd like to get into a kind of cadence of being able to do development and then marketing development marketing. It's a, it's a nice goal. Something I'd like to try and do, just because then at least You can, I mean, this, this kind of context switching is just this killer. I mean, I I'm sure you find it too, just switching between work projects and personal projects.

And, you know, even when your personal project is actually like 10 projects in one, right. there's not just one thing. There's the, there's the whole, you know, the technicalities of how it's working. And then there's, you know, the marketing side of it there's even the support side, things like that. Being able to just pick one and at least your only contact switching between work you know, paid work and this project then, you know, one thing for at least in a week or two. And,

Mario

yeah.

Alan

the more I thought about it at the moment, like that would be a, an ideal really just cuz otherwise it's, it really does weigh you out just this constant. Like what do I need to think about today? I can't do it

Mario

Yeah, yeah, exactly. It's, it's not easy. it's harder too, when it comes to the personal projects, because you can only work on your side projects, a small amount of time that you, that you have available and you never know how long that's gonna be, how much time you're gonna have. So you can set a goal to work on product development this week and do marketing next week.

But if you don't get enough time to work on the project and reach the goal that you had for the week product development, then I've, I've been struggling with that because. At the end of the week, I'm supposed to, the following week switch over to

Alan

right. And you're like, but I can't leave this here. Yeah, exactly. Right,

Mario

I'm half I'm in the middle of all this stuff you know, that I'm coding and you know how it is when if you leave that, then coming back to it, it just takes forever to restart that thought process. Right, So,

Alan

Well, again, the context switch is even bigger then just because you've gotta reload your brain with all this stuff that you knew at that point in time before. Right.

Mario

Yeah. so this whole thing about, getting into a cadence of, working back and forth hasn't really worked out for me, at least not, not yet. I ha I still haven't figured it out cuz it's a, it's a nice goal. but I think that might work better once. That's the only thing you're focusing on. Like, you know, once you're doing this full time, then that's, that's your main thing. So you can divvy it up and, and kind of,

Alan

trying to give any kind of estimate in things right now. He's just, I don't know, because I can't guarantee, I, I can't, I don't know how much time I'm gonna have on a thing today

Mario

exactly,

Alan

tomorrow. And you know, I, family stuff is always there as well. You, so it's like, you think, okay, I'm gonna spend, you know, Saturday doing this and then actually we can't because it's a thing and that's fine, but it, it just means estimates. It like completely wild. You've got no idea.

Mario

Yeah.

Alan

it is tough.

Mario

Yeah,

Alan

You know, gotta have a goal

Mario

yeah. yeah. So

Alan

So hopefully, yeah, once you can finish this this kind of yeah. Network stuff, you can at least put that to bed for the moment. And and again, there's, this's everything else works so well. I really hope you can get to the stage where, you know, you can start, you know, Charging people for it.

Mario

yeah.

Alan

cause I think you're gonna be fine getting customer, you know, like you've got, as I've said before, you've got a, such a clear target here. You know, there's no ambiguity as to who you can use this app. Which, you know, I fail with a little bit with mine, you know, it's more difficult with mine because there isn't a clear single target market. So yeah, I think once you've, once you open this up, you know, just you can laser focus on particular people and targets and just go for it.

So excited for you. just gotta get there.

Mario

Yeah, I know. I know. And now I've been, oh, that's that's one thing I wanted to share with you. I've been reconsidering the whole Paddle thing and I, I may revisit that and see if I, I go with them, It's just,

Alan

I, I understand where you come from.

Mario

yeah. It's,

Alan

pro or four Paddle. You, you mean.

Mario

a, pro Paddle I

Alan

Pro. Okay.

Mario

Yeah. A Pro. Paddle.

Alan

Yeah. Did you see, they kind of did a bit of a relaunch this week.

Mario

I I, yeah, I heard I haven't, I haven't gone to their site, but I, I read something about it. yeah.

Alan

And I think that they're gonna make all our pricing more transparent. And I think that was one thing which really seemed to put a lot of people off is just fact that the, this kind of opaque like, well, when you start using those, you'll find out how much we take. And it's like, what? , Mario: yeah, so they're gonna be a lot more upfront with everything. And so I really like this, this just idea of them being. Taking care of the, the tax and the filing and everything.

And it's just for, for you just said how much stuff you gotta think of. If there's one thing you can remove, I'll take it. And if that one thing is tax, I'll definitely take it. Right. , it's so stressful enough as it is, but them just taking care of that whole side of things is makes it definitely me worth it to me again, especially when you know, I'm not in a, it's not like I'm in The US selling to US customers and that's it.

And you it's no, I've, I'm already in a, at a disadvantage just from the first sale I make because, don't know where it's gonna be. I mean, my accountant is already like, I I've had meeting with my business accountant the other day and trying to explain this concept to him. He's like, so you have a customer in Japan. Yes, I do. So you're collecting sales tax. Well, No Paddle are. And he is like, who's Paddle? Well, they're an Irish company. and it's like, say what?

So they, they take care of that, but where does the sales sites go? It goes to them and then they pay it to Japan. Well, yeah. so

Mario

yeah.

Alan

it's trust me. It's okay. Yeah. So I mean, that, that's a disadvantage. Well, because, you know, in terms of, if I register for sales tax, then things, my company buys, obviously I can claim sales tax back. But you know, I'm not spending that much money so

Mario

I wish it, it seems like I may be wrong about this, but it, it seems to me that there aren't that many professionals in that area, that understand the modern ways of, of doing business online.

Like, you know, I'm talking about, you know, tax professionals, and you know, lawyers and I mean, it may be lawyers, a little getting a little better, but there's still a lot of like uncharted territory where you've need professional advice, but you don't know who to ask because they don't really know, you know,

Alan

absolutely. I mean, it's, it was a, you know, just when I was setting up the company here and, you know, the, the first, thing, they, you know, the list of questions is, you know, where's your revenue coming from? I'm like from selling software, like, you know, services and you, well, what's your, you know, customers or what's your, you know, billing stuff.

And it, when you kind of say, I'm not gonna be, you know, billing with invoices, I'm not gonna have an office I'm gonna be selling primarily to abroad. And they're kind of just like, what, who, what are you doing? Who are you?

Mario

yeah, they don't know. They don't understand. And it surprises me because there with so much business going on online, you would think that there would be, you? know, a lot of demand. I mean, there is a lot of demand, so there should be more, professionals out

Alan

Yeah. I mean, I guess it's, it's one of those things where, you know, you kind of, we, we do live in a, a bit of a bubble, you know, you think every, every man and his dog is making a web upright and , apparently they're not, you know, it is still a small number in the grand scheme of things.

But obviously when you live in this world, you kind of, it feels like everybody is building something everybody's doing better than you everybody's having a lot, you know, it, it's, it's very difficult to, to get a true perspective on things sometimes. And even, even when you know that that's the case, it's still difficult to actually. Accept that. So yeah, I, I understand, but yeah.

So for the, for the most part, accountants say, you know, when you talk to, you know, look for accountants and they expect you to basically have an office, be hire Japanese people, see have Japanese customers. And then, you know, there's all these assumptions and it's like, what, what do you mean you're not doing any of those. So it's like,

Mario

yeah.

Alan

how are you a business then? Well, it's just different.

Mario

yeah, it's not, it's not brick and mortar, you know, it's, it's a different

Alan

they expect, they expect me to be like running a bar or a coffee shop, you know, that's kind of like the, the, the limit of kind of understanding of like, you know, what kind of business I could be doing. It's yeah, it's difficult.

Mario

yeah.

Alan

so, I mean, my accountant, you know, that I've got, I'm happy with him, you know, he seems to get it eventually. He just, you need to explain it.

Mario

yeah, it's one, that's one of the reasons why I've been reconsidering the whole Paddle thing, because you know, if the, like you said, if I can remove, one thing from the equation that I have to worry about, yeah. They take a cut. but, that may be worth the, the

Alan

Yeah. I mean, E even if, even with Stripe, they're still taking a cut for card

Mario

still,

Alan

stuff. So, you know, it's, it's just a little bit more of a cut. And if it means it removes the lack of, anxiety over whether I need to file something is worth it in my book. you know, I don't wanna be on the hook for like, oh yeah, you should have filed this paperwork to, you know, Luxemburg. And I'm like, well, I didn't know that and now what's gonna happen now.

You know, it it's just that unknown and that stress and uncertainty of and especially when it comes to tax, you know, it's, that's not something I ever want to mess with.

Mario

yeah. And that's what I've been thinking about and, and being that our businesses are online. Right. And

Alan

I mean,

Mario

you can, you potentially have customers all over the world, so, you know, it becomes even more of an issue

Alan

it always surprises me that, I mean, I know Stripe is making roads in this area and they have, you know, things that you can add on as extra services to take care of tax things and stuff, but it really surprises me that it isn't like ultra high on their, roadmap. Maybe it is, it's just complicated. Right? So it's it, because it feels like you could get into a very deep, well of pain very easily. if you're not careful, right.

You know, it's so easy to take payments and then we will, now you gotta report these payments

Mario

yeah,

Alan

and you've just taken all this money and it been, hopefully you've taken all this money and then suddenly you have, you've realized that there are in, you know, 20 different countries and, you know, Five different states. And, and guess what, that's now your problem.

Mario

yeah.

Alan

so it's, yeah, that, that would concern me. And it's good that, you know, payments are being made much easier and Stripe is really, you know, led the way there, but it feels like that its potential for shooting yourself in the foot. Right?

Mario

Right, Right And I think I asked you this before, but if you go with Paddle, you technically, you don't need a, a Stripe account cuz you're, they're not using that. Right. They're they're not

Alan

Mm-hmm

Mario

They're they're doing their own thing

Alan

yes, they do the wrong thing. I mean, let's say on the, on your credit card receipt, as in your customer's credit card receipt, it says, you know, Paddle and then parentheses and your business name. So it, it does have your name on the receipt, but there the, a seller of account, I forget what it's the official term is, but yeah, they are the it's that they're selling it. Not you basically.

Mario

right. And so that means you can create plans like payment not plans like subscriptions

Alan

Yep. Yep. You, you can create as many different subscription plans you can do. You could do a plan per you can set different prices per region as well. So like my monthly price I can set a round number in dollars and a round number in Yen just because otherwise, you know, it's like, if you're in the us and it comes out and it's, it's $43 29 cents a month, you're like, what the hell?

you know, it's easy just to say it's 45 and or 40, and, you know, so you can set a, a number for each region if you want, or just set it in dollars and let it auto translate to whatever the, the equivalent is. And then obviously the sales taxes added on top of that and that's just done automatically stuff like it, yeah, you can set like annual or monthly. You recurring ones. One off you, you do everything in there. So it's good.

Mario

so one of the things that I, that I would like to do that I've been thinking about for a long time is doing purchasing, parity

Alan

Yeah, yeah. It'd be nice to do.

Mario

I can never, that.

Alan

purchasing parity.

Mario

Power parity

Alan

parity. Yes.

Mario

So I've been thinking about, I would love to do that. That's one of my goals and I don't know if, and that's one of the reasons I wanted to use Stripe because, my thinking was that I could, do more custom stuff with it, you know, and, and do stuff like that. But I, don't know if that's something that I could do with Paddle

Alan

I'd say you've got this option of just being able to set different currencies to be different prices.

Mario

And that's what I'm, that's what made me think of that, because if you can set up different prices per region or something like that, then maybe there's a way to do that.

Alan

Yes.

Mario

I don't know.

Alan

think you can, I, I, yeah, I didn't look at it closely. But I think there's, there's a way of I say you, because you can set it with the currency, which is, you know, if you're paying with a card in that currency, that means that's where you are. Right.

Mario

Mm-hmm

Alan

If it was just so I, I think that's, that's far, they do, they might do more. I, I didn't look into that,

Mario

So they support all kinds of currencies around the world.

Alan

Yes. Yes. It's a very big list. which is why I only picked a dollar and Yen because it's like, well, I'm not gonna sit price for everywhere, but the main ones are fine. So.

Mario

Huh. All right. More to think about

Alan

And so the, the interface to it is very straightforward as well, you know, in terms of getting web hooks and there's an API as well, but I, I just rely on Webhooks for most things. And you know, they have like a, you know, just a good retry think and it's yeah, it's, it's pretty straightforward. The, the biggest thing, which through me is just having, so because I did monthly billing and with three plans and annual billing with three plans, that means I've got six plans. Right.

So then you've got, and I'm like, this was a bad idea, you know, in, in hindsight, maybe I should just kept it to one or two. And just said, you know, like it's monthly billing and it's this price and there's two plans or something for, for, to start off with, well, I mean, you can, but every, an annual subscription is just another. Price another subscription type. Right. It just means that, you know, there's, there's so many more cases to check. Right. You know?

And so you, each one of those has a different subscription code type. So you get a thing that says, oh, I got, you know, type 16. And you're like, okay, what's that then you like, okay, you've got that. Which means you, you paid this here. And it's just so much like logic just to maintain when they, and then of course you got, you know, if they cancel, they, their cancellation only starts at the end of that billing cycle. Right.

So they've stopped paying and you've had the notification, but, and you won't be them again, but you've gotta provide the service until. The, the, this other data in the future. Right? So the logic, it it's surprising just how many details there are to it. It sounds like, oh, you just, you know, you can hit up that hit this API and you get billed. And then there's all of these little things that you've gotta take into account. I mean, but their services is very straightforward.

But that's just a lot to it. and again, as a first case, I mean, that's why, you know, when you talked about, you know, billing, metering and things, and it's like, just try and keep it as simple as you possibly can, at least for the first one, just because, you know, I, I overdid it and I regret that now, you over did everything oh, how

Mario

and this, and this is all through and this is all with the API, right? This is your custom integration with their using their API and web

Alan

I, I just use the JavaScript thing to overlay the payment thing. So there's basically a JavaScript hook, which you basically just say. And it pops over the, an overlay when they complete it, they, you can specify a URL to get pushed to so successful subscription. They end up at a different URL and you get the web hook, you can do stuff with it. It's all very, I said, pretty straightforward and the documentation's pretty good. There's a sandbox account as well.

So you can, but of us then you've got a sandbox account, but of course, because it's a completely separate thing, right. You create sandbox subscriptions, which of course have different ideas as well. you're like, why do I take account to this? So then you abstract that in your code. So you've got like environment variables, setting what the different place plans are. And it's just like all of this complexity building on top of each other.

And all I wanna know is if they're paid fourty dollars or not, that's it, , Mario: yeah, yeah. it's surprising how quickly all of this, you know, just builds upon each other. Right. So.

Mario

Yeah. Yeah, for sure. All right. Well, more to think about and, I'll see. I'll have to revisit that

Alan

that's why, I mean, I think, you know, you talked last time about having like a, a I forgot what you called it, but basically things expire your, your storage is for a certain amount of time or something,

Mario

oh yeah, yeah, yeah. Yeah. now I can't think of the term

Alan

yeah, I know it's my, my, my mind has gone blank too, but yeah, I'd, I'd say just, you know, my advice would be, try to minimize the options in as much as physically possible. You know, if that includes just having a lower monthly plan and a higher annual plan or something, because if they're gonna want higher anyway, they're probably gonna want to pay the long term anyway. So just the, the less subscription plans you have, the easier your life is going to be. So that's my.

Mario

Yeah. That's true. Retention period.

Alan

There we go. That's the one. Yeah. Yeah. Hold on.

Mario

File retention period. yeah.

Alan

My language ability is dropping off. nice one. I hope you can get this stuff finished anyway, cuz I think it'd be a big relief for you as well. So, so hopefully next time I'll have a report on how my app went down and the fact that it's in the store and and I've working on a new landing page. That's my goal for the next chat. how's See if I can meet it

Mario

Nice. Nice. Well, my, my goal for next time is to already be working on pricing and billing integration, whether it's Paddle or whatever it

Alan

there is say there is an approval time with Paddle, so you have to apply and get kind of they have to check your business account business details and they have to, you know, also see your application. You do like some screenshots or, you know, a video showing them what it is. You have gotta explain all of the, you know, what you're billing for and, and all the rest. So read their acceptable cases. I mean, yours is fine, but they will ask questions about it. So it isn't just a straight approval.

So you'll be fine, but just one it's not immediate, but you can you, you can send it for a sandbox account in the meantime and use that to, to develop it. But before you go live, there's a period where you So,

Mario

Yeah. Yeah. Well, that's another thing I need to do. I need to, file, for, establishing my company legally,

Alan

ah, might be an idea.

Mario

cuz I haven't. done that yet. And part of the reason was I was waiting for this year to roll around because in, in California there's a minimum tax that I would have to pay, even if I

Alan

No income. Right, right. No revenue. Yeah. Still go pay. Right, right,

Mario

And so if I, if I did it late in the year, last year, then I would've been on the hook already for, for the taxes. So

Alan

Yep.

Mario

now that it's beginning of the year, I can do it. I have a whole, whole year to, you know

Alan

Yep. You'll be fine. You'll you'll say I I'm have no doubt that you'll be having customers lining up.

Mario

I hope so.

Alan

well, I mean, you know, I think, you know, the, as I said, you know who to target you. If you set a sensible price plan, you're fine. You you've got no problems with the product. You know, it's exactly what I think a lot of people want. So just getting people to know about you is gonna be the, the fun bit . Mario: Yeah. Yeah. That's the challenge just to get the word out, but Yeah. Well, thank you. I appreciate that. And I hope that's the case. Time will tell, but I'm sure

Mario

Yeah. Awesome. Should we wrap it up here then?

Alan

it.

Mario

All right. Well, it's nice as always see you in a Couple of weeks

Alan

of weeks and say, I wanna hear all about the next about your pricing strategy.

Mario

Awesome. Yeah. Need to figure that out.

Alan

cheers, man.

Mario

All right. Take care.

Alan

Cheers.

Transcript source: Provided by creator in RSS feed: download file
For the best experience, listen in Metacast app for iOS or Android