The issue is that you usually aren't buying the ebook. You are buying a license to access that ebook and they can revoke that license at any time. Maybe you're okay with that, but many people want to permanently have access to the things they purchased.
Isn't Bitcoin impractical for these sorts of transactions (slow, high fees, no privacy, etc)? People always say Bitcoin was designed to solve this sort of thing but whenever I've looked into it it's been fairly impractical for use in most day-to-day transactions.
Bitcoin is so much faster than a credit card transaction that it's not even close. A lightning transaction is near instant, regular bitcoin transfers take in the order of 10 minutes. Credit card transactions take weeks before you get the money, and after that the money can be yoinked back for a multitude of reasons beyond your control as a merchant. The fees are often lower, too. Bitcoiners are for some reason opposed to solving that last issue (no privacy) despite the technology existing in monero. NIH syndrome, I guess.
The real unsolved issue for cryptocurrency is between chair and keyboard. People make mistakes, people are afraid of being robbed. Your average person does not want to be their own bank. You can have a bank or payment processor manage your money for you, but then we're back to the regulated world where Visa and Mastercard can determine what games you're allowed to buy.
I'll have to look at the lightning transactions. My problems with crypto are generally less philosophical (I've known people who ran legal businesses that had trouble getting access to banks so I'm sympathetic to having ways around traditional banks/payment processors) but more practical, the times I've tried it in the past the experience just hasn't been good.
Honestly buying a digital game is perfect. Steam can just give it to you right away, and if the transaction doesn't clear they can just revoke the game later.
That's only addressing one issue with Bitcoin but the issues abound. I don't know all the issues that would happen but even my rudimentary understanding of payments can see that the high transaction costs are a problem when most of the games I buy are less than 5$.
There are ways to design around these glaring issues but Bitcoin is just a worse product for many transactions (and it's not like payment processors are a particularly good product to begin with).
It might have been but it is very much not. It's non fungible and transparent resulting in coins, wallets and transactions getting easily traced and blacklisted meaning they can be put into a limbo where nobody is willing to accept them anymore burning there value.
The actual solution would be a fungible and private coin like monero where any of that is impossible by design.
Yes, I agree that Monero is likely a better option. I am also a big fan of Nano because of its instant transactions and zero transaction fees. However it has the same privacy problem as Bitcoin. It would be interesting to see a hybrid of Nano and Monero.
I've been working on something just like that off and on for a couple months. It's a MUD where all the NPCs are controlled by LLMs that interact with the world with the same commands that players use. I got it to the point where the NPCs can navigate the world, interact with each other, and even create things. But they often get on rabbit trails and forget their original task, so I need to build a memory system and something like the task list in Claude Code. My goal is to have a fully simulated town that the player can interact with.
I wonder how the latest version of Grok 3 would stack up to Gemini 2.5 Pro on the web dev arena leaderboard. They are still just showing the original early access model for some reason, despite there being API access to the latest model. I've been using Grok 3 with Aider Chat and have been very impressed with it. I get $150 of free API credits every month by allowing them to train on my data, which I'm fine with since I'm just working on personal side projects. Gemini 2.5 Pro and Claude 3.7 might be a little better than Grok 3, but I can't justify the cost when Grok doesn't cost me a penny to use.
Google results have gotten so terrible over the years. I switched to Kagi long ago and haven't looked back. Whenever I use Google on another computer, I'm shocked by how awful the results are compared to Kagi.
As for AI search, I do find it extremely useful when I don't know the right words to search for. The LLM will instantly figure out what I'm trying to say.
Probably 70% of my searches are FastGPT searches, meaning I end my search query with a ‘?’ and Kagi summarises the results, so I don’t need to click.
And the ratio between using search engine and Kagi’s LLM agent with search is still 70% search. Sometimes, searching is faster, sometimes asking AI is faster.
I'm working on something similar. I'm building a MUD with an LLM playing the role of GM. Currently it just controls NPCs, but I eventually want it to be able to modify the game rules in real time. My end goal is a world that hundreds of players can play in simultaneously, but has the freedom and flexibility of a TTRPG (while still remaining balanced and fair).
That's really cool, Elias. I keep seeing people try to put LLMs into the role of the GM. But I think you're doing something new and important by working to have the rules available to it.
Is your project available anywhere? Best of luck!
If you're interested, because I kept seeing "LLM as GM" projects, I got curious about how well it would work to have LLMs as players instead. So I made this:
It's a training ground for GMs to practice things like spontaneous description, with 4 AI players that get fed what each other say so they act in a reasonably consistent manner. It's not perfect, but I've gotten some good use out of it.
I kinda get how LLMs work with language, but it beyond blows me my mind trying to understand how an LLM can draw SVG. There are just so many dimensions to understanding how SVG converts to an image. Even as a human I don't think I could do anywhere close to that result in first attempt.
It would be interesting to modify this for optimizing BrainF programs.
It has a very simple instruction set and there are lots of example programs available.
To avoid generating useless things like "++--", you could have the optimizer generate instructions that are translated to BrainF operations.
So instead of ">>>--", the optimizer would generate "Move +3; Add -2".
there might not be that many opportunities to optimize brainfuck programs as the instruction set of the brainfuck virtual machine is so simple. arithmetic is unary, and staying within the brainfuck virtual machine doesn't provide a way to do any better than unary arithmetic.
on another hand, there are many opportunities for optimization when compiling brainfuck to an actual real world instruction set
e.g. suppose in your program you want to load the integer 36 into the current cell
a naive way to do this is to increment 36 times, e.g. `++++++++++++++++++++++++++++++++++++`.
if you can't guarantee that the initial value of the current cell is zero, then you could zero it first: `[-]++++++++++++++++++++++++++++++++++++`
if we're optimizing for code size, not instruction count, we could express this as a more complex, compact program: `[-]>[-]++++++[-<++++++>]<` -- assuming it is OK to use the cell one to the right of the pointer as working storage. this will run slower than the less compact naive program as it executes more instructions.
if compiling to some reasonable instruction set, there's likely a single non-BF instruction that lets you load the constant 36 into a register.
extra credit: implementing the optimising brainfuck-to-something compiler in brainfuck itself
> arithmetic is unary, and staying within the brainfuck virtual machine doesn't provide a way to do any better than unary arithmetic.
It won’t be efficient (but who cares about that in a true Turing machine?), but you can do binary/octal/decimal/whatever, using a series of cells each containing a number in the right range.
As an optimization, you can postpone any carries until you want to compare or print such numbers. Addition would ‘just’ loop over the cells in the numbers to be added, adding cells pairwise. For example, binary 11001 + 10101 would yield 21102.
Just as an exercise, you could use brainfuck with genetic algorithms and evolve the program that you want, then try to play with the fitness function to squeeze down whatever you don't want (code size, instruction set, etc...).
Then you could try to superoptimize yourself a solution and compare how close the evolved program was to the superoptimized program.
Could also be interesting with other esoteric languages like befunge or malbolge.