Avatar
mordaunt
afdf13f84fcc93b9ce3289e73efd140d3c5a29a7af41db011cb88de0f8338298
Father. Software developer. Aussie. High on coffee and Bitcoin. The natural state of the free market is deflation.

“Bitcoin isn’t money”

Then why is it called bit COIN?

#bitcoin #knots #core

According to Lopp, the only reason for the 100kb arbitrary data is mempool unity?

Specifically for a single company’s benefit?

Did I understand that correctly??

#bitcoin #knots

nostr:

nostr:nevent1qqst7c8asyw9n99h4vtmysxsm5tcezzs528cq366rqgvaxg38lyelvcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhghf30y8

> “Social consensus” is basically you saying that code decisions should be made based on the number of people on subreddits you can get agreeing with you. This is not how sane development processes work.

I'm not advocating this. Yes, that is absurd.

People have their entire life savings in this tech. Core acts with callous indifference, and outright mockery. That is a problem for a cornerstone project.

They do indeed owe it to the Bitcoin community to thoroughly, and repeated explain themselves. Who do they work for? What's the point of being a Core dev if you don't give a fuck about the community, education and consensus.

The larger Bitcoin gets, the more people depend on it, the slower development must become - and the amount of time spent on education must rise to match the audience. You no longer just move fast and add features or change things without thoroughly explaining yourself.

> They relentlessly said this shit for years to demand Core people implement suicidal policies that would have destroyed the decentralized nature of #Bitcoin

I'm sure they were asking for features instead of ossification. Not comparable, as now it is Core *pushing* changes.

Not only changing the data carrier limit, also changing what it means and ALSO deprecating the option to remove the choice from the node runner.

Completely violating the spirit of Bitcoin: individual sovereignty.

> Eventually they tired of it and adopted the current and correct attitude towards people who think they know better.

"lalala, I'm running v30, haha, fuck you peasant!"

Is not the correct attitude. It never will be. If you take that attitude it shows you cannot even empathize with the very community you signed up to serve.

The Core people are astoundingly unserious.

Mockery and disdain toward the plebs from their ivory tower.

No professionalism. No sober educating of the masses to achieve social consensus. No patience.

Lots of ridicule and sadistic pleasure as they openly tout running v30. The vibe is “fuck you, haha!”

Is it just me?

Bitcoin is too serious to allow this attitude at the helm.

It’s honestly surreal. Clowns, clowns everywhere.

#bitcoin #core #knots

He gets lots of dissenting feedback on nostr at least. The majority seems to be dissent. I think he has a sadism streak to be honest. The glee and the taunting is excruciatingly unserious.

Plausible deniability.

Publishers, for example, are immune to legal action about CSAM so long as they make reasonable effort to filter it from their platforms.

It’s starting to seem like all the “features” were a mistake.

Segwit and taproot were great ideas, with the best of intentions. What could possibly go wrong?

Unknown unknowns and second order effects, in an attempt to “make Bitcoin better”.

Feature brain is the wrong mindset for Bitcoin.

Put your cool features on layer 2.

#bitcoin

Slippery slope != “speculation of effect”

As linked, the slippery slope depends on how strong the causal argument is.

This change, objectively, *increases the attack surface* on Bitcoin in exchange for a UTXO set that is a tad more prunable.

That’s a fact.

How much damage this will do to Bitcoin is unknown. That’s true from Core’s side as well.

yeah, i get it the points about how some things are irritating.

and i run into problems now and then, fairly often, with resource leaks.

a lot of people overuse interfaces, i agree about that. interfaces should be an after thought that makes extension simpler. until there is two viable implementations you should not make an interface out of it. it's just a waste of space and if you never need any more than one implementation of a method set then it's crazy to throw all that overhead into accessing the methods (resolving the indirection).

i sorta do sometimes wish there was an explicit keyword that manually designates a variable to be unused - nilling variables and using sync.Pool to mitigate this doesn't really quite work, and having no control over freeing the memory for especially tight, iterative stuff, can sometimes be quite an obstacle to getting it to not blow up the heap. but aside from that one little thing, which could even be a second reuse of the delete keyword (where it doesn't expect a key) and its function would be to explicitly discard the variable.

running into these invisible, opaque memory allocation behaviours most of the time you don't even have to think about it but when the heap piles up with junk and it isn't seen until the next mark/sweep it can make a situation where your baseline memory requirements are reasonable but frequently it uses 2-3x as much memory for short periods - yeah, if that baseline was 500mb and you try to run it on a 1gb VPS it will often OOM die and restart the service.

or maybe better would just be an explicit "free" operator. probably could cobble something together with a specific package that does all that unsafe and reflecty stuff, and alias the import to the package (i use this with logging so it doesn't have a cumbersome, long path to access the logger, just creates local variables referring to the main variables).

i don't really mind the for syntax of Go. making quick and dirty ascending count with `for range ` is often very handy, and it's generally idiomatic most DB transaction interfaces provide the initializer, test and iterate clauses of the for loop in trad C style syntax. also i think it's quite handy being able to use for by itself to create a single channel select statement, effectively.

anyway, as regards to the channels and goroutines, the absence of keywords and meaningful symbols to make usage compact and clear, instead of wrapping it all in methods... i like my <- -> stuff

also, as regards to using goroutines, i generally just try to stick to a 1 client 1 thread pattern. i've seen code that needlessly makes everything in a database query method concurrent, but a) it can't guarantee ordered delivery (this is implicit in the query contract of the REQ method of the API, though most clients just sort it again anyway, khatru and the eventsore based KV store databases that fiatjaf made... spawn like 5-10 concurrent threads for no reason to interact with a bottlenecked back end that can't do more than actually one read or write at a time anyway (the LSM logs). IMO, part of the edge of performance that #orly has over khatru is precisely that the database queries have zero goroutine overhead. goroutines are cheap but people are so easily seduced into peppering their code with `go` just because woo cool concurrency when it doesn't fit the purpose...

the other thing about concurrency, is that it really should be avoided as much as possible. go's work stealing scheduler is better now but there is not a 1:1 correspondence between the behaviour of a coroutine and a kernel thread, as regards to parallelism. threads are parallel. coroutines are not quite parallel. 6 years ago the difference was about 20%, it's probably more like 10% now with the many improvements since go 1.20.

anyhow, i'm not getting off the Go train without someone actually not focusing on the things i don't care about. i don't care about memory mutability, much more important is the ability to control the memory for such as storage of secrets. i don't care so much about not being able to explicitly free memory, but it's unquestionable for high performance servers there's almost always a glitch where the GC is either blowing up the heap or pushing latency up at the wrong time.

in order of motivations, these are why I am a golang maxi:

- fast compilation

- (because) no fucking inheritance

- simple language, consistent pretty printing format

- first class coroutines and channels

- package/module build system and modules caches make builds even faster after the first time, it's mere seconds most of the time to restart, almost makes hot-reload not so beneficial (most web apps are 5-15 seconds before they are fully started), when i can just restart my server with ctrl-c, up arrow, enter. 4 keypresses and one mouse move and click.

- last but not least, hipsters hate it, which means they won't waste their time trying to contribute to my projects (the Linus Torvalds Reason For C) - people who like C/C++, Rust and Java who think all that manual memory management is worth the cost for the pissy 5% boost in performance - i don't want to work with them, and being stubborn about sticking with Go most of the time keeps me out of such situations.

in order of irritation, the things that i don't like about Go:

- very poor support for GUI app dev

- lack of a manual memory free operator

- the broken semantics of slice/map types mutating themselves (and all the stars and ampersands and brackets) - imo they should BEHAVE like pointers for this case, and in general there is a bit of a nebulous cloud about which version of such reference types, which are essentially pointers but get value treatment. if it just kept the nice implicit dereference semantics but made mutations to the receiver happen outside of the scope of a method. meh. i just use struct tho

Yeah.

Green threads are also not that useful on the client.

You often need to do operations on particular threads (eg macOS forces the main thread to b white GUI thread).

In cases where thread identity matters goroutines get in the way.

If Go had a way to drop into manual memory management for a block of code I’d be down with that.

Fantastic.

I would add that fiat is actually the wrong term.

The free market *might* have room for an inflationary money, which wouldn’t be considered fiat.

What makes for fiat is the coercion underlying it.

You could technically have Bitcoin by fiat - nation state demands that commerce accepts it and taxes are paid in it.

We conflate fiat with inflation because they have always gone hand-in-hand.

The idea that power would voluntarily resist the urge to print (to arb the Cantillon effect) is both theoretically unlikely and empirically never happened.

#bitcoin #money #fiat #freemarket #philosophy

nostr:nevent1qqspj86haaypa98zhftcd2avtc7pg2smggtww5xztng7446v9fzx2vcpzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhg5ufx93

all i know is that to be able to read Go, i don't need to know as many things to read almost every other language (stuff like BASIC and assembler are simpler).

there's no way this doesn't impact the precision of the LLM at finding the right answer in any given equal case easier if the language grammar is less complex and has less reserved words and operators.

the reason why i like Go is because it doesn't pile a ton of opinionated shit on top of the language like most languages do, and keep piling more opinionated shit on top before you know it it's a 10-30 minute build on an average sized project. Go manages this from scratch, with a totally clean environment in 45 seconds including pulling all the stuff, there's no way the LLM has to work as hard.

it's just about context. the language grammer costs context in the LLM processing. more context = more memory that has to be traversed. similarly, the more places you have to look to find different things, the longer it takes for the LLM to find the target to implement on. i'd be willing to bet the energy cost of translating simpler human languages versus more complex one applies exactly the same. German, russian, and most of central/northern slavic languages have complex grammar compared to, for example, bulgarian. bulgarian removes cases, more or less completely, and shifts the complexity over to verb tenses. for similar reasons, languages that make better use of modifier suffixes and eliminate ambiguity of persons of verbs (which is characteristic of eastern european languages) can be literally more verbose but with a more naive and less complex interpretation required because it has mulitple markers on almost everything, persons, tense and so forth. english, for example, like bulgarian, extensively uses prepositions a lot where cases might express the same context - same result, the verbosity is slightly increased, but the ambiguity of any phrase of the sentence is lower, meaning less context must be searched to find the relevant grammar tree.

out of different language groups, there are also more and less complex variants - danish is one of the simplest to learn nordic languages.

the unseen economic cost of clumsy and complex languages is one of my personal obsessions. people just don't realise how much less capacity to reason they have left after considering the context required to parse the language. more rules = more context.

precisely the same reason why Go compiles so much faster, is why the LLM is more stable at producing effective results, because it can encompass more non-central context of the data. every text comes with a burden of complexity, and the more complex the core of the language, the less space you can use to deal with specifics.

i have so far found that typescript/react projects are the slowest to progress, Go is definitely the fastest, and for UI, svelte is definitely simpler to reason about too.

LLM credits are not cheap, damn.

I agree.

I think Go was specifically designed to require less context by the reader, and that is likely to help out with LLMs.

Have you checked out Odin?

It’s even better than Go in this regard. It’s highly consistent. Maybe the most readable language I’ve come across.

It’s not so great with LLMs though due to low training data.

How to empathise with your crying baby.

Imagine a giant comes by, takes your pants off, lifts up your legs and starts wiping you down with a wet towel.

Imagine the discomfort.

Now compound this experience by imagining you don’t understand why it is happening, and you are totally powerless to fight it.

You’d probably also cry about it.

#parenthood #newborn #baby #family

It’s a value statement: that you care most about something other than political agenda.

“My politics aren’t left or right, they are Bitcoin and Homesteading.”

Speculation that it “probably won’t matter” legally (for now) doesn’t really matter.

It doesn’t change the fact that this is a category shift from not being able to store plaintext images directly on the blockchain, to being able to do so trivially.

Arguing margins is irrelevant in the face of a category shift.

Objectively speaking: the attack surface will be widened.

This is a problem regardless of whether the new attack vector is ever actually exploited.

#bitcoin #knots #core #spam

nostr:nevent1qqsdw56d7cppz2036000xrtmkyk7lsx5mqwh3we4zuympamtnce54uqpydmhxue69uhkummnw3ez6an9wf5kv6t9vsh8wetvd3hhyer9wghxuet59u3h3kqd

A single default setting was the entire business model of Mozilla Firefox.

For those that don’t know, Google paid Mozilla hundreds of millions of dollars per year so long as Firefox defaulted to Google search.

That is the power of a default.

Don’t let anyone trivialise how important changing a default setting can be.

Now imagine that Firefox changed its default to Bing, and not only that, also marked that setting for removal entirely - forcing you to accept Bing or use a patched version of Firefox.

#bitcoin #knots #core #spam

Bitcoiners tend to be optimistic people.

You need to believe in paradigm shifts. That the solution is true and not just a mirage designed to manipulate you.

You need to have a large degree of vision, openness and faith. This is why Bitcoin attracts a lot of Christians. They are familiar with employing faith.

Many people are trapped in bottomless jaded cynicism - and rightly so! In many ways the world has conspired against you. The manipulation and lies of the world can seem endless.

Be careful. Too much cynicism and you will refuse to accept that a “solution” to the control system can even exist in the first place.

At a deep emotional level you refuse to believe something true can exist.

That something worthy of hope will actually fulfil its promise, rather than being used as the carrot you can never reach.

Such people believe Bitcoin to be nothing more than the honey pot of an intelligence agency, or a Ponzi scheme, or both.

That even if Bitcoin is true, at least I wasn’t mislead and manipulated! At least I wasn’t scammed.

The eternal pessimist will miss Bitcoin.

Be careful what your cynical side can cost you.

#bitcoin #psychology

The simple argument against veganism: by providing animal husbandry we can give animals a good life, in exchange for their produce. This is a win-win for humanity and the animal.

In practice the vegans are correct about the horrors of factory farming.

But they synthesise the wrong principles from it (that humans are bad for consuming).

Factory farming comes not out of capitalist greed, but a bad moral foundation. Humanity needs to learn to treat itself better before we can treat animals better.

Newborns are very serious creatures.

They don’t have the childhood wonder yet.

Just a bundle of instincts and potential.

Instincts designed to keep them alive at any cost so they can realise that potential.

#fatherhood #baby

Society has encoded valuable ideas that we should conserve, yet some ideas are wrong or incomplete and should be progressed.

In recent history progressivism has been overstimulated in society due to the perception of infinite wealth via government debt.

This perception increases risk taking and experimental behaviours as we perceive a large safety margin to tolerate the risk.

However this perception is a façade. Resources are indeed finite, and the safety margin is much smaller than it seems.

As we transition to a hard money standard, we will see a trend back toward conservatism.

There’s a delicate balance between tradition and change that we cannot regulate effectively while under delusions of “infinite” money.

#bitcoin #philosophy

All emotions serve a purpose.

None are inherently “toxic”. The toxicity is in the way they are mishandled.

Hatred is immensely important for protecting what you value.

For instance, if you didn’t hate evil, you would let in into your life and it would destroy what you love.

To love a value is to hate what threatens it.

If you have no hate, you have no values worth protecting.

In the same way, people who don’t feel pain are in endless danger because they cannot identify it.

#psychology

nostr:nevent1qqstzcxpk6mxmnychhn660tesef2pfnjcke092n8urxmrxpqusvzvmspzemhxue69uhkummnw3ezuan4d3cx2mfwvdhk63fl9x9

No one ever needs to “capitulate”.

To be blunt, this is dominance language - very strange to come from the mouth of a supposed Bitcoiner.

1. Individuals reserve the right to control what goes on in their mempool.

2. People can run forks like Knots indefinitely, it’s just a patched version of core.

The disregard for people not wanting their conscience violated is palpable.

nostr:nevent1qqs8wcxd44407d6huulgs8fwvkscmafg5ctckxv7ettwu0hmnyxgp8spzemhxue69uhhyetvv9ujuurjd9kkzmpwdejhgqmmahv