Ep 2: Dynamic Country Labels
Hypandra · February 3, 2026
Transcript
Reading mode0:09Hello and welcome to episode two of
0:09Curiosity Builds. I'm Trevan H with
0:11Hypandra. I did not introduce myself on
0:13the last one. And what I'm doing is I'm
0:16trying to do some vibe coding live and
0:19some public learning as I work on my
0:22website
0:23tool and extension that I've created
0:25BorderlessWire which the goal of that
0:29BorderlessWire which the goal of that
0:29being you can search around the globe
0:31for
0:33your country of choice. You click into
0:35it and it gives you information about
0:38that country, news stories uh in your
0:41native language, etc. We're still kind
0:44of flushing the idea out while we're
0:46building, but that's the goal and that's
0:48what you're watching. Whoops, wrong
0:49direction. Here we are. So, last episode
0:52I added color to the map, which uh we
0:56need to refresh that color. Look at
0:58that. This is what we did last episode.
1:00This episode, we're going to add some
1:02country labels because not everybody
1:06knows every country. Okay, you might
1:07know that that's Brazil, but did you
1:10know that this is Bolivia? Maybe you
1:13did, maybe. But it would be nice if it
1:15said Bolivia, right? Okie dokie. Oh,
1:18yeah. So, this is kind of like the early
1:20scaffolding of what I was trying to do,
1:22right? Adding a little bit about the
1:25country, but we'll be working on that
1:26through different episodes. This one is
1:28just about adding some oops, keep going
1:31the wrong direction. Some uh country
1:33names. So, we copy that. Command shift P
1:37simple browser. Get that in the screen
1:39here so we can kind of see what we're
1:41doing a little bit
1:49in screen there. Okay. Over here to
1:49Codex. I'm going to turn it into
1:50planning mode and I'm going to speak to
1:52it because I like to talk naturally to
1:54my agents. I don't get bogged down by
1:58the analysis paralysis that comes with
2:00trying to type a perfect prompt. I screw
2:03it up. Just try more later. It's just
2:05easier to talk. So, here we go.
2:08I want to add country names on the map
2:11so that way every country is labeled
2:13clearly. I don't want the text of the
2:16country to bleed over into other
2:19countries. But if it's a small country
2:21or it's broken up over many islands like
2:24Indonesia, we can have the country name
2:27cover the top of those islands or the
2:30border or it can be outside the country.
2:35However, I don't want it to look messy
2:37and cluttered. So, if a country is
2:39small, then the name can remain hidden
2:42until you zoom in closer. But if it's a
2:44large country like Russia or the United
2:46States, it takes up a lot of space.
2:48Let's have the country name on there. I
2:50don't want to do abbreviations if we
2:52don't have to.
2:54All right, that was a long prompt, but
2:56that's what I said. And it is going to
2:57go into planning mode and work on it
2:59while it's thinking. It will tell us
3:02what it's doing, and then a plan will
3:04pop up over here that we can review. And
3:06that's very important because you want
3:09to see what it's doing before it acts,
3:11especially if you're new to this. Oh,
3:13it's going to ask us some questions
3:15also. So, at what zoom should smaller
3:17countries start showing labels? I'm
3:19unsure. So, I'm going to say I'm unsure
3:22what it will look like. So, why don't we
3:25start with the most conservative option
3:28and we can change if we need to.
3:32Next question.
3:40label preferences
3:40soft atlas style bold legible darker
3:43clear halo let's do the bold uh all
3:47right let's see what it does with that
3:49wallet builds while it builds a plan
3:52doesn't actually build yet all right
3:54look at that plan tells us the goal
3:56render country name labels on the globe
3:58with minimal clutter large countries
4:00labeled at the base zoom small countries
4:02appear only in a higher zoom label
4:04should avoid overlap and be readable.
4:06Yep, that sounds like what I wanted.
4:08It's talking about the files it's going
4:09to use and the approach comput
4:17after GI all of this. I don't understand
4:17some of these, but I learning. So, it's
4:20basically giving you the steps that it's
4:21going to build this out. Add a new map
4:23libra symbol layer. Control visibility
4:25with the zoom function. Validate
4:28rehability. This is the part it will
4:29probably suck at. So, we'll be the ones
4:32that validate that. But, you never know.
4:34We'll use a conservative threshold and
4:36then it gives the to-dos. So, we're
4:38going to click build because I approve.
4:40I can sit here and watch the to-dos work
4:42or we can go over here and see if it
4:45pops up. Sometimes, I've said this
4:46before, changes will pop up after this
4:49happen. Sometimes it'll all happen at
4:51the end. It just depends on what you're
4:52changing, how complicated it is, and I
4:55also think the agent um It's going
4:58through. It might look like it's not
5:00doing much, but it is. It's working. And
5:02you can see the to-dos are going to
5:05start filling in here. Right now, it's
5:07doing to-do number one. Compute the BB
5:09box base labels. Did that. Now, it's
5:12doing step number two of three. Add the
5:15map Libra symbol layer with the bold
5:17atlas labels. And then step four, which
5:20I don't or step three, which I don't
5:21remember, was gate label visibility by
5:25tier and zoom threshold, which it did.
5:27Now, it's going to probably do linting
5:29errors, which is like the last thing it
5:30likes to do. And then it says, "Oh, I
5:32did it for you." Um,
5:35sometimes it'll refresh on its own.
5:36Sometimes I have to refresh. Right now,
5:39I don't see anything. We're zooming in
5:41and around. I see nothing, but maybe we
5:43click refresh. We'll get something.
5:44Let's see.
5:47Two issues. All right. Something could
5:50be blocking it. Let's also check the big
5:52uh preview
5:55here.
5:56Just make sure
5:59two issues. So what happens when that
6:00happens? You can click this. Oops. You
6:03can copy the issue right into the
6:05terminal so it looks at it and tries to
6:07debug on its own. So you don't have to
6:10sit there and spin your wheels or go out
6:12and search somewhere else. Because the
6:15point of this is learning how to do
6:17this, understanding how it works, but
6:19also doing this because of the speed and
6:21the accessibility that it provides. This
6:23is not something that I could have done
6:24on my own very easily at all without
6:27substantial learning. I'm still
6:30learning, but I'm able to do because AI
6:33breaks down some of those barriers. All
6:35right. Says give it a refresh and label
6:37should be there. Another issue we had
6:40to. So, we will see if it solves both of
6:43these.
6:45Oh, stale. Yes,
6:48I'm assuming stale. Sometimes the words
6:52are exactly what you would think and
6:54then other times it's wild. It's not
6:56it's not even close to what the word
6:58means out in layman's term layman the
7:00layman land where I live
7:04where I live.
7:08If you want tweak I don't see anything
7:10going on here. It's really struggling
7:12here. Um
7:20copy this.
7:20Then I'm going to give it additional
7:21context.
7:23I still only see the colored map. I
7:26don't see anything appearing at all. So
7:28I'm not even able to give feedback on
7:31the legibility because it looks like no
7:33changes have been made.
7:36So now it's got my context and this um
7:40air that it found. And we'll see what it
7:42does with that.
7:44We'll see what does that. But we're
7:46getting there. We're getting pretty.
7:47It's not like this is going to be,
7:51you know, instant. We're creating
7:52something from scratch. And I am being a
7:57little picky on how I want it to look.
8:00So, yeah, we might need to refresh the
8:04uh local server because I think I did
8:07not do that actually. So, I'm just going
8:09to kill this terminal. I'm going to
8:12start a new terminal. There's probably a
8:14better way to do that. And I'm going to
8:15run this command bun dev in the terminal
8:18directly which will restart the server
8:22and we will get rid of that
8:27a little bit
8:38I don't see anything. So it might not be
8:38that issue. So we'll go back and we'll
8:41ask
8:48Nothing shows at all. So I'm not able to
8:48read.
9:01Whoops. See, look at that. It went to
9:01Google because I didn't know what I
9:02wanted. The wrong copy.
9:06Tries to be helpful. Sometimes it is,
9:08sometimes it ain't.
9:11Simple
9:18simple
9:18browser.
9:31I wonder what the problem is. It's doing
9:31something. It's not working. So,
9:41I'm seeing no changes at all with what
9:41you're doing. It's some kind of
9:42rendering issue or maybe there's some
9:44kind of thing blocking the scripts from
9:48being seen. I have no text appearing on
9:51the screen and everything remains static
9:53as it was prior.
10:01Do something that's going to have the
10:01most consistency and the least amount of
10:03bugs when it comes to adding country
10:05labels.
10:12Sometimes I just have to
10:12dial back what I'm trying to do. Um, if
10:15the zoom and the labels are too
10:17complicated,
10:18it might be worth just having it add
10:21labels and work out the zoom thing in a
10:23second step. I also switched out and I'm
10:27just kind of going back and forth with
10:28the agent. I could pop back into plan
10:31mode to have it think a little more
10:32about it. And then if this fails, I will
10:36switch my agent and go to Claude and see
10:37if Claude can do a little better. But
10:39this should be
10:42working.
10:49Oh, hey, something happened. I think the
10:49zoom need to be really zoomed in.
10:55What's going on with some of these
10:55countries? So, yeah, there's something
10:57going on. It's trying it's trying it
10:59little little best. Um,
11:05yeah, it looks like there might be some
11:05missing
11:10stuff. I suspect the labels don't show
11:10because the issues with feature property
11:12names, symbol placement, or zoom based
11:15text. Yeah, it does its own
11:17investigation. Like I said before, it
11:20reads what it's supposed to do and then
11:23it tells you what it's doing in a
11:25legible way for you. So you can go back
11:27and check out all of the things it's
11:29trying to do and understand it
11:31reasoning. All right. To maximize
11:33stability, it did something. Let's go
11:35back and read that. To maximize
11:36stability, I removed the dynamic text
11:39opacity
11:41expression and split labels into three
11:43separate layers. Large, medium, small,
11:45each with a simple minimum zoom
11:49constant. Okay. You say you did this.
11:53Let's see.
12:19Don't depend on any external host. Keep
12:20everything local. You had some labels
12:22pop up for a second, but now they're
12:24gone again.
12:25I want to be able to look at the globe
12:27and see country names if the country is
12:30large enough to hold that name.
12:33I also want to be able to zoom in and
12:35see the country name fill on to the
12:37whole country as I approach. If this
12:40needs to be done locally so we have the
12:42most control. Let's make sure we do
12:43that. Whatever you're doing right now
12:45seems to be failing.
12:51All right, that's it. Last try. And if
12:51this doesn't work, I will switch over to
12:53Claude. The reason I don't use Claude code
12:56is I want to save that for things that I
12:58I think are more complicated and I don't
13:00want it to spend my tokens
13:02unnecessarily.
13:03Um
13:05so hopefully
13:08the designing that it does and making
13:10its own local overlay will uh solve the
13:14problem. Little more work. It does try
13:16to take the easy path first. I
13:19sure that's part of its internal
13:21prompting from their companies. They
13:23want to make They don't, you know, do a
13:27bunch of calls into their data centers
13:29unnecessarily or for things that can be
13:31taken care of more simply. But in doing
13:33that, a lot of times they will try to
13:35take shortcuts or make assumptions. Oh,
13:37look at this. What's going on here?
13:40Dang. Okay.
13:43All right. Well, what happens when I get
13:46over here? Oh, yeah. Antarctica. I love
13:48it. And what is this?
13:52So,
14:01it's really failing here. So, what I'm
14:01going to do is I'm going to go into
14:04cloud and see if we can fix this mess.
14:07New terminal
14:09cl.
14:17I'm going to change to ask. Can you
14:17write a very simple description of what
14:20you were attempting to do? So I can give
14:22it to Claude and have them give it a
14:24try.
14:26That way I don't have to reexlain it.
14:29I'm going to give you a prompt from
14:32Codex. It's trying to apply country
14:34labels to my dynamic globe. It's not
14:38doing very well. The country labels need
14:42to be attached to the country. If the
14:44globe is rotating, the labels should
14:47rotate with the country and move out of
14:50vision. Now they're just dancing around
14:52as the globe moves. I also can't see
14:55other country names. It's just a mess.
14:57This is what it's saying it tried to do
14:59so you can understand the context.
15:02And now I'm going to
15:21All right, let's give Claude a try here.
15:21We're using Opus 4.5, which is the
15:25highest
15:27thinking model I believe they have right
15:29now.
15:31Should
15:33should do a little better. Although I'm
15:35surprised. This is also partly me
15:38learning. Every time I'm adding a
15:40feature, I'm doing something I've not
15:42done before. This globe's new. These
15:44country labels are new to me. So, I'm
15:47learning how it works and how prompting
15:50uh can get this to be better, how my
15:53description can be improved.
15:54Additionally, we are trying to create a
15:57library of all of these things that we
15:58create. So later we can reference them
16:01the code and the LLMS can reference them
16:04easily and not struggle through. So if I
16:06wanted to add some kind of globe feature
16:08later, hopefully I'll have all the
16:10lessons saved from this so we can
16:12implement quicker.
16:15Let's see. Do you want to proceed? Yes.
16:18So, some commands I have like they're
16:21naturally set up to require you to push
16:23a button. I could go through and tell it
16:25not to do this again, but we'll just
16:27keep it as something I have to manually
16:29approve. Some things are good to have uh
16:33set to automatically go through. Other
16:35things it's better for me for you to
16:38check. Keep an eye on it. You don't want
16:40it to just always act. And sometimes
16:43having those checks are good because you
16:46can catch it from loop. One time I had a
16:49problem. I was trying to debug and I
16:51just kept saying yes, yes, yes, yes,
16:53yes. And then I ran out of tokens and
16:55when my business partner looked through
16:56it, he's like, "Oh, you were just having
16:58it do the same thing." Because it just
16:59kind of got stuck. Couldn't figure it
17:00out. So, I burned a bunch of tokens and
17:03I couldn't use
17:05uh Claude for the rest of the day
17:07because I wasted it. So, it's always
17:10good to be a little more mindful on what
17:13you're doing and be a little more
17:14intentional so that way you're less
17:17calls, which is good. You're being a
17:20little more discreet in the features
17:23that you're adding. So that way, if
17:25something is wrong or something doesn't
17:26work well, you're not, you know, trying
17:28to do too much at once and you're saving
17:31money or tokens at least. So, it's still
17:35going because it's a lot to to think
17:37about and do, but um
17:42Okay, so we're getting somewhere. I made
17:45this a little So it's easier to see. I
17:47didn't want to sit here and let you sit
17:49for 4 minutes and 22 seconds. But look,
17:52so Claude added these labels. It is
17:56getting better. I like it. I can zoom
17:58in. I see the country. It is a little
18:01more dynamic. It moves, but they
18:03disappear. It stays on the country as I
18:06zoom in. I love it. What does Indonesia
18:09look like?
18:11Yeah. Okay. So, that kind of concludes
18:17this other episode. Sorry, it's a little
18:19jumpy. I just didn't want to sit. There
18:21was a couple long periods of waiting.
18:23So, that's why I clipped these together.
18:25But, I am happy with this. So, we are
18:27going to commit this
18:29and call it a day on this. And I spelled
18:32that great, didn't I? Um, okay.
18:37Cool. I hope you learned a little
18:40something or at least
18:42got something out of that. I've got a
18:45spinning globe now with labels all over
18:47it. And soon we'll be able to move on to
18:50the next piece, which is getting the
18:52country cards and the information that I
18:55want when I click on things like
18:56Greenland. You know, maybe something's
18:58going on there that I want to learn
19:00about. You never know.
19:03You never know. Anyway, don't forget to
19:05commit and don't forget to stay curious.
19:07Have a great day.
