Article on Cult of Mac: https://www.cultofmac.com/how-to/vibe-coding
A year ago, Graham Bower had no clue how to write an iPhone app. Now he's shipped a fully-fledged strength training app, built with AI coding tools. Used properly, it’s a skill you can learn and master. So, if you’re curious about vibe coding and keen to give it a go, here’s what I learned.
Produced by Extra Ordinary for Cult of Mac
Follow us!
Threads: https://www.threads.net/@cultofmac
Mastodon: https://mastodon.social/@cultofmac
Instagram: https://instagram.com/cultofmac/
X: https://x.com/cultofmac
Facebook: https://www.facebook.com/cultofmac
Show More Show Less View Video Transcript
0:02
Graeme, let's talk about your new app,
0:05
which I find very interesting,
0:08
especially how you built it.
0:10
Well, it's it's a it's like a strength
0:12
training fitness app for uh iPhone,
0:14
iPad, and Apple Watch. I I guess I was
0:18
as an Apple geek and a graphic designer,
0:20
I was fascinated by it was called Cocoa
0:23
Touch at the time, the the tools that
0:24
Apple gave to developers to to make
0:27
iPhone apps on the app store. and I
0:30
really wanted to play with them, you
0:31
know, it was it was so fascinating, but
0:34
my my knowledge of programming was only
0:37
went so far as HTML and CSS. hadn't done
0:40
imperative programming in years, you
0:43
know, and so I I developed uh reps and
0:46
sets originally uh 14 years ago uh with
0:50
my partner and he's a um uh a software
0:54
engineer and so he did all the the techy
0:57
bit and I did the design bit and this
1:00
app did pretty well. It got featured on
1:01
on the app store a couple of times and
1:03
it became quite popular. Um but this was
1:06
like 14 years ago and 14 years is a long
1:09
time in software development. So uh we
1:12
got to a point last year where the code
1:15
was so old and creaky. I mean it was
1:17
written in Objective C and since then
1:19
Apple's in introduced a whole new
1:20
programming language and they've also
1:22
introduced a whole new kind of front-end
1:23
technology with Swift UI and it was just
1:27
too old to still maintain. But my my
1:30
husband was busy on other projects and
1:32
there's I thought there's no way I could
1:34
do this by myself. It's like you know I
1:36
know some programming but not enough to
1:37
do this. Um but then I I started playing
1:40
around with Claude uh on this uh uh
1:44
platform called Cursor which is a vibe
1:47
coding platform and I did the the Swift
1:51
playground tutorials that that Apple
1:53
offers for free to kind of teach you how
1:54
to program in Swift. and I watched a
1:57
bunch of uh WWDC videos uh on the UI and
2:01
Swift UI and and how to design for Apple
2:03
platforms and I just you know started
2:07
building one chunk after another and
2:09
after a few weeks I realized I think I
2:11
can actually build this thing and it's
2:13
taken me 6 months but uh yeah I did it
2:17
and it kind of works and no one is more
2:20
surprised than me but there it is.
2:24
It's very cool. Yeah, the the the the
2:25
vibe coding thing is really um
2:27
inspiring, I think. Um you know, like
2:29
you said, you're a graphic designer by
2:30
trade, right? So, uh
2:32
well, you know, I I think I learned a
2:33
lot about vibe coding in uh developing
2:37
this app. And one of the things I I
2:39
think I I came to realize is that vibe
2:42
coding is a skill in its own right. And
2:44
I know some people that that really hate
2:47
anything AI related. And some of my
2:49
friends hate everything AI related. and
2:51
they'll they'll have a joke about
2:54
they'll have a joke about, you know, oh,
2:56
how hard can it be to write a prompt?
2:58
And I see that that point of view, you
3:01
know, but at the same time to to write
3:05
prompts to build an app like this, there
3:07
is a lot of homework that you need to do
3:09
because with with five coding, the
3:11
quality of what you get out is very much
3:14
determined by the quality of what you
3:16
put in. And you need to know what you
3:18
want to ask for in order to get it.
3:21
Exactly. That seems to me the most
3:22
difficult thing. I mean, you know,
3:23
you're bringing a lot of background
3:25
knowledge to this obviously, aren't you?
3:26
Like you said, you watch a lot of
3:27
dubdubdub DC videos. You got to know
3:28
what these frameworks are capable of,
3:29
what the different uh you know, what you
3:31
can do in Swift UI and so forth. I mean,
3:33
so it's not just a question of of having
3:35
some sort of vague idea. You actually
3:37
have to have quite a specific idea,
3:39
right? Is it is it really really
3:41
specific that
3:42
to make it work? Yeah, I think most
3:44
there are some apps that you know if you
3:46
want to just make a fart tap or
3:47
something then you could probably make
3:49
it in an afternoon but most apps these
3:51
days that have any value are pretty
3:53
complicated. It look like an app like
3:56
reps and sets uh and superficially it's
3:58
like well it's got four tabs and how
4:00
hard could it be? But if you looked at
4:02
how many different scenes there are in
4:04
in this app, there's hundreds and I
4:06
think it does thousands of different
4:08
things. And it's it's it's an immensely
4:11
complicated
4:14
thing. So in order to build something
4:16
like this, you really need to organize
4:18
in your mind what are all the different
4:20
things I want my app to do and what
4:22
order do I order do I need to build them
4:24
in? Because actually for one of the
4:25
things with this app was I had to think
4:27
really carefully about what's the first
4:29
bit that I build and what's the next bit
4:31
that I build and build it in a sequence
4:34
so that each function is a
4:37
self-contained thing that works. And so
4:38
you have to think about what the
4:39
dependencies are between the different
4:41
functions that you're building because
4:43
uh you know Claude and GTP are brilliant
4:46
but they they can't build something if
4:48
they don't know what it's interoperating
4:50
with. So you you you kind of you're
4:52
bootstrapping this thing. you're
4:53
starting with and actually I worked out
4:56
in the case of reps and sets the first
4:57
thing I needed was the exercise tab. is
4:59
not the first thing the user sees, but
5:02
everything basically starts from well
5:05
the model is the first thing of you know
5:06
working out how the model works but then
5:08
the first bit of UI was was the exercise
5:11
tab and then once I had exercises then I
5:14
could have the templates tab where you
5:15
build templates from exercises and once
5:18
I had the templates tab then I could
5:20
build the the workout view where you log
5:22
workouts based on templates and once I
5:24
had the workout view then I could build
5:26
the summary view which is the first
5:27
thing you see because then I workout
5:29
data which can be presented visually and
5:31
once I have all of that then I'll build
5:33
a new tab because at this point I've
5:35
thoroughly fleshed out the model of you
5:38
know what a template is and what it
5:39
needs to do. So that all of that kind of
5:42
thinking you can ask questions you can
5:45
ask Claude and get advice but
5:49
you have to start somewhere like AI
5:52
can't just build something out of
5:54
nothing. So there's a lot of this that
5:55
you need to figure out first, but you
5:57
can do it if you really want to, you
6:00
know, because I hadn't done any
6:01
programming in years before I started
6:04
this. And so if if you if you have the
6:06
cur I think you need curiosity, you you
6:09
need to be the kind of person that's
6:10
fascinated to watch WWDC videos. And I
6:13
guess in my case, I used to watch them
6:16
and I loved all this stuff and I was
6:17
frustrated I couldn't build it, you
6:20
know, so I already I already knew about
6:22
lots of these UI things. I I just didn't
6:25
have enough knowledge to actually use
6:27
the knowledge that I had. And so the
6:29
cool thing about uh vibe coding for me
6:32
was it plugged that knowledge gap. And
6:34
what I would say is for me there has
6:36
been a huge amount of learning and
6:38
doing. So I I guess I'm the kind of
6:41
person I like to learn as I go. And that
6:44
kind of learning doesn't work very well
6:45
with programming. Well, it does, but you
6:47
need a certain amount of knowledge in
6:50
order to get you started. And I was too
6:52
impatient, too impatient to learn it.
6:54
This gave me an an interesting way in
6:57
that I could see progress. And you know,
7:00
often Claude would do things. I was
7:02
think
7:04
Claude and Claude will tell you and then
7:07
you know, you've learned something. And
7:08
so I definitely in this I learned a lot
7:10
about software architecture and I
7:12
learned a lot about programming as well.
7:14
I'm still not a programmer but I'm more
7:16
of programmer than I was six months ago.
7:20
Did So did you map all this out first or
7:22
it sounds like you were you you were
7:23
sort of well making it up as you went
7:25
along or or rather discovering it as you
7:27
went along like you built it in in
7:29
modules but so did you have a did you
7:31
have an overall plan and you sketched it
7:32
out? you you know you you you figured
7:34
out I'm going to do this I'm going to
7:35
this or was it like you like you just
7:37
described you you you figured that I
7:39
could build this then this then this
7:41
it's like that but I I did obviously
7:43
have the original app which uh Martin
7:46
and my husband had helped me build and
7:48
so you know from I guess we had both
7:51
spent a lot of time on the original app
7:52
thinking about the model and the model
7:54
is like the database structure of how
7:57
these different aspects like equipment
7:59
and exercises and workouts and templates
8:02
how all these things fit together. And
8:05
so I had already had that idea which and
8:10
I had the old Objective C code as well.
8:13
And so that that's a big help too
8:15
because uh if I can't understand how
8:17
something should work, then I can ask
8:19
Claude to have a look at the Objective C
8:21
code and tell me what he thinks it
8:24
thinks.
8:25
I I I think like just the the new tools
8:27
have also helped enormously. I mean,
8:30
Swift UI like it's it's declarative. It
8:33
like as someone who also has a, you
8:35
know, a background like building
8:36
websites and CES and HTML, Swifty feels
8:39
very natural in like that same sort of
8:41
way that like you're saying here's the
8:43
button, here are its properties. I have
8:45
a computer science degree, but I look at
8:47
uh Objective Code and it it looks like
8:51
someone just matched on a keyboard. It's
8:52
the the syntax is just so dense. So I'm
8:55
sure the tool helps as well, but you
8:57
know, as you said, like the harder part
8:59
is the hardest part is thinking like a
9:01
programmer. You know, you need to turn
9:04
an idea into like a logical series of
9:06
steps, and that's the harder part. You
9:07
know, the AI can help you with the
9:08
syntax,
9:09
but you still need to understand.
9:11
That's the key. And it's a puzzle, but I
9:13
mean, if if you're of that mindset, it's
9:16
actually quite fun. You know, I the
9:18
whole time I guess I was enjoying it.
9:20
That's part of or I I was just really
9:23
curious to see how far I could go with
9:25
it. You know,
9:26
that that that's the thing. It's like
9:28
and I wasn't sure and I'm still actually
9:30
not sure. Am I walking out on thinner
9:32
and thinner ice? And is this whole thing
9:34
going to collapse at some point? And you
9:37
know, I've shipped the app now and it
9:38
hasn't the ice hasn't collapsed yet. But
9:42
if I'm honest, that's one of the reasons
9:43
it's it's free. I don't want to charge
9:45
for something until I'm absolutely sure
9:48
it's it's rock solid. So, you know, I
9:50
think it's rock solid. We But
9:53
you'll find out.
9:54
I guess it's it's always a worry when
9:55
you don't know every line of code inside
9:58
out and you know, this is vibe coding.
10:01
So, I I I check every bit of code before
10:04
I check it into git. Um, but there's
10:07
only so much of it that I understand.
10:09
And, you know, so you can do a lot of
10:10
thorough testing. Um, but with a complex
10:13
app like this, there are always going to
10:15
be edge cases that you haven't tested or
10:19
like regression issues if you fix one
10:21
thing and it breaks something else. And
10:24
so it it's it's learning for me, but
10:26
I've already got a few users who really
10:28
enjoying it, a few other users who've
10:30
had some issues with it. And, you know,
10:32
I'm I'm slowly squishing bugs.
10:35
I mean, on the plus side, your app is
10:37
still like rooted very much in reality.
10:39
like you're not going to have somebody
10:41
lifting 10,000 weights, you know, that's
10:44
well I mean in that sense I I actually
10:47
from the original reps and sets we put
10:49
some disclaimer in our terms of use to
10:51
say in so many words you must use your
10:53
best judgment in terms of what exercises
10:56
you do and we accept no liability for
10:58
injury. But the other thing is the the
11:02
there are some like templates in there,
11:04
but this is not an app which tells you
11:06
how you should progress because I I'm of
11:09
the view that an app can't really do
11:10
that. If you if you want someone to
11:12
understand you and your individual
11:15
fitness journey, I think you need a
11:17
personal trainer, someone that knows
11:20
you, observes your workouts in real
11:22
life. I wouldn't trust any app to do
11:24
that and certainly not like uh I don't
11:27
know some AI thing that with Apple's
11:29
foundation models you know because a
11:32
hallucination could result in an injury
11:34
right so I I my personal view is I
11:38
absolutely don't think that apps like
11:39
this can replace personal trainers and
11:42
if you're starting on your weightlifting
11:45
and gym journey that to me is exactly
11:47
where you should start you should find a
11:49
great gym where you feel comfortable and
11:51
get a personal trainer
11:52
to show you how to do this stuff. But I
11:55
think you then you get to a point where
11:57
you know what you're doing and you you
11:59
don't necessarily need the personal
12:00
trainer so much or more for motivation
12:03
maybe. But when you know the basics of
12:04
what you're doing, that's when I think
12:06
an app like reps and sets can become
12:09
useful just for logging what you're
12:11
doing so you can kind of you can keep a
12:14
keep a log and see your progress. Well,
12:16
congratulations, Graeme. And um yeah, I
12:18
wish you, you know, uh happy to help out
12:21
in any way to get this uh get this out
12:22
there. I think it's, you know, it's a
12:24
helpful app, isn't it, for people. So,
12:27
I think so. And and I'm going to write a
12:29
piece for Cult about Vibe coding. If
12:32
you're interested in building your own
12:33
app, I've got some tips that I'm So, I'm
12:35
going to share those going to share that
12:37
post that on Cult in in a couple of
12:39
weeks time. I'm working on that at the
12:40
moment.
12:41
Great. I've got a billion dollar idea. I
12:42
know it's going to be hugely successful.
12:44
Um, but uh I don't want to reveal it
12:46
because I don't want to uh I don't want
12:48
to rip off my my brilliant idea.
12:51
But um I would Yeah, I've got to find
12:53
out whether it's actually possible or
12:54
not. Though that's the first step.
#Fitness
#Fitness Instruction & Personal Training


