Rajiv Prabhakar
software.rajivprab.com · Personal blog · on HN since 2018
Rajiv Prabhakar, a software engineer, writes about CPU caches, testing, hiring, feature flags, and financial independence.
What HN saysHN links it for the CPU cache myths post, which people tie to volatile and race conditions, and for his financial independence essay.
27HN people shared it
5linked it in comments
110stories submitted
3.2Kstory points
3 months agolast shared
2018people per year2026
Most-shared posts
- 1Myths Programmers Believe about CPU Caches (2018)6 people · 642 points · first shared 2018 · 119 comments on HN
- 2Experiences Working with an Outsourced Dev Shop6 people · 21 points · first shared 2021 · 1 comments on HN
- 3Hiring Is Broken?5 people · 199 points · first shared 2019 · 189 comments on HN
- 4Rethinking software testing: perspectives from the world of hardware (2019)5 people · 113 points · first shared 2019 · 30 comments on HN
- 5When feature flags do and don’t make sense (2019)4 people · 112 points · first shared 2019 · 40 comments on HN
- 6Preventing Software Rot4 people · 11 points · first shared 2020 · discussion on HN
- 7If founders treated their investors the same way they treated their employees2 people · 1.0K points · first shared 2020 · 266 comments on HN
- 8My Path to Financial Independence as a Software Engineer2 people · 368 points · first shared 2021 · 560 comments on HN
- 9My journey through the American immigration system as a computer engineer2 people · 248 points · first shared 2022 · 385 comments on HN
- 10The Law of Net Design Costs2 people · 62 points · first shared 2021 · 12 comments on HN
- 11Nuances of Overloading and Overriding in Java2 people · 15 points · first shared 2019 · discussion on HN
- 12Cracking the Senior Software Interview2 people · 13 points · first shared 2019 · discussion on HN
- 13Don’t Be an Evolutionary Programmer2 people · 10 points · first shared 2020 · discussion on HN
- 14Alert Fast2 people · 10 points · first shared 2019 · discussion on HN
- 15An Alternative to Dependency Injection Frameworks2 people · 9 points · first shared 2018 · discussion on HN
What HN people wrote when they linked it
whack · 2020-12-06
This sounds like a classic case of "simplicity is in the eye of the beholder".
If you're someone who has experience with, or can easily grok concepts such as "pointer to a pointer", then the second snippet seems obviously simpler. After all, there are fewer branches to consider.
Unfortunately, as someone who stopped working with pointers a long time ago, my mind has to work in overdrive to understand any implementation that relies on a "pointer to a pointer". Hence why the first implementation is far easier for me to understand.
I'm sure we'll see many debates around which solution is simpler, but these debates will never reach a resolution. Depending on the skills and experiences you bring to the table, different people will objectively benefit from very different implementations.
https://software.rajivprab.com/2019/08/29/abstractions-are-in-the-eye-…
prakhar897 · 2024-01-31
11thEarlOfMar · 2021-12-28
Here's one example:
https://software.rajivprab.com/2021/12/26/my-path-to-financial-indepen…
And the comments:
https://news.ycombinator.com/item?id=29691039
okareaman · 2019-11-21
There was just an interesting article mentioning the correct use of volatile on r/programming https://software.rajivprab.com/2018/04/29/myths-programmers-believe-ab…
noego · 2019-10-03
I'm not surprised that there are vast numbers of latent low-probability race conditions in the linux kernel or any major software project. Having seen the testing process in both hardware and software projects, the two are not even comparable. The testing process in most software projects is dominated by fully deterministic unit tests that are very simple in nature, and make large numbers of assumptions about the behaviors and interactions with other components. Low-probability race conditions between different components is exactly the outcome I would expect from this testing process.
https://software.rajivprab.com/2019/04/28/rethinking-software-testing-…