Avatar
hodlbod
97c70a44366a6535c145b333f973ea86dfdc2d7a99da618c40c64705ad98e322
Christian Bitcoiner and developer of coracle.social. Learn more at info.coracle.social. If you can't tell the difference between me and a scammer, use a nostr client with web of trust support.

There is a reason people make resolutions on New Year's Eve, and I don't think it's just because it's a new year. New Year's follows the biggest economic shut down that regularly happens in the west - i.e. the most sacred time in our calendar. This naturally makes room for reflection and a desire for growth, catalyzed by contemplation of God become man (or, at least spending time with family). This in turn makes us better people, able to do more good. We should take this kind of time out more often; maybe we would find ourselves less prone to bias, sunk cost, burnout, and lack of vision.

Happy New Year, and Merry Christmas for 6 more days.

Yes, but it's not yet built to my knowledge. I have plans for something like this eventually, maybe nostr:nprofile1qqsth7fr42fyvpjl3rzqclvm7cwves8l8l8lqedgevhlfnamvgyg78sdv7ysa has a story too?

Just overheard someone use the word "google" and it sounded anachronistic

I threw a proof of concept together to satisfy both our curiosity: https://github.com/staab/mithril-granular/blob/master/index.html

This allows you to call `this.use` in a component. It's not quite as clean as react/svelte, because it's less magical. The `onbeforeupdate` method is also a footgun as written (since it would prevent stateful child components from re-rendering), but that's an optimization anyway. Also see https://mithril.js.org/stream.html for mithril's own reactive solution. I'll have to give it a real try sometime.

Replying to Avatar hodlbod

Here's an example from https://github.com/coracle-social/nonboard using svelte stores:

```

unsubscribe = state.subscribe(s => m.redraw())

```

Mithril uses a virtual dom, so this isn't much worse than react to begin with. To avoid re-calculating sub-trees (since rendering happens starting from the top) you might use `onbeforeupdate`, or `m.render` to isolate stuff more manually. I haven't gone that deep yet, but I'm sure it's possible.

To explain the example: that just listens to the global state store and redraws when it changes. You could do the same with a `use` helper that registers/unregisters observables/stores

Here's an example from https://github.com/coracle-social/nonboard using svelte stores:

```

unsubscribe = state.subscribe(s => m.redraw())

```

Mithril uses a virtual dom, so this isn't much worse than react to begin with. To avoid re-calculating sub-trees (since rendering happens starting from the top) you might use `onbeforeupdate`, or `m.render` to isolate stuff more manually. I haven't gone that deep yet, but I'm sure it's possible.

"I see us free, therefore, to return to some of the most sure and certain principles of religion and traditional virtue—that avarice is a vice, that the exaction of usury is a misdemeanour, and the love of money is detestable, that those walk most truly in the paths of virtue and sane wisdom who take least thought for the morrow. We shall once more value ends above means and prefer the good to the useful. We shall honour those who can teach us how to pluck the hour and the day virtuously and well, the delightful people who are capable of taking direct enjoyment in things, the lilies of the field who toil not, neither do they spin.

But beware! The time for all this is not yet. For at least another hundred years we must pretend to ourselves and to everyone that fair is foul and foul is fair; for foul is useful and fair is not. Avarice and usury and precaution must be our gods for a little longer still. For only they can lead us out of the tunnel of economic necessity into daylight."

John Maynard Keynes

Replying to Avatar hzrd149

There is nothing I hate more in JavaScript than frameworks that will not let you turn off their stupid SSR compiling

https://cdn.hzrd149.com/b7d9739a0068d8ae75695e019ec9c7c96d02a0e6dcfdd3aa2f4bce1c46f36738.webp

Vibe coded that whole app then tried to compile with ssr=false and its still trying to run the code in node so it can do some ssr crap. why cant we just have simple static apps anymore?

I'm with you, what framework is this?

"The rioters appear suddenly in armed parties, under regular commanders. The chief commander, be he whomsoever he may, is styled General Ludd."

Nottingham Review, quoted by Paul Kingsnorth in Against the Machine

Replying to Avatar Daire

So regarding your last sentence, yes we are incentivised ofc but this is where I defend optometry

Your eye development is mostly complete when you’re 8 years old and there is still some change until you’re 18 or so. So no matter what you do really, the trajectory of your vision is essentially set in stone

Furthermore glasses aren’t like a drug or a crutch.

They aren’t like a drug because the prescription itself does not reflect the quality of your vision. It reflects the quality of your vision vs what’s considered the standard but…—> fundamentally your quality of vision is what you can see with the sharpest prescription given to you —> some people could have a small prescription and terrible vision with or without glasses. For example a blind person’s best vision may be achieved with simply +1.00 but the issue is the health at the back of his eye to where the light is being bent —> Glasses are like a telescope, they bend light onto the part of your eye that is most sensitive to seeing, this is called your macula and it’s the quality of this that’s important. This is basically all determined genetically

They aren’t like a crutch because there’s not a large amount of muscle needed to see. It’s mostly due to the shape and liquids of the eye and once you’re older than 40, the few muscles involved start to wane more and more anyways. You wouldn’t miscorrect a telescope to protect the magnification inside and likewise you should wear a fully corrected prescription. The potential protecting of muscle is negligible.

Also some people think glasses make their vision worse but they may not have realised how bad it was before they got them. Even though this sounds salesy I fully stand by it and everything else

The degradation of your near vision in your 40s is called presbyopia.

Some people in their 40s don’t need any glasses because their eyes are NATURALLY a bit short sighted but only a bit so that they don’t need glasses for far away. There are a few other minor exceptions. But once everyone turns 60 and the presbyopia gets worse, basically everyone needs them

So I guess the next question is: if my eyesight trajectory is set in stone does eye strain not matter then? I was raised to not read in dim light for example, but is that only relevant for kids with developing sight? If not, what is the difference between eye strain/atrophy related to your prescription and other forms of eye strain?

What do you think about pumping the brakes on an advancing prescription? Every time I get new glasses I have to ask my optometrist not to give me 20/10 vision because I don't want my eyes to atrophy and be useless without glasses (I can still see well enough to run/hike/read without). Do aggressive prescriptions reduce eye strain or encourage atrophy? The incentives aren't aligned if the same people who test my eyes also sell me the glasses, you know?

Merry Christmas nostr!

HOT TAKE: Pluribus is not good. I know, 3 weeks too late but hey

Replying to Avatar daniele

Are you using https://fevela.me and have you encountered any bugs or have a suggestion for a feature that absolutely must be added? Let me know!

Fevela is awesome, although I've found it a bit slow to load profiles in particular, and sometimes I don't get very much in my feed.

I haven't used it much at all, but people seem to like it. Someday I'll find the time to build something using solid. Maybe today, I do need to build a demo app...

TIL I learned that if you set the `length` property of a javascript array, it will truncate it. So bizarre.

```

a = [1,2,3]

a.length = 0

a === []

```

Another way to put it is that there's no static solution to problems in a dynamic system. Which means we have to accept our role as temporary agents within that dynamic system, pushing in the direction that seems best to us, knowing our efforts or vision aren't determinative. Still, there have been other epochs in history in which mechanism wasn't in the driver's seat, and I'm sure there will be ones in the future that are qualitatively different. Letters from Lake Cuomo by Romano Guardini gives me some hope for this.

I love Illich, I'm going to give a talk about digital conviviality in January. I only learned about you this morning, but would you come on nostr:nprofile1qqsdluwc0qu62t3el7nxl93387gmppe56jkvm88vcuwh3lpw4fcevwsc4as3x?

Use a blockchain haha

I think this model probably has a lot of possible failure modes, especially when it comes to actual implementation. In the case of two participants, where a fork means the contract is over, that can work. But usually the function of a smart contract is to force agreement on something.

Anyway, I'm skeptical, but don't let that stop you. It's an interesting project. If we can indeed figure out a way to have consensus on nostr it would be germane to my key rotation nip, which makes some massive compromises on centralization in order to work: https://github.com/nostr-protocol/nips/pull/2137

Mine ignore the subject tag and reply hierarchies, but there's no reason you couldn't add them

nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpzdmhxue69uhk7enxvd5xz6tw9ec82c30qyv8wumn8ghj7mn0wd68ytngv9ekscnpdenjumnv9uq36amnwvaz7tmfdejx27r9wghxxmmjv93kcefwwdhkx6tpdshsz9thwden5te0wfjkccte9ejxzmt4wvhxjme0qqspwwwexlwgcrrnwz4zwkze8rq3ncjug8mvgsd96dxx6wzs8ccndmcxv0x8f made it a while ago and nostr:nprofile1qyghwumn8ghj7mn0wd68ytnhd9hx2tcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhszrnhwden5te0dehhxtnvdakz7qg3waehxw309ahx7um5wghxcctwvshsz9mhwden5te0wfjkccte9ehx7uewwdhkx6tpdshsqgrkcud2uwjfruweamz8ewshug5umfq38g9mkmn2u9mk6ajru2w2lg4dgdtn modified it for diVine

I think just being an adult. My kids play rugby on saturdays, things in my house break at inconvenient times, my son is now allowed to stay up late 2 days of the week. I need to read difficult books in the evenings. I have to get up early to accomplish everything. I have to do my taxes, vote, etc.

But also getting older means I won't live forever, and there is so much I want to do. I won't regret not watching TV, but I will regret never building a house, taking my kids backpacking, writing poetry, etc

Replying to Avatar Contra

The Retirement Lie Will Ruin Your Life

Retirement, as we imagine it, is a modern myth. A 30-year vacation sold after World War II to make the grind of work seem worth it. But it carries a hidden poison: the belief that work is something to escape rather than something to be fulfilled by.

We are told to endure our 30s and 40s so we can finally live in our 60s. It is the TGIF mindset stretched across a lifetime. If Friday is salvation, then Monday through Thursday, and by extension our working years, are a form of suffering to be endured. Every project becomes a transaction. Every morning becomes a countdown to freedom.

That vision of life leads nowhere good. When you finally “make it,” what is left? Endless leisure sounds like paradise until you realize it starves the soul. Humans are not built for permanent rest. We are built for creation, cultivation, and meaningful contribution.

Look at those who have changed the world. They did not work to retire; they worked because the work itself mattered. They were driven by curiosity, craft, and impact, not escape. That impulse is not rare genius. It is the human default when purpose and effort align.

The tragedy of retirement culture is not that people stop working. It is that they spend decades believing work is something to run from. They hate their jobs, resent responsibility, and dream of quitting until quitting finally arrives and meaning disappears with it.

The answer is not to grind yourself into the grave. It is to never stop engaging productively with the world. True fulfillment comes when we see work not as punishment but as participation in something greater. Retirement should be a shift in pace, not a surrender of purpose.

Some will push back at this idea. They believe that once they reach the goal, they will be the exception. They think the emptiness will not touch them. But look around. The older generation right now is among the most unhappy groups you will ever meet. Now you know why.

If your life strategy is built around escaping productivity, you have already lost. The goal is not to retire. The goal is to find work worth doing until you can no longer do it.

Stop planning your escape. Start planning your contribution. Life begins the moment you stop running from work and start building something that matters.

Now build.

I feel this most right now in trying not to be entitled to quiet evenings and weekends. Leisure can be productive — I don't need to (or get to) just sit around and read/play/watch in my quiet time. Better to play music, do woodworking, draw, talk, write, or even do paperwork. The idea that personal energy is a zero-sum game is something I'm still unlearning.

Can't wait for a bunch of orthodox jews to get arrested for anti-semitism 😂

About to merge this: https://github.com/nostr-protocol/nips/pull/1746

It adds address support to `q` tags. Speak now or forever hold your peace.

Same as discord/slack/mattermost/zulip, etc.

One thing I will say in favor of LLMs, they drastically reduce the amount of time I spend dealing with stupid issues related to javascript tooling

Mastodon is fine for what it is, but it gives community organizers way more power. Nostr's cryptographic identities and multi-master architecture are a huge improvement. I wrote a book on this: https://building-nostr.coracle.social