← Previous · All Episodes · Next →
Calendar Discord Bot and Turbo Stream Gotchas Episode 26

Calendar Discord Bot and Turbo Stream Gotchas

· 40:52

|

CJ: Welcome to build and learn.

My name is CJ.

Colin: And I'm Colin and today we
are catching up on some things that

we've been working on, some things
that we've been learning recently.

Good to see you again, CJ.

CJ: Yeah.

Likewise.

Likewise.

We're just talking about
Zencaster here and I use the Opal

camera as like my main webcam.

And over the past couple of weeks, it's
been doing this really annoying thing

where every time I start a new call, I
have to unplug it and plug it back in.

And someone told me that there was like a
firmware update that bricked their camera.

And so now I'm just like terrified
to do any updates or anything, but.

yeah, it's I don't know.

what, what webcam do you use?

Colin: That is rough.

yeah, so right now I'm actually using
a 12 year old webcam because, I have a

scarlet solo that's running my XLR mic
and it cannot be plugged into the Mac

while also plugging in a cam link for my,
cause I usually use a Sony, what is this?

A Sony A1000 or something like that.

A, it's one of those like
a point and shoot cameras.

It's not like a full DSLR
and, totally feel you there.

Like I have a MacBook pro that should
be able to handle all this stuff.

I have one of the CalDigit hubs,
which I bought because I was told

that it will handle all this stuff.

And, USB gets a little weird
when you go through powered and

unpowered hubs and all of this.

And there's another tool that I've
got the Elgato stream deck that

is sitting here and I think it's
bricked like when I plug it in and

I ran some like terminal commands, it
shows up, but it doesn't show up as.

A stream deck.

It just shows up as like this
very specific hardware number.

And so I reached out to support.

Cause I was like, I
don't know what happened.

there's no factory reset button.

There's no, it doesn't
show up in my machine.

And I don't, I think this is like
a thing I've been thinking about a

lot lately is I have a lot of old
tech that I don't have easy ways

of disposing in a responsible way.

And I don't want the stream deck to just
become a part of that like I actually

want to use it And I don't want to go
buy another one and then have this one

that's sitting here bricked if it can be
fixed so i've been trying to lean into

the fixing things that I have and making
use of them versus buying new things,

but I definitely have a drawer of things
with batteries in them and old, Old

fitness bands and old Android phones.

And I have a windows phone and a
Facebook phone, all these things

that don't even work anymore.

because they were like failed projects.

CJ: The graveyard of electronics.

There's just like a drawer that's
got the label on it, like cell

phone graveyard or something.

Colin: Yeah.

You probably have the same problem,
but I have More cables than I

know what to do with as well.

And so I'm trying to figure out, like,
how many USBC cables do you really need?

How many, cables, as soon as you get
rid of it, you're going to realize

it was like a proprietary cable that
you needed for some specific thing.

but just having less of those things.

And we've been trying to figure out, can
we do like a repair slash e waste, like

recycling event at the coworking space?

Just because I know this is like
something a lot of people have.

I also don't necessarily want
to fix everyone's things, but.

There's some things where we can be like,
Oh yeah, that's definitely dead on arrival

and let's recycle it in a good way.

and unfortunately, like most of the
ways of doing that in Reno have closed.

So it's an interesting thing
where it's we want to be more.

environmentally conscious and aware
and yet it's not made easy to do that.

So

CJ: Yeah.

It's interesting because I feel like
it is, the path of least resistance

is just throw it in the trash
and like it ends up in a landfill

and causes all kinds of issues.

And to do any sort of responsible.

Disposal of any
electronics is such a pain.

I think Best Buy at some time,
at some point had a program

where you could throw stuff away.

They had an e waste thing, but I know like

Colin: them and Target do.

that might be an option for us.

CJ: nice.

We had a local, our local dump
here in Bedford, New Hampshire

has a community e waste day.

It's once I want to say it's like once
a month or something a lot of people

here don't have their trash picked up.

There's like private companies, like
third parties, you can hire to come pick

your trash up, but most people just bring
their own trash to the transfer center.

And so it's a little bit
different where like we have.

A community run dump where you go and
there's a lion's club sponsored bin where

you can put your clean plastic bags.

And there's a, place where you can put all
your yard waste and there's a place where

you can put, your food scraps and they do
certain things with the food scrap stuff.

it's I don't know.

I liked that when we got here,
it was, definitely different

from coming from big cities where
there's just waste management,

Colin: it's more intentional it sounds
like too, like you know where it's

going to end up versus A lot of that
stuff just ends up in the same trash

can we have single stream here and you
know The argument is that most of the

recycling that gets doesn't get recycled
It ends up in a landfill somewhere or

sold to another country and then becomes
their problem Which is the weirdest

thing I think we made out of Recycling.

CJ: Yeah.

we were one of the topics that we had on
the slate today was to talk about money,

but we're thinking maybe we'll just tease
an episode and tell you that in a future

episode, we will be talking about money.

We want to just share, our own
experience and our own thoughts

around how we're using money.

but if you have ideas about what specific
money topics you might be interested in

hearing, please hit us up, let us know so
that we can talk about those on the show.

So stay tuned for that,

Colin: I think framing the money thing
into the build and learn, like with a

build and learn lens will be interesting
too, because I think you and I both

talked about wanting to bootstrap things.

We've worked at Startups that are
venture backed we've worked in now

I can now say that I've also now I'm
in a larger startup like later stage

startup where, money in stocks and
benefits and all the things that go along

with those are they're all different.

And freelancing and start small
stage startups and tech stars

and YC startups, all these
different things are so different.

And so I think we, it'll be interesting
to talk about like how some of that's

been different over the years for us too.

And, I don't know if we mentioned
it on the show, but I used to do it

podcasts about getting out of debt.

And so we can definitely touch on that
in that episode too, when we get there.

looking forward to that, but, promise that
the show is not going to become like a.

whatever CJ and Colin want to talk
about today, we are still trying to

frame it under the, build and learn.

And, that is going to encompass
things that touch us as software

developers, but also as we start
to just develop our careers even

more, like where does that take us?

And, and definitely curious what
you're wondering about if you're

listening to this, so let us know.

CJ: Yeah, it's a, I think it's like
when we talk about money in personal

finances and we talk, even when we
talk about weight loss or we've talked

about your sort of like running stuff
and we've talked about vacationing and

taking breaks, like all of this is.

Also definitely related to personal
development and you're building your

own life that you want to experience.

And a lot of it comes back to like
our careers as software developers

and engineers, but we're doing it so
that we can have these awesome lives.

Colin: I think we often put a lot of
that off like an early career, right?

We figure we can catch up later
and it's like catching up on

health, extremely difficult.

Catching up on money and things
like that also can be a challenge.

yeah, I think there's a lot that we can.

either worn against, but also not
necessarily give it financial advice.

this worked for us.

This didn't work for us.

Things we would do.

I actually think about this a lot
when I think about could I ever go

back to consulting and freelancing?

And I don't know, I don't know if I
could, I would do it very differently,

which might be a whole other episode.

And then I was just listening to the
latest episode of Build Your Sass from,

and Justin Jackson was interviewing
Paul Jarvis, or they were doing a

catch up, much like we are, just
because they hadn't talked in a while.

and that got me rethinking again
about this whole idea of the

episode was like gaining freedom
by building an indie business.

And it's still something that's swirling
around in my head, all the time.

And it plays a lot into money.

So maybe we'll save that
for that episode as well.

CJ: Yeah, it's interesting too.

I saw Jason Charns, from
the remote Ruby podcast.

He just tweeted, I've been
building my side project for six

years and I just am so tired.

Like I just want it to work.

And man, everyone in the comments was
resonating so hard with that because

I think a lot of people, especially
in tech are dreaming about having

an indie side hustle that, takes
over and gives them independence.

And that might be fun to get into.

Also, it'd be cool to have
Jason come on the show.

,
Colin: me more about this
weight loss challenge

CJ: Oh yeah.

Okay.

I almost skipped over it, but
yeah, so I broke my ankle.

We've talked about this on the show.

now it was probably like 20 months
ago or something and it's still

sore, but, I was looking at my
fitness pal and just like my general

weight and I gained over 20 pounds.

After I broke my ankle and it was
just like hung around since then.

And I am trying to get like more
intentional about losing that extra

weight, for a bunch of reasons.

but yeah, mainly it's just I want to be at
a healthy weight and feel, feel like I'm.

Able to run around and jump and, jump
out of the back of the truck when

I'm going to the dump or whatever.

And just not have my knees, like
given out things, just like playing

with the kids and also being able to
sleep better and things like that.

So this weight loss challenge was,
it's actually organized by someone

that's in a Peloton dads group.

So it's like a super
niche inside of a niche.

It's like dads who want to lose
weight, who are also into Peloton,

who are also like on this one,
like Facebook group or whatever.

But, the way that it's set
up, I think is really good.

And the way that it was presented is.

pretty powerful.

there's these statistics about how
likely you are to actually accomplish

something depending on, a bunch of
factors related to accountability.

So if you just have an idea, you're
maybe 5% likely to do something.

If you say, if you tell someone you're
going to do something, you're maybe 10%.

If you have a plan, you like jumps to 40%
and then if you have a specific plan that

you're going to do something by a specific
date and you have someone who's going to

hold you accountable, then you're like
95% likely to achieve some, some goal.

And the program is in, it's done
in eight week sessions or eight

week cohorts and everyone comes up
with smart goals in the beginning.

those are, specific, measurable,
attainable, realistic, and time bound.

And, you've got to say, I'm going
to lose this much weight by eating

the, this many calories per day and.

Exercising at least five days a
week and whatever, come up with the

five different rules for yourself.

And then you're put into these
little small groups where you have

a thread, a text thread with other.

Dad's from the group and every
single day you're sending each other.

This is like a picture of
what I'm eating right now.

And then, a snapshot of your,
like my fitness pal diary with

here's the food that I ate today.

And, I'm over or, Oh, I'm under.

And it's been really cool to like,
just get the support and accountability

from these other people who are going
through the same thing and, making

suggestions like, Oh, Hey, I would like.

go from two tortillas to one tortilla,
or like I would, try, swapping out

your milk in your latte to this other
milk or whatever, like just like little

kind of things that people, are able
to help you out with, and so I've,

I don't know, I'm pumped about it.

Right now I am 245 pounds and so we can
check in, we can check in eight weeks

and you can hold me accountable too.

So I'm trying to lose
15 pounds so we'll see

Colin: it's out there on the show now.

CJ: yeah, so we'll see,

Colin: I really liked that from,
we've done a lot of work with like

atomic habits from James clear and.

It's a good book.

I think like the, if you're interested in
this kind of stuff, like listening to an

interview with him on a podcast, like the
ground up show has a really good podcast,

with him, where it's just very inspiring.

And one of my favorite quotes
by him is you do not rise

to the level of your goals.

You fall to the level of your systems
is that you have this system, right?

Of people that you're checking in
with, they are checking in with you.

You all agree that you're
going to share to that.

channel and it helps.

And I think a lot of people
try to get through these goals

with like by sheer willpower.

And at the end of the day after
all the work and all the meetings

and all the things you got to do
and you're all the life things like

your willpower is pretty tapped.

And then it's easy to, be like, Oh, I
have this goal, but I want to do that.

And so having a system in place
where you cannot fall below

that level is super powerful.

And, Yeah, that's awesome and
happy to help hold you accountable.

I think for me, I've always
struggled with like consistency.

Like I'll do my running or I'll
start, doing kettlebells or something,

but then I like completely fall
off the wagon or hurt myself or get

obsessed with some other fascination.

and that 1% every, better every day
type of thing, adds up over time.

CJ: totally, yeah.

Is there something that you're working
on right now or are you, you're

in like the resetting phase or do
you have anything on the horizon,

whether it's fitness or otherwise?

Colin: for me it's just wanting to get a
better sense of like, when I'm done with

work, turning off the screens, not then
going home, and then sitting in front of

the second screen, and falling into like
video games and things, hikes, spikes.

running, whatever it is, just
getting out a little bit more.

So no specific goal or anything right now,
but, just, I think like my last job, I

was just, and it was not the work's fault.

It was me and pressure I put
on myself, but I didn't really

have a, my brain never stopped.

So I was always, because we were.

So remote and distributed
like all around the world.

Like I would wake up to
all these notifications.

I go to bed with the other team
waking up and it was like, I never

felt like I was stopping work.

Um, and changing jobs and then focusing
on making sure that five, six o'clock,

whatever, depending on what I did
that day, it's time to go outside.

Time to go do something.

CJ: Yeah, absolutely.

I think in the last episode you talked
about the discord app that you're building

on cloudflare workers for Google calendar.

Is this the same one that
you're working on now?

Colin: it is.

Yeah.

So I've been playing with the calendar
API Learning that all the different

things that cloudflare workers can do
they're very similar to lambdas aws

lambdas but I find myself like now
i'm now that i'm doing google calendar

I think we I don't know if we talked
about this on show or post show last

week But like i'm working on how to get
reminders for when you have a meeting

like we're recording this podcast.

I want to get A DM like a minute or
two before the meeting to say like

meeting with CJ or podcast time.

And there's a bunch involved there
with talking to the API, storing the

upcoming events, making sure that
none of those events have changed.

If you like subscribing to webhooks for
creating, editing and deleting events.

and then having some sort of
cron that goes and checks every

minute to see if there's like an
event happening in two minutes.

But you also don't want to send
a notification more than once.

So there's a whole bunch of stuff
there that like, I feel like I'm

building a calendar app, even though
I'm syncing with a calendar app.

So it's been interesting.

CJ: Yeah.

We were talking about how that, like that
problem is actually pretty common, right?

there's an event that's coming up,
whether that's a booking, like an

Airbnb booking or that you need to send
guests communication before, during

and after the booking or a paint Job,
like we're dealing with a craft work

where like the paint jobs coming up
and we want to send people certain like

nurture emails up into, up to the day
that we start painting in this case.

It's a, I think in your case,
it's much more granular.

And so like the room for error is smaller
because you want to send it like, boom,

like two minutes right before the thing
starts, whereas ours might be like

hours before and, or even days before.

And do you have a sense for
the direction that you're.

Solving, like how you're gonna
solve it, what you're storing and

Colin: well, the thing that's interesting.

I was like, oh, I need to
store all these events.

And I'm like, I actually only
need to store today's events.

Because I don't really
care about tomorrow.

Because I can't I'm not going
to alert on tomorrow yet.

And so I think and I need to write
this out first, but I think I'm going

to have like, when you first off
you subscribe to The calendars, you

actually do get new events, but you
don't automatically, you didn't have

to go get all the existing events.

So I show you the
existing events for today.

Anyway, I also want to subscribe to event
changes in case any of them are canceled,

move, whatever changes happen, right?

If a meeting moves to right now,
then we'll probably miss that one.

But Oh, like those edge cases, I'm
not going to try to catch necessarily.

But I don't think it should
be much of an issue there.

The thing that's interesting is
for me, coming from I've worked

with lambdas before and I like
the way Cloudflare workers work.

You have a server that has
got like a really small route.

You can have multiple routes to it,
but you can't run, like you have to

run a different worker to do your cron.

And so you have to create like a queue
that all of these are connected to.

And so then one worker can.

Send a message on the queue, then
the other worker can go process it.

Or you can have another worker that's
just croning to do the checking to

see if you need to tell anybody.

And then you need to have a
database or like a key value

store between all of these.

And so right now I've got, I'm using
Cloudflare's KV store for who you are

and who you are connected to in Google.

And then I'm using Postgres.

right now I'm using this really cool new.

Company called neon dot tech.

and they've got an integration of
cloudflare, which is how I found them.

But it's like a It's a postgres
serverless postgres design for

Distributed serverless apps.

and so it's really cool to see like
Innovation still happening in this world

where, I used to love Heroku and how
easy it was to, throw a database onto it.

But surprisingly, you don't
see anyone recommending Heroku

for anything these days, right?

You don't see in the dev docs,
like, how to spin up a Heroku

app with a Heroku database.

It's here's CloudFlare, here's
Fly, here's Render, here's

literally everything but Heroku.

So I think that's a sad state
of the world, especially from

how we're like the two of us.

I know we, we grew alongside
of Heroku for so long.

CJ: I think, it's sad.

I still have some old stuff on
Heroku, but all the new stuff seems

to be running pretty well for me,
at least on Vercel and render.

So fingers crossed.

Yeah.

We'll keep, using that, but
neon tech detect that sounds,

is it similar to super base or

Colin: so like super base is more for,
if I understand correctly, like more

like a Firebase, this is just Postgres.

So you can, you run this issue when
you're doing serverless where you might

have lots of instances of a worker
connected into a Postgres and you run

into connect too many connections.

So you have to do connection pooling.

There's like all of these things
where it's I just wanted to build

this little Google calendar app
and I am now dealing with, at.

I'm also preemptively thinking
about lots of people using it.

So a little bit of preemptive scaling
here, but you can't have lots and

lots of workers connecting to a
Postgres without connection pooling

and thinking about that, even if it's.

for a second to go check.

And even right now, I'm like, okay, if
you ask what events do you have today,

I'm just going to go talk to Google
and return what events you have today.

I'm not going to go store that
and try to keep that in sync.

I only am storing events
for notifications.

I would love if Google could tell me
that an event is happening, but then you

run into also like you might miss it.

You might.

You know get it on accident.

There's a bunch of reasons probably why
they don't do that The cool thing that I

like about neon though is that they have
this idea where you create one database

and you can branch it So it's probably
similar to having a dev and a staging

and a production But like I have one
database that has a dev branch a staging

branch and a production branch and they
all have different connection URLs and

you can have, I don't know technically
if it's the same database under the

hood or what's going on there, but it
makes it really easy to like branch

in a situation, create a new timeline
and then revert over to it, backup,

restore to that branch, things like
that as a database too, which is cool.

CJ: That's cool.

Yeah.

Planet scale.

So we use planet scale, as the
backing for our next JS site.

And it also has that branching
feature, which was new to me.

It was like the first time I'd seen that.

yeah, I think planet
scale is my SQL though.

It's not Postgres and I love Postgres, so
I am definitely intrigued by, This neon.

tech, I'm sad to see that they
don't have rails on their guides.

They have Prisma, Django, Go, Hasura.

They have Laravel and Next.

js and they don't have rails.

They need a rails guide here.

Come on neon.

But,

Colin: I think I understand why someone
would not necessarily pick rails like

in a world for very much like most of
the serverless stuff is not in rails.

That's probably why.

CJ: So it sounds like the problem
that I always wondered about too, with

serverless and these edge functions
was like, at some point you have to

go back and talk to the database.

So maybe neon is abstracting over that
and making it so that you can have.

A database closer to,

Colin: Yeah, that part I'm
not thinking about too much.

I'm using the KV store, the key
value store for the, who you

are, because I need it to be
everywhere and fast and accessible.

The Postgres, because it's mostly
going to be in backgrounds,

I'm not as worried about it.

It's going to be like background
workers for storing tomorrow's events.

Like I think, I'm sure there'll be some
sort of flaw in this, but I was thinking

like a midnight cron, which is challenging
because time zones, but like a nighttime

cron for each user at their nighttime,
or however, that's going to be that just

checks to see if they have any upcoming
events that we don't already know about.

That's the thing where it's some
of the events are coming in through

a webhook because they got put on
your calendar at the end of the day.

And then some of them aren't.

going to be, or maybe I'll throw
them away if I, if they're not for

today, I have to figure that out.

Cause I guess something gets put
on your calendar and two weeks from

now, I don't really want to store it.

until two weeks from now.

so yeah, calendars, they're fun.

CJ: calendaring and
dates are just so tough.

Like it's, it sounds like a
fun little project though.

that, is probably exploding out to
be way more than a little project.

Colin: A little bit.

Yeah.

it's helping me to learn
some of the Discord stuff.

And then I'm viewing it on
Cloudflare because it's one

of the vendors that we do use.

Like I can't go use Versal or some
of these things without like vendor.

I just don't think it's even possible.

So I think we can do things on Google,
GCP pretty easily, but we have more of a

push towards doing things on CloudFlare.

It's easier to deploy to and try
not to run VMs and things like that.

and Google, we can talk about
it later, but like Google Cloud

run is like an alternative on
Google, which is pretty cool too.

but yeah, we actually don't use AWS.

We probably do for something, but

CJ: Yeah, sounds familiar.

There's once you get to these big co
tech companies, there's always like

lists of approved vendors that have gone
through, all of the vetting processes

and contract review and whatever, to
make sure that everything's cool where

man at a startup, it's pretty nice.

We get to just pick and choose
whatever we want to work or work with.

and

Colin: You're like, who's going
to give us the best, the most

credits and the best deal?

And what can we move away from if
we needed to easily and all of that?

CJ: Yeah.

I think it's, it's totally public now.

I can't remember if we've mentioned
it on, on the podcast, but we did get

into YC and through Y Combinator, we
get we've, I don't know, we've been

given so many free credits and things
to different services that have been

really helpful because it gives you
like, a chance to experiment with

stuff and like really push its limits.

Colin: It's nice to not take the
money that YC gives you and then

just spend it on services, right?

It's that money can go towards
the team and you get free credits

to at least get to try to get to
product market fit on credits.

CJ: Yeah.

Yeah.

And yeah, I was like, man, for the
startups who are not in accelerators,

this is, I feel like it's quite a leg up.

honestly, like the, all the credits
and stuff you get as part of

the accelerator and the network
connections, they, I don't know,

Colin: Yeah, it's pretty crazy.

Yeah, we got a lot in tech stars.

Microsoft actually doesn't require you to
be an accelerator for this very reason.

They're just like use Azure.

And I think that's because they want
people to use Azure more than anything.

They're like, if you're a startup,
if you can show us your LLC or

your incorporation docs, like cool,
we'll give you a lot of credits.

Because if you grow and successful,
you're probably not going to

get off that cloud, which is.

A good gamble for them.

It's like the first
taste free type of thing.

CJ: Yeah, I feel like Microsoft does
that all the way down the stack.

They like give away so much
free stuff to like schools too.

It's

Colin: Bundling is yeah.

They're like, oh, we got to
teach you access in college and

spreadsheets in Excel and Google doc.

and then Google's no, no schools.

We're going to give you
all of our stuff for free.

CJ: Yeah.

Yeah, so Logan just got a, a PC.

so he's been building and designing like
all these custom gaming PC components,

and then he was gifted one and just
yesterday, so he's been like switching

back between his Mac and his PC and
like starting to feel the frustration of

Oh, it's command, not control for, copy
and paste and little things like that.

And it's funny cause on the PC he's
using Bing and he's using all like

the built in stuff, which is just.

So different than what he's
used to on the Mac and,

Colin: it's a lot of context
switching, tool switching.

CJ: Yes.

Yes.

But, I like making sure that he's
getting exposure to all that stuff,

but, so we've been working on
building out this, it's like inventory

management, project management, CRM tool.

It's basically like a giant crud app
right now where you can create these

paint projects and you can create
locations and you can, upload images

of the rooms that are going to be
painted or the exteriors that are going

to be painted, cabinets, et cetera.

And because there's so many little forms
that you need when you're building out

a project, I wanted to, improve the
usability by adding some like quick ad

features with modals where you could like,
Oh, let me click this link and it'll pop

up in a modal that lets me like quick add
a location or, add a room while I'm trying

to build out an estimate or whatever.

And so as I was doing that, I was
like, Oh, I think I want to use turbo.

so like hot wire and like turbo
streams and turbo frames and all this

stuff to try to make this happen.

And so I was like, let me
go try to get into this.

And there's a couple of
interesting bugs that I think

a lot of people will run into.

Colin: And

this is all Rails stuff for

CJ: yeah, yeah, like you can use
hotwire outside of rails, but

it's, yeah, I think it might be

Colin: It came from

CJ: in some places, but
yeah, came from rails.

The idea is that you can build more
interactive apps, but you have like full.

Client server interaction.

And you build it, you like, you
basically build the application as

if it's like a dumb server rendered
app, but it uses web sockets, like

it like upgrades to web sockets when
it can do smart things on the client.

So The easiest example is if you click
a link, it, will fetch the resulting

page and then do a diff on the
result and inject only the parts that

changed, when you clicked that link.

The, like longer story is that
you can build sort of multiplayer.

Experiences like you might see in Google
docs where there's like lots of people

in there typing at the same time using,
these things called turbo streams.

And the idea is that or the way that,
the jumpstart generators work, cause

I'm using jumpstart pro as the base
for this is that in every single model,

there's three after commit hooks.

So if you create update or delete
something, then it will broadcast out.

Pre pens or deletes or
whatever removed from the page.

So like just by default,
it feels multiplayer.

So if you're looking at like a list of
projects and someone else in another

state creates a project, like boom,
it'll pop onto your screen as a project.

And that all just comes
out of the box for you.

and so I thought I was being clever
in with these quick ads where it's

like, Oh, I want to add a room.

So I'll pop the modal and then when you
submit, it will, it's going to submit

with turbo streams and then I'm going to
broadcast and update so that it updates

like a dropdown in like the bottom form so
that it shows the newly added thing that

was quick added and what was happening
was like everyone's select boxes.

We're all getting updated
because I wasn't targeting or

like scoping down the broadcast.

So like by default, oftentimes you'll see
like turbo stream from, and then a string.

And that's like the unique string.

That's like the channel or like the room
that the web sockets are listening on.

And so I was just saying Oh,
on every single page, we're

all going to listen to the same
channels for that page, basically.

And so when anyone was making changes,
it was updating everyone else's stuff,

which became a, it was like quite
funny, Oh, we were in the middle of

this giant migration and we had to
basically just pump the brakes for

everybody, okay, nobody touch anything
because right now we're all like adding

items to each other's pages and stuff.

And, yeah, so the crux of the.

Problem was that like, when you are
broadcasting, you want to broadcast

with the, an ID that makes it so that
it's scoped to that specific page.

So for instance, if I am on an estimate
page where I'm adding a room that is

related to that estimate, then when
I broadcast, I only want to broadcast

like for that estimate underscore ID,
instead of just estimates or whatever.

And then that way it won't
end up on everybody's pages.

Turbo has been super fun to learn.

I think I'm late to the party for sure,
but it is, yeah, I'm sure a lot of

people have run into that same bug, but.

Colin: This is one of those
Oh, it works on my machine

CJ: Yes.

It's like you don't encounter it until
you're in like these multiplayer modes.

Colin: Yeah.

You're like, Oh, it added it to the list.

I guess we're done here.

Let's

CJ: yeah,

Colin: in.

And

amazing.

CJ: So that was fun.

But, yeah, turbo and turbo frames
and turbo streams and, I dunno.

all of that has been
really fun to play with.

And also it just worked so
seamlessly with stimulus.

I think I wrote three lines
of JavaScript and got like all

these crazy modals working,

Colin: And that's the
inspiration behind it, right?

Is that normally you'd have to do a
bunch of react, manage a bunch of state,

have a bunch of APIs just to do that.

And I see the appeal of
each with like react.

You can have this like really crazy,
fine tuned user experience and do

exactly what you want and when, and then
sometimes you just need to build an app.

And I'm running into this right
now at the coworking space.

We've been using this software for.

years that used to be like conference
room booking and it had an iPad app

so you could see like the conference
rooms booked or not and you could book

it and they just decided to go from
like you can have as many people in

your office to having 15 people in
your office at our very expensive plan.

And they've been slowly moving
upstream to like enterprise.

Like they work with the biggest companies
in the world to help them now with who's

coming into the office, who's got what
desk, who's got which conference room.

And we only needed it
for conference rooms.

And it pains me to pay for it because
it's great software, but now we're paying

a lot for one piece of what it does.

And now with this update.

We like have to get off and now
I'm deciding, do I build this?

Do, and which parts do I build?

It's a lot of the calendars stuff that we
just talked about, which is also scary.

do I just build an app that just.

Turns red and green based on the
availability of the calendar.

Cause right.

Thankfully, like we use Google calendar
for both the rooms, but I'm trying

to decide, do I do a quick little
rails app and like turbo stream,

like just broadcasts, like available,
not available, not available.

They don't need to book
the room on the iPad.

Like I'll, I think it could just be like
a website on an iPad and we'd be fine.

So interesting.

This is one of those, because I write
code, I can get myself in trouble.

Cause it's should I build this?

CJ: Right.

What are we talking about?

Like in terms of monthly
price for something like that?

Colin: So this is where it's not a
lot in the grand scheme of things.

I think it's like 1, 500 for the year.

So actually no, it's more than that.

It's 150 a month.

CJ: Yeah.

Okay.

Colin: so it feels like a lot because
I will say like coworking spaces.

I have, I don't think we've talked
about it on this show, but I've

thought about building coworking space.

Management software and it is, it's
something that Jelly Switch and

Dave Paola, who is our past episode,
past, past guests has talked about.

It's a bad business to be in.

I'm assuming that's the same thing that
happened with the people we used to use

is that it's the margins are so low.

Coworking spaces work as a business if
they can break even, but there aren't.

going to be upgrading and doing like
expansion revenue and all this stuff.

You have to go upstream to the
office management for bigger

offices or yoga studios or
CrossFit gyms or things like that.

We talked about this with Mike because
he did do coworking space software and I

actually met with him and he recommended
do not go like they . Cause it was just

very, every coworking space is different.

Every subscription is different.

Every business model is different and
they usually are non technical people.

Running them.

And so I'm probably in the minority
of like software developer running

a coworking space who also wants
to write their own software.

And, of course, mine's going to be
better than all the ones out there, but

in real world, it probably won't be.

so yeah, I dunno, it's not the biggest
thing, but honestly, I still can't

find just an app that will show.

red or green state based on
calendar, but I have asked

chat GPT to help me with this.

And it's, I think it'll make it
like a day or a weekend project

instead of a multi week project.

So

CJ: Nice.

Okay.

if, yeah, if you are already paying that
much, an interesting nugget that I got

from one of the recent episodes of build
your sass, Justin was like, Oh, not enough

people are saying that you could just go
downstream and just charge less money.

And if you could get a room booking
thing, that's 20 bucks a month per iPad

or whatever that needs to connect to it.

Or I don't know, like how you
would do it, but figure out some

interesting pricing and then.

Build your thing on the side and
then have some other coworking

space pay for it or whatever.

it seems like a problem that a
lot of people might have, right?

Colin: Yeah, and I think shy still
listens to this, but hi shy, if you're

listening, but he, I used to work with
him at orbit and he built like a, it

was called overbooked, which we'll throw
it in the show notes and it's in, it's

an elixir, with Phoenix, I believe.

And it's really cool.

Like it, it actually has most of the
room booking and checking to see if

the room's available and all of that.

It needs the API to like.

display, whether or not the room is
available on an iPad type of thing.

so I'm thinking about just forking that
and adding the Google calendar sync to

it, cause it's an open source project
and shy spent some fun time working

on that and getting it, working on it.

I've never used Elixir or Phoenix.

That's the problem there.

It's Do I want to learn a new language?

I actually do want to learn Elixir,
but, am I going to get my project

done if I also need to learn Elixir?

So that's the balance of
the build and the learn.

But, yeah, I agree on that
other front of just, maybe I

don't build co working software.

Maybe I just build conference room booking

available, not available.

but

CJ: Hot or not.

And by hot, you mean it's booked.

Yeah.

Colin: Can't use the room.

green is go.

CJ: Is it, so would you build like
a mobile app for, like for iPad or

would you just use like the browser?

Colin: I've gotten, yeah.

I could do it in a quick react app
that just lives in the browser.

the alternative I was thinking about
is like doing react, turbo native, do a

rails app that can be shipped to Android.

And it says depends like if I just
need it for us, I'm going to go

the quickest way if I was going
to build it as something I sell.

With accompanying apps, it'd
probably be like Rails or React

Native or something like that.

So TurboNative, React Native, cause I
don't want to support Kotlin, Swift,

CJ: Yeah.

Is there like a no code solution here
where you have the iPad and you put it

like in caffeine mode or whatever and
you just have it on the Google Calendar

page that's this is the page that you're
gonna see and it's like the actual

calendar for the day of who has what time?

Colin: Yeah, we might be able to do that.

We used to have whiteboards.

I will say that did not work well.

Um, cause people would just write
in that they have it, even though

someone booked it on the calendar
and it's we need it to refresh that

people are there and it's like at the
end of the day, this is almost like.

The Google calendar thing I had,
I don't care about tomorrow.

We only care about today.

So it's just show the
list of events for today.

And if you want to get on there, then
maybe we do like a type form that

adds your event to the calendar or

and then put a QR code on the door,
actually at WeWork, I was shocked,

like for as big as WeWork is and as
much money as they've burned, they

just have a QR code on their doors.

They don't have iPads.

CJ: Wow.

Colin: Yeah, calendars.

that's the theme of my life right now.

CJ: Yeah.

They're tough.

They're super tough.

Colin: But yeah.

I guess we're both building and
learning about turbo streams and

calendars and booking jobs, And with

discord, we, we run into this
thing where we want to be able

to like stream developer events,
but we can't show our code.

but the stuff that I'm
working on is completely open.

the Google calendar app,
I'm not using internal code.

I'm using the same APIs that
developers have access to.

so I'm wondering, and I'll have
to talk to my team about this.

So hello, if anyone's listening,
but, just figuring out, if I want

to be that kind of dev rel, I think
that's, we're trying to figure out,

do I want to be more public facing?

Do I want to do streams?

Do I want to work on this live?

What are the pros and cons to that stuff?

Will people show up,
those kinds of things.

Cause some of these calendar things
I could see being some entertaining,

like calendar wrangling live, and just.

hanging out with the community.

we do these events that, one of our
community managers runs where it's like

code and chat where the devs, building
bots and apps just hanging out, but it's

more like a lo fi, body doubling type
of thing where it's like accountability.

Like we started the episode with more than
we're not going to show you how to do it.

We're all just hanging out, just
talking about what we're working

on and hopefully working on stuff.

So digital coworking.

So

CJ: I like that.

Yeah.

It'd be interesting to see, I
think all those directions are fun.

So whatever, yeah, whatever you
land on, it'll be interesting.

All right.

let's wrap it there.

As always, you can head
over to build and learn.

dev to check out all
the links and resources.

We'll put all the fun
things in there about neon.

tech and all the other
things that we talked about.

And, yeah, I think that's a wrap.

Colin: Awesome.

And we don't do this often, but
if you enjoy the show, think about

giving it a review or giving it a star
rating so other people can find it.

we are back this episode,
we'll keep them coming.

So thanks all.

CJ: Bye friends.

View episode details


Creators and Guests

CJ Avilla
Host
CJ Avilla
Developer Advocate @StripeDev. Veteran. 📽 https://t.co/2UI0oEAnFK. Building with Ruby, Rails, JavaScript
Colin Loretz
Host
Colin Loretz
I like to build software and communities. Building software at @orbitmodel 🪐 Coworking at @renocollective 🎙Sharing software learnings on @buildandlearn_

Subscribe

Listen to Build and Learn using one of many popular podcasting apps or directories.

Apple Podcasts Spotify Overcast Pocket Casts Amazon Music
← Previous · All Episodes · Next →