10 interesting stories served every morning and every evening.
10 interesting stories served every morning and every evening.
Talking to 35 Strangers at the Gym
Published: May 1, 2026 Updated: May 4, 2026
Background
A couple months ago, I was the Wizard of Loneliness. I had graduated from college almost two years prior and, while I had luckily found a job, I was unsuccessful in finding friends.
Each night, I would look up “how to make friends after college” and find the same advice given every time: “do your hobby with other people, frequently”.
On paper, the gym seemed like the perfect opportunity to meet people since I would go there nearly every day; however, according to Reddit, there’s a number of people who want to be left alone and can be irritated if you interrupted their workout to talk.
I am deeply afraid of irritating someone or being in awkward situations. Here’s a list of things that I did as a result of that fear:
Hesitated for a couple minutes before waking up my roommate when the fire alarm went off
Hesitated for a couple minutes before waking up my roommate when the fire alarm went off
Pretended I didn’t know a childhood friend when they said hi because I didn’t know how to act around people I used to know
Pretended I didn’t know a childhood friend when they said hi because I didn’t know how to act around people I used to know
Ignored people I knew from class instead of saying hi because I didn’t know for sure if they remembered me even though the class had only 10 people in it
Ignored people I knew from class instead of saying hi because I didn’t know for sure if they remembered me even though the class had only 10 people in it
So you can understand when I say that walking up to someone and starting a conversation with them at the gym of all places is kinda terrifying for me.
Unfortunately, there was no other good option. My other hobby is programming, but the Syracuse Development group only meets up once a month, and activities suggested by r/Syracuse like volleyball and trivia night require you to already have friends. I didn’t have a choice. If I wanted friends, I would have to put in the work at the gym.
Problem Statement
I am lonely and have no friends.
Procedure
I decided to run a little experiment to find some friends.
Each day, for one month, I picked out one person to approach. Usually it would be someone I saw frequently at the gym.
If they were in the middle of an exercise, I waited for them to finish their set.
Then, I would approach them, stand near them and wave to get their attention, and then give them my opening line.
Initially, my opening line for everyone was “Hey I see you here all the time. You’re pretty strong. What’s your split?” After a week or so, I began customizing the opening line per person based on what I found interesting about them.
For instance, someone was wearing a Boston hat and I was curious whether they went to school in Boston like I did, so I asked them about it. After the opening line, I tried to talk to them for 5 – 10 minutes until they let me go. I tried not to be the one to end it because I have a habit of ending conversations early, but I did leave them alone if they obviously did not want to talk.
Results
Here’s the raw data. I split it up by week and put it into these collapsible things because it takes up a lot of space. Click on each week to see the data for that week.
Description is a short description of the person.
Length is how long the conversation was. A short conversation is 0 – 2 minutes, a medium conversation is 5 – 7 minutes, and a long conversation is 10+ minutes.
Notes are just anything interesting about the conversation or the person I was talking to.
Aftermath is what happened after that conversation.
Reflection
The first couple days were extremely difficult. I had been conditioned to believe that initiating a conversation with a stranger was weird and it was tough to break free from that. As a result, for the first few people, I would always make a detour at the last second, i.e. make a trip to the water fountain. I chickened out! The solution was to approach the person as quickly as possible so that I didn’t have time to think about running away.
Luckily, most people were receptive. I got a rush of dopamine whenever someone responded positively to my conversation, so talking to new people became strangely addictive. I kept talking to more and more new people each day until I talked to a whopping seven (SIX SEVENNN) new people in one day (this is why Week 3 has a lot of entries). It was crazy.
Something interesting I learned early on was that even if someone had headphones on, there was a good chance they were open to conversation. I mean, I had my earbuds in and I was willing to talk to anybody. Most people were just listening to music and took the headphones off to talk.
People didn’t always respond positively though. In Week 1 and Week 2, I came across a number of people who were really short with their responses and didn’t try to continue the conversation. They gave off the vibe that they didn’t want to talk to me. It was really awkward and almost made me end the experiment.
But over time, I came to accept that it’s ok if they didn’t want to talk to me. That’s just one of the things you have to expect when you do something like this.
And being in an awkward situation is actually not that bad. It sucks in the moment, but then you just take a few minutes to calm down and then you move on with your life. You’re ok.
However, I did end up pulling back in Week 4 and Week 5. I felt like constantly talking to more new people was producing diminishing returns. I had already established a connection with many people at the gym, so it was a better use of my limited time (remember I still have to work out!) to nurture those existing connections into meaningful ones.
I ended up prioritizing the 5 – 6 people who seemed the most interested in me.
One of these people is someone I will refer to as “the other Asian guy”. I got a lot closer to him than expected. We realized we had the same workout routine so we became gym buddies and started working out together. A few weeks later, he invited me to his apartment, where he cooked me a smash burger. His girlfriend showed me graphic pictures of what she was learning in PA school too. Then, we watched a movie with their cat. I’m really grateful that they were kind enough to have me over as a guest.
Also, something new happened: instead of scaring people away, I had a positive impact on someone.
These texts were from one of the people I prioritized, the male SU student. He had recently moved to Syracuse and was struggling to make new friends. He related to a couple of my videos where I talked about the same struggles and was super appreciative that I talked to him that day. The following week, we tried out Kofta Burger after a recommendation from my friend who lives downtown.
The burger was delicious and we had a great time.
Despite my successes, my work isn’t done. I realized near the end of the month that what I truly wanted was to consistently hang out with people on the weekends. Unfortunately, most of the friends I’ve made are busy on the weekend. They’re taking trips to visit loved ones, going to the bar (I’m not that into drinking), or running errands, so it’s hard to plan anything.
But I guess that’s a better problem to have than eternal loneliness.
A few months ago, I was googling “how to make friends after college” every night. Now I have people to text, people to wave to at the gym, and people who notice when I don’t show up for a few days. AND I became a more resilient person who is unafraid to do hard and scary things.
No more Wizard of Loneliness for me!
Heh this blew up on HackerNews. I want to give some more context for people who are unsure if the gym was the right place to do this. And this is all in hindsight; I did not realize this until now.
The gym I go to, Crunch Fitness, has a social aspect to it. While many people keep to themselves, it’s common to see people chatting. Sometimes they’re chatting in between sets. Other times, they’re chatting on the treadmill. The staff go out of their way to interact with us, and often the people who didn’t want to talk to me talk to other people! I guess they are more open with their friends.
The people at the gym are also really supportive. I forgot to mention this but once, when I was doing hip thrusts, I messed up and didn’t rerack the machine correctly. I fell on my butt and the machine made a huge CLANK sound when it fell. Everybody turned to look at me. I was really embarassed. But then, one guy came and helped me return the machine to the starting position while another guy swung by to make sure I was ok. He assured me that it happened to everyone and to not let it get to me. I didn’t know either of these people! They just wanted to help.
I don’t disagree that the gym is primarily a place to workout, but I think that it’s also a place where you can find community. Maybe my gym is special in how social it is but maybe people are friendlier than they appear to be. I’m betting on the latter.
“eBay should be worth - and will be worth - a lot more money,” Cohen told the Wall Street Journal. “It could be a legit competitor to Amazon,” he added.
Under the proposed deal to buy eBay, Cohen would become the chief executive of the new firm and receive no salary or bonuses, being “compensated solely based on the performance of the combined company”.
GameStop, which currently has a stock market valuation of around $11.9bn, said it has a commitment letter from TD Securities to provide around $20bn in debt to help finance the takeover.
Cohen said he planned to cut costs at eBay by $2bn within a year of a deal being completed.
This would mainly fall across eBay’s sales and marketing division, which GameStop said had failed to attract more users to a “marketplace with near-universal brand recognition”.
The proposal does not sound like a “terribly good offer” as it would saddle eBay with GameStop’s debt, said Sucharita Kodali, a retail analyst at research firm Forrester.
It makes sense for GameStop because it could lift its valuation by being linked with a larger company like eBay, she told the BBC.
“The truth is, we are not necessarily putting two strong companies together,” Kodali added.
Shares in eBay rose by 5% on Monday in New York, while GameStop fell by more than 9%.
GameStop’s shops would give eBay a national network for its “live commerce” and other business operations, Cohen said.
Cohen, who became the GameStop boss in 2023, has criticised its slow shift into e-commerce.
2026 – 05-01
Several users have recently reported a website pretending to offer an official macOS version of Notepad++:
notepad-plus-plus-mac.org
Let me be blunt:
This site has absolutely nothing to do with Notepad++.
It’s not authorized, not endorsed, and not affiliated with the project in any way.
The owner is using the Notepad++ trademark (the name) without permission;
This is misleading, inappropriate, and frankly disrespectful to both the project and its users. It has already fooled people - including tech media - into believing this is an official release.
To be crystal clear:
Notepad++ has never released a macOS version.
Anyone claiming otherwise is simply riding on the Notepad++ name.
As mentioned in my GitHub post, I have already contacted the owner of the fake “official” website, and I am still waiting for a reply.
In the meantime, if you see someone posting “Notepad++ is finally on Mac!” on Reddit, Twitter, Mastodon, Discord, StackOverflow, or any tech blogs/forums, please reply with:
“This is not an official Notepad++ release. It’s an unauthorized project misusing the Notepad++ trademark.”, and include a link to this announcement.
Thank you to the users who raised the alarm. Your vigilance helps protect the project from people who think they can borrow the Notepad++ identity as they please.
– Don Ho
Starting in 2027, there will be a noticeable change for smartphones in the EU: The removable battery is making a comeback. What used to be standard is returning due to legal requirements for new models.
What exactly can we expect?
Starting February 18, 2027, new smartphones and tablets must be designed so that end users can remove and replace the battery themselves using standard tools. Adhesive bonds that require heat to be removed will then be largely prohibited.
Specifically, this means the following for new models starting in February 2027:
Easy replacement: Batteries must be replaceable using standard tools (e.g., screwdrivers).
No barriers: The use of adhesives that can only be removed with heat or solvents is prohibited.
Tools: If a special tool is required for replacement, the manufacturer must provide it free of charge.
Spare parts guarantee: Replacement batteries must be available to end users at a reasonable price for at least 5 years.
Why is the EU introducing this?
The main driver is the transition to a true circular economy. Currently, smartphones are often replaced as soon as battery performance declines, which wastes enormous amounts of resources.
Waste prevention: Millions of tons of electronic waste are generated in the EU every year. Easily replaceable batteries significantly extend the lifespan of devices.
Cost savings: Many users shy away from expensive repairs or buying new devices. The EU estimates that consumers could save tens of billions of euros in total by 2030 thanks to longer usage cycles.
Resource conservation: Batteries contain valuable raw materials such as lithium and cobalt. If they are easily removable, they can be sorted by type and recycled more efficiently.
Fire safety: Batteries that are permanently glued in place are often damaged during shredding, which repeatedly leads to dangerous fires in sorting facilities. Clean removal significantly increases safety in the recycling process.
What does this mean for users?
DIY repairs: Instead of paying a lot of money to visit a repair service, you simply buy the replacement part and swap it out yourself.
Higher resale value: Used cell phones can be resold much more easily and for a higher price with a brand-new battery.
Longer software support: Since the hardware lasts longer, there is also increased pressure on manufacturers to offer security updates for a longer period.
Will this make smartphones thicker or less waterproof?
That is the key challenge for designers.
Modern devices are often bonded together to make them particularly thin and waterproof.
Removable batteries make this design more difficult, but not impossible.
Manufacturers are already working on solutions, such as:
new seals instead of adhesive,
more robust casings with screw mechanisms,
modular internal structures.
Many users fear that cell phones will break immediately if they get wet in the rain or fall into water. That’s not true: It is entirely feasible to make smartphones waterproof despite having a removable battery. The principle is similar to that of rugged outdoor phones. A rubber gasket running around the battery cover, which is pressed into place by screws or a secure clip, ensures that the interior of the housing is sealed.
It is therefore quite possible that smartphones will become slightly thicker, but significant increases are unlikely, as design remains a key selling point.
Are there any exceptions to the replacement requirement?
Yes, but only in specific cases:
Specialized hardware: Devices used in highly specialized fields (e.g., medical diagnostics or explosion-proof industrial cell phones) are also exempt if a replaceable battery would compromise safety.
Extremely long lifespan: To avoid the replacement requirement, a battery would have to be extremely durable. The battery must retain at least 80% of its original capacity after 1,000 charge cycles. That is significantly more than many batteries on the market today can achieve (often around 500 – 800 cycles).
Simultaneous water protection: In addition to durability, the device must be water- and dust-tight according to IP67.
Another innovation: the “battery passport”
In addition, the EU is introducing a digital battery passport.
Users and recycling facilities can access important data via a printed QR code. It stores information about the battery’s carbon footprint, the proportion of recycled materials, its chemical composition, and its “state of health.” This represents a huge step forward, particularly for the second-hand market and professional recyclers.
Conclusion
The new EU regulation marks the end of the “disposable” era for smartphones. Starting in 2027, users will benefit from longer device lifespans, easier repairs, and lower costs.
Even though manufacturers will have to adapt their designs to improve water resistance and aesthetics, the benefits for the environment and consumers -including less electronic waste and greater transparency — outweigh these changes.
Contact us for comprehensive advice on your compliance issues relating to electrical and electronic equipment, packaging, batteries, and PV panels.
www.ecopv-eu.com/en/contact/ | E-Mail: info@ecopv-eu.com
Supported over 20,000 customers with EPR compliance
Rated 5.0 on Google
Contact
We look forward to your message!
+49 6196 5835357
Frankfurter Str. 70 – 7265760 Eschborn
In Brief
Posted:
7:30 AM PDT · May 4, 2026
Almost all of the 20 U.S. state government-run health insurance marketplaces shared residents’ application information with advertising and tech giants, including Google, LinkedIn, Meta, and Snap, according to a new investigation by Bloomberg.
The report drives home the privacy problems created by pixel-sized trackers, which allow website owners to collect information about their visitors, often for web analytics and identifying bugs. A common tool in digital advertising, these trackers also allow the collection of personal information if misconfigured and placed on websites that contain sensitive content, such as healthcare data.
Per Bloomberg, New York’s health insurance exchange shared information with several tech companies about a person’s application, including whether they provided details about whether they have incarcerated family members.
The health insurance exchange for Washington, D.C. also asked residents about the person’s sex and race, which TikTok’s pixel tracker attempted to redact. Some races were masked and others were not, the publication reported. A spokesperson for the Washington, D.C. exchange told Bloomberg that residents’ email address, phone number, and country identifiers were also shared with TikTok.
Washington, D.C. paused its rollout of the TikTok tracker, and Virginia removed the Meta tracker from its website after Bloomberg found it was sharing residents’ ZIP codes with the tech giant.
This is not a new problem, and has previously caught out telehealth startups and healthcare giants alike. Several companies and healthcare giants have had to notify millions that they inadvertently collected and shared their health information with tech giants, whose profits are derived from using consumer data for advertising.
But Bloomberg’s investigation shows that these pixel trackers can affect large swathes of the population when placed on government websites. The publication noted that more than seven million Americans purchased health insurance for this year through a state health insurance exchange.
Techcrunch event
San Francisco, CA
|
October 13 – 15, 2026
Topics
Subscribe for the industry’s biggest tech news
Latest in Privacy
Bun is great software.
I use it all the time. It is fast and practical, and the team ships constantly. It makes TypeScript a joy to work with in small scripts, apps, tests, and tooling. That is why this is frustrating. I want Bun to win. I want a serious Node.js alternative. I want faster installs, faster tests, better bundling, and less toolchain bloat.
But I am worried about Bun now.
Anthropic owns Bun
Anthropic acquired Bun in December 2025.
The announcement said everything I wanted to hear: Bun stays open source and MIT-licensed, the same team keeps working on it, and the roadmap keeps focusing on high-performance JavaScript tooling and Node.js compatibility.
It also said this:
Claude Code ships as a Bun executable to millions of users. If Bun breaks, Claude Code breaks. Anthropic has direct incentive to keep Bun excellent.
Claude Code ships as a Bun executable to millions of users. If Bun breaks, Claude Code breaks. Anthropic has direct incentive to keep Bun excellent.
In December, that sounded reassuring. Anthropic had a huge product built on Bun. That meant Anthropic had a direct incentive to keep Bun fast, stable, and excellent. I still think that argument has merit, but now cracks are showing.
Bun is still a great JavaScript runtime, but now it’s in the hands of a company that doesn’t seem to care at all about their software.
Anthropic models are still great
This is not an “Anthropic bad” post. Well, not entirely. I still think Anthropic’s models are great. Claude Opus (4.6 I guess) is still one of the best model families for coding, writing, reasoning, and general dev work. The model quality is not my concern here. My concern is the product layer around the models. Claude Code kind of sucks to use today.
Claude Code used to be great
Claude Code felt incredible a year ago. It was one of the first AI coding tools that convinced me developer workflows would change from mostly autocomplete to agents. It could read a project, make focused edits, run commands, fix mistakes, and keep going. It felt like a tool built by people who understood how devs actually work. Combined with Anthropic’s models, which up until recently (GPT-5.5) were best-in-class, Claude Code felt unbeatable.
Though even in December Claude Code was already getting worse, it was still good and that made the Bun acquisition make sense to me. If Anthropic was building the future of coding tools, and Bun was the runtime underneath those tools, maybe Bun had found the best possible home. I was always a little worried about how Bun was going to become a sustainable business given it was VC funded. So the acquisition made sense, and I was optimistic.
Claude Code is bad
There are so many good coding agents out there right now. Cursor, Augment, Codex, OpenCode, T3 Code, Pi, probably more. For a long time Cursor was my main driver, because while Claude Code was getting worse over time Cursor (the CLI) was so good at using Anthropic models. Recently, I had to stop using Cursor for reasons. I hadn’t used Claude Code in a couple months, so I picked it back up and was actually shocked at how bad it has become.
In April 2026, devs started complaining about Claude Code quality, limit behavior, third-party harness restrictions, confusing billing, and slow communication.
Anthropic published an engineering postmortem that blamed product-layer issues, including a reduced default reasoning effort, a stale-session bug, and a prompt change that hurt coding quality. I appreciate the postmortem. It is better than pretending nothing happened. Honestly, it was possibly the first time Anthropic mentioned anything being their own fault.
Then there was the OpenClaw mess. TechCrunch reported that Anthropic told Claude Code subscribers they would need to pay extra for OpenClaw and other third-party harnesses. That is already bad enough. But the weird part came later.
Gigazine covered reports that simply having OpenClaw in git history could cause Claude Code to refuse a request or bill extra. That article quotes Theo saying a recent commit mentioning OpenClaw in a JSON blob could trigger the behavior, even in an empty repo while calling claude -p “hi” directly. If you’re interested in watching the clip, it’s incredible.
Theo’s read, and one I find plausible, is that this looks like a product where nobody is carefully dogfooding the actual code-level experience before shipping changes. Maybe that is unfair, I don’t know what actually goes on at Anthropic. But from the outside, Claude Code looks like a tool moving in the wrong direction. More restrictions, billing weirdness, surprise behavior based on text in commits.
That is textbook enshittification.
That is why Bun worries me
Bun is embedded in Claude Code. Claude Code appears to be enshittifying. So now I have to worry that Bun could enshittify too. Not because Bun is bad. Bun is not bad. Bun is excellent. Not because the Bun team stopped caring. I do not believe that.
The problem is as Bun and its team get further integrated into Anthropic, so will their policies. The same policies that have led to the collapse of Claude Code. Will we see issues start popping up in Bun that make it seem like the team doesn’t even dogfood their own product? I don’t know, but I’m not sure I want to continue using it just in case.
I’ll stick with pnpm for now
The upsetting thing is Bun provides a lot more than what pnpm offers that I end up having to reach for additional dependencies to cover. Things like built-in TypeScript support instead of needing a build step, a bundler instead of Vite, testing instead of vitest. It’s not that the dependencies are bad, but getting them all wrapped into a single toolchain is very nice.
pnpm is not a replacement for Node.js. It is not a replacement for Bun either. pnpm is just a package manager. But for most of my day-to-day work, the part of Bun I reach for most is package management. I want installs to be fast. I want monorepos to work well. I want disk usage to be sane. Bun gives me that, and so does pnpm.
So for my projects that are currently using Bun, I am moving away from Bun and using pnpm. When someone asks me what I recommend for a JavaScript or TypeScript project today, my answer is pnpm.
I don’t recommend moving away from Bun
Even though I personally am moving some projects away from Bun, don’t take my advice as gospel. I’m just some guy on the internet. You should decide what is best for you. For new projects, pnpm makes sense. For existing projects, you might want to stick with Bun unless and until you have a good reason to leave.
I hope I am wrong
I hope Bun stays great. I hope the Bun team keeps shipping excellent work. I hope Anthropic gives them room to make the right calls for the JavaScript ecosystem. Bun can still come out of this stronger. Anthropic has money, distribution, and a real reason to care about Bun’s performance and stability. But I do not trust the situation as much as I did in December. Claude Code used to feel like proof that Anthropic understood dev tools. Now it feels like a warning that Anthropic doesn’t know what it takes to maintain and improve a product over time.
Bun is still great. I just do not know where it goes from here. A year from now things could be completely different, so I will follow-up and see if my prediction is right.
Monero’s proof of work is called RandomX.
Monero does not ask miners to run the same tiny hash function over and over. It asks them to run a small random program on a virtual machine, hit memory hard while doing it, and then hash the result.
Bitcoin’s proof of work is great for specialized chips because the work never changes. RandomX was built to do the opposite. It tries to make efficient mining look as much like a normal CPU workload as possible.
Short version
Here is the shortest useful summary:
Monero takes the candidate block header plus a nonce.
It also uses an older block hash as a medium-term key.
That key builds a large shared memory dataset.
The candidate block input is hashed to create a seed for a special virtual machine.
The VM runs integer math, floating-point math, branches, and lots of memory accesses across 8 chained programs.
The final machine state is hashed into a 256-bit output.
If that output is below the network target, the block is valid.
The interesting part is not the yes-or-no rule at the end. Every proof-of-work system has that. The interesting part is how Monero makes each hash attempt expensive in the exact ways normal CPUs are good at and custom chips hate.
Why Monero does not use a simple hash
If your proof of work is just “run this fixed function on new inputs until you get a lucky output,” hardware designers have a clear job: build silicon that runs that exact function as cheaply and as fast as possible.
That is what happened to Bitcoin with SHA-256 ASICs.
Monero did not want that path. Long before RandomX, the project was explicit that specialized mining hardware creates centralization pressure. Fewer manufacturers matter more. Large farms matter more. Ordinary users matter less.
Monero’s earlier answer was the CryptoNight family. Later, in late 2019, Monero switched to RandomX, which its own release notes described as a new proof of work “based on random instructions, adapted to CPUs.”
So the design target changed from make memory matter to make a whole CPU matter.
The core idea behind RandomX
RandomX starts from one observation: CPUs are not just arithmetic boxes. They are flexible machines built to run changing code and juggle a lot of hardware features at once.
A modern CPU has:
multiple cache levels
integer units
floating-point units
branch handling
out-of-order execution
speculative execution
memory controllers
Normal cryptographic hashes do not use much of that variety. They mostly push data through a fixed pipeline.
RandomX tries to bind proof of work to those broader CPU strengths. Its design document says the work must be dynamic. That means the miner is not just feeding in new data. The miner is also getting new code to run.
That is why RandomX is based on random code execution.
What a miner is actually computing
At the Monero level, RandomX takes two important inputs:
a key K
a hashing input H
For Monero, K comes from an older block hash, called the key block. The RandomX reference README recommends changing this key every 2048 blocks with a 64-block delay, and that is how Monero wires it in.
That detail matters because miners do not rebuild the heavy shared memory structures for every nonce. They rebuild them only when the key changes, roughly every 2.8 days.
H is the candidate block hashing blob with a chosen nonce. That is the part miners keep changing over and over.
So you can think of Monero mining like this:
the network gives you a medium-term environment through K
your candidate block gives you a per-attempt input through H
The environment changes slowly. The attempt changes constantly.
Step 1: build the cache from the key
RandomX first takes the key K and runs Argon2d on it.
Argon2d is better known as a password-hashing and key-derivation function. It is useful here for the same reason it is useful there: it is memory-hard. It forces the machine to touch a lot of memory in a way that is annoying to cheat.
In the default RandomX parameters, this produces a 256 MiB cache.
That cache is the smaller of the two big memory structures in RandomX. It is not the structure miners want to use directly for maximum speed. It is the structure used to build the bigger one.
Step 2: expand the cache into the dataset
From that 256 MiB cache, RandomX builds the dataset.
The default dataset size is:
2,147,483,648 bytes base size
33,554,368 bytes extra size
Together that is about 2080 MiB, a little over 2 GiB.
This odd-looking size is deliberate. It is big enough to spill out of on-chip memory and into DRAM, and the extra non-power-of-two tail makes life more annoying for hardware designers.
The dataset is read-only during hashing. RandomX uses it to force regular DRAM traffic. The design doc says each program iteration reads one 64-byte dataset item, and across a whole hash result that becomes 16,384 dataset reads.
That gives RandomX one of its main bottlenecks: memory access, not just arithmetic.
Step 3: initialize the scratchpad from the block input
Now RandomX turns to the per-hash input H.
It computes Hash512(H) using Blake2b. That 64-byte result seeds an AES-based generator, which fills the scratchpad.
The scratchpad is the VM’s working memory. Unlike the large dataset, it is meant to live in CPU cache, not DRAM.
Its default size is 2 MiB, split to mimic CPU cache levels:
16 KiB L1
256 KiB L2
2 MiB L3
This is one of the smartest parts of RandomX. It uses two very different memory structures at once:
a big dataset to hit DRAM
a smaller scratchpad to behave like cache-heavy code
That lets it pressure both the memory subsystem and the CPU core.
Step 4: generate a random program
After the scratchpad is ready, RandomX generates a program for its virtual machine.
This is not a C program or a JavaScript program. It is a compact VM program with its own instruction set.
Two details matter a lot:
Every instruction is 8 bytes long.
Any 8-byte word is a valid instruction.
That second choice is a big deal. It means RandomX can generate programs by just filling a buffer with random bytes. There is no slow parser and no complicated syntax checking.
Each program contains 256 instructions.
Those instructions are chosen to look like work real CPUs are built for:
integer math
64-bit multiplies
floating-point operations
128-bit vector operations
memory loads and stores
occasional branches
The floating-point side is not cosmetic. RandomX uses IEEE 754 double precision operations, including division and square root, and it uses all four standard rounding modes. That makes the VM harder to collapse into a tiny “mostly integer” custom design.
Step 5: run the program loop
The VM executes the 256-instruction program in a loop for 2048 iterations.
During each iteration it:
reads and writes scratchpad memory
prefetches and loads dataset items
mixes integer and floating-point register state
takes a low-probability branch when the condition says so
The design doc says an average iteration reads about 504 bytes from memory and writes about 256 bytes.
That number is a clue to what RandomX is really doing. It is not “a hash with extra steps.” It is trying to behave like messy, mixed, real software.
Why the branches are there
Branches are easy to overlook, but they matter.
If the code were fully straight-line, specialized hardware could optimize away more of it. Branches make static simplification harder.
RandomX uses branches sparingly. A branch is taken with probability about 1/256, and the design intentionally makes these branches usually predict as “not taken.” That means they are cheap on CPUs most of the time, while still getting in the way of over-optimized hardware shortcuts.
The important point is not that RandomX found some magic branch predictor trick. It did not. The point is that even a little real control flow makes the workload look more like actual code and less like a clean hardware pipeline.
Why there are 8 chained programs per hash
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.