small and big things: tensegrity and institution

how a smaller town like black mountain has managed to get water, power, internet, back online quicker than asheville (~10x size) is really fascinating to me.

i'm realizing that my kind of lazy assumption is that if you're bigger > you have more resources > therefore you do more faster.

this observation is not about winning or who got there first who or something.

it's more the fascination of my assuming that the bigger thing, with more resources, could self-sufficiently get its resources back online quicker than the smaller thing.

annnd, that external forces would get drawn into the big thing quicker than the small thing.
-- this seems to be true in the small, and rural, towns tucked into valleys. but my sense is that's more a logistics than anything else.
-- asheville and black mountain are both accessible relative to more remote places.

some other questions on this observation:
  • what's the nature of a big thing?
  • what's the nature of a small thing?
  • how fast can the big thing move? how much bureaucracy is attached to it?
  • how fast can the small thing move? what are its motivations vs. its content to be small? even then, what's the nature of its small-ness (300 spartans vs. 300 persians)?
  • how well do people have to know each other in either the big or small thing prior to needing massive cohesion? like in response to a 1,000 year flood. there's a general sense that the U.S. was united after 9/11 right, so seems possible at the biggest of scales.
  • is there a bias towards helping the small thing because you assume the big thing is more self-sufficient? did black mountain get more external help because, whether assumed or know, it had less at its fingertips right away?
  • can any of this be generalized enough to be meaningful? 
  • or, is it so hyper-specific to the makeup of each small or big thing that you really can only understand it in retrospect?

back home, 48 hours

we've been back in black mountain for about 48 hours. for those, we again stayed across the street at our neighbor's house. my brain has not fully been able to keep up with his generosity. 

tonight, we moved to another friend's house closer to the center of town. it's off montreat road, where i've run many miles. especially recently. it's much more comfortable -- our neighbor's has been in a phase change of getting ready to sell. this is a home. 

on sunday, two men from a group of outside building inspectors came by to take a look at the house and asses damage for the city. out green, yellow, and red categories, we managed a yellow: restricted use. their onceover was to see if the house came off its foundation and it did not. we also heard tonight that insurance won't cover it since everything was a flood. while we don't own the home, that's a bummer. especially for all of the people who do own homes and will get the same runaround. it's hard not to feel as if insurance companies really are not a very good mirror up to our humanity.

we've eaten three meals now at the old railyard. they've got a big operation there full of clothes, a supply area, and two free meals a day. the meals are wonderful and there's a kids area -- major key. 

both meals today, i wanted to cry in line waiting for feed. i was seeing myself outside of myself and what i saw felt very surreal: uncertainty, family, baby on the way, major natural disaster, all shuffling forward for food. we could (inconveniently) manage to cook food. we could also buy supplies. but we really need help and there are so many people helping. 

rather than recount all of the little details for these last few words -- they are there, but my body is really, very, drained for some reason -- i'd like to just think for a second about all of this: 

................
................
................
................
................

i can't wait for my friends and their families to come back. i think that our little project in community here in black mountain will be even more pliable and durable because of all of this. 

thanks be to God.

my neighbor lives

after i learned about cursor.com, i went to my notes and found the with all my internet ideas and scrolled through. 

at almost this same time, i'd heard an ad for bland.ai on dwarkesh patel's podcast while on a run and knew exactly the idea i wanted to try out. (fn)*

i've been the emmisarial tech support person for family members over the room. you know, guy who's 31 and wears glasses; that one? it's baked into my destiny. i don't know most things, so i'll just google or youtube mostly too find the issue they're describing. more recently, i switched to asking chatgpt. 

as i'm sure anyone who works in IT will tell you, getting the user to describe the problem they're having, any errors they see, learning how to screenshot, how to look at their browser console, or god-forbid clear their cache is quite challenging. plus, i really only get asked when i'm in the room which makes me wonder how often they run into issues and just kinda don't do anything about it. or google and youtube the problem while trying to interpret. it can be kind of a lossy process.

so my idea was for a tech support buddy backed by some ai-fairy dust that could just be infinitely available and helpful. and who has the knowledge of their internet at their disposal. 

if i graphed the rate of my internet ideas post chatgpt, it would be up and to the right. probably hockey stick-esque. only because things are just obviously more possible and reachable for normies than ever. my brain has gotten ahold of that and is less inclined to say, "ahh, i can't do that because i can't code." 

as i've found out working on this project, anyone can code now. the difference maker is whether anyone can figure out how to not get absolutely stuck in the deployment process. in like 2 days, i have the basics of the codebase generated, the apis set up and connected through an (.env file!), and referenced correctly in the environment. i had the chat function working on the local host but i couldn't get the call function to work. i was majorly stuck on this. 

feeling like i had half of it at least, i started figuring out deployment and thought i could get it working along the way. i'd used netlify's frontend for a past project and firebase's database. so, i went back to what i knew. once again, major issues with serverless functions, figuring out whether i was doing that through netlify or firebase, and how it all worked together. 

to get unstuck, i looked into other options and did a bit of chatting (all in cursor) to figure out how this all works. i typically get ahead of myself trying something and then figure out how to keep going in it, or learn it, along the way. 

this works for my running life, it doesn't work as well for deploying a project to the internet. i really needed to learn this. 

i've done a few other blogs along the way (here, here, and here) to try and process all of it. that definitely helped. 

when i got stuck on netlify and firebase, i moved to vercel. screwed that up. about that time, replit agent came out. signed up for that, tried to build in one shot, and didn't make it (NGMI). so, i went back to cursor/chatgpt to think and learn about how to construct a front and a back end, what serverless functions are.

but, some major things i learned that helped break the ice for the ship to get through

  • setting up a frontend and backend through netlify
  • i often think problems i'm experiencing are really big and that i just need to keep showing the terminal output code or browser console screenshots to the ai and it will have this aha! moment and reveal some deep technical knowledge from back in its brain, when really a few simple errors held me back
  • e.g. 1: i'd named my serverless functions in netlfiy BLANDAI_API_KEY and the code referenced them (correctly) as BLAND_API_KEY. e.g. 2: when i couldn't get the call function to work (the piece of the app with the most value, i think), cursor kept suggesting that i create a test-bland-api.js file and run a test on that and i just kept overlooking that because it would be option 6 out 10, with option 1 being like more technical. turns out, i should've just run the test because that worked and it helped me then figure out how to adapt it to my code and make the actual function work

i've now demo'd my idea with my dad, my mother-in-law, and my wife. watching and listening to all of them interact with this thing i got on the internet was a really cool feeling. hearing them interact with an ai voice model that can have a conversation with them and talk to them about tech issues (the idea!!) was another really cool feeling. and after talking to each of them, i made changes that affected its usability. right after. that was invaluable. 

so, now to go figure out how to get my first 10 users and keep hacking! 

command line interface

"different errors is good."

there's some kind of weird 80/10/10 thing that i've experienced developing with ai so far: it's incredibly easy, and getting easier by the day, to get all the code written and test on a local host in minutes (sometimes seconds). 

the next 10% is spend figuring out why this little command in the terminal returned an error, what that error means, and how to communicate it back to the ai i'm coding with with enough context to move the ball forward. this part's very difficult. i've likely sent tried to "debug" the same error by sending marginally different messages back to the ai, all for it to send marginally different messages back. 

this is a massive own goal. often, it's a failure to zoom out on my part; a failure to learn as i go. for the first 80%, you feel like a god when you watch the code stream down the screen. when i run into these bugs, it takes courage to stop and reflect. for some reason, this is painful (or at least uncomfortable) to do.

if, instead, i tried to understand what api calls are and did some googling on 404 errors quicker, i might find that i'd been trying to deploy to vercel without the vercel CLI installed. or, that i'd had code referencing my old netlify frontend as well as my new vercel backend. 

if you have any ambition at all, slowing down to think about what things are and how they fit together is a risk. there's a serious line between doing and thinking about doing. and for me, as someone who is not a programmer, doing is the thing is thing i think i have to keep doing in order to stay in the game. to not quit. 

if i spend long enough not quitting, at some point i will win.

deploying a project, v.2

for a non-programmer, i have a lot of ideas in the world of bits.

yesterday, i wrote that exploring and creating on those ideas has been wildly possible in the last year because of AI. 

for many, i've done 20-60% of the project and then I'll move on to the next thing. some of them, i think i simply need to take that idea and put it into a prompt and watch the code cascade down the stream in order to feel like i did something about it.

most have never gotten to deployment. some have, but i gave up for whatever reasons. 

this one i'm working on now -- an always-on ai tech assistant for older people -- really has some legs. i see actual use case for it. so, as i've predictably gotten to the deployment stage, i've run into big hurdles. and, for the near-7th day in a row, i haven't given up.

front and backend

when i gets to the stage, i so fiercely want to get the thing online and start trying to get users, that i go way too fast. i don't read docs, i don't google. i don't look at forums like stack overflow. i just keep screenshotting errors, attaching those to cursor, and trying to cram it through. 

the one breakthrough i had in the development, pre-deployment phase, was getting my apis to call for both the chatbot (openai) and the ai-voice phone call (bland.ai). i'd been stuck for a few days (few hours over a few days) on this. 

the breakthrough happened because i read the docs.

for deployment, i'd originally decided to go with replit. i've seen this all over xtwitter and some posts about pairing it with cursor (which i'm using) and so i signed up for an account. i ran into some issues testing deployment within replit so i gave up - moved on. 

i went then went to netlify for the frontend and firebase for the backend. that's what i used for predictstuff.lol so i thought i could pick that up easily. nope. i ran into lots of errors. 

so i went back to replit. i watched videos on it. nothing.

went back to firebase and netlify. still confusing. screenshot, send, deploy to netlify, and nothing.

then, i went to vercel for the backend and netlify for the frontend. this felt like i'd made progress as i was able to get a github repo synced with them all. again, i'd done that successfully with the predictstuff project, but had trouble on this one originally. 

but, then i started running into CORS erros. which, i gather, happen when two different domains are trying to pass information (functions?) between one other but the proper security settings aren't in place to allow it. idk, something like that. but it makes sense in my head that vercel and netlify aren't talking.

so i sent a screenshot to my friend emmett (x). he said CORS issues are a pain; said that you can run front and backend on vercel; said to google the CORS error. i googled and found some helpful context that hadn't been coming just by continuing to cram through chatgpt or claude via curosr. 

i read some docs on vercel's website about CORS. screenshotted that to cursor. that seemed like it was going to turn the corner on this. but, no dice. 

still, small wins in that i took two actions today that i didn't take yesterday and helped me get unstuck: 1. ask a friend. 2. research.

merge

so, tomorrow i'll work on merging the frontend to vercel. i'm certain that will not be straightforward. i hope that i'll remember these 2 actions. and this blog. 

useful

that's the useful thing about reflecting on the process.

and, oddly, i've been very hesitant to learn anything about my mistakes so far or try and understand them. writing is a great way to do that. 

i think i've been hesitant because once i try to overcome hurdles by learning, if i then do not succeed very soon it seems like some sort of failure of self-improvement on my part. whereas, if i just keep screenshotting the same CORS message over and over and over again to the ai, i am implying, "better you work hard to figure out how to fix this than me." 

and that is the key insight. it took me this whole post to get to it.

cramming things into cursor-ai

for the last week or so, i've been working on a new project: an always-on tech assistant (an AI) that older tech users can chat with or call to troubleshoot their problems.

being even slightly above average, or just a certain age, rewards you (or burdens you) with questions from relatives and friends about their tech.

there are some consistent challenges i've found:

  1. it's not always clear what the issue is
  2. i'm usually in the middle or something (doesn't mean it's important)
  3. if it's not fixed in the first answer or attempt, both parties are ready to move on

back on xtwitter freely poasting

sometimes i just get xtwitter and can shoot (post) from the hip and that makes it so much fun. 

here's a string of recent stuff. also, i've been using cursor.com, a code editor with ai built in, to start working on making internet projects again. that's giving me some energy. though, that, plus 2 off-weeks of traveling, have my running suffering a bit. 

there are no solutions, only tradeoffs (tim ferriss, or at least from his show). so i can accept that. 


https://x.com/pizzamiheart/status/1826835796487196685


https://x.com/pizzamiheart/status/1826810908498124852


https://x.com/pizzamiheart/status/1826691313879711810


this was a good thought process: https://x.com/pizzamiheart/status/1826631312717086783


https://x.com/pizzamiheart/status/1825633099298021735

Day 1 & 2 Recap: As the Crow Flies

It seems like every time I begin a new block of training or a new project, I get a minor cold and bout of congestion. This time, it seems, is no different. 

But, this could certainly be one of those "it's a small world" problems. i.e., If one gets a few minor colds a year (especially one with toddlers/small kids), and one begins a few training blocks/projects every year, then of course one would have a cold come along at this same time. 

Of course the world is small: there's enough things and enough things to happen on and upon.

Day 1

My friend Napo is in town and always likes to run very early in the morning. He ran over to my house and we started from here at 5:30am. I ran about 5 miles with him, dropped him at his place, and then ran a combination of dusty road sidewalk back towards the house. I'd planned to go home and finish about 9/12 miles that day. Thankfully, something inside of me said to just keep going and finish off the rest of the miles. 

Bit of a struggle doing that - didn't think to bring any water or nutrition - but I made it back home without much fuss. 

I'm glad to have made this mistake earlier on because I never really bring any nutrition on runs less than an hour and a half. Especially if those runs are in town and not on the trail. But, since every day is at least about that length of time, I'll need to do nutrition/water on most of those runs. Better to compound that effort than the stress of going without it. 

Documenting: Finished shooting and editing a trailer for the project. Showed the first round to Sadie and she said, "that looks good but I wouldn't know what you're doing if I saw it." Glad to have a loving editor!

I posted it on YouTube Shorts, Instagram, and TikTok.

Day 2

I'd planned (woke up for) to run with the guys at 5:30 and then go for coffee after. I woke up feeling the congestion and decided to go for more sleep. Probably a good call. But, this is one of those weird things where you might not see the positive benefits of doing something but you likely would've seen the negative benefits, so who knows. 

I ran 3 miles at lunch. Ran 10 in the evening after work while Sadie was teaching at the Y with the kids. 

Good day two and sluggish day two. 

Documenting: I worked on a rough weekly content plan. Want to build some consistency so that A) it's easy and fun to replicate, and I like what I'm producing, and B) it sets some expectations that would lead to the ability to "build an audience."

"As the Crow Flies" Project

It's quite tempting, with new ideas, to start the introduction of the thing with, "I've always..." Always is probably never the case. 

In this case, I do have a new idea and it's not something I've always done. Still, that's how I was tempted to open this blog. 

Anyways, starting tomorrow, July 1, 2024 I'm going to run every day, or nearly every day, for the next 6 months. Until January 1, 2025. 

I have 2 main goals/reasons: 

1. Get better at running

2. Get better at story telling

My in-laws live (as the crow flies) 2,219.93 miles from my house. They're in Albany, Oregon. We're in Black Mountain, North Carolina. Over these next 6 months, I'm going to run that distance. Not to their house, but mimicking the distance while staying mostly nearby my house. 

By running this consistently, somewhere around 12 miles a day or 84.5 miles per week, I'll get better at running. 

By writing about it and making videos, I'll get better at storytelling. 

Here's the project's front page on the internet.

Some sub-reasons/goals I'm doing this:

1.1: to show that we can definitely do more than we think we can (across many skills/disciplines/interests

1.2: to show that long-distance running is accessible and can be as close to free as you want to make it

1.3: to show you don't need all the right gear to be a runner

2.1: to show you don't need all the right gear to be a storyteller

--------

Hope you'll follow along, subscribe to my stuff, and share what you're working on too :)