Welcome back! After a nice autumn break, Jack and Bjorn are back to share their latest SaaS app updates, experiments and experiences.
Two bootstrappers building SaaS apps on Shopify, sharing their experiences along the way. TBX is a weekly podcast by Jack Kowalski of NeatShift and Bjorn Forsberg of FORSBERG+two.
Bjorn Forsberg 0:15
Welcome back to Season Two of the Bootstrapped Experience podcast, where Jack Kowalski and myself Bjorn Forsberg talk about our journey through the Shopify app business and also outside of Shopify. Yeah. It's great to be back. We decided to call season one at the beginning of summer. I thought it was towards the end, I guess. Yeah. So we've been sort of trying to work out when the right time is to kick off season two. And I think we both felt now we have both the energy and something to talk about for it's a been Jack. Yeah, really
Jack Kowalsky 0:45
good. How about you? What's going on?
Bjorn Forsberg 0:47
Yeah, it's been a busy few months. I guess last time, we talked, Shopify had just announced that they were cutting the 20% fee. So it was a nice way to sort of end season one and a nice bonus there. It was great. Yeah. And I've managed to keep grow a little bit more as well, because it's quite funny to see like your stats, all of a sudden jump up, you know, 20%. But you can easily hide if you're having a bad month, because obviously, there's a giant jump in your stats, which is somewhat not of your own creation, right.
Jack Kowalsky 1:16
Sure. You know, that was funny. The one thing I thought about when I saw that, too, is just, if you're considering selling your app, like that was the time, man, you just got a 20% increase to the value of your business. I mean, that's awesome. Yeah.
Bjorn Forsberg 1:27
I don't know a lot of the companies that have been buying up Shopify apps have probably done pretty well on that news as well. Sure, I'm sure. Yeah. But yeah, since then, we've been working on quite a few different things, started working with a new developer as well, which is really good. Yeah. And if you don't follow him on Twitter, or you should his namesake Kirill Platonov off. And he's been doing a lot of Ruby and Rails work in the community. And I've been a fan of what he was doing and putting out there. And I noticed on one of his blog posts that he said he's had some open time for freelance work, or, Hey, this would be great.
Jack Kowalsky 1:59
That's awesome. I know Kirill, that's cool. I had no idea you guys working together. That's great. Yeah, it's been
Bjorn Forsberg 2:03
a couple months. Now, he's a very experienced developer. So it was really good to sort of get a fresh set of eyes coming in and to help out both on ad kit, but also for the whole Polaris view components thing that we're building, or we're building and then decided to use the open source library that Dan gamble created a while back. And curial has been quite active in developing on that. So they made a lot of sense to sort of support the work that they're doing on the Polaris, Wii U components, and then also to ensure that our apps are using the latest version, I guess you could say. So it sort of migrating all the player stuff and ripping out our homegrown one, and then just joining the open source version and helping out on that one.
Jack Kowalsky 2:42
That's awesome. So you're working with two developers now?
Bjorn Forsberg 2:46
Yeah, I just been focusing on App kit. And then there's also at the moment, focusing a lot on testing. So test is not something I've had a lot of in my apps, which I hang my head in shame, I suppose you should it, it feels really good, then we can get into that a bit more. But I've been doing a lot of work on the average 2.0 sort of forced upgrade from Shopify, where they're asking everyone that's on an older version to move to this. If you're an Ember app, you need to move to average 2.0 By the end of the year, which has been really good. But it meant it was a perfect time to get a lot of tests into the system. So that we knew as I was migrating these apps that everything's still working in, just sped things up a lot. So yeah, it's been really good to have Arjun working on that. And then Carol working on more the Greenfield stuff, which is, yeah, it feels like things are moving.
Jack Kowalsky 3:30
So cool. Yeah, I've been working on thinking a lot more about tests lately, too. I bought a course recently, I Spady, specifically about testing level applications. Because like, I assume you've probably had the same experience where you go to write tests, and it takes you 10 times longer to write the test than it did the code and you just get frustrated and have a half finished test level. At least I was like, how I always did it.
Bjorn Forsberg 3:52
100% what my experience was, and obviously, you know, it gets better with practice. But yeah,
Jack Kowalsky 3:57
yeah, so going through that course, like, I feel like I can actually write a test in a reasonable amount of time now. And like, I would always try to do like test driven development and things like that never worked. Like I would do it for about a half hour and be like, I'm never gonna finish this frickin thing if I do it this way. And so just going back and writing tests after or right before I commit, or whatever, makes me feel a lot better about things.
Bjorn Forsberg 4:22
Yeah. And I think you don't always know what you're building yet. Right? And I guess people say, write the test so that it continues to fail until you fix it. But you know, I think you need to explore a bit. That's my very limited experience, at least as I need to sort of get my head around the feature more before I can write a test that actually covers the use cases I need.
Jack Kowalsky 4:41
For sure. Yeah, I think it comes to like, I have a developer background before I did all this stuff. And like you just sometimes you work with those superhero developers that just managed to produce 10 times the amount of code of anyone else and it's just all perfectly tested as all you know, they had their tests 100% Right before it started. And so you try to imitate The guy sometimes or at least I do and never
Bjorn Forsberg 5:04
aspiration, I guess, like, I don't think I'll ever be that person. But also, one of the cool things that Carol was working on was putting up, he did a few different libraries that he's open source, but he did one, which is a Shopify, sort of sample app that uses toboe, an average 2.0. So you can sort of see this whole migration, he's basically created a sample app for migration that you can use as a starting point for new app. So I've used that as a reference. And just looking through the cleanliness of that code base, it's so nice to see. And I've learned a lot just picking through that while I've been upgrading my existing apps. And he also did a Shopify API wrapper, because the full Graph QL in Ruby, so the sort of outside the official wrapper, creates these giant objects of whatever you pull in from Graph QL. And it forces you to have the full Shopify schema in memory. So you can validate the request before you send them off. But it means that like the server just dies, and I've memory usage, it's super heavy to use. And so he started just created a really light wrapper, which just sort of passes JSON and gives us a Ruby object back. Yeah, it was just cool to look at the code base. And to sort of learn from someone, it was a good thing to explore, I guess you could say, seeing how other people work and how they write tests and so forth.
Jack Kowalsky 6:17
For sure. That sounds like that's a great get, you know, congratulations on the new hire.
Bjorn Forsberg 6:21
Yeah, thank you. Yeah, yeah, no, he's freelancing. So, which is cool, but I'll try and hang on to him as long as he wants to continue. For sure. That's awesome. What about you? What do you been up to?
Jack Kowalsky 6:30
It's been an eventful few months. I guess I'll start with the big personal news, because you've helped out with some of this is that I am relocating to London, my wife and I, in just a couple of short months. So been working on getting the visa for about a year, I got the global talent visa, which means I know tech stuff, I guess. It's awesome.
Bjorn Forsberg 6:50
Yeah. Congratulations. Yeah, I know, you've been thinking about and working on it for a long time. So it's just great that it's very short, or not far away now. Yeah,
Jack Kowalsky 6:57
I know. It's funny. It definitely didn't feel real until like, I got the actual approval. I was like, oh, man, I got a lot to do now. But it's been really cool.
Bjorn Forsberg 7:05
Yeah. And you've been apartment hunting and house hunting and all kinds
Jack Kowalsky 7:09
of suffering. Yeah, yeah. So we found an apartment or just signing the papers like today. It's so funny, like, because I'm on the West Coast of the US. So it's like eight hours ahead there. So I'm having meetings at like, three in the morning with people and trying to deal with all that. Yeah. It's, it's been hectic, for sure. But totally be worth it. I'm super excited to make the move.
Bjorn Forsberg 7:28
Yeah, nice. Yeah, I'm excited for it as well, because we were just mentioning before we started recording here that it's your before lunch. And for me, it's like 830, or something like that in the evenings. And it's just not my best time of day to be sitting trying to create coherent thoughts. But it'd be nice to be on the same or closer timezone. Anyway,
Jack Kowalsky 7:47
for sure, yeah. And then other than that, I've been working away on translate ACI. And that's been really cool. So I officially finally launched it while we were on break. And it's been going well, it's weird sort of being back at scratch. I remember. And I think I posted on Twitter, like, oh, man, day one, zero customer zero traffic. What now? You know, and it's been interesting, kind of trying to figure that out. What was
Bjorn Forsberg 8:11
that feeling? Like? I mean, do you? Do you feel like you keep going back to school, or?
Jack Kowalsky 8:16
Yeah, it was funny, I was kind of looking forward to it. And then it was a little scary, because I really never had to worry too much about the marketing side with Shopify, because they brought us so much traffic, and so many customers and things like that. So although I did some other marketing, the App Store was my primary acquisition channel. I didn't have that anymore. So it was definitely like, I remember just thinking like, I've got zero visitors to my website. What do I do about this?
Bjorn Forsberg 8:46
But I remember seeing on Twitter that you did some pretty sort of, for lack of a better word growth, hacky sort of things. They're getting into some newsletters and that type of thing. Yeah, that
Jack Kowalsky 8:54
was super helpful. So one thing is that now I actually have a little bit of money to play around with this stuff. And I'm willing to kind of pay for my first customers, which helps a lot. See I did some sponsorships. Mike did a Laravel news article. We did the Shopify union works newsletter, and I've got a couple more sponsorships coming out next month. Those have been all really good. Like they brought customers like immediate positive ROI, which is cool. Yeah, the nice thing about translate CI is that the price is fairly high, which means I can pay a decent amount for a customer.
Bjorn Forsberg 9:30
That's what you want, right? And that's one of the things I've found hard with lower price point apps is keeping the customer acquisition costs down while also competing with others that may be willing to spend more.
Jack Kowalsky 9:42
Yeah. I'm still kind of trying to figure out like how much I can spend and everything because my costs are really high with this app, too, just because I'm paying translators, but I think I can afford definitely more than I could with the last app. So
Bjorn Forsberg 9:54
yeah, good position. I think it'd be really hard. Now and I'm not saying it's impossible. But I think it's harder to come in and not have any money for some type of marketing, or at least have a network first that you can then pull on. I think one of those two things is kind of necessary.
Jack Kowalsky 10:11
Definitely, yeah. So I'm kind of making it my goal in the next couple of months to get into the GitHub App Store, cuz I love app stores. And they have so it's not like just applying get in, you need 100 active users connected through GitHub before they'll consider your app. Yeah, you gotta like get started on your own. But it's possible.
Bjorn Forsberg 10:32
I believe, the Heroku. Outside the Heroku marketplace is very similar. They get you to jump through certain sort of milestones before they'll pull you out of beta and all this type of thing.
Jack Kowalsky 10:42
Yeah, but it's good. And I've looked a lot at their app store. I mean, there's not many apps in there, they seem to do really well, kind of from what you can see from the metrics, I think it's a good goal to try to get in there coming
Bjorn Forsberg 10:53
up. We're starting off new season, it may be worth reiterating what translate CI is for any new listeners. Yeah.
Jack Kowalsky 10:59
So translate. Ci is a tool for developers. Essentially, the goal is to help you localize your web apps, meaning that you hook up say, a Git repo to translate CI, it'll scan your code base, pull out translation strings, phrases, it finds, get those translated by a human translator into whatever languages you want, and then just makes a pull request back. And it keeps it updated. So as you push more code to get it'll rescan it and keep your translations up to date.
Bjorn Forsberg 11:27
Yeah, enough, use the service. It was good. I liked it. I was nice, easy flow. And I liked it. It's a human translating, it's a different quality, I think, then Google, are you considering offering machine translated code as well for maybe like a lower price point? Or is that opening floodgates of things you don't want?
Jack Kowalsky 11:45
I have considered that I would consider, I mean, the backend sort of doesn't matter that much. Obviously, if you want higher quality, you'll pay for it. And that's great. If you just want something that'll sort of work with your code base, I think that's reasonable for some people, especially for open source projects and things like that. Yeah, it's definitely something I'm considering. And I'll probably do that the next couple months. Because the thing too, is like, I would say, in five years, maybe from the research I've done, the machine translation may well be as good as a human translation, for the most part. So you'll be able to sort of do machine translation and supplement it with like a human editor, and that'll bring the cost down.
Bjorn Forsberg 12:24
Yeah, exactly. And that was sort of my thinking as well. Or sometimes you might use a human translator for the bulk of the upfront sort of translation. So say you have an app. But then if you make a small change, then I'm not sure if there's like a minimum amount of words you need to be translating, there maybe isn't. But for machine learning, at least it can sort of be a quick fill until you then have the human look over it again later, or,
Jack Kowalsky 12:48
yeah, for sure. I'd actually so I use patal as my payment processor, just because they're very Shopify like and how they handle everything like that. And so I think the minimum charge is like $1. Okay,
Bjorn Forsberg 12:59
yeah. But then I'm thinking if there's any Translators out there that actually want to do it. That's true. That's true. Yeah. Find someone. But yeah. And I think some people might be forced out of using the app if the cost of translation is too high, right. And they'll still need translations for their app. But yeah, it's a strategic sort of decision, I think more than anything, right.
Jack Kowalsky 13:21
Yeah. And that's actually what I've kind of been trying to figure out. So I did, the sponsorships got a whole lot of signups, which was great. I got about 50 signups over the course of a week, which was amazing. But you don't need really to do anything aside from put in your email address to sign up. And then you get your quote, when you decided you want to pay and all that. And so you know, of those 50, I think around 15, actually connected a project and went through that whole process. And only a few actually, like, went through the process, like actually, like, signed up and paid and got their app translated. Which is cool. I'm happy with that. But I'm just wondering where in the funnel, they're falling off? Like, I don't know, if it's an issue of tire kickers, which I totally get is on a tech news website. tire kickers totally makes sense there. Is it a sticker shock thing when they get internalized? Like, oh, yeah, it's kind of expensive to pay a human to translate my web app, or is it something else? You know, I don't know. So.
Bjorn Forsberg 14:13
And I think that was probably my thought as well, when I was going through I like the UI and filling it out and everything. But it was definitely like, oh, yeah, okay. It's not just sort of a no brainer. It was a few $100 sort of thing to do mine. And that's a pretty big translation job, I think, because it was a bunch of emails with a bunch of words and stuff. But it's still like, okay, yeah, $300, you still have to think about it, right? But then again, that's sort of an upfront cost. And then it's not something you're going to do every month. And maybe it's like positioning or not positioning, but how to say making people realize what they're paying now is not where they're going to be paying next month or the month after or, you know, trying to put their head in the right place to understand what this cost will give them. Yeah,
Jack Kowalsky 14:55
that's very true. Like because yeah, it's definitely a steep upfront cost and then very minimal going forward. So I have this one. And I actually mean to write a blog post about this, just the technical aspects of it. But I finally got translate CI hooked up to translate CI. And I. Yeah. So I went through, I looked at where my traffic was coming from the language, the users were speaking for signing up and things like that. And I translated into like the top five. But yeah, it was expensive. Like, you know, it costs for five languages, and it's a medium size app. I think it costs around 800 bucks. But then I think I've paid about 15 bucks since then, to keep it updated. You know, so whatever. Yeah,
Bjorn Forsberg 15:34
I think the word I was looking for was like framing. So you want to frame it in the right way, the pricing so that they go Oh, yeah. Okay. $800. And then ongoing cost will be much less, I think is worth sort of reminding people. I don't know how you do that. But maybe some type of graphic or what does this mean, or the benefits of translating your app and these types of things? But yeah, it's fun to play around with it.
Jack Kowalsky 15:56
Yeah, I've been having a good time building it. It's been cool. And it's nice to see like the marketing efforts, like now I'm getting you know, some organic signups and things like that from Google and stuff, just from the backlinks of the sponsorships, and all that. So it's good. Like, I feel like at this point, it's validated in the sense that people think they want it enough to like, really check it out. And then yeah, I've got to play with sort of framing it. Like you said, I think the price and all that,
Bjorn Forsberg 16:22
yeah, cuz I mean, it's definitely worth it. So there's just matter of communication, and the right way. Yeah.
Jack Kowalsky 16:27
And I get it too. Like, there's a lot of people I'm sure, you know, if you're making 300 bucks a month from your Shopify app paying $500 to translate it is, you know, it's a hard ask, I wouldn't have done it. And if that's
Bjorn Forsberg 16:38
what I was thinking, maybe like something machine learning, then you can have like a monthly fee for those guys. Yeah, I'm not sure. Speaking of the marketing side of things, are you working on content? Or there's something we've been doing over the last few months? I'm not sure if we mentioned that last time that we've begun talking to a company to do a bunch of articles and to help us with content?
Jack Kowalsky 16:57
I'm not sure. But yeah, I'd love to hear how it's doing. Because I'm super lazy about content, I need to do more. Yeah,
Bjorn Forsberg 17:03
that's it. I've never enjoyed writing. But I can definitely see the power in building up articles that, you know, not only help people, but also help with SEO and link building and so forth. So it was actually a guy on LinkedIn that would been pitching me for a long time, you know, but just in a really creative way, that wasn't sort of spammy. Anyway.
Jack Kowalsky 17:24
So if you want work, just message Bjorn on LinkedIn, no, messenger, I
Bjorn Forsberg 17:29
hate LinkedIn with a passion. But it was actually a personal sort of reach out where the guy had actually looked at my website, and it wasn't at least it didn't feel automated, usually pretty good at sniffing those ones out. But yeah, so we finally got a hold of these guys and, and sort of said, Hey, this is what we're looking to do. And then they sort of took a look at what we had, and what we were ranking for, and possible things we should rank for. And just using a bunch of tools, they use this h refs, they use a bunch of Yeah, I don't know what it was cold. But it was pretty cool, was a cool proof. It was a program which would help them to write a brief for a writer to write articles for us. So it will basically spit out a blueprint about a topic, what sort of subtopic it should cover how long it should be target keywords, as well as just sort of some general tone and voice but also like, you need to include this as the h1 you need to so whichever writer was getting this, they knew exactly what they should write and how it should be formatted to give it the absolute best sort of content, what would you say power that it could have? And then I was really surprised when I say aye, it was my wife has been driving it. And I've sort of been jumping in every now and then I'm having comments, but we got to the pricing, it was ridiculously cheap to do and just basically tell them how many words you want. And then they build out the correct number of articles that will cover those words that you weren't written. So you say, Okay, I might pay $3,000 for 20,000 words, okay, great, we'd recommend based on the topics and so forth, that you do 10 articles like this. And then you can sort of look at the titles and these briefs and come with comments. And maybe I don't like that one. Let's try another one. And that type of thing. And then it took him a couple of weeks, and we had it all. So now I've just got content for like 12 months lined up, which is really cool. And obviously we proofread it at the end and with our own, sort of, don't change it too much. But just make sure that it's these aren't Shopify experts as such, so you just need to get in there and add more of the Shopify flavor to it. But it's been really a cool process. And then we've got, I think, three articles published now. I've got a bunch more.
Jack Kowalsky 19:33
That sounds awesome. I'm gonna ask for referral here. I think that sounds really cool. So what do you do this is where I always get stuck is what do you do to actually promote the content once you publish it,
Bjorn Forsberg 19:44
publish it on their website, and then push it out on all social channels. I don't do like emails to our customers when we launch new articles, mainly because we've never done it and it's not something they've sort of been used to getting. So I'm not sure if it makes comes too spammy. Yeah, it's a good question, sort of how to get it out to a wider audience
Jack Kowalsky 20:05
is so weird, like, I see these, like, recommendations that seem so awful to me to actually implement, you know, like, oh, mentioned someone in your article, and then tell them, you mentioned them and stuff like that. I'm like, that sounds horrible, they're gonna hate that, I'm gonna feel so in genuine doing that, you know what I mean? And like, I don't know, just those kind of things. And maybe it's the introvert side of me. But those sort of tactics seem really rough to me.
Bjorn Forsberg 20:29
And that's how I've always felt as well until all your competitors are doing it. And, you know, these sort of five best apps for doing this. And then of course, we list our AP as one of those options. But I think that helped having somebody else doing it writing the content, because it was a lot less biased, I guess you could say, they were just looking at each of these products and trying them out. And then seeing what are the pros and cons of each. And I think that helps a lot when it's not yourself writing them. But one thing that's actually been really good is my wife's been working on success stories from users. So speaking with some users, of each of the different apps, so we have sort of a different one for each app. And then asking them some particular questions, getting those answers and then having a writer edit it up and sort of extend that a little bit, to put it into sort of more of a blog format. And those have been really good, because then you also get, you bring the community of users into the product or the article as well. And they're often willing to share it, they get links in it as well to their products. So they're very happy to do it. In most cases.
Jack Kowalsky 21:30
I think I've seen one of those success stories. And yeah, it's pretty cool. Yeah,
Bjorn Forsberg 21:33
we've working on some more now as well, those have had more traction than the other articles, which are, honestly more for SEO. And, you know, Google's use, you know, like, I'm not sure how much users of Shopify will learn this new. I guess, if you're new to Shopify, they would be helpful. But anyone that's been around for, or been running a store for a few months will know most of these things, right? It's interesting. It's something that we've wanted to do for a long time, but just never done it. So it's good to finally sort of, yeah, get it on board.
Jack Kowalsky 22:06
I have been thinking about sort of code as content marketing, which I did this a little bit with a Shopify app, but I do really like that. And it might just be because I'm a developer. So you know, what do they say if you have a hammer, everything looks like a nail. But I do definitely like the idea of maybe releasing some open source packages and things like that for translate CI, one of the things that sucks, when you translate your app is you do have to go through and like wrap everything in, make sure that any phrase you've done are wrapped in whatever helper functions and things like that, like Visual Studio Code extension, or something like that would be handy. Hyah.
Bjorn Forsberg 22:38
Yeah, that would be cool. What would those open source projects look like? Would that be like a client side, or a client repo that integrates between your app and translate CI, or something more generic,
Jack Kowalsky 22:50
probably more generic, or like the Visual Studio thing, I think would be cool, be useful. And then you know, you're sort of in front of someone that is thinking about localizing their app. And I think one thing I see, I wouldn't mind giving away the piece for free that's like, lets you sort of just you see some of these translation apps, they just pull up sort of a data table with all your phrases. And once you fill them in, if you want to, I know I could do that for about 10 minutes before I lost my mind and hired someone to do it. So hopefully, you know, but if you want to do it, it's pretty simple. I don't see a reason that I can just be like, some sort of open source package or something.
Bjorn Forsberg 23:23
Yeah, I think that's a good way to do it. Because it's gonna stop, like you say, big projects aren't going to use that. They're generally going to use some automated way that can be kept up to date. But if you've got a tiny little app, with a small amount of phrases that you need translated, then I think it would make sense.
Jack Kowalsky 23:38
Yeah. Have you sort of realized over the last few months? And I think you've pointed this out to me before, too, is like the translation part is sort of the least impressive part of what translates Yeah, does, it's really pulling the phrases out and going through the code base and putting it back in. That's the sort of secret sauce there. So that's what I want to concentrate on.
Bjorn Forsberg 23:58
Yeah, yeah. I think the actual translation is, yeah, like you say, it's something that a lot of people have solved already. Right. And so we use services for that.
Jack Kowalsky 24:06
Yeah. And I kind of thought of this too, I was reading just the other day, there's a tool that a lot of Laravel developers use called Laravel. Shift. And in a way, it doesn't do translation. But in a way, it's kind of tackling the same problem in that, if you want to upgrade your level app to the newest version, for example, like, these guys will sort of figure out how to analyze your codebase and make the changes to your code base, and then just make a pull request back with the changes. Yeah, and it'll do things like you know, best practice code standards, things like that. They got like, you know, 15 or 20, different sort of things they can do to your code base. It's all that heavy, regular expression, type, search, replace, you know, and yeah, they always thought Yeah, yeah,
Bjorn Forsberg 24:45
that's why you need tests. Right, exactly.
Jack Kowalsky 24:47
Well, you're doing that.
Bjorn Forsberg 24:50
Hmm. I don't think anything like that for Rails exists. So if anyone knows about it, please let me know. Because I've always found, you know, upgrading rails versions, and I think it's because we If you haven't done it before, you don't realize which party shouldn't touch or leave standard, right. And then every time rails versions change, there's some files that basically change quite a lot. And then a lot of other things don't. So if you've heavily customized those files that change a lot, it becomes a pain to know, is usually like a startup configuration blocks in Rails apps. Yeah. And then, yeah, over time, as you want to upgrade your apps you sort of afraid to do so? Because yeah, what am I breaking or whatever. But yeah, I think with some experience, I've learned to make it easy on myself for future me when I write code now. But yeah, anyway. Yeah, I
Jack Kowalsky 25:34
think that's my favorite thing about we're here in translate. See is just, I actually built it well from the beginning. So it's so nice, I have to get in there and refactor something or extend it, like it actually like is not a nightmare. And I can run tests afterwards. It's great.
Bjorn Forsberg 25:49
Yeah. Yeah, that's amazing. It. I feel like the last six months or even the year for me has been so paying down 10 years of tech that, you know, we're building this app kit, because we want a simpler way to build apps going forward and an easier way to maintain them. And when I started out, I wasn't a great developer. And now when I go back, I've been doing this whole average 2.0 upgrade for the Shopify apps. For any app that's embedded in Shopify, it needs to be Yeah, anyway. And as I'm doing that, I can see in my controllers and models and things, I just sort of look at it and go, Wow, you know, I could spend, you know, days just cleaning this up and moving things around, because I've learned so much, and how I would like to do it now. And what's the correct way? Or what's the best practice way to do it? Yeah. And it's been really nice to jump into these older projects and give them some love and updating them. I haven't done the full, how would you say refactor yet. Now wait until app gets finished for that, but doing the the average Trooper, no change. And then also, adding turbo, which makes it an SPI really has meant that I've been able to upgrade a lot of the front end all of the JavaScript side of things, which, you know, I was using jQuery before. And the way that that works, and the document ready event, and turbo load and all this stuff, they don't play nicely together. But it's just been really nice to sort of come back to an older project and be able to give it some love. And to be better at it now than I was when I first started doing it.
Jack Kowalsky 27:11
I miss jQuery. I know, it's like everyone hates it. And it's like, super old is to still use it. But man, it was so easy.
Bjorn Forsberg 27:18
It still is, you know,
Jack Kowalsky 27:21
years now. But yeah,
Bjorn Forsberg 27:23
some of the code I'm taking, they're using, like jQuery plugins for some things. There's no point in ripping that out. Now, while I'm just doing this sort of upgrade, right. So I'm taking jQuery with me at the moment, and just sort of looking at it. Whereas when I'm writing for the newer apps, it's all just sort of pure vanilla JavaScript. But the amount of time you can save all the less code you have to write because it's jQuery is amazing. I don't understand the hate. Fair enough. It became a bloated thing that was, you know, loading a lot of code you don't need and so forth. But the underlying syntax was really nice. Oh, it
Jack Kowalsky 27:55
was Yeah, I miss it. Yeah. As to bring it back.
Bjorn Forsberg 27:59
Yeah, absolutely. We'll make a jQuery comeback. We have to get some T shirts. But yeah, I was asked you on tests. What kind of tests do you generally write? Like? Are you doing unit tests and system tests or something else?
Jack Kowalsky 28:12
Yeah. So with the translation stuff, the majority of my tests are around, actually parsing the code base, making the pull request, things like that. So they're kind of feature tests. And basically, what I've done is set up a ton of test projects in various frameworks, and all this kind of stuff. And it will actually like the end to end tests, I really like they make me feel really comfortable at everything, or like, if I hook up this project, this test project isn't going to find every translation properly. And then is it going to make that pull request back correctly? I guess I really like the end to end tests. When I enter the unit tests. I guess I tend to do that for more, I guess, more complicated little bits of code, you know, small functions that just like I'm worried about, but generally I like sort of the bigger tests. Yeah,
Bjorn Forsberg 29:05
I think that's where we're, at the moment, we're doing mainly, like system tests, integration tests, end to end, whatever you want to call them. Those are nice, because that's how I've always tested my apps as well, right? Like, click around the screen and make sure things are working and all that type of thing. But yeah, and that feels like a really good first step is just to have like an intent test. And then we can obviously check that certain data is showing correctly in the UI. And then there's a repo that I have, which doesn't have a front end, it's basically just like a gym that you pull in, and it does all our liquid rendering. And there I can see unit tests would make a lot of sense to make sure that hey, given this order, are these particular variables coming out? Correct. Still, like you say, it's parts that you worry about, or you know that hey, if Shopify when they launch multicurrency, it makes it more complex when they launch audit editing, it became super complex. So being able to make those changes and then just be 100% Sure is always nice, where I
Jack Kowalsky 29:56
always got confused with Shopify, be curious how you're handling it is like where you have to remember even just testing like login and stuff with the embedded apps is really difficult. Anytime you're interacting with the Shopify API, like, Are you mocking all of that? Or how are you handling it?
Bjorn Forsberg 30:11
Yeah. And that's been one of the things that where Carol's experience could really help us and our agents as well. He's done a lot on test. But yeah, so we mark, the OAuth flow was started. Okay, I guess I can't remember now. Anyway. Yeah. So we log in the shop, and then we can't load it inside the embedded or we don't load it in the embedded framework for testing. So it acts as if it's not embedded, while we do the tests, which does limit you, right? Because the Shopify app does want you to call up, click a button in the top bar, or you get a modal that comes up. That's embedded in Shopify, as you can't see that from the test framework.
Jack Kowalsky 30:46
Yeah, that's where I was ran into trouble or like the product picker, things like that.
Bjorn Forsberg 30:50
Yeah, exactly. Yeah. I guess a lot of smart people have had a crack at it. And that seems to be the way that everyone does it. So I think we're stuck with it. Yeah. The Embedded app experience with the average Trooper, no, the main difference is that they're going from like a cookie based authentication to a session or a token, you know, an expiring token based or a session token, you get renewed a Shopify, and then you pass it to your back end to make sure that everything matches, right. And that whole process is you can't really test it, or at least, it's very hard to test on our side, because we can't get into the embedded side of things. So yeah, it's been a bit frustrating. And I'm kind of over the whole embedded thing. You know, it's caused me so much pain over the years, that app kit, as I've mentioned, in the past, where we're going non embedded for those. So it's a bit of a stopgap upgrading my apps to average 2.0. Because eventually, we'll pull them out completely as well.
Jack Kowalsky 31:41
I always embedded and if I was starting again today, I definitely wouldn't I don't think,
Bjorn Forsberg 31:46
no, I don't know, I think there's enough big apps that are doing really well but aren't embedded this whole session token thing, it works better, like we don't have these people saying, Hey, I can't log in, because I'm using Safari, and I have to keep clicking this cookie thing or, you know, third party cookies and stuff. So I'm sure that it's improving the amount of people that are able to use our app. But there has to be such a at the front of my mind that login in. Yeah, I'm just totally over it. But yeah, we'll see if it turns out to be an issue. But people don't complain about my other app that isn't embedded. And as long as the user experience feels natural, and something they know how to use, I think it's fine.
Jack Kowalsky 32:22
Yeah, I remember being very frustrated that like, I couldn't even use my own app without switching browsers because I use Safari by default. And yeah, this sucks.
Bjorn Forsberg 32:32
Yeah. And on the mobile, right, so on your cell phone, you have to click it. And you're like, This just sucks. Fair enough. That's all login stuff. But one of our biggest issues is actually, the embedded mobile experience is not very how to say user friendly. So like, 1/3 of the screen is taken up by the top bar. So you first got like Shopify as top bar, then you've got your little tabs if you've got any navigation, and then you have a third line for buttons. So there's like three outside lines, or Yeah, groups of content at the top of the page. And then you finally got your app at the bottom. And it just takes up way too much space. And it hasn't been optimized in years. Right. And it just doesn't feel like it's worth it. Yeah,
Jack Kowalsky 33:14
yeah. Yeah, I feel very lucky. Because one thing I learned pretty quickly was that, you know, for AV testing, no one tried to use it. Thankfully, I didn't have to deal with that very much. Almost all users were on desktop, which was really good.
Bjorn Forsberg 33:27
Yeah, I think it definitely depends on the type of app right, with your translate CI. Are you looking to get back into the Shopify app store, then? Or are you staying to other app stores? Like your first would be GitHub, I guess?
Jack Kowalsky 33:38
Yeah, I've looked. I know, we've talked about it before, I've looked at like, Could I provide this service to Shopify stores? And I mean, the answer is yes. But it's really difficult. And man for a Shopify store, like, I mean, a medium size app might cost you a few $100, like a medium sized Shopify store. I feel like it's gonna cost you 10 times that there's so much text with the descriptions and everything. Like, I don't really know how I would handle that.
Bjorn Forsberg 34:03
Yeah. Then again, I mean, if they're looking to do it, they have to spend the money, right. You know, as long as your translators aren't, you know, 10 times the price of everyone else's, then I think,
Jack Kowalsky 34:12
yeah, no, I mean, it's very much in line with the standard courseware stuff. But yeah, I could see it working. It's just dealing with the Shopify, multi language stuff is difficult. For sure. Yeah.
Bjorn Forsberg 34:23
Being led on that. I guess it's a very different app to what you're building. Right. Yours is very developer focused at the moment. So then again, Shopify seems now have a GitHub connector, right. So they can accept pull requests, and it'll get merged to your Shopify store. Or synced?
Jack Kowalsky 34:40
Yeah, actually, that's not a bad idea. It could be worth looking into. It's funny. I had an ideas super growth hacky, I guess, but I've been thinking about doing it. It's just finding some good open source repos in need of translation and just making pull requests to them with nice human translations. That's not a bad idea. Yeah. So send me a message if anyone knows of any. Yeah,
Bjorn Forsberg 35:02
definitely. Like yes. Go with the Repost you use and no rain to begin with. Yeah, I think that's a great idea. Yeah, I think that'd be fun. Yeah. Nice. I was fine. You know, little tricks like that to be super interesting. I started following a guy on Twitter his name said I'm gonna pronounce it incorrectly I guess. But it's very fresh. I think his name is he'll have to correct me because we've got a call coming up. But yeah, I apologize. But he's been doing a lot of work around the Shopify app store listings, and just sort of very methodically testing, okay, different keywords? And how can I rank better for this. And really, I guess he's using this app store analytics.io quite a bit as well, as fun to follow along and to see how focusing on some small changes, or the right channels or whatever, has like a huge impact. And he's been able to sort of bump the ranks of some apps by, you know, hundreds of positions. So
Jack Kowalsky 35:53
the thing I think, this is like a consulting service, he's done. Yeah, he's got
Bjorn Forsberg 35:57
a link on his Twitter profile, where he has a little Gumroad thing where you can get a one to one call with him. Nice. That's awesome. Yeah. So he started out doing it, you know, just for free and to sort of share knowledge. And he's got a newsletter, which he publishes really detailed posts on, right. He's definitely open to sharing. And I think it was just getting a lot. So he decided to put a price on it. Yeah. Which is really cool to follow along. I love it when people are testing the boundaries, to see what works, what doesn't, and then sharing as well along the way, which is great.
Jack Kowalsky 36:27
That's really cool. Yeah, I was always so interested in like how to increase his rankings, like technically, in the Shopify app store. That's really cool. Someone's really like dialed in and made a business out of it and has great idea.
Bjorn Forsberg 36:39
Yeah, he's doing apps such as that. I think that his main focus, right, so he has some apps and he shares publicly what they're growing and so forth. And then sort of sharing his journey along the way, and happy to help others as well, which is really cool. So shout out, we'll put a link in the show notes. It was funny, because I have like a recurring to do every two weeks to check on my app store ads. And now I've just also say, hey, check on the listings, because I'm great at ignoring that stuff. So you know, every six months, I'd come in, and then focus a lot on them for a week. And then okay, yep, they're done. I'll move on. It's never been so data driven. And I think that's where his approach is very data driven, I'd be interested to hear, you know, the exact sort of process he goes through to check it all. But I tried it out, just on my own here at the beginning of the week, and targeting particular keywords and using secondary keywords a lot more, instead of just going after the main main thing, but just finding a bunch of other things semi related. And using making sure my app listing also had those included a little bit more. One of them didn't change anything on one of the apps. But on the other one, we jumped quite a few positions, like I'd say maybe 10% more higher in the App Store, which is pretty cool. Which is pretty big jump for like one day's change.
Jack Kowalsky 37:51
Yeah. Because I was gonna say it's really like pretty instant on the Shopify app store, right? Like, you're not waiting for him to reindex. It pretty much just happens once you change the listing, right?
Bjorn Forsberg 37:59
Yeah. And that's where the App Store analytics is great, because it'll tell you, hey, what keywords are you targeting? And then you tell it when you're publishing a new version, or first that sort of helps you to actually write your content. So it contains the keywords by highlighting the keywords as Yeah, but all and then it says, right, here's all the fields, copy, paste those over into the Shopify listing, and then click this button once you've saved it in Shopify. Once you click that, then it lists all your keywords and tells you the before and after ranking to the changes you made. Oh, wow, that's really cool. Some of them it sort of goes or you can't do this one right now. But yeah, most of them is like Bang instant. And then I monitored the app rankings via the sassy the tool by union works. I'm not sure if you remember that. Yeah. So they basically rank the entire app store, and then send you an email once a day with if your rankings have changed.
Jack Kowalsky 38:50
Yeah, that's the one translates to sponsoring that one. Oh, yeah, that's right. Yeah.
Bjorn Forsberg 38:54
Yeah, that's where I saw it. Yeah. Because it's one thing to sort of see it in the tool saying, Yep, you jumped this many places, but then to also see the other tools picking up on that change a day later, right, which is pretty cool to see that the actual change was more than I was expecting. So it was nice.
Jack Kowalsky 39:09
Wouldn't be nice for you to do this with Google.
Bjorn Forsberg 39:11
Yeah. If you could just game it like that. Yeah. But I'm wondering if there's people out there who have good Google AdWords marketers would be good Shopify AdWords, marketers, or like in, say, Apple App Store marketer, or so forth.
Jack Kowalsky 39:26
I almost feel like Shopify requires like more specialized knowledge. Like I feel like I did really good with the Shopify as I've been experimenting with, like Twitter ads and man, like, not going well, but it's just me learning for the first time. And I don't know, I think just knowing Shopify, like it made a lot more sense when I was experimenting with those.
Bjorn Forsberg 39:45
Yeah. And that's one of the things I've always struggled with. Maybe I can sort of put time to it, and I could maybe do some things which aren't stupid, but you know, it's not something I enjoy doing. And it's not something I want to spend too much time doing, but I've had a hard time finding specialists or, you know, people that might be a good fit for that type of role, right?
Jack Kowalsky 40:05
Yeah. How's it feel like specifically with the Twitter ads? Like my thinking was like, Oh, well, you know, every developers on Twitter, every Shopify app, persons on Twitter, but like, Man, I then I thought like, when's the last time I actually, like retained an ad I saw on Twitter quicker than it took me to just scroll past it like never. And every developer is like that, like, really? Why would I try to advertise to developers that way? Like, it doesn't make sense.
Bjorn Forsberg 40:28
Yeah. I think maybe Twitter's uniquely bad at converting to purchases, right? Because it's not something we're sort of trained to do. At least, I don't remember last time I bought anything on Twitter, maybe it's like a link to a course, that's very niche, like a Rails course or something like that. But if I'm on Facebook, or I'm on Instagram, I actually buy things quite often. You know, like, but then it's not, you know, I'm not buying things for the business. I'm buying things for myself.
Jack Kowalsky 40:56
I feel like you have to try when you start, like maybe there's just some magic money faucet that I can get a customer for $1. From you know what I mean? But yeah, Twitter's not it. So keep searching. Yeah.
Bjorn Forsberg 41:07
How long have you been running those tests for?
Jack Kowalsky 41:09
Not long? Just like two weeks? I think I set a budget of like, $200 to experiment with it. Yeah. And it's not given anything? No, I mean, a few click throughs and stuff, but I'll probably come back to it. But I feel like I guess the other thing, too, is like I'm enjoying like sponsoring things that I like, like, it'd be kind of cool. Like, I'm gonna use that money to like, just give it to someone that does something cool. Rather than Twitter. Yeah,
Bjorn Forsberg 41:33
I feel the same about Google. Yeah, right. Yeah. Whereas I'd prefer to give it but I've had some ads running on Twitter now for years,
Jack Kowalsky 41:40
which I get them occasionally for your partnership program.
Bjorn Forsberg 41:43
Yeah, exactly. Everyone does. But I should work on those. But if there's any experts out there at keyword marketing, or Twitter marketing? Yeah, exactly. I mean, my wife's great at doing all the, how would you say like articles and design, but we're not? We're not like, how would you say data nerds, either her or right. I think it's a very specialized role. Or it's something somebody can only not can only do but a lot of people choose to only do that one thing, because it's such a big role in itself, of actual click through marketing. Yeah,
Jack Kowalsky 42:19
it's tough for sure. I mean, I think if you can do it, well, you can do anything. I mean, you can just look at how many Shopify stores really just exist, because they're awesome at that one skill. Yeah,
Bjorn Forsberg 42:31
exactly. I guess that's maybe where I think one of the hard parts as well is making a digital product fun in an ad. If you got a pair of shoes, yeah, cool. I can make those look cool. And I can see those being used. And I don't know ads for digital stuff. It's hard.
Jack Kowalsky 42:48
So I made a bunch of ads. And I'm not a designer, but like the ones I found that actually did well, like I had ones are very typical, you know, developer from behind on a screen with a bunch of code, like use translate, or whatever. But the ones that actually got click throughs was I found these cool vintage photos on Unsplash, like a library put off like the 20s of like switchboard operators and stuff like that, and just more fun text over them. And those like, there's actually a decent click throughs.
Bjorn Forsberg 43:14
Yeah, yeah, you need to find what works. And what we've noticed with the posts that we do, I control most of the Twitter account. But then we also have some sort of company posts coming out on the Twitter account as well. Those ones do well. But the ones that do best are of like, a real person, whether it be me or you know, a customer, or like in the actual face of a real person, and not just like a stock photo or whatever. And they always do like at least two times as well as everything else.
Jack Kowalsky 43:45
Well, that's why like, I have like a translate CI Twitter account, but I think it's got one tweet on it, because I'd much rather come from like my personal account. I think it makes more sense.
Bjorn Forsberg 43:54
Yeah, I guess then the whole personal brand. We'll leave that maybe for another episode. But both the upsides and downsides that come with having a personal brand. I don't have so much more. I think we should keep something for next time.
Jack Kowalsky 44:06
Yeah, I guess we're excited to come back for season two or hidden an hour here. That's awesome.
Bjorn Forsberg 44:11
Yeah, it's great. It's been fun chatting again, and I look forward to talking again soon.
Jack Kowalsky 44:15
Awesome. Sounds good. I guess I'll talk to you in a couple weeks. You guys
Transcribed by https://otter.ai